private static void register(String className, boolean distribute, SerializerAttributesHolder holder) { if (StringUtils.isBlank(className)) { throw new IllegalArgumentException("Class name cannot be null or empty."); } SerializerAttributesHolder oldValue = dsClassesToHolders.putIfAbsent(className, holder); if (oldValue != null) { if (oldValue.getId() != 0 && holder.getId() != 0 && oldValue.getId() != holder.getId()) { throw new IllegalStateException( String.format( "A DataSerializer of class %s is already registered with id %s.", new Object[] {oldValue.getClass().getName(), oldValue.getId()})); } } idsToHolders.putIfAbsent(holder.getId(), holder); Object ds = idsToSerializers.get(holder.getId()); if (ds instanceof Marker) { synchronized (ds) { ((Marker) ds).notifyAll(); } } if (distribute) { sendRegistrationMessageToServers(holder); } }
for (int i = 0; i < sahs.length; i++) { DataSerializer.writeNonPrimitiveClassName(sahs[i].getClassName(), out); out.writeInt(sahs[i].getId());
this.serializerClasseNames = new String[sahs.length]; for (int i = 0; i < sahs.length; i++) { this.serializerIds[i] = sahs[i].getId(); this.serializerClasseNames[i] = sahs[i].getClassName();
/** * @throws SerializationException Thrown when serialization fails. */ public RegisterDataSerializersOpImpl(SerializerAttributesHolder[] holders, EventID eventId) { super(MessageType.REGISTER_DATASERIALIZERS, holders.length * 2 + 1); for (int i = 0; i < holders.length; i++) { try { getMessage().addBytesPart(BlobHelper.serializeToBlob(holders[i].getClassName())); } catch (IOException ex) { throw new SerializationException("failed serializing object", ex); } getMessage().addIntPart(holders[i].getId()); } getMessage().addBytesPart(eventId.calcBytes()); // // CALLBACK FOR TESTING PURPOSE ONLY //// if (PoolImpl.IS_INSTANTIATOR_CALLBACK) { ClientServerObserver bo = ClientServerObserverHolder.getInstance(); bo.beforeSendingToServer(eventId); } }