From 53093e35cea4c5736a33fb63e1e3f7607196873b Mon Sep 17 00:00:00 2001 From: Laurens Rietveld Date: Sat, 5 Oct 2013 20:49:51 +0200 Subject: [PATCH] #172 log client exceptions to server --- .../yasgui/client/ViewElements.java | 16 +++++++++++++ .../yasgui/client/services/YasguiService.java | 1 + .../yasgui/server/YasguiServiceImpl.java | 23 ++++++++++++++++++- 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/data2semantics/yasgui/client/ViewElements.java b/src/main/java/com/data2semantics/yasgui/client/ViewElements.java index c2df0f6d..b249c941 100644 --- a/src/main/java/com/data2semantics/yasgui/client/ViewElements.java +++ b/src/main/java/com/data2semantics/yasgui/client/ViewElements.java @@ -43,12 +43,14 @@ import com.data2semantics.yasgui.client.tab.optionbar.LinkCreator; import com.data2semantics.yasgui.client.tab.optionbar.endpoints.EndpointInput; import com.data2semantics.yasgui.shared.exceptions.ElementIdException; +import com.data2semantics.yasgui.shared.exceptions.FetchException; import com.google.gwt.dom.client.Style.Cursor; import com.google.gwt.dom.client.Style.Position; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.event.logical.shared.ResizeEvent; import com.google.gwt.event.logical.shared.ResizeHandler; import com.google.gwt.http.client.URL; +import com.google.gwt.user.client.rpc.AsyncCallback; import com.smartgwt.client.types.Alignment; import com.smartgwt.client.types.Overflow; import com.smartgwt.client.types.VerticalAlignment; @@ -283,6 +285,20 @@ public void onError(Throwable e) { } else { errorMsg = e.getMessage(); } + if (view.getConnHelper().isOnline()) { + //Log exception to server + new GwtCallbackWrapper(view) { + public void onCall(AsyncCallback callback) { + view.getRemoteService().logException(new FetchException("blaat"), callback); + } + + protected void onFailure(Throwable throwable) { + } + + protected void onSuccess(Void prefixes) { + } + }.call(); + } onError(errorMsg); } diff --git a/src/main/java/com/data2semantics/yasgui/client/services/YasguiService.java b/src/main/java/com/data2semantics/yasgui/client/services/YasguiService.java index 9937ecd9..adc090b3 100644 --- a/src/main/java/com/data2semantics/yasgui/client/services/YasguiService.java +++ b/src/main/java/com/data2semantics/yasgui/client/services/YasguiService.java @@ -45,4 +45,5 @@ public interface YasguiService extends RemoteService { void deleteBookmarks(int[] bookmarkIds) throws IllegalArgumentException, FetchException; Bookmark[] getBookmarks() throws IllegalArgumentException, FetchException; boolean isOnline() throws IllegalArgumentException; + void logException(Throwable e); } diff --git a/src/main/java/com/data2semantics/yasgui/server/YasguiServiceImpl.java b/src/main/java/com/data2semantics/yasgui/server/YasguiServiceImpl.java index 4fa3db7a..487346fc 100644 --- a/src/main/java/com/data2semantics/yasgui/server/YasguiServiceImpl.java +++ b/src/main/java/com/data2semantics/yasgui/server/YasguiServiceImpl.java @@ -31,6 +31,8 @@ import java.io.IOException; import java.sql.SQLException; import java.text.ParseException; +import java.util.logging.FileHandler; +import java.util.logging.Handler; import java.util.logging.Level; import java.util.logging.Logger; @@ -59,8 +61,11 @@ */ @SuppressWarnings("serial") public class YasguiServiceImpl extends RemoteServiceServlet implements YasguiService { + public static String CACHE_DIR = "/cache"; - private final static Logger LOGGER = Logger.getLogger(YasguiServiceImpl.class.getName()); + private static Logger LOGGER = Logger.getLogger(YasguiServiceImpl.class.getName()); + + public String fetchPrefixes(boolean forceUpdate) throws IllegalArgumentException, FetchException { String prefixes = ""; @@ -244,4 +249,20 @@ public String fetchProperties(String endpoint, boolean forceUpdate) throws Illeg public boolean isOnline() throws IllegalArgumentException { return true; } + + @Override + public void logException(Throwable t) { + if (System.getProperty("catalina.base") != null) { + try { + Handler handler = new FileHandler(System.getProperty("catalina.base") + "/logs/yasgui.err"); + LOGGER.addHandler(handler); + LOGGER.log(Level.SEVERE, t.getMessage(), t); + handler.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } else { + LOGGER.log(Level.SEVERE, t.getMessage(), t); + } + } }