public int intIdFromValueAndType(Object value, Class<?> type) { if (type != null && type.isArray()) { return 0; } if (value != null) { if (value.getClass().isArray() || value instanceof Collection || value instanceof Map) { return 0; } return DefaultClassDictionary.get().getClassId(value.getClass()); } return DefaultClassDictionary.get().getClassId(type); }
public int intIdFromValueAndType(Object value, Class<?> type) { if (type != null && type.isArray()) { return 0; } if (value != null) { if (value.getClass().isArray() || value instanceof Collection || value instanceof Map) { return 0; } return DefaultClassDictionary.get().getClassId(value.getClass()); } return DefaultClassDictionary.get().getClassId(type); }
@SuppressWarnings("unchecked") private ClassDescriptor getDescriptor(final Class<?> aInterface) { ClassDescriptor descriptor = descriptorMapByInterface.get(aInterface); if (descriptor == null) { if (aInterface == Actor.class || aInterface == ActorObserver.class) { return null; } descriptor = new ClassDescriptor(); descriptor.isObserver = ActorObserver.class.isAssignableFrom(aInterface); if (aInterface.isInterface()) { descriptor.factory = dynamicReferenceFactory.getFactoryFor(aInterface); descriptor.invoker = (ObjectInvoker<Object>) descriptor.factory.getInvoker(); } ClassDescriptor concurrentInterfaceDescriptor = descriptorMapByInterface.putIfAbsent(aInterface, descriptor); if (concurrentInterfaceDescriptor != null) { descriptorMapByInterfaceId.put(DefaultClassDictionary.get().getClassId(aInterface), concurrentInterfaceDescriptor); return concurrentInterfaceDescriptor; } descriptorMapByInterfaceId.put(DefaultClassDictionary.get().getClassId(aInterface), descriptor); } return descriptor; }
@SuppressWarnings("unchecked") public <T> ReferenceFactory<T> getFactoryFor(final Class<T> aInterface) { final String interfaceFullName = aInterface.getName().replace('$', '.'); final int interfaceId = DefaultClassDictionary.get().getClassId(aInterface); final String referenceFullName = aInterface.getName() + "$Reference"; try { final Class<T> referenceClass = makeReferenceClass(aInterface, interfaceFullName, interfaceId, referenceFullName); final GenericActorFactory<T> dyn = new GenericActorFactory<>(); dyn.interfaceId = interfaceId; dyn.interfaceClass = aInterface; dyn.referenceConstructor = referenceClass.getConstructor(String.class); return dyn; } catch (final Exception e) { throw new UncheckedException(e); } }
protected String _locateTypeId(JsonParser jp, DeserializationContext ctxt) throws IOException { if (!jp.isExpectedStartArrayToken()) { if (_defaultImpl != null) { return _idResolver.idFromBaseType(); } throw ctxt.wrongTokenException(jp, JsonToken.START_ARRAY, "Missing type information for: " + baseTypeName()); } return String.valueOf(DefaultClassDictionary.get().getClassId(ArrayList.class)); }
int actualClassId = getClassId(clazz);
protected String _locateTypeId(JsonParser jp, DeserializationContext ctxt) throws IOException { if (!jp.isExpectedStartArrayToken()) { if (_defaultImpl != null) { return _idResolver.idFromBaseType(); } throw ctxt.wrongTokenException(jp, JsonToken.START_ARRAY, "Missing type information for: " + baseTypeName()); } return String.valueOf(DefaultClassDictionary.get().getClassId(ArrayList.class)); }
@SuppressWarnings("unchecked") public <T> Task<StreamSubscriptionHandle<T>> subscribe(String provider, Class<T> dataClass, String streamId, AsyncObserver<T> observer) { StreamKey streamKey = new StreamKey(provider, dataClass, streamId); ConcurrentMap<Handle, AsyncObserver> observers = observerMap.get(streamKey); if (observers == null) { observers = InternalUtils.putIfAbsentAndGet(observerMap, streamKey, new ConcurrentHashMap<>()); ServerSideStreamProxy serverSideStreamProxy = runtime.getRemoteObserverReference(null, ServerSideStreamProxy.class, "0"); int dataClassId = DefaultClassDictionary.get().getClassId(dataClass); Task<StreamSubscriptionHandle<Object>> subscriptionHandleTask = serverSideStreamProxy.subscribe(provider, dataClassId, streamId, localReference); await(subscriptionHandleTask); } observers = (observers != null) ? observers : InternalUtils.putIfAbsentAndGet(observerMap, streamKey, new ConcurrentHashMap<>()); Handle handle = new Handle(streamKey, nextId.incrementAndGet()); observers.put(handle, observer); return Task.fromValue(handle); }