Example usage for com.google.gwt.user.client.rpc SerializationException SerializationException

List of usage examples for com.google.gwt.user.client.rpc SerializationException SerializationException

Introduction

In this page you can find the example usage for com.google.gwt.user.client.rpc SerializationException SerializationException.

Prototype

public SerializationException(Throwable cause) 

Source Link

Usage

From source file:com.apress.progwt.server.gwt.OneFourTenSerializationPolicy.java

License:Apache License

public void validateDeserialize(Class clazz) throws SerializationException {
    if (!isInstantiable(clazz)) {
        throw new SerializationException("Type '" + clazz.getName() + "' was not assignable to '"
                + IsSerializable.class.getName()
                + "' and did not have a custom field serializer.  For security purposes, this type will not be deserialized.");
    }//from w  ww.  j a va2 s.c  o  m
}

From source file:com.apress.progwt.server.gwt.OneFourTenSerializationPolicy.java

License:Apache License

public void validateSerialize(Class clazz) throws SerializationException {
    if (!isInstantiable(clazz)) {
        throw new SerializationException("Type '" + clazz.getName() + "' was not assignable to '"
                + IsSerializable.class.getName()
                + "' and did not have a custom field serializer.  For security purposes, this type will not be serialized.");
    }/*w w  w  .j a  v  a  2s  .c om*/
}

From source file:com.apress.progwt.server.gwt.ServerSerializationStreamWriter_1_5_3.java

License:Apache License

private void serializeClass(Object instance, Class<?> instanceClass) throws SerializationException {
    assert (instance != null);

    Field[] serializableFields = SerializabilityUtil_1_5_3.applyFieldSerializationPolicy(instanceClass);
    for (Field declField : serializableFields) {
        assert (declField != null);

        boolean isAccessible = declField.isAccessible();
        boolean needsAccessOverride = !isAccessible && !Modifier.isPublic(declField.getModifiers());
        if (needsAccessOverride) {
            // Override the access restrictions
            declField.setAccessible(true);
        }// w  ww .j a  v  a  2 s  .c  o m

        Object value;
        try {
            value = declField.get(instance);
            serializeValue(value, declField.getType());

        } catch (IllegalArgumentException e) {
            throw new SerializationException(e);

        } catch (IllegalAccessException e) {
            throw new SerializationException(e);
        }
    }

    Class<?> superClass = instanceClass.getSuperclass();
    if (serializationPolicy.shouldSerializeFields(superClass)) {
        serializeImpl(instance, superClass);
    }
}

From source file:com.apress.progwt.server.gwt.ServerSerializationStreamWriter_1_5_3.java

License:Apache License

private void serializeWithCustomSerializer(Class<?> customSerializer, Object instance, Class<?> instanceClass)
        throws SerializationException {

    try {//from  w  w  w.j  a  v  a 2 s.c  o m
        assert (!instanceClass.isArray());

        for (Method method : customSerializer.getMethods()) {
            if ("serialize".equals(method.getName())) {
                method.invoke(null, this, instance);
                return;
            }
        }
        throw new NoSuchMethodException("serialize");
    } catch (SecurityException e) {
        throw new SerializationException(e);

    } catch (NoSuchMethodException e) {
        throw new SerializationException(e);

    } catch (IllegalArgumentException e) {
        throw new SerializationException(e);

    } catch (IllegalAccessException e) {
        throw new SerializationException(e);

    } catch (InvocationTargetException e) {
        throw new SerializationException(e);
    }
}

From source file:com.didactilab.gwt.phprpc.linker.WebClientOracleSerializationWriter.java

License:Apache License

public void writeField(String className, Field field, Object instance) throws SerializationException {
    try {/*  w  w w  .  jav a2 s.  co  m*/
        String name = field.getName();
        if (Modifier.isPrivate(field.getModifiers()))
            name = "\0" + className + "\0" + name;
        else if (Modifier.isProtected(field.getModifiers()))
            name = "\0*\0" + name;
        writeString(name);
        boolean accessible = field.isAccessible();
        field.setAccessible(true);
        Class<?> type = field.getType();
        if (type.equals(int.class)) {
            int value = field.getInt(instance);
            writeInteger(value);
        } else {
            writeObject(field.get(instance));
        }
        field.setAccessible(accessible);
    } catch (IllegalAccessException e) {
        throw new SerializationException(e.getMessage());
    }
}

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

License:Apache License

/**
 * Loads a {@link CustomFieldSerializer} from a class that may implement
 * that interface./*  w  w  w  .j  a  v a  2 s. co  m*/
 * 
 * @param customSerializerClass
 *            the Custom Field Serializer class
 * 
 * @return an instance the class provided if it implements
 *         {@link CustomFieldSerializer} or {@code null} if it does not
 * 
 * @throws SerializationException
 *             if the load process encounters an unexpected problem
 */
static CustomFieldSerializer<?> loadCustomFieldSerializer(final Class<?> customSerializerClass)
        throws SerializationException {
    /**
     * Note that neither reading or writing to the
     * CLASS_TO_SERIALIZER_INSTANCE is synchronized for performance reasons.
     * This could cause get misses, put misses and the same
     * CustomFieldSerializer to be instantiated more than once, but none of
     * these are critical operations as CLASS_TO_SERIALIZER_INSTANCE is only
     * a performance improving cache.
     */
    CustomFieldSerializer<?> customFieldSerializer = CLASS_TO_SERIALIZER_INSTANCE.get(customSerializerClass);
    if (customFieldSerializer == null) {
        if (CustomFieldSerializer.class.isAssignableFrom(customSerializerClass)) {
            try {
                customFieldSerializer = (CustomFieldSerializer) customSerializerClass.newInstance();
            } catch (InstantiationException e) {
                throw new SerializationException(e);

            } catch (IllegalAccessException e) {
                throw new SerializationException(e);
            }
        } else {
            customFieldSerializer = NO_SUCH_SERIALIZER;
        }
        CLASS_TO_SERIALIZER_INSTANCE.put(customSerializerClass, customFieldSerializer);
    }
    if (customFieldSerializer == NO_SUCH_SERIALIZER) {
        return null;
    } else {
        return customFieldSerializer;
    }
}

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

License:Apache License

@Override
protected String getObjectTypeSignature(Object instance) throws SerializationException {
    assert (instance != null);

    Class<?> clazz = getClassForSerialization(instance);
    if (hasFlags(FLAG_ELIDE_TYPE_NAMES)) {
        if (serializationPolicy instanceof TypeNameObfuscator) {
            return ((TypeNameObfuscator) serializationPolicy).getTypeIdForClass(clazz);
        }/*  ww  w  .j a v a2 s. c  om*/

        throw new SerializationException("The GWT module was compiled with RPC "
                + "type name elision enabled, but " + serializationPolicy.getClass().getName()
                + " does not implement " + TypeNameObfuscator.class.getName());
    } else {
        return SerializabilityUtil.encodeSerializedInstanceReference(clazz, serializationPolicy);
    }
}

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

License:Apache License

@Override
protected void serialize(Object instance, String typeSignature) throws SerializationException {
    assert (instance != null);

    Class<?> clazz = getClassForSerialization(instance);

    try {/* www  .j a v  a 2  s. com*/
        serializationPolicy.validateSerialize(clazz);
    } catch (SerializationException e) {
        throw new SerializationException(e.getMessage() + ": instance = " + instance);
    }
    serializeImpl(instance, clazz);
}

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

License:Apache License

private void serializeClass(Object instance, Class<?> instanceClass) throws SerializationException {
    assert (instance != null);
    Field[] serializableFields = SerializabilityUtil.applyFieldSerializationPolicy(instanceClass);

    /**/*  w  w w  .j ava  2s.  c o m*/
     * If clientFieldNames is non-null, identify any additional server-only
     * fields and serialize them separately. Java serialization is used to
     * construct a byte array, which is encoded as a String and written
     * prior to the rest of the field data.
     */
    Set<String> clientFieldNames = serializationPolicy.getClientFieldNamesForEnhancedClass(instanceClass);
    if (clientFieldNames != null) {
        List<Field> serverFields = new ArrayList<Field>();
        for (Field declField : serializableFields) {
            assert (declField != null);

            // Identify server-only fields
            if (!clientFieldNames.contains(declField.getName())) {
                serverFields.add(declField);
                continue;
            }
        }

        // Serialize the server-only fields into a byte array and encode as
        // a String
        try {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            ObjectOutputStream oos = new ObjectOutputStream(baos);
            oos.writeInt(serverFields.size());
            for (Field f : serverFields) {
                oos.writeObject(f.getName());
                f.setAccessible(true);
                Object fieldData = f.get(instance);
                oos.writeObject(fieldData);
            }
            oos.close();

            byte[] serializedData = baos.toByteArray();
            String encodedData = Base64Utils.toBase64(serializedData);
            writeString(encodedData);
        } catch (IllegalAccessException e) {
            throw new SerializationException(e);
        } catch (IOException e) {
            throw new SerializationException(e);
        }
    }

    // Write the client-visible field data
    for (Field declField : serializableFields) {
        if ((clientFieldNames != null) && !clientFieldNames.contains(declField.getName())) {
            // Skip server-only fields
            continue;
        }

        boolean isAccessible = declField.isAccessible();
        boolean needsAccessOverride = !isAccessible && !Modifier.isPublic(declField.getModifiers());
        if (needsAccessOverride) {
            // Override the access restrictions
            declField.setAccessible(true);
        }

        Object value;
        try {
            value = declField.get(instance);
            serializeValue(value, declField.getType());

        } catch (IllegalArgumentException e) {
            throw new SerializationException(e);

        } catch (IllegalAccessException e) {
            throw new SerializationException(e);
        }
    }

    Class<?> superClass = instanceClass.getSuperclass();
    if (serializationPolicy.shouldSerializeFields(superClass)) {
        serializeImpl(instance, superClass);
    }
}

From source file:com.gdevelop.gwt.syncrpc.SyncClientSerializationStreamReader.java

License:Apache License

protected Object deserialize(String typeSignature) throws SerializationException {
    Object instance = null;//from  ww  w . java  2  s.  com
    SerializedInstanceReference serializedInstRef = SerializabilityUtil
            .decodeSerializedInstanceReference(typeSignature);
    try {
        // Class<?> instanceClass =
        // Class.forName(serializedInstRef.getName(),
        // false, null);
        String cn = serializedInstRef.getName();
        Class<?> instanceClass = getClassCached(cn);
        assert (serializationPolicy != null);
        try {
            serializationPolicy.validateDeserialize(instanceClass);
        } catch (SerializationException e) {
            System.err.println("WARN: " + e.getMessage());
        }
        // TODO validateTypeVersions(instanceClass, serializedInstRef);
        Class<?> customSerializer = SerializabilityUtil.hasCustomFieldSerializer(instanceClass);
        int index = reserveDecodedObjectIndex();
        instance = instantiate(customSerializer, instanceClass);
        rememberDecodedObject(index, instance);
        Object replacement = deserializeImpl(customSerializer, instanceClass, instance);
        // It's possible that deserializing an object requires the original
        // proxy
        // object to be replaced.
        if (instance != replacement) {
            rememberDecodedObject(index, replacement);
            instance = replacement;
        }
        return instance;
    } catch (ClassNotFoundException e) {
        throw new SerializationException(e);
    } catch (InstantiationException e) {
        throw new SerializationException(e);
    } catch (IllegalAccessException e) {
        throw new SerializationException(e);
    } catch (IllegalArgumentException e) {
        throw new SerializationException(e);
    } catch (InvocationTargetException e) {
        throw new SerializationException(e);
    } catch (NoSuchMethodException e) {
        throw new SerializationException(e);
    }
}