blob: ba33620309e397f8af6bdd5030604388ff7f2a66 [file] [log] [blame]
/*
* Copyright 2007 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.SerializationException;
import java.util.Set;
/**
* This is an abstract class for representing the serialization policy for a
* given module and
* {@link com.google.gwt.user.client.rpc.RemoteService RemoteService}.
* The serialize and deserialize queries are from the perspective
* of the server, not the web browser.
*/
public abstract class SerializationPolicy {
/**
* Returns the field names of the given class known to the client for classes
* that are expected to be enhanced on the server to have additional fields,
* or null for classes that are not expected to be enhanced.
*
* @param clazz the class to test
* @return a set containing client field names, or null
*/
public Set<String> getClientFieldNamesForEnhancedClass(Class<?> clazz) {
// Ignore the possibility of server-side enhancement for legacy classes.
return null;
}
/**
* Returns <code>true</code> if the class' fields should be deserialized.
*
* @param clazz the class to test
* @return <code>true</code> if the class' fields should be deserialized
*/
public abstract boolean shouldDeserializeFields(Class<?> clazz);
/**
* Returns <code>true</code> if the class' fields should be serialized.
*
* @param clazz the class to test
* @return <code>true</code> if the class' fields should be serialized
*/
public abstract boolean shouldSerializeFields(Class<?> clazz);
/**
* Validates that the specified class should be deserialized from a stream.
*
* @param clazz the class to validate
* @throws SerializationException if the class is not allowed to be
* deserialized
*/
public abstract void validateDeserialize(Class<?> clazz)
throws SerializationException;
/**
* Validates that the specified class should be serialized into a stream.
*
* @param clazz the class to validate
* @throws SerializationException if the class is not allowed to be serialized
*/
public abstract void validateSerialize(Class<?> clazz)
throws SerializationException;
}