Move remote logging into RF subclasses
Review by: rjrjr@google.com
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@8769 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/DynaTableRf.gwt.xml b/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/DynaTableRf.gwt.xml
index fd154c7..d7f348c 100644
--- a/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/DynaTableRf.gwt.xml
+++ b/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/DynaTableRf.gwt.xml
@@ -25,7 +25,7 @@
<set-property name="gwt.logging.enabled" value="TRUE"/>
<set-property name="gwt.logging.logLevel" value="INFO"/>
<set-property name="gwt.logging.consoleHandler" value="ENABLED" />
- <set-property name="gwt.logging.developmentModeHandler" value="DISABLED" />
+ <set-property name="gwt.logging.developmentModeHandler" value="ENABLED" />
<set-property name="gwt.logging.firebugHandler" value="ENABLED" />
<set-property name="gwt.logging.hasWidgetsHandler" value="DISABLED" />
<set-property name="gwt.logging.popupHandler" value="DISABLED" />
diff --git a/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/DynaTableRf.java b/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/DynaTableRf.java
index 37350c0..b8368a5 100644
--- a/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/DynaTableRf.java
+++ b/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/DynaTableRf.java
@@ -20,6 +20,8 @@
import com.google.gwt.core.client.GWT.UncaughtExceptionHandler;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.event.shared.SimpleEventBus;
+import com.google.gwt.requestfactory.client.RequestFactoryLogHandler;
+import com.google.gwt.requestfactory.shared.LoggingRequest;
import com.google.gwt.sample.dynatablerf.client.widgets.DayFilterWidget;
import com.google.gwt.sample.dynatablerf.client.widgets.FavoritesWidget;
import com.google.gwt.sample.dynatablerf.client.widgets.SummaryWidget;
@@ -62,8 +64,22 @@
}
});
- DynaTableRequestFactory requests = GWT.create(DynaTableRequestFactory.class);
+ final DynaTableRequestFactory requests =
+ GWT.create(DynaTableRequestFactory.class);
requests.init(eventBus);
+
+ // Add remote logging handler
+ RequestFactoryLogHandler.LoggingRequestProvider provider =
+ new RequestFactoryLogHandler.LoggingRequestProvider() {
+ @Override
+ public LoggingRequest getLoggingRequest() {
+ return requests.loggingRequest();
+ }
+ };
+ Logger.getLogger("").addHandler(
+ new RequestFactoryLogHandler(provider, Level.WARNING,
+ "WireActivityLogger"));
+
FavoritesManager manager = new FavoritesManager();
PersonEditorWorkflow.register(eventBus, requests, manager);
diff --git a/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/shared/DynaTableRequestFactory.java b/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/shared/DynaTableRequestFactory.java
index ddbb5ce..abbb7a0 100644
--- a/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/shared/DynaTableRequestFactory.java
+++ b/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/shared/DynaTableRequestFactory.java
@@ -16,6 +16,7 @@
package com.google.gwt.sample.dynatablerf.shared;
import com.google.gwt.requestfactory.shared.Instance;
+import com.google.gwt.requestfactory.shared.LoggingRequest;
import com.google.gwt.requestfactory.shared.ProxyListRequest;
import com.google.gwt.requestfactory.shared.ProxyRequest;
import com.google.gwt.requestfactory.shared.RequestFactory;
@@ -64,6 +65,8 @@
AddressRequest addressRequest();
+ LoggingRequest loggingRequest();
+
PersonRequest personRequest();
SchoolCalendarRequest schoolCalendarRequest();
diff --git a/user/src/com/google/gwt/requestfactory/client/RequestFactoryLogHandler.java b/user/src/com/google/gwt/requestfactory/client/RequestFactoryLogHandler.java
index e3b9b8d..3bc29bf 100644
--- a/user/src/com/google/gwt/requestfactory/client/RequestFactoryLogHandler.java
+++ b/user/src/com/google/gwt/requestfactory/client/RequestFactoryLogHandler.java
@@ -16,8 +16,8 @@
package com.google.gwt.requestfactory.client;
+import com.google.gwt.requestfactory.shared.LoggingRequest;
import com.google.gwt.requestfactory.shared.Receiver;
-import com.google.gwt.requestfactory.shared.RequestFactory;
import com.google.gwt.requestfactory.shared.SyncResult;
import java.util.Set;
@@ -30,7 +30,15 @@
* A Handler that does remote logging for applications using RequestFactory.
*/
public class RequestFactoryLogHandler extends Handler {
- class LoggingReceiver implements Receiver<Long> {
+
+ /**
+ * Provides a logging request
+ */
+ public static interface LoggingRequestProvider {
+ LoggingRequest getLoggingRequest();
+ }
+
+ private class LoggingReceiver implements Receiver<Long> {
public void onSuccess(Long response, Set<SyncResult> syncResults) {
if (response > 0) {
logger.finest("Remote logging successful");
@@ -44,7 +52,7 @@
Logger.getLogger(RequestFactoryLogHandler.class.getName());
private boolean closed;
- private RequestFactory requestFactory;
+ private LoggingRequestProvider requestProvider;
private String ignoredLoggerSubstring;
/**
@@ -56,9 +64,9 @@
* activity going accross the wire. If we did not exclude these loggers, an
* infinite loop would occur.
*/
- public RequestFactoryLogHandler(RequestFactory requestFactory, Level level,
- String ignoredLoggerSubstring) {
- this.requestFactory = requestFactory;
+ public RequestFactoryLogHandler(LoggingRequestProvider requestProvider,
+ Level level, String ignoredLoggerSubstring) {
+ this.requestProvider = requestProvider;
this.ignoredLoggerSubstring = ignoredLoggerSubstring;
closed = false;
setLevel(level);
@@ -85,7 +93,7 @@
}
Receiver<Long> loggingReceiver = new LoggingReceiver();
- requestFactory.loggingRequest().logMessage(
+ requestProvider.getLoggingRequest().logMessage(
record.getLevel().toString(),
record.getLoggerName(),
record.getMessage()).fire(loggingReceiver);
diff --git a/user/src/com/google/gwt/requestfactory/client/impl/RequestFactoryJsonImpl.java b/user/src/com/google/gwt/requestfactory/client/impl/RequestFactoryJsonImpl.java
index c78d733..e399084 100644
--- a/user/src/com/google/gwt/requestfactory/client/impl/RequestFactoryJsonImpl.java
+++ b/user/src/com/google/gwt/requestfactory/client/impl/RequestFactoryJsonImpl.java
@@ -22,7 +22,6 @@
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
-import com.google.gwt.requestfactory.client.RequestFactoryLogHandler;
import com.google.gwt.requestfactory.shared.EntityProxy;
import com.google.gwt.requestfactory.shared.EntityProxyId;
import com.google.gwt.requestfactory.shared.RequestEvent;
@@ -165,8 +164,6 @@
public void init(EventBus eventBus) {
this.valueStore = new ValueStoreJsonImpl();
this.eventBus = eventBus;
- Logger.getLogger("").addHandler(
- new RequestFactoryLogHandler(this, Level.WARNING, wireLogger.getName()));
logger.fine("Successfully initialized RequestFactory");
}
diff --git a/user/src/com/google/gwt/requestfactory/rebind/RequestFactoryGenerator.java b/user/src/com/google/gwt/requestfactory/rebind/RequestFactoryGenerator.java
index ec8611c..3158f18 100644
--- a/user/src/com/google/gwt/requestfactory/rebind/RequestFactoryGenerator.java
+++ b/user/src/com/google/gwt/requestfactory/rebind/RequestFactoryGenerator.java
@@ -317,17 +317,6 @@
requestSelectors.add(method);
}
- // In addition to the request selectors in the generated interface, there
- // are a few which are in RequestFactory which also need to have
- // implementations generated. Hard coding the addition of these here for now
- JClassType t = generatorContext.getTypeOracle().findType(
- RequestFactory.class.getName());
- try {
- requestSelectors.add(t.getMethod("loggingRequest", new JType[0]));
- } catch (NotFoundException e) {
- e.printStackTrace();
- }
-
JClassType proxyToTypeInterface = generatorContext.getTypeOracle().findType(
ProxyToTypeMap.class.getName());
// TODO: note, this seems like a bug. What if you have 2 RequestFactories?
diff --git a/user/src/com/google/gwt/requestfactory/shared/RequestFactory.java b/user/src/com/google/gwt/requestfactory/shared/RequestFactory.java
index 9d40015..b9cb34e 100644
--- a/user/src/com/google/gwt/requestfactory/shared/RequestFactory.java
+++ b/user/src/com/google/gwt/requestfactory/shared/RequestFactory.java
@@ -85,10 +85,5 @@
*/
void init(EventBus eventBus);
- // The following methods match the format for the generated sub-interfaces
- // and implementations are generated using the same code we use to generate
- // those. In order to ensure this happens, each of the request selectors
- // needs to be manually added to the requestSelectors list in
- // RequestFactoryGenerator.java
- LoggingRequest loggingRequest();
+
}