blob: a003dc123efa20762e35a8384b806bb3ad37e293 [file] [log] [blame]
/*
* 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();
}
}