All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.google.gwt.user.client.rpc.CustomFieldSerializer Maven / Gradle / Ivy

There is a newer version: 2.10.0
Show newest version
/*
 * Copyright 2011 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.client.rpc;

/**
 * An interface that may be implemented by class-based custom field serializers
 * which will reduce the amount of server-side reflection during serialization,
 * hence improving their serialization performance.
 *
 * @param  the type of the object being serialized
 */
public abstract class CustomFieldSerializer {

  /**
   * Deserializes the content of the object from the
   * {@link SerializationStreamReader}.
   *
   * @param streamReader the {@link SerializationStreamReader} to read the
   *        object's content from
   * @param instance the object instance to deserialize
   *
   * @throws SerializationException if the deserialization operation is not
   *        successful
   */
  public abstract void deserializeInstance(
      SerializationStreamReader streamReader, T instance)
      throws SerializationException;

  /**
   * @return true if a specialist {@link #instantiateInstance} is
   *         implemented; false otherwise
   */
  public boolean hasCustomInstantiateInstance() {
    return false;
  }

  /**
   * Instantiates an object from the {@link SerializationStreamReader}.
   * 

* Most of the time, this can be left unimplemented and the framework * will instantiate the instance itself. This is typically used when the * object being deserialized is immutable, hence it has to be created with * its state already set. *

* If this is overridden, the {@link #hasCustomInstantiateInstance} method * must return true in order for the framework to know to call * it. * * @param streamReader the {@link SerializationStreamReader} to read the * object's content from * * @return an object that has been loaded from the * {@link SerializationStreamReader} * * @throws SerializationException if the instantiation operation is not * successful */ public T instantiateInstance(SerializationStreamReader streamReader) throws SerializationException { throw new SerializationException( "instantiateInstance is not supported by " + getClass().getName()); } /** * Serializes the content of the object into the * {@link SerializationStreamWriter}. * * @param streamWriter the {@link SerializationStreamWriter} to write the * object's content to * @param instance the object instance to serialize * * @throws SerializationException if the serialization operation is not * successful */ public abstract void serializeInstance(SerializationStreamWriter streamWriter, T instance) throws SerializationException; }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy