private static Map<String,Object> keyMapForDraftsEntity(Entity ent,EdmEntityContainer entityContainer){ Map<String,Object> keyMap=new HashMap<>(); EdmEntitySet currentEntitySet=entityContainer.getEntitySet(ent.getType().substring(entityContainer.getNamespace().length()+1)); String UUIDbackedkeyname=DraftUtilsV4.getUUIDkeyPropertyName(currentEntitySet); UUID currentEntityUUIDkeyPart=(UUID) ent.getProperty(UUIDbackedkeyname).getValue(); keyMap.put(UUIDbackedkeyname, currentEntityUUIDkeyPart); return keyMap; }
public Target(final String target, final EdmEntityContainer defaultContainer) { final String[] bindingTargetParts = target.split("/"); if (bindingTargetParts.length == 1) { entityContainer = defaultContainer.getFullQualifiedName(); targetName = bindingTargetParts[0]; } else { entityContainer = new FullQualifiedName(bindingTargetParts[0]); targetName = bindingTargetParts[1]; } }
EdmBindingTarget bindingTarget = container.getEntitySet(firstToken); if (bindingTarget == null) { bindingTarget = container.getSingleton(firstToken);
@Override public EdmEntityContainer getEntityContainer(final FullQualifiedName namespaceOrAliasFQN) { final FullQualifiedName fqn = resolvePossibleAlias(namespaceOrAliasFQN); EdmEntityContainer container = entityContainers.get(fqn); if (container == null) { container = createEntityContainer(fqn); if (container != null) { entityContainers.put(fqn, container); if (fqn == null) { entityContainers.put(new FullQualifiedName(container.getNamespace(), container.getName()), container); } } } return container; }
writer.writeStartElement(XML_ENTITY_CONTAINER); writer.writeAttribute(XML_NAME, container.getName()); FullQualifiedName parentContainerName = container.getParentContainerName(); if (parentContainerName != null) { String parentContainerNameString; appendEntitySets(writer, container.getEntitySets()); appendActionImports(writer, container.getActionImports()); if (namespaceToAlias.get(container.getNamespace()) != null) { containerNamespace = namespaceToAlias.get(container.getNamespace()); } else { containerNamespace = container.getNamespace(); appendFunctionImports(writer, container.getFunctionImports(), containerNamespace); appendSingletons(writer, container.getSingletons());
private UriResource leadingResourcePathSegment() throws UriParserException, UriValidationException { final String oDataIdentifier = tokenizer.getText(); final EdmEntitySet edmEntitySet = edmEntityContainer.getEntitySet(oDataIdentifier); if (edmEntitySet != null) { final UriResourceEntitySetImpl entitySetResource = new UriResourceEntitySetImpl(edmEntitySet); final EdmSingleton edmSingleton = edmEntityContainer.getSingleton(oDataIdentifier); if (edmSingleton != null) { ParserHelper.requireTokenEnd(tokenizer); final EdmActionImport edmActionImport = edmEntityContainer.getActionImport(oDataIdentifier); if (edmActionImport != null) { ParserHelper.requireTokenEnd(tokenizer); final EdmFunctionImport edmFunctionImport = edmEntityContainer.getFunctionImport(oDataIdentifier); if (edmFunctionImport != null) { return functionCall(edmFunctionImport, null, null, false);
@Override public EdmEntitySet getTargetEdmEntitySet() { if (navigationPath == null) return this.edmEntitySet; else { for (EdmNavigationPropertyBinding navi : this.edmEntitySet.getNavigationPropertyBindings()) { if (navi.getPath().equals(navigationPath)) return edmEntitySet.getEntityContainer().getEntitySet(navi.getTarget()); } return this.edmEntitySet; } }
private Map.Entry<URI, EdmOperation> getUnboundOperation( final Operation operation, final List<String> parameterNames) { final EdmEntityContainer container = getClient().getCachedEdm().getEntityContainer(targetFQN); final EdmOperation edmOperation; if (operation.type() == OperationType.FUNCTION) { edmOperation = container.getFunctionImport(operation.name()).getUnboundFunction(parameterNames); } else { edmOperation = container.getActionImport(operation.name()).getUnboundAction(); } final URIBuilder uriBuilder = getClient().newURIBuilder(). appendOperationCallSegment(edmOperation.getName()); return new AbstractMap.SimpleEntry<URI, EdmOperation>(uriBuilder.build(), edmOperation); }
/** * This method validates Edm entity sets. * It checks if entity sets are part of correct container and * entity types defined for entity sets are correct and * validates navigation property bindings */ private void validateEdmEntitySet() { for (Map.Entry<FullQualifiedName, EdmEntityContainer> container : edmContainersMap.entrySet()) { for (EdmEntitySet entitySet : container.getValue().getEntitySets()) { validateNavigationBindingPaths(entitySet); } } }
/** * This methods validates edm function imports. * It checks if function imports are part of correct container and * functions defined for function imports are correct */ private void validateEdmFunctionImport() { for (Map.Entry<FullQualifiedName, EdmEntityContainer> container : edmContainersMap.entrySet()) { for (EdmFunctionImport functionImport : container.getValue().getFunctionImports()) { FullQualifiedName fqFunction = functionImport.getFunctionFqn(); if (!(edmFunctionsMap.containsKey(fqFunction))) { validateEdmFunctionsWithAlias(fqFunction); } } } }
@Override public FullQualifiedName getFullQualifiedName() { return new FullQualifiedName(container.getNamespace(), getName()); }
@Override @SuppressWarnings("unchecked") public <RES extends ClientInvokeResult> ODataInvokeRequest<RES> getActionImportInvokeRequest( final String actionImportName, final Map<String, ClientValue> parameters) { EdmActionImport eai = null; for (EdmSchema schema : edmClient.getCachedEdm().getSchemas()) { final EdmEntityContainer container = schema.getEntityContainer(); if (container != null) { eai = container.getActionImport(actionImportName); } } if (eai == null) { throw new IllegalArgumentException("Could not find ActionImport for name " + actionImportName); } return (ODataInvokeRequest<RES>) getInvokeRequest(HttpMethod.POST, edmClient.newURIBuilder().appendOperationCallSegment(actionImportName).build(), getResultReference(eai.getUnboundAction().getReturnType()), parameters); }
@Override @SuppressWarnings("unchecked") public <RES extends ClientInvokeResult> ODataInvokeRequest<RES> getFunctionImportInvokeRequest( final String functionImportName, final Map<String, ClientValue> parameters) { EdmFunctionImport efi = null; for (EdmSchema schema : edmClient.getCachedEdm().getSchemas()) { final EdmEntityContainer container = schema.getEntityContainer(); if (container != null) { efi = container.getFunctionImport(functionImportName); } } if (efi == null) { throw new IllegalArgumentException("Could not find FunctionImport for name " + functionImportName); } final EdmFunction function = edmClient.getCachedEdm(). getUnboundFunction(efi.getFunctionFqn(), parameters == null ? null : new ArrayList<String>(parameters.keySet())); if (function == null) { throw new IllegalArgumentException("Could not find Function " + efi.getFunctionFqn()); } return (ODataInvokeRequest<RES>) getInvokeRequest(HttpMethod.GET, edmClient.newURIBuilder().appendOperationCallSegment(functionImportName).build(), getResultReference(function.getReturnType()), parameters); }
private FullQualifiedName parseAllOperationsInSchema(UriTokenizer tokenizer) throws UriParserException { final String namespace = tokenizer.getText(); if (tokenizer.next(TokenKind.DOT)) { if (tokenizer.next(TokenKind.STAR)) { // Validate the namespace. Currently a namespace from a non-default schema is not supported. // There is no direct access to the namespace without loading the whole schema; // however, the default entity container should always be there, so its access methods can be used. if (edm.getEntityContainer(new FullQualifiedName(namespace, edm.getEntityContainer().getName())) == null) { throw new UriParserSemanticException("Wrong namespace '" + namespace + "'.", UriParserSemanticException.MessageKeys.UNKNOWN_PART, namespace); } return new FullQualifiedName(namespace, tokenizer.getText()); } else { throw new UriParserSemanticException("Expected star after dot.", UriParserSemanticException.MessageKeys.UNKNOWN_PART, ""); } } return null; }
writer.writeStartElement(XML_ENTITY_CONTAINER); writer.writeAttribute(XML_NAME, container.getName()); FullQualifiedName parentContainerName = container.getParentContainerName(); if (parentContainerName != null) { String parentContainerNameString; appendEntitySets(writer, container.getEntitySets()); appendActionImports(writer, container.getActionImports()); if (namespaceToAlias.get(container.getNamespace()) != null) { containerNamespace = namespaceToAlias.get(container.getNamespace()); } else { containerNamespace = container.getNamespace(); appendFunctionImports(writer, container.getFunctionImports(), containerNamespace); appendSingletons(writer, container.getSingletons());
private UriResource leadingResourcePathSegment() throws UriParserException, UriValidationException { final String oDataIdentifier = tokenizer.getText(); final EdmEntitySet edmEntitySet = edmEntityContainer.getEntitySet(oDataIdentifier); if (edmEntitySet != null) { final UriResourceEntitySetImpl entitySetResource = new UriResourceEntitySetImpl(edmEntitySet); final EdmSingleton edmSingleton = edmEntityContainer.getSingleton(oDataIdentifier); if (edmSingleton != null) { ParserHelper.requireTokenEnd(tokenizer); final EdmActionImport edmActionImport = edmEntityContainer.getActionImport(oDataIdentifier); if (edmActionImport != null) { ParserHelper.requireTokenEnd(tokenizer); final EdmFunctionImport edmFunctionImport = edmEntityContainer.getFunctionImport(oDataIdentifier); if (edmFunctionImport != null) { return functionCall(edmFunctionImport, null, null, false);
return entitySet.getEntityContainer().getEntitySet(uriResourceNavigation.getProperty().getType().getName());
private Map.Entry<URI, EdmOperation> getUnboundOperation( final Operation operation, final List<String> parameterNames) { final EdmEntityContainer container = getClient().getCachedEdm().getEntityContainer(targetFQN); final EdmOperation edmOperation; if (operation.type() == OperationType.FUNCTION) { edmOperation = container.getFunctionImport(operation.name()).getUnboundFunction(parameterNames); } else { edmOperation = container.getActionImport(operation.name()).getUnboundAction(); } final URIBuilder uriBuilder = getClient().newURIBuilder(). appendOperationCallSegment(edmOperation.getName()); return new AbstractMap.SimpleEntry<URI, EdmOperation>(uriBuilder.build(), edmOperation); }
@Override public EdmEntityContainer getEntityContainer(final FullQualifiedName namespaceOrAliasFQN) { final FullQualifiedName fqn = resolvePossibleAlias(namespaceOrAliasFQN); EdmEntityContainer container = entityContainers.get(fqn); if (container == null) { container = createEntityContainer(fqn); if (container != null) { entityContainers.put(fqn, container); if (fqn == null) { entityContainers.put(new FullQualifiedName(container.getNamespace(), container.getName()), container); } } } return container; }
/** * This method validates Edm entity sets. * It checks if entity sets are part of correct container and * entity types defined for entity sets are correct and * validates navigation property bindings */ private void validateEdmEntitySet() { for (Map.Entry<FullQualifiedName, EdmEntityContainer> container : edmContainersMap.entrySet()) { for (EdmEntitySet entitySet : container.getValue().getEntitySets()) { validateNavigationBindingPaths(entitySet); } } }