@SuppressWarnings("unchecked") public static <R> Class<R> getInterfaceClass(final AbstractActor reference) { return from(reference)._interfaceClass(); }
public static Object getId(final AbstractActor actor) { return getId(from(actor)); }
@SuppressWarnings("unchecked") public static <T> T cast(Class<T> remoteInterface, Actor actor) { return (T) Proxy.newProxyInstance(DefaultDescriptorFactory.class.getClassLoader(), new Class[]{ remoteInterface }, (proxy, method, args) -> { // TODO: throw proper exceptions for the expected error scenarios (non task return), final int methodId = instance.dynamicReferenceFactory.getMethodId(method); return ActorRuntime.getRuntime() .invoke(RemoteReference.from(actor), method, method.isAnnotationPresent(OneWay.class), methodId, args); }); } }
@Override public void serialize(final Object value, final JsonGenerator jgen, final SerializerProvider provider) throws IOException { final RemoteReference<?> reference = (RemoteReference<?>) (value instanceof AbstractActor ? RemoteReference.from((AbstractActor) value) : value); final String text = String.valueOf(RemoteReference.getId(reference)); final Class<?> interfaceClass = RemoteReference.getInterfaceClass(reference); if (interfaceClass != null && (interfaceClass == rawClass)) { // escape starting '!' if (!text.startsWith("!!")) { jgen.writeString(text); } else { jgen.writeString("!" + text); } } else if (interfaceClass != null && rawClass == null) { throw new IOException("Illegal json serialization of actor reference " + interfaceClass + ":" + text + " won't be able to deserialize later"); } else { jgen.writeString("!!" + interfaceClass.getName() + " " + text); } }
@Override public void serialize(final Object value, final JsonGenerator jgen, final SerializerProvider provider) throws IOException { final RemoteReference<?> reference = (RemoteReference<?>) (value instanceof AbstractActor ? RemoteReference.from((AbstractActor) value) : value); final String text = String.valueOf(RemoteReference.getId(reference)); final Class<?> interfaceClass = RemoteReference.getInterfaceClass(reference); if (interfaceClass != null && (interfaceClass == rawClass)) { // escape starting '!' if (!text.startsWith("!!")) { jgen.writeString(text); } else { jgen.writeString("!" + text); } } else if (interfaceClass != null && rawClass == null) { throw new IOException("Illegal json serialization of actor reference " + interfaceClass + ":" + text + " won't be able to deserialize later"); } else { jgen.writeString("!!" + interfaceClass.getName() + " " + text); } }
String toString(Object obj) { if (obj instanceof String) { return (String) obj; } if (obj instanceof AbstractActor) { final RemoteReference ref = RemoteReference.from((AbstractActor) obj); return RemoteReference.getInterfaceClass(ref).getSimpleName() + ":" + RemoteReference.getId(ref); } if (obj instanceof RemoteReference) { return RemoteReference.getInterfaceClass((RemoteReference<?>) obj).getSimpleName() + ":" + RemoteReference.getId((RemoteReference<?>) obj); } return String.valueOf(obj); }
String toString(Object obj) { if (obj instanceof String) { return (String) obj; } if (obj instanceof AbstractActor) { final RemoteReference ref = RemoteReference.from((AbstractActor) obj); return RemoteReference.getInterfaceClass(ref).getSimpleName() + ":" + RemoteReference.getId(ref); } if (obj instanceof RemoteReference) { return RemoteReference.getInterfaceClass((RemoteReference<?>) obj).getSimpleName() + ":" + RemoteReference.getId((RemoteReference<?>) obj); } return String.valueOf(obj); }
String toString(Object obj) { if (obj instanceof String) { return (String) obj; } if (obj instanceof AbstractActor) { final RemoteReference ref = RemoteReference.from((AbstractActor) obj); return RemoteReference.getInterfaceClass(ref).getSimpleName() + ":" + RemoteReference.getId(ref); } if (obj instanceof RemoteReference) { return RemoteReference.getInterfaceClass((RemoteReference<?>) obj).getSimpleName() + ":" + RemoteReference.getId((RemoteReference<?>) obj); } return String.valueOf(obj); }
String toString(Object obj) { if (obj instanceof String) { return (String) obj; } if (obj instanceof AbstractActor) { final RemoteReference ref = RemoteReference.from((AbstractActor) obj); return RemoteReference.getInterfaceClass(ref).getSimpleName() + ":" + RemoteReference.getId(ref); } if (obj instanceof RemoteReference) { return RemoteReference.getInterfaceClass((RemoteReference<?>) obj).getSimpleName() + ":" + RemoteReference.getId((RemoteReference<?>) obj); } return String.valueOf(obj); }
String toString(Object obj) { if (obj instanceof String) { return (String) obj; } if (obj instanceof AbstractActor) { final RemoteReference ref = RemoteReference.from((AbstractActor) obj); return RemoteReference.getInterfaceClass(ref).getSimpleName() + ":" + RemoteReference.getId(ref); } if (obj instanceof RemoteReference) { return RemoteReference.getInterfaceClass((RemoteReference<?>) obj).getSimpleName() + ":" + RemoteReference.getId((RemoteReference<?>) obj); } return String.valueOf(obj); }
String toString(Object obj) { if (obj instanceof String) { return (String) obj; } if (obj instanceof AbstractActor) { final RemoteReference ref = RemoteReference.from((AbstractActor) obj); return RemoteReference.getInterfaceClass(ref).getSimpleName() + ":" + RemoteReference.getId(ref); } if (obj instanceof RemoteReference) { return RemoteReference.getInterfaceClass((RemoteReference<?>) obj).getSimpleName() + ":" + RemoteReference.getId((RemoteReference<?>) obj); } return String.valueOf(obj); }
if (object instanceof Actor) final RemoteReference reference = RemoteReference.from((Actor) object); target = (RemoteReference.getInterfaceClass(reference).getSimpleName() + ":" + RemoteReference.getId(reference)).replaceAll("[\"\\t\\r\\n]", "");
if (object instanceof Actor) final RemoteReference reference = RemoteReference.from((Actor) object); target = (RemoteReference.getInterfaceClass(reference).getSimpleName() + ":" + RemoteReference.getId(reference)).replaceAll("[\"\\t\\r\\n]", "");
if (context != null && context.getActor() != null) final RemoteReference contextReference = RemoteReference.from(context.getActor()); from = RemoteReference.getInterfaceClass(contextReference).getSimpleName() + ":"
if (context != null && context.getActor() != null) final RemoteReference contextReference = RemoteReference.from(context.getActor()); from = RemoteReference.getInterfaceClass(contextReference).getSimpleName() + ":"