private <P extends BaseProxy> SimpleProxyId<P> createId(Class<P> clazz, String serverId) { SimpleProxyId<P> toReturn; if (isValueType(clazz)) { toReturn = new SimpleProxyId<P>(clazz, serverId); } else { @SuppressWarnings("unchecked") SimpleProxyId<P> temp = (SimpleProxyId<P>) new SimpleEntityProxyId<EntityProxy>( asEntityProxy(clazz), serverId); toReturn = (SimpleProxyId<P>) temp; } return toReturn; }
public String getHistoryToken(SimpleProxyId<?> proxy) { SimpleProxyId<?> id = (SimpleProxyId<?>) proxy; String token = getTypeToken(proxy.getProxyClass()); if (id.isEphemeral()) { return IdUtil.ephemeralId(id.getClientId(), token); } else if (id.isSynthetic()) { return IdUtil.syntheticId(id.getSyntheticId(), token); } else { return IdUtil.persistedId(id.getServerId(), token); } }
if (toReturn.isEphemeral()) { assert toReturn.getProxyClass().equals(getTypeFromToken(typeToken)); toReturn.setServerId(serverId); String serverKey = IdUtil.persistedId(serverId, typeToken); ephemeralIds.put(serverKey, toReturn);
/** * For debugging use only. */ @Override public String toString() { if (isEphemeral()) { return IdUtil.ephemeralId(clientId, proxyClass.getName()); } else if (isSynthetic()) { return IdUtil.syntheticId(syntheticId, proxyClass.getName()); } else { return IdUtil.persistedId(encodedAddress, proxyClass.getName()); } }
/** * Convert any non-persistent ids into store-local synthetic ids. */ private <T extends BaseProxy> SimpleProxyId<T> serializedId(SimpleProxyId<T> stableId) { assert !stableId.isSynthetic(); if (stableId.isEphemeral()) { @SuppressWarnings("unchecked") SimpleProxyId<T> syntheticId = (SimpleProxyId<T>) syntheticIds.get(stableId); if (syntheticId == null) { int nextId = store.nextId(); assert nextId >= 0 : "ProxyStore.nextId() returned a negative number " + nextId; syntheticId = getRequestFactory().allocateSyntheticId(stableId.getProxyClass(), nextId + 1); syntheticIds.put(stableId, syntheticId); } return syntheticId; } return stableId; }
rootId.setClientId(id.getClientId()); rootId.setTypeToken(service.resolveTypeToken(id.getProxyClass())); if (id.isEphemeral()) { rootId.setStrength(Strength.EPHEMERAL); } else { rootId.setServerId(toBase64(id.getServerId())); if (stableId != null) { leafId = FACTORY.id().as(); leafId.setClientId(stableId.getClientId()); leafId.setTypeToken(service.resolveTypeToken(stableId.getProxyClass())); if (stableId.isEphemeral()) { leafId.setStrength(Strength.EPHEMERAL); } else { leafId.setServerId(toBase64(stableId.getServerId()));
Class<?> domainClass = service.resolveDomainClass(id.getProxyClass()); if (beans.containsKey(id)) { } else if (id.isEphemeral() || id.isSynthetic()) { } else { Splittable split = StringQuoter.split(id.getServerId()); Class<?> param = service.getIdType(domainClass); Object domainParam; domainClasses.add(service.resolveDomainClass(id.getProxyClass())); domainIds.add(domainParam); idsToLoad.add(id);
/** * Creates or retrieves a new canonical AutoBean to represent the given id in the returned * payload. */ <Q extends BaseProxy> AutoBean<Q> getProxyForReturnPayloadGraph(SimpleProxyId<Q> id) { @SuppressWarnings("unchecked") AutoBean<Q> bean = (AutoBean<Q>) state.returnedProxies.get(id); if (bean == null) { Class<Q> proxyClass = id.getProxyClass(); bean = createProxy(proxyClass, id, true); state.returnedProxies.put(id, bean); } return bean; }
if (id == null || id.isEphemeral()) { id.setServerId(flatValue.getPayload());
assert !id.isEphemeral() : "Unexpected ephemeral id " + id.toString();
/** * Allocates a synthetic proxy id. This object is only valid for the lifetime * of a request. */ public <P extends BaseProxy> SimpleProxyId<P> allocateSyntheticId( Class<P> clazz, int syntheticId) { assert syntheticId > 0; SimpleProxyId<P> toReturn = createId(clazz, "%" + syntheticId); toReturn.setSyntheticId(syntheticId); return toReturn; }
/** * Construct a stable id. May only be called from {@link IdFactory#createId()} */ SimpleProxyId(Class<P> proxyClass, String encodedAddress) { assert proxyClass != null; assert encodedAddress != null; setServerId(encodedAddress); clientId = NEVER_EPHEMERAL; hashCode = encodedAddress.hashCode(); this.proxyClass = proxyClass; }
rootId.setClientId(id.getClientId()); rootId.setTypeToken(service.resolveTypeToken(id.getProxyClass())); if (id.isEphemeral()) { rootId.setStrength(Strength.EPHEMERAL); } else { rootId.setServerId(toBase64(id.getServerId())); if (stableId != null) { leafId = FACTORY.id().as(); leafId.setClientId(stableId.getClientId()); leafId.setTypeToken(service.resolveTypeToken(stableId.getProxyClass())); if (stableId.isEphemeral()) { leafId.setStrength(Strength.EPHEMERAL); } else { leafId.setServerId(toBase64(stableId.getServerId()));
Class<?> domainClass = service.resolveDomainClass(id.getProxyClass()); if (beans.containsKey(id)) { } else if (id.isEphemeral() || id.isSynthetic()) { } else { Splittable split = StringQuoter.split(id.getServerId()); Class<?> param = service.getIdType(domainClass); Object domainParam; domainClasses.add(service.resolveDomainClass(id.getProxyClass())); domainIds.add(domainParam); idsToLoad.add(id);
/** * Convert any non-persistent ids into store-local synthetic ids. */ private <T extends BaseProxy> SimpleProxyId<T> serializedId(SimpleProxyId<T> stableId) { assert !stableId.isSynthetic(); if (stableId.isEphemeral()) { @SuppressWarnings("unchecked") SimpleProxyId<T> syntheticId = (SimpleProxyId<T>) syntheticIds.get(stableId); if (syntheticId == null) { int nextId = store.nextId(); assert nextId >= 0 : "ProxyStore.nextId() returned a negative number " + nextId; syntheticId = getRequestFactory().allocateSyntheticId(stableId.getProxyClass(), nextId + 1); syntheticIds.put(stableId, syntheticId); } return syntheticId; } return stableId; }
/** * ValueProxies are equal if they are from the same RequestContext and all of * their properties are equal. */ public static boolean equals(AutoBean<? extends ValueProxy> bean, Object o) { if (!(o instanceof ValueProxy)) { return false; } AutoBean<ValueProxy> other = AutoBeanUtils.getAutoBean((ValueProxy) o); if (other == null) { // Unexpected, could be an user-provided implementation? return false; } if (!stableId(bean).getProxyClass().equals(stableId(other).getProxyClass())) { // Compare AppleProxies to AppleProxies return false; } // Compare the entire object graph return AutoBeanUtils.deepEquals(bean, other); }
/** * For debugging use only. */ @Override public String toString() { if (isEphemeral()) { return IdUtil.ephemeralId(clientId, proxyClass.getName()); } else if (isSynthetic()) { return IdUtil.syntheticId(syntheticId, proxyClass.getName()); } else { return IdUtil.persistedId(encodedAddress, proxyClass.getName()); } }
if (id == null || id.isEphemeral()) { id.setServerId(flatValue.getPayload());
assert !id.isEphemeral() : "Unexpected ephemeral id " + id.toString();
/** * Allocates a synthetic proxy id. This object is only valid for the lifetime * of a request. */ public <P extends BaseProxy> SimpleProxyId<P> allocateSyntheticId( Class<P> clazz, int syntheticId) { assert syntheticId > 0; SimpleProxyId<P> toReturn = createId(clazz, "%" + syntheticId); toReturn.setSyntheticId(syntheticId); return toReturn; }