/** * Directly registers a class for a specific ID. Generally, use the regular * registerClass() method. This method is intended for framework code that might * be maintaining specific ID maps across client and server. */ public static SerializerRegistration registerClassForId( short id, Class cls, Serializer serializer ) { if( locked ) { throw new RuntimeException("Serializer registry locked trying to register class:" + cls); } SerializerRegistration reg = new SerializerRegistration(serializer, cls, id); idRegistrations.put(id, reg); classRegistrations.put(cls, reg); log.log( Level.FINE, "Registered class[" + id + "]:{0} to:" + serializer, cls ); serializer.initialize(cls); // Add the class after so that dependency order is preserved if the // serializer registers its own classes. registrations.add(reg); return reg; }
/** * Directly registers a class for a specific ID. Generally, use the regular * registerClass() method. This method is intended for framework code that might * be maintaining specific ID maps across client and server. */ public static SerializerRegistration registerClassForId( short id, Class cls, Serializer serializer ) { if( locked ) { throw new RuntimeException("Serializer registry locked trying to register class:" + cls); } SerializerRegistration reg = new SerializerRegistration(serializer, cls, id); idRegistrations.put(id, reg); classRegistrations.put(cls, reg); log.log( Level.FINE, "Registered class[" + id + "]:{0} to:" + serializer, cls ); serializer.initialize(cls); // Add the class after so that dependency order is preserved if the // serializer registers its own classes. registrations.add(reg); return reg; }
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; }
/** * 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; }