/* * Copyright 2008 Google Inc. * * 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.google.gwt.user.server.rpc; import com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException; import com.google.gwt.user.client.rpc.InheritanceTestServiceSubtype; import com.google.gwt.user.client.rpc.InheritanceTestSetFactory; import com.google.gwt.user.client.rpc.InheritanceTestSetValidator; import com.google.gwt.user.client.rpc.SerializationException; import com.google.gwt.user.client.rpc.InheritanceTestSetFactory.AbstractClass; import com.google.gwt.user.client.rpc.InheritanceTestSetFactory.AnonymousClassInterface; import com.google.gwt.user.client.rpc.InheritanceTestSetFactory.Circle; import com.google.gwt.user.client.rpc.InheritanceTestSetFactory.JavaSerializableClass; import com.google.gwt.user.client.rpc.InheritanceTestSetFactory.MySerializableInterface; import com.google.gwt.user.client.rpc.InheritanceTestSetFactory.SerializableClass; import com.google.gwt.user.client.rpc.InheritanceTestSetFactory.SerializableClassWithTransientField; import javax.servlet.ServletContext; /** * Servlet used by the {@link com.google.gwt.user.client.rpc.InheritanceTest * InheritanceTest} unit test. */ public class InheritanceTestServiceImpl extends HybridServiceServlet implements InheritanceTestServiceSubtype { /** * Filters log messages to avoid logging spurious warnings during successful * tests. */ private ServletContext wrappedServletContext; public AnonymousClassInterface echo(AnonymousClassInterface serializable) { return serializable; } public Circle echo(Circle circle) { return circle; } public JavaSerializableClass echo(JavaSerializableClass javaSerializableClass) { return javaSerializableClass; } public SerializableClass echo(SerializableClass serializableClass) { if (!InheritanceTestSetValidator.isValid(serializableClass)) { throw new RuntimeException(); } return serializableClass; } public SerializableClassWithTransientField echo( SerializableClassWithTransientField serializableClass) { if (!InheritanceTestSetValidator.isValid(serializableClass)) { throw new RuntimeException(); } // this should not be sent back across the wire, the client will verify // that this is true serializableClass.setObj("hello"); return serializableClass; } public void foo() { } public AbstractClass getAbstractClass() { // never actually called, used in testing the RPC generator return null; } public MySerializableInterface getSerializableInterface1() { // never actually called, used in testing the RPC generator return null; } public MySerializableInterface getSerializableInterface2() { // never actually called, used in testing the RPC generator return null; } /** * Overrides the default servlet context to filter expected log messages. */ @Override public ServletContext getServletContext() { if (wrappedServletContext == null) { wrappedServletContext = new LogFilterServletContext( super.getServletContext()) { @Override protected boolean shouldLog(Throwable t, String msg) { if ((t instanceof IncompatibleRemoteServiceException || t instanceof SerializationException) && (t.getMessage().contains("com.google.gwt.user.client.rpc.InheritanceTest$1")) || t.getMessage().contains( "com.google.gwt.user.client.rpc.InheritanceTestSetFactory$1")) { return false; } return true; } }; } return wrappedServletContext; } public SerializableClass getUnserializableClass() { return InheritanceTestSetFactory.createNonStaticInnerClass(); } }