Java tutorial
/* * Copyright 2008 Fred Sauer * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ package com.allen_sauer.gwt.log.clientserverdemo.client; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.Scheduler; import com.google.gwt.core.client.Scheduler.ScheduledCommand; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.rpc.AsyncCallback; import com.allen_sauer.gwt.log.client.Log; /** * Client server logging demo. */ public class LogClientServerDemo implements EntryPoint { /** * Main entry point method. */ @Override public void onModuleLoad() { // set uncaught exception handler Log.setUncaughtExceptionHandler(); // use deferred command to catch initialization exceptions in onModuleLoad2 Scheduler.get().scheduleDeferred(new ScheduledCommand() { @Override public void execute() { onModuleLoad2(); } }); } /** * Deferred initialization. */ public void onModuleLoad2() { IncrementServiceAsync service = (IncrementServiceAsync) GWT.create(IncrementService.class); AsyncCallback<Counter> callback = new AsyncCallback<Counter>() { @Override public void onFailure(Throwable ex) { Log.fatal("onFailure", ex); } @Override public void onSuccess(Counter counter) { Log.debug("onSuccess result counter is at " + counter.getCount()); } }; // execute the service Counter counter = new Counter(); counter.increment(); service.increment(counter, callback); new Timer() { @Override public void run() { Log.debug("*********************************************"); Log.fatal("fatal - should be visible"); Log.setCurrentLogLevel(Log.LOG_LEVEL_OFF); Log.fatal("fatal - should be filtered out"); Log.setCurrentLogLevel(Log.LOG_LEVEL_OFF); // should still output client side } }.schedule(2000); new Timer() { @Override public void run() { Log.setCurrentLogLevel(Log.LOG_LEVEL_FATAL); Log.fatal("Here it comes..."); try { throw new NullPointerException("catch me if you can"); } catch (Exception e) { throw new RuntimeException("log me on the server if you will", e); } } }.schedule(4000); } }