def visitReferenceProperty(self, propertyName, value, ctx): # containsKey to distinguish null from unknown if propertyName in self._flatValueMap: elementType = ctx.getElementType() if isinstance(ctx, CollectionPropertyContext) else None newValue = EntityCodex.decode(self._state, ctx.getType(), elementType, self._flatValueMap[propertyName]) resolved = self._state.getResolver().resolveDomainValue(newValue, False) self._procesor._service.setProperty(self._domain, propertyName, self._procesor._service.resolveDomainClass(ctx.getType()), resolved) return False
def decodeInvocationArguments(self, source, parameters, contextArgs, genericArgs): """Handles instance invocations as the instance at the 0th parameter. """ if parameters is None: # Can't return Collections.emptyList() because this must be mutable return list() assert len(parameters) == contextArgs.length args = list() for i in range(contextArgs.length): type_ = contextArgs[i] elementType = None if Collection.isAssignableFrom(type_): elementType = TypeUtils.ensureBaseType(TypeUtils.getSingleParameterization(Collection, genericArgs[i])) split = parameters.get(i) else: split = parameters.get(i) arg = EntityCodex.decode(source, type_, elementType, split) arg = source.getResolver().resolveDomainValue(arg, not (EntityProxyId == contextArgs[i])) args.add(arg) return args