default <T> T getReference(NodeAddress nodeId, Class<T> iClass, Object id) { return getReference(null, nodeId, iClass, id); }
default <T> T getReference(Class<T> iClass, Object id) { return getReference(null, null, iClass, id); }
@Override public <T> T getReference(BasicRuntime runtime, NodeAddress address, Class<T> iClass, Object id) { return DefaultDescriptorFactory.get().getReference(this, address, iClass, id); }
@Override public <T> T getReference(final BasicRuntime runtime, final NodeAddress address, final Class<T> iClass, final Object id) { return DefaultDescriptorFactory.get().getReference(this, address, iClass, id); }
@SuppressWarnings("unchecked") protected <T> RemoteReference<T> createReference(NodeAddress address, Class<T> iClass, String objectId) { final T reference = DefaultDescriptorFactory.get().getReference(iClass, objectId); if (address != null) { ((RemoteReference) reference).address = address; } return (RemoteReference<T>) reference; }
@SuppressWarnings({ "rawtypes", "unchecked" }) @Override public Object deserialize(final JsonParser jsonParser, final DeserializationContext ctxt) throws IOException { final String text = jsonParser.getText(); final int idx = text.indexOf('/'); if (idx != 0) { final UUID uuid = UUID.fromString(text.substring(0, idx)); return factory.getReference(new NodeAddressImpl(uuid), (Class) iClass, text.substring(idx + 1)); } else { return factory.getReference(null, (Class) iClass, text.substring(idx + 1)); } }
@SuppressWarnings({ "unchecked", "rawtypes" }) @Override public Object deserialize(final JsonParser jsonParser, final DeserializationContext ctxt) throws IOException { final String text = jsonParser.getText(); if (text != null && text.startsWith("!!")) { if (text.startsWith("!!!")) { // three "!!!" is the escape when the id starts with "!!" return factory.getReference(null, (Class) iClass, text.substring(1)); } int idx = text.indexOf(' '); String className = text.substring(2, idx); String key = text.substring(idx + 1); try { final Class aClass = Class.forName(className); return factory.getReference(null, aClass, key); } catch (ClassNotFoundException e) { throw new UncheckedException("Can't find class: " + e); } } return factory.getReference(null, (Class) iClass, text); }
@Override public <T> T getReference(final BasicRuntime runtime, final NodeAddress address, final Class<T> iClass, final Object id) { if (address != null) { return stage.getReference(address, iClass, id); } else { return DefaultDescriptorFactory.get().getReference(this, address, iClass, id); } }
@Override public Object copy(final Kryo kryo, final Object original) { if (original instanceof RemoteReference) { final RemoteReference<?> remoteReference = (RemoteReference<?>) original; if (RemoteReference.getRuntime(remoteReference) != null) { return DefaultDescriptorFactory.get().getReference(null, RemoteReference.getAddress(remoteReference), RemoteReference.getInterfaceClass(remoteReference), RemoteReference.getId(remoteReference)); } } return original; }
@Override public Object copy(final Kryo kryo, final Object original) { if (original instanceof AbstractActor) { return RemoteReference.from((AbstractActor) original); } if (original instanceof RemoteReference) { final RemoteReference<?> remoteReference = (RemoteReference<?>) original; if (RemoteReference.getRuntime(remoteReference) != null) { return DefaultDescriptorFactory.get().getReference(null, RemoteReference.getAddress(remoteReference), RemoteReference.getInterfaceClass(remoteReference), RemoteReference.getId(remoteReference)); } return original; } if (original == null) { return null; } throw new IllegalArgumentException("Invalid type for " + original); }
@Override public Object copy(Kryo kryo, Object original) { if (original instanceof RemoteReference) { final RemoteReference<?> remoteReference = (RemoteReference<?>) original; if (RemoteReference.getRuntime(remoteReference) != null) { return DefaultDescriptorFactory.get().getReference(null, RemoteReference.getAddress(remoteReference), RemoteReference.getInterfaceClass(remoteReference), RemoteReference.getId(remoteReference)); } return original; } return ActorRuntime.getRuntime().registerObserver(null, (ActorObserver) original); }
final RemoteReference reference = (RemoteReference) DefaultDescriptorFactory.get().getReference( runtime, message.getReferenceAddress(),
default <T> T getReference(NodeAddress nodeId, Class<T> iClass, Object id) { return getReference(null, nodeId, iClass, id); }
default <T> T getReference(Class<T> iClass, Object id) { return getReference(null, null, iClass, id); }
@SuppressWarnings({ "rawtypes", "unchecked" }) @Override public Object deserialize(final JsonParser jsonParser, final DeserializationContext ctxt) throws IOException { final String text = jsonParser.getText(); final int idx = text.indexOf('/'); if (idx != 0) { final UUID uuid = UUID.fromString(text.substring(0, idx)); return factory.getReference(new NodeAddressImpl(uuid), (Class) iClass, text.substring(idx + 1)); } else { return factory.getReference(null, (Class) iClass, text.substring(idx + 1)); } }
@SuppressWarnings({ "unchecked", "rawtypes" }) @Override public Object deserialize(final JsonParser jsonParser, final DeserializationContext ctxt) throws IOException { final String text = jsonParser.getText(); if (text != null && text.startsWith("!!")) { if (text.startsWith("!!!")) { // three "!!!" is the escape when the id starts with "!!" return factory.getReference(null, (Class) iClass, text.substring(1)); } int idx = text.indexOf(' '); String className = text.substring(2, idx); String key = text.substring(idx + 1); try { final Class aClass = Class.forName(className); return factory.getReference(null, aClass, key); } catch (ClassNotFoundException e) { throw new UncheckedException("Can't find class: " + e); } } return factory.getReference(null, (Class) iClass, text); }