blob: 53f1d629ea9eb2a19ce256a2d50256b4801c3c78 [file] [log] [blame]
/*
* Copyright 2009 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.impl;
import com.google.gwt.user.client.rpc.SerializationException;
/**
* This is a private interface that allows ProxyCreator to provide obfuscated
* type names to the server components via {@link StandardSerializationPolicy}.
* <p>
* The particulars of the implementation are deeply tied to the specifics of the
* RPC wire format and the code generated by TypeSerializerCreator.
* <p>
* This interface is not public in order to allow the API to be switched from
* Strings to ints in a future revision.
*/
public interface TypeNameObfuscator {
/**
* A reserved ID for specifying the identifier for the service interface
* itself.
*/
String SERVICE_INTERFACE_ID = "_";
/*
* TODO: Replace strings with integral constants once the RPC whitelist can be
* given as a hard requirement for deploying GWT-RPC.
*/
/**
* Returns the name of the class that should be instantiated based on an
* obfuscated identifier.
*
* @param id the type id that was present in the RPC payload
* @return the name of the class, suitable for use by {@link Class#forName},
* to be instantiated
* @throws SerializationException if there is no class that corresponds to the
* obfuscated id
*/
String getClassNameForTypeId(String id) throws SerializationException;
/**
* Returns the obfuscated identifier to be used to encode a class in the RPC
* wire format.
*
* @param clazz the class to be transmitted
* @return the obfuscated type identifier.
* @throws SerializationException
*/
String getTypeIdForClass(Class<?> clazz) throws SerializationException;
}