/* * 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; }