Monday, November 30, 2015

File exists. error: failed to run pack-refs

If you encounter the following error:

Error pulling origin
fatal: Unable to create 'C:/Users/nbp/IdeaProjects/xxx/.git/packed-refs.lock': File exists. error: failed to run pack-refs

do as follows:

del .git/packed-refs.lock

although I don't know why this happened.

Monday, November 23, 2015

How to exclude `src/main/resources` from a jar file in Gradle

To exclude `src/main/resources` from a jar file in Gradle, add the following to `build.gradle`:

processResources {
    exclude '**'
}

How to refresh a snapshot dependency in Gradle

To refresh a snapshot dependency in Gradle, add the following to `build.gradle`:

configurations.all {
    resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}

Reference:
https://discuss.gradle.org/t/how-to-get-gradle-to-download-newer-snapshots-to-gradle-cache-when-using-an-ivy-repository/7344

Tuesday, November 17, 2015

ElasticsearchIllegalArgumentException[failed to execute script]; nested: ScriptException[scripts of type [inline], operation [update] and lang [groovy] are disabled];

When you use inline scripting as follows:

$ curl -XPOST 'localhost:9200/customer/external/1/_update?pretty' -d '
{
  "script" : "ctx._source.age += 5"
}'

you might get the following error:

{
  "error" : "ElasticsearchIllegalArgumentException[failed to execute script]; nested: ScriptException[scripts of type [inline], operation [update] and lang [groovy] are disabled]; ",
  "status" : 400
}

Because inlining scripting is disabled since 1.4.3, you should enable inline scripting explicitly as follows:

config/elasticsearch.yml

script.inline: on

You can check the result as follows:

$ curl 'localhost:9200/customer/external/1?pretty'

References:
https://www.elastic.co/guide/en/elasticsearch/reference/1.7/_updating_documents.html
https://www.elastic.co/guide/en/elasticsearch/reference/1.7/modules-scripting.html

Wednesday, November 4, 2015

How to use a constructor when deserializing in Jackson

To use a constructor when deserializing in Jackson,

do as follows:

@Data
public class ClickUrl {

  private final String url;
  private String finalUrl;

  @JsonCreator
  public AdcrClickUrl(@JsonProperty("url") String url) {
    this.url = url;
  }

}

Reference:
http://www.cowtowncoder.com/blog/archives/2011/07/entry_457.html

Friday, October 30, 2015

How to add images to output with AsciiDoctor Gradle plugin

To add images to output with AsciiDoctor Gradle plugin

add the following configuration to your `build.gradle` file:

asciidoctor {
    resources {
        from (sourceDir) {
            include "**/*.png"
        }
    }
}

Reference:
https://github.com/asciidoctor/asciidoctor-gradle-plugin

ERR_CONNECTION_ABORTED in Chrome when you deploy a WAR file to Tomcat via Manager App

You might get ERR_CONNECTION_ABORTED in Chrome when you deploy a WAR file to Tomcat via a Manager App.

If so, check your log file for the Manager App, `logs/manager.2015-10-30.log`.

It might look like this:

30-Oct-2015 15:49:08.586 SEVERE [http-nio-8080-exec-8] org.apache.catalina.core.ApplicationContext.log HTMLManager: FAIL - Deploy Upload Failed, Exception: org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (59114627) exceeds the configured maximum (52428800)
 java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (59114627) exceeds the configured maximum (52428800)
        at org.apache.catalina.connector.Request.parseParts(Request.java:2804)
        at org.apache.catalina.connector.Request.parseParameters(Request.java:3073)
        at org.apache.catalina.connector.Request.getParameter(Request.java:1095)
        at org.apache.catalina.connector.RequestFacade.getParameter(RequestFacade.java:380)
        at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:185)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:614)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (59114627) exceeds the configured maximum (52428800)
        at org.apache.tomcat.util.http.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:811)
        at org.apache.tomcat.util.http.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:256)
        at org.apache.tomcat.util.http.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:280)
        at org.apache.catalina.connector.Request.parseParts(Request.java:2734)
        ... 28 more

If you encounter the above error, you should change file size in `webapps/manager/WEB-INF/web.xml` appropriately:

    <multipart-config>
      <!-- 50MB max -->
      <max-file-size>52428800</max-file-size>
      <max-request-size>52428800</max-request-size>
      <file-size-threshold>0</file-size-threshold>
    </multipart-config>