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