List of usage examples for com.google.gwt.user.client.rpc SerializationException SerializationException
public SerializationException(Throwable cause)
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); } }