This is an automated email from the ASF dual-hosted git repository.

dpavlov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite-teamcity-bot.git


The following commit(s) were added to refs/heads/master by this push:
     new f1a900a  Jersey logging & Stacktrace logging exception handler
f1a900a is described below

commit f1a900a8ea6ed75280f4f292812f8be852ffc0cd
Author: Dmitriy Pavlov <[email protected]>
AuthorDate: Thu Oct 4 16:08:23 2018 +0300

    Jersey logging & Stacktrace logging exception handler
---
 build.gradle                                       |  3 ++
 ignite-tc-helper-web/build.gradle                  |  5 +--
 .../java/org/apache/ignite/ci/web/CtxListener.java | 23 ++++++++++----
 .../apache/ignite/ci/web/TcApplicationResCfg.java  | 14 +++++++--
 .../ignite/ci/web/rest/GetTrackedBranches.java     |  3 +-
 .../exception/ExeptionsTraceLogger.java}           | 36 ++++++++++++----------
 6 files changed, 55 insertions(+), 29 deletions(-)

diff --git a/build.gradle b/build.gradle
index c08e5e1..d8d88b3 100644
--- a/build.gradle
+++ b/build.gradle
@@ -46,6 +46,9 @@ allprojects {
 
         //dual-licensed under the EPL v1.0 (Category B list.) and the LGPL 2.1 
(category X).
         logbackVer = '1.2.3'
+
+        // MIT/X11 license, category A;
+        slf4jVer = '1.7.25'
     }
 
     repositories {
diff --git a/ignite-tc-helper-web/build.gradle 
b/ignite-tc-helper-web/build.gradle
index cfd3153..cbcb9d7 100644
--- a/ignite-tc-helper-web/build.gradle
+++ b/ignite-tc-helper-web/build.gradle
@@ -34,8 +34,9 @@ dependencies {
     compile group: 'org.apache.ignite', name: 'ignite-slf4j', version: ignVer
     compile group: 'org.apache.ignite', name: 'ignite-direct-io', version: 
ignVer
 
-    // MIT/X11 license, category A;
-    compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25'
+    compile group: 'org.slf4j', name: 'slf4j-api', version: slf4jVer
+    compile group: 'org.slf4j', name: 'jul-to-slf4j', version: slf4jVer
+
 
     compile group: 'ch.qos.logback', name: 'logback-core', version: logbackVer
     compile group: 'ch.qos.logback', name: 'logback-classic', version: 
logbackVer
diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/CtxListener.java 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/CtxListener.java
index adb05a1..7089c9a 100644
--- 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/CtxListener.java
+++ 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/CtxListener.java
@@ -18,7 +18,6 @@
 package org.apache.ignite.ci.web;
 
 import java.io.IOException;
-import java.util.concurrent.ExecutorService;
 import javax.servlet.ServletContext;
 import javax.servlet.ServletContextEvent;
 import javax.servlet.ServletContextListener;
@@ -45,15 +44,11 @@ import org.jetbrains.annotations.Nullable;
 public class CtxListener implements ServletContextListener {
     private static final String TC_HELPER = "tcHelper";
 
-
     public static final String UPDATER = "updater";
 
+    /** Javax.Injector property code for servlet context. */
     public static final String INJECTOR = "injector";
 
-    public static Ignite getIgnite(ServletContext ctx) {
-        return getInjector(ctx).getInstance(Ignite.class);
-    }
-
     public static ITcHelper getTcHelper(ServletContext ctx) {
         return (ITcHelper)ctx.getAttribute(TC_HELPER);
     }
@@ -74,7 +69,9 @@ public class CtxListener implements ServletContextListener {
         return tcHelper.server(srvId, creds);
     }
 
+    /** {@inheritDoc} */
     @Override public void contextInitialized(ServletContextEvent sctxEvt) {
+        initLoggerBridge();
         IgniteTcBotModule igniteTcBotModule = new IgniteTcBotModule();
         Injector injectorPreCreated = Guice.createInjector(igniteTcBotModule);
 
@@ -96,6 +93,20 @@ public class CtxListener implements ServletContextListener {
         ctx.setAttribute(TC_HELPER, tcHelper);
     }
 
+    /**
+     * initializes logger bridgle for jul->Slf4j redirection for Jersey.
+     */
+    private void initLoggerBridge() {
+        java.util.logging.Logger rootLog = 
java.util.logging.LogManager.getLogManager().getLogger("");
+        java.util.logging.Handler[] handlers = rootLog.getHandlers();
+
+        for (int i = 0; i < handlers.length; i++)
+            rootLog.removeHandler(handlers[i]);
+
+        org.slf4j.bridge.SLF4JBridgeHandler.install();
+    }
+
+    /** {@inheritDoc} */
     @Override public void contextDestroyed(ServletContextEvent sctxEvt) {
         final ServletContext ctx = sctxEvt.getServletContext();
 
diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/TcApplicationResCfg.java
 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/TcApplicationResCfg.java
index 45043a3..ccf1a8c 100644
--- 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/TcApplicationResCfg.java
+++ 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/TcApplicationResCfg.java
@@ -18,20 +18,28 @@
 package org.apache.ignite.ci.web;
 
 import org.apache.ignite.ci.web.auth.AuthenticationFilter;
+import org.apache.ignite.ci.web.rest.exception.ExeptionsTraceLogger;
 import org.apache.ignite.ci.web.rest.exception.ServiceStartingException;
 import org.apache.ignite.ci.web.rest.exception.ServiceUnauthorizedException;
+import org.glassfish.jersey.filter.LoggingFilter;
 import org.glassfish.jersey.logging.LoggingFeature;
 import org.glassfish.jersey.server.ResourceConfig;
 
+/**
+ * Resource config for Jersey Application
+ */
 public class TcApplicationResCfg extends ResourceConfig {
-
+    /**
+     * Default constructor.
+     */
     public TcApplicationResCfg() {
         //Register Auth Filter here
         register(AuthenticationFilter.class);
 
-        register(LoggingFeature.class);
-
         register(ServiceUnauthorizedException.class);
         register(ServiceStartingException.class);
+
+        register(LoggingFeature.class);
+        register(ExeptionsTraceLogger.class);
     }
 }
diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/GetTrackedBranches.java
 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/GetTrackedBranches.java
index f514875..7febe0e 100644
--- 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/GetTrackedBranches.java
+++ 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/GetTrackedBranches.java
@@ -28,6 +28,7 @@ import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
+import org.apache.ignite.Ignite;
 import org.apache.ignite.ci.HelperConfig;
 import org.apache.ignite.ci.conf.ChainAtServer;
 import org.apache.ignite.ci.user.ICredentialsProv;
@@ -55,7 +56,7 @@ public class GetTrackedBranches {
     public Version version() {
         Version ver = new Version();
 
-        IgniteProductVersion ignProdVer = CtxListener.getIgnite(ctx).version();
+        IgniteProductVersion ignProdVer = 
CtxListener.getInjector(ctx).getInstance(Ignite.class).version();
 
         ver.ignVer = ignProdVer.major() + "." + ignProdVer.minor() + "." + 
ignProdVer.maintenance();
 
diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/TcApplicationResCfg.java
 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/exception/ExeptionsTraceLogger.java
similarity index 52%
copy from 
ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/TcApplicationResCfg.java
copy to 
ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/exception/ExeptionsTraceLogger.java
index 45043a3..482af1d 100644
--- 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/TcApplicationResCfg.java
+++ 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/exception/ExeptionsTraceLogger.java
@@ -14,24 +14,26 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.ignite.ci.web.rest.exception;
 
-package org.apache.ignite.ci.web;
+import javax.ws.rs.ext.ExceptionMapper;
+import javax.ws.rs.ext.Provider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
-import org.apache.ignite.ci.web.auth.AuthenticationFilter;
-import org.apache.ignite.ci.web.rest.exception.ServiceStartingException;
-import org.apache.ignite.ci.web.rest.exception.ServiceUnauthorizedException;
-import org.glassfish.jersey.logging.LoggingFeature;
-import org.glassfish.jersey.server.ResourceConfig;
-
-public class TcApplicationResCfg extends ResourceConfig {
-
-    public TcApplicationResCfg() {
-        //Register Auth Filter here
-        register(AuthenticationFilter.class);
-
-        register(LoggingFeature.class);
+/**
+ * Logs exception stacktraces.
+ */
+@Provider
+public class ExeptionsTraceLogger implements ExceptionMapper<Throwable> {
+    /** Logger. */
+    private static final Logger logger = 
LoggerFactory.getLogger(ExeptionsTraceLogger.class);
 
-        register(ServiceUnauthorizedException.class);
-        register(ServiceStartingException.class);
+    /** {@inheritDoc} */
+    @Override public javax.ws.rs.core.Response toResponse(Throwable t) {
+        logger.error("Error during processing request (Internal Server Error 
[500]). Caused by: ", t);
+        return javax.ws.rs.core.Response.serverError()
+            .entity(t.getMessage())
+            .build();
     }
-}
+}
\ No newline at end of file

Reply via email to