Eclipseで「Class 'springfox.documentation.swagger.web.ClassOrApiAnnotationResourceGrouping' is marked deprecated」って警告が出る

下記の構成で Spring boot + Swagger のサンプルを作ってみたところ、

  • Eclipse 4.6.0
  • Spring Tool Suite(STS) 3.8.2
  • SpringFox 2.6.1

下記のような警告が出ました。

Class 'springfox.documentation.swagger.web.ClassOrApiAnnotationResourceGrouping' is marked deprecated

警告がひとつでもあると嫌(出ていることを許容してしまうと、他の重要な警告を見逃しかねない)なので、下記にしたがって、Eclipseの設定(SpringのValidationでBeans Validatorところ)を変えて警告が出ないようにしました。

そもそも出てしまっている理由がいまいち理解できていない(どういった形でこのクラスが参照されているのか)のですが、いったんこれで様子みることにします。

Redmine: チケットの説明欄を非表示にする(View customize plugin)

GoogleグループのRedmine Users (japanese)で、チケットの説明欄を非表示にするにはといった質問があったので、View customize pluginで対応してみました。

非表示にするだけならば、CSSで設定できる場合も多いですが、今回対象となる要素を指定するためには、xxを持った親要素といった指定が必要で、現状のCSSだとできない(CSS4でhasがあって、それが入って各ブラウザに実装されれば…)ので、JavaScriptで実施してみました。

View customize の設定内容

Path pattern

チケット画面を対象とします。

/issues

Code

Type:JavaScriptとして下記を設定します。

$(function() {
  $('#issue_description_and_toolbar').parent().hide();
  $('div.issue div.description').hide()
    .next('hr').hide();
});

設定後のイメージ

説明欄を消すことができました。

f:id:onozaty:20161120003509p:plain:w700 f:id:onozaty:20161120003512p:plain:w650

Redmine: 一部のカスタムフィールドを説明の下に移動する(View customize plugin)

といった質問をいただいたので、View customizeで試してみました。

該当の要素を取得して、それを説明欄の下に移動するイメージです。

なお、カスタムフィールドの表示は、divがネストして1行に2項目を表示しているような形になっているので、それを再現して配置します。

View customize の設定内容

Path pattern

チケット画面を対象とします。

/issues

Code

Type:JavaScriptとして下記を設定します。 cf_2のところは、移動したいカスタムフィールドに変更してください。

$(function() {
  // 対象のカスタムフィールドの要素を取得
  var customField = $('.cf_2.attribute');

  // 説明の後に移動
  $('.description')
    .after(
      $('<div class="splitcontent">')
        .append(
          $('<div class="splitcontentleft">').append(customField)));
})

設定後のイメージ

リスト2となっているカスタムフィールドが移動しました。

変更前

f:id:onozaty:20161116004019p:plain:w600

変更後

f:id:onozaty:20161116004023p:plain:w600

なお、今回は一番末尾の項目を移動したので、表示的に違和感ない形となっていますが、途中の項目を移動すると、そこだけ歯抜けになるので、きれいに見せたい場合には、詰めるような処理も必要になってきます…

Tomcat8をインストールするAnsibleのRoleを書きました

Tomcat8をCentOS7にインストールするためのRoleを書きました。

最初はAnsible Galaxyにあがっているものを試してみようと思いましたが、やっていることが理解できない部分も多かったので、勉強もかねて自分で書いてみました。

Tomcat8をインストールして、サービスとして登録するところまでの、シンプルなものになっています。

すぐに確認できるようVagrantfileを置いています。 cloneしてvagrant upとすると、bento/centos-7.2のboxを立ち上げて、Ansibleを実行してTomcatのインストールを確認できます。

Tomcat8で、デフォルトだとローカル以外からmanagerが表示できない

Tomcat8をインストールして、managerを見ようとしたところ、403 Access Denied となったので、画面に表示されていた通りtomcat-user.xmlmanager-guiというロールでユーザを追加します。Tomcat6の時は、managerだったのが、Tomcat7以降で変わったようですね。

<role rolename="manager-gui"/>
<user username="tomcat" password="s3cret" roles="manager-gui"/>

これだけだと、ローカル以外からアクセスできませんでした。

よくよく調べたところ、デフォルトだとローカル以外からアクセスできないように制限されているようです。(ちゃんとエラーページにも書いてありました)

By default the Manager is only accessible from a browser running on the same machine as Tomcat. If you wish to modify this restriction, you'll need to edit the Manager's context.xml file.

webapps/manager/META-INF/context.xmlには、下記のようにアクセスを制限するような記載がありました。

<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
</Context>

allowのところに正規表現で許可するアドレスを書いてあげると、問題なくアクセスできるようになりました。

Redmine: コンテキストメニューからステータスを変えた際に、対象バージョンも変更する (View customize plugin)

Issueとして、コンテキストメニューからステータスを却下(6)に変えたときに、対象バージョンを未設定としたいんだけど、どうやれば、、といったものが上がっていたので、スクリプトを書いてみました。

やり方としては、コンテキストメニューが生成されたタイミングで、ステータスを却下に変えるリンクのパラメータに、対象バージョンも追加します。

設定内容

Path pattern

チケット一覧を対象にします。

/issues

Code

Type:JavaScriptとして下記を設定します。

$(function() {

  // コンテキストメニューを表示したタイミングでフックするために
  // jQueryのshow関数を差し替え
  jQuery.fn._show = jQuery.fn.show;

  jQuery.fn.show = function() {
    if (this.attr('id') == 'context-menu') {
      // ステータスを6:却下に変える場合に
      // 対象バージョンを未設定に
      var a = $('#context-menu a[href*="status_id%5D=6"]');
      a.attr('href',a.attr('href') + '&issue%5Bfixed_version_id%5D=none');
    }

    return jQuery.fn._show.apply(this, arguments);
  };
});

Redmine: チェックボックスのカスタムフィールドを横並びで表示する (View customize plugin)

Redmine Users (japanese) - Google グループで、チェックボックスを横並びにしたいといった要望が出ていたので、View customize でやってみます。

なお、段組みを行う方法は以前書きましたが、段組みだと、コンテンツは上から下に流れるため、並び順としては横に並ばない形になります。

横に並べる方法としては、CSS3でflexboxという仕組みがあるので、これを使います。

flexboxを使うと、コンテンツを横並びに隙間なく埋めることが出来ます。(昔はfloatで頑張らなければならなかったので、便利になりましたね!)

設定内容

Path pattern

チケット編集系の画面を対象とします。

/issues

Code

Type:StyleSheetとして下記を設定します。

span.enumeration_cf.check_box_group {
  display: flex;
  display: -webkit-flex;
  flex-wrap: wrap; 
  -webkit-flex-wrap: wrap; 
}

項目のサイズを統一したい場合には、下記も追記します。(下記の例だと幅を60pxに)

span.enumeration_cf.check_box_group label {
  width: 60px;
}

結果

下記のように横並びで表示されるようになります。

f:id:onozaty:20161023004832p:plain

サイズを統一した場合は、下記のようになります。

f:id:onozaty:20161023005014p:plain