public static boolean isSerializable( Throwable error ) { if( error == null ) { return false; } for( Throwable t = error; t != null; t = t.getCause() ) { if( Serializer.getExactSerializerRegistration(t.getClass()) == null ) { return false; } } return true; }
@SuppressWarnings("unchecked") public static SerializerRegistration getSerializerRegistration(Class cls, boolean failOnMiss) { SerializerRegistration reg = classRegistrations.get(cls); if (reg != null) return reg; for (Map.Entry<Class, SerializerRegistration> entry : classRegistrations.entrySet()) { if (entry.getKey().isAssignableFrom(Serializable.class)) continue; if (entry.getKey().isAssignableFrom(cls)) return entry.getValue(); } if (cls.isArray()) return registerClass(cls, arraySerializer); if (Serializable.class.isAssignableFrom(cls)) { return getExactSerializerRegistration(java.io.Serializable.class); } // See if the class could be safely auto-registered if (cls.isAnnotationPresent(Serializable.class)) { Serializable serializable = (Serializable)cls.getAnnotation(Serializable.class); short classId = serializable.id(); if( classId != 0 ) { // No reason to fail because the ID is fixed failOnMiss = false; } } if( failOnMiss ) { throw new IllegalArgumentException( "Class has not been registered:" + cls ); } return registerClass(cls, fieldSerializer); }
@Override protected void onInitialize( ClientServiceManager serviceManager ) { // Make sure our message type is registered if it isn't already if( Serializer.getExactSerializerRegistration(SerializerRegistrationsMessage.class) == null ) { // This is the minimum we'd need just to be able to register // the rest... otherwise we can't even receive this message. Serializer.registerClass(SerializerRegistrationsMessage.class); Serializer.registerClass(SerializerRegistrationsMessage.Registration.class); } else { log.log(Level.INFO, "Skipping registration of SerializerRegistrationsMessage."); } // Add our listener for that message type serviceManager.getClient().addMessageListener(this, SerializerRegistrationsMessage.class); }
public static SerializerRegistration registerClass(Class cls, Serializer serializer) { SerializerRegistration existingReg = getExactSerializerRegistration(cls); short id; if (existingReg != null) { id = existingReg.getId(); } else { id = nextId(); } return registerClassForId( id, cls, serializer ); }
/** * Registers the specified class. The failOnMiss flag controls whether or * not this method returns null for failed registration or throws an exception. */ @SuppressWarnings("unchecked") public static SerializerRegistration registerClass(Class cls, boolean failOnMiss) { if (cls.isAnnotationPresent(Serializable.class)) { Serializable serializable = (Serializable)cls.getAnnotation(Serializable.class); Class serializerClass = serializable.serializer(); short classId = serializable.id(); if (classId == 0) classId = nextId(); Serializer serializer = getSerializer(serializerClass, false); if (serializer == null) serializer = fieldSerializer; SerializerRegistration existingReg = getExactSerializerRegistration(cls); if (existingReg != null) classId = existingReg.getId(); SerializerRegistration reg = new SerializerRegistration(serializer, cls, classId); return registerClassForId( classId, cls, serializer ); } if (failOnMiss) { throw new IllegalArgumentException( "Class is not marked @Serializable:" + cls ); } return null; }
public static boolean isSerializable( Throwable error ) { if( error == null ) { return false; } for( Throwable t = error; t != null; t = t.getCause() ) { if( Serializer.getExactSerializerRegistration(t.getClass()) == null ) { return false; } } return true; }
public static SerializerRegistration registerClass(Class cls, Serializer serializer) { SerializerRegistration existingReg = getExactSerializerRegistration(cls); short id; if (existingReg != null) { id = existingReg.getId(); } else { id = --nextId; } SerializerRegistration reg = new SerializerRegistration(serializer, cls, id); idRegistrations.put(id, reg); classRegistrations.put(cls, reg); log.log( Level.INFO, "Registered class[" + id + "]:{0} to:" + serializer, cls ); serializer.initialize(cls); return reg; }
@SuppressWarnings("unchecked") public static SerializerRegistration getSerializerRegistration(Class cls, boolean failOnMiss) { SerializerRegistration reg = classRegistrations.get(cls); if (reg != null) return reg; for (Map.Entry<Class, SerializerRegistration> entry : classRegistrations.entrySet()) { if (entry.getKey().isAssignableFrom(Serializable.class)) continue; if (entry.getKey().isAssignableFrom(cls)) return entry.getValue(); } if (cls.isArray()) return registerClass(cls, arraySerializer); if (Serializable.class.isAssignableFrom(cls)) { return getExactSerializerRegistration(java.io.Serializable.class); } // See if the class could be safely auto-registered if (cls.isAnnotationPresent(Serializable.class)) { Serializable serializable = (Serializable)cls.getAnnotation(Serializable.class); short classId = serializable.id(); if( classId != 0 ) { // No reason to fail because the ID is fixed failOnMiss = false; } } if( failOnMiss ) { throw new IllegalArgumentException( "Class has not been registered:" + cls ); } return registerClass(cls, fieldSerializer); }
@SuppressWarnings("unchecked") public static SerializerRegistration getSerializerRegistration(Class cls, boolean failOnMiss) { SerializerRegistration reg = classRegistrations.get(cls); if (reg != null) return reg; for (Map.Entry<Class, SerializerRegistration> entry : classRegistrations.entrySet()) { if (entry.getKey().isAssignableFrom(Serializable.class)) continue; if (entry.getKey().isAssignableFrom(cls)) return entry.getValue(); } if (cls.isArray()) return registerClass(cls, arraySerializer); if (Serializable.class.isAssignableFrom(cls)) { return getExactSerializerRegistration(java.io.Serializable.class); } // See if the class could be safely auto-registered if (cls.isAnnotationPresent(Serializable.class)) { Serializable serializable = (Serializable)cls.getAnnotation(Serializable.class); short classId = serializable.id(); if( classId != 0 ) { // No reason to fail because the ID is fixed failOnMiss = false; } } if( failOnMiss ) { throw new IllegalArgumentException( "Class has not been registered:" + cls ); } return registerClass(cls, fieldSerializer); }
public static SerializerRegistration registerClass(Class cls, Serializer serializer) { SerializerRegistration existingReg = getExactSerializerRegistration(cls); short id; if (existingReg != null) { id = existingReg.getId(); } else { id = nextId(); } return registerClassForId( id, cls, serializer ); }
@Override protected void onInitialize( ClientServiceManager serviceManager ) { // Make sure our message type is registered if it isn't already if( Serializer.getExactSerializerRegistration(SerializerRegistrationsMessage.class) == null ) { // This is the minimum we'd need just to be able to register // the rest... otherwise we can't even receive this message. Serializer.registerClass(SerializerRegistrationsMessage.class); Serializer.registerClass(SerializerRegistrationsMessage.Registration.class); } else { log.log(Level.INFO, "Skipping registration of SerializerRegistrationsMessage."); } // Add our listener for that message type serviceManager.getClient().addMessageListener(this, SerializerRegistrationsMessage.class); }
/** * Registers the specified class. The failOnMiss flag controls whether or * not this method returns null for failed registration or throws an exception. */ @SuppressWarnings("unchecked") public static SerializerRegistration registerClass(Class cls, boolean failOnMiss) { if (cls.isAnnotationPresent(Serializable.class)) { Serializable serializable = (Serializable)cls.getAnnotation(Serializable.class); Class serializerClass = serializable.serializer(); short classId = serializable.id(); if (classId == 0) classId = --nextId; Serializer serializer = getSerializer(serializerClass, false); if (serializer == null) serializer = fieldSerializer; SerializerRegistration existingReg = getExactSerializerRegistration(cls); if (existingReg != null) classId = existingReg.getId(); SerializerRegistration reg = new SerializerRegistration(serializer, cls, classId); idRegistrations.put(classId, reg); classRegistrations.put(cls, reg); serializer.initialize(cls); log.log( Level.INFO, "Registered class[" + classId + "]:{0}.", cls ); return reg; } if (failOnMiss) { throw new IllegalArgumentException( "Class is not marked @Serializable:" + cls ); } return null; }
/** * Registers the specified class. The failOnMiss flag controls whether or * not this method returns null for failed registration or throws an exception. */ @SuppressWarnings("unchecked") public static SerializerRegistration registerClass(Class cls, boolean failOnMiss) { if (cls.isAnnotationPresent(Serializable.class)) { Serializable serializable = (Serializable)cls.getAnnotation(Serializable.class); Class serializerClass = serializable.serializer(); short classId = serializable.id(); if (classId == 0) classId = nextId(); Serializer serializer = getSerializer(serializerClass, false); if (serializer == null) serializer = fieldSerializer; SerializerRegistration existingReg = getExactSerializerRegistration(cls); if (existingReg != null) classId = existingReg.getId(); SerializerRegistration reg = new SerializerRegistration(serializer, cls, classId); return registerClassForId( classId, cls, serializer ); } if (failOnMiss) { throw new IllegalArgumentException( "Class is not marked @Serializable:" + cls ); } return null; }