Example usage for com.google.gwt.user.server.rpc SerializationPolicy getClientFieldNamesForEnhancedClass

List of usage examples for com.google.gwt.user.server.rpc SerializationPolicy getClientFieldNamesForEnhancedClass

Introduction

In this page you can find the example usage for com.google.gwt.user.server.rpc SerializationPolicy getClientFieldNamesForEnhancedClass.

Prototype

public Set<String> getClientFieldNamesForEnhancedClass(Class<?> clazz) 

Source Link

Document

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.

Usage

From source file:com.foo.server.rpc230.SerializabilityUtil.java

License:Apache License

private static void generateSerializationSignature(Class<?> instanceType, CRC32 crc, SerializationPolicy policy)
        throws UnsupportedEncodingException {
    crc.update(getSerializedTypeName(instanceType).getBytes(DEFAULT_ENCODING));

    if (excludeImplementationFromSerializationSignature(instanceType)) {
        return;/*w ww.  j  a  va2s.  c om*/
    }

    Class<?> customSerializer = hasCustomFieldSerializer(instanceType);
    if (customSerializer != null) {
        generateSerializationSignature(customSerializer, crc, policy);
    } else if (instanceType.isArray()) {
        generateSerializationSignature(instanceType.getComponentType(), crc, policy);
    } else if (!instanceType.isPrimitive()) {
        Field[] fields = applyFieldSerializationPolicy(instanceType);
        Set<String> clientFieldNames = policy.getClientFieldNamesForEnhancedClass(instanceType);
        for (Field field : fields) {
            assert (field != null);
            /**
             * If clientFieldNames is non-null, use only the fields listed
             * there to generate the signature. Otherwise, use all known
             * fields.
             */
            if ((clientFieldNames == null) || clientFieldNames.contains(field.getName())) {
                crc.update(field.getName().getBytes(DEFAULT_ENCODING));
                crc.update(getSerializedTypeName(field.getType()).getBytes(DEFAULT_ENCODING));
            }
        }

        Class<?> superClass = instanceType.getSuperclass();
        if (superClass != null) {
            generateSerializationSignature(superClass, crc, policy);
        }
    }
}