[OLINGO-564] Renamed 'ClientCsdl' classes
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/53b10f6b Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/53b10f6b Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/53b10f6b Branch: refs/heads/OLINGO-564 Commit: 53b10f6b7f700f2c9147148669965ec732ad3d28 Parents: 3c09909 Author: Michael Bolz <[email protected]> Authored: Tue Apr 28 22:14:13 2015 +0200 Committer: Michael Bolz <[email protected]> Committed: Tue Apr 28 22:14:13 2015 +0200 ---------------------------------------------------------------------- .../olingo/ext/proxy/AbstractService.java | 4 +- .../client/core/edm/ClientCsdlEdmProvider.java | 212 +++++++++++ .../client/core/edm/ClientCsdlXMLMetadata.java | 75 ++++ .../client/core/edm/ClientEdmProvider.java | 212 ----------- .../client/core/edm/ClientXMLMetadata.java | 75 ---- ...tAnnotatableDynamicAnnotationExpression.java | 38 -- .../xml/AbstractClientAnnotationExpression.java | 49 --- ...lAnnotatableDynamicAnnotationExpression.java | 38 ++ .../AbstractClientCsdlAnnotationExpression.java | 49 +++ ...ctClientCsdlDynamicAnnotationExpression.java | 356 +++++++++++++++++++ .../xml/AbstractClientCsdlEdmDeserializer.java | 60 ++++ ...tClientCsdlElementOrAttributeExpression.java | 37 ++ ...stractClientDynamicAnnotationExpression.java | 356 ------------------- .../edm/xml/AbstractClientEdmDeserializer.java | 60 ---- ...tractClientElementOrAttributeExpression.java | 37 -- .../client/core/edm/xml/ClientAction.java | 68 ---- .../client/core/edm/xml/ClientActionImport.java | 58 --- .../client/core/edm/xml/ClientAnnotation.java | 66 ---- .../core/edm/xml/ClientAnnotationPath.java | 27 -- .../client/core/edm/xml/ClientAnnotations.java | 62 ---- .../olingo/client/core/edm/xml/ClientApply.java | 80 ----- .../olingo/client/core/edm/xml/ClientCast.java | 137 ------- .../client/core/edm/xml/ClientCollection.java | 64 ---- .../client/core/edm/xml/ClientComplexType.java | 72 ---- .../xml/ClientConstantAnnotationExpression.java | 52 --- .../client/core/edm/xml/ClientCsdlAction.java | 68 ++++ .../core/edm/xml/ClientCsdlActionImport.java | 58 +++ .../core/edm/xml/ClientCsdlAnnotation.java | 66 ++++ .../core/edm/xml/ClientCsdlAnnotationPath.java | 27 ++ .../core/edm/xml/ClientCsdlAnnotations.java | 62 ++++ .../client/core/edm/xml/ClientCsdlApply.java | 80 +++++ .../client/core/edm/xml/ClientCsdlCast.java | 137 +++++++ .../core/edm/xml/ClientCsdlCollection.java | 64 ++++ .../core/edm/xml/ClientCsdlComplexType.java | 72 ++++ .../ClientCsdlConstantAnnotationExpression.java | 52 +++ .../core/edm/xml/ClientCsdlDataServices.java | 93 +++++ .../client/core/edm/xml/ClientCsdlEdmx.java | 95 +++++ .../core/edm/xml/ClientCsdlEntityContainer.java | 72 ++++ .../core/edm/xml/ClientCsdlEntityKey.java | 63 ++++ .../core/edm/xml/ClientCsdlEntitySet.java | 65 ++++ .../core/edm/xml/ClientCsdlEntityType.java | 76 ++++ .../core/edm/xml/ClientCsdlEnumMember.java | 57 +++ .../client/core/edm/xml/ClientCsdlEnumType.java | 65 ++++ .../client/core/edm/xml/ClientCsdlFunction.java | 69 ++++ .../core/edm/xml/ClientCsdlFunctionImport.java | 64 ++++ .../client/core/edm/xml/ClientCsdlIf.java | 61 ++++ .../client/core/edm/xml/ClientCsdlInclude.java | 76 ++++ .../edm/xml/ClientCsdlIncludeAnnotations.java | 88 +++++ .../client/core/edm/xml/ClientCsdlIsOf.java | 136 +++++++ .../core/edm/xml/ClientCsdlLabeledElement.java | 79 ++++ .../xml/ClientCsdlLabeledElementReference.java | 28 ++ .../edm/xml/ClientCsdlNavigationProperty.java | 80 +++++ .../ClientCsdlNavigationPropertyBinding.java | 67 ++++ .../xml/ClientCsdlNavigationPropertyPath.java | 28 ++ .../client/core/edm/xml/ClientCsdlNot.java | 39 ++ .../client/core/edm/xml/ClientCsdlNull.java | 51 +++ .../client/core/edm/xml/ClientCsdlOnDelete.java | 54 +++ .../core/edm/xml/ClientCsdlParameter.java | 84 +++++ .../client/core/edm/xml/ClientCsdlPath.java | 27 ++ .../client/core/edm/xml/ClientCsdlProperty.java | 88 +++++ .../core/edm/xml/ClientCsdlPropertyPath.java | 27 ++ .../core/edm/xml/ClientCsdlPropertyRef.java | 54 +++ .../core/edm/xml/ClientCsdlPropertyValue.java | 81 +++++ .../client/core/edm/xml/ClientCsdlRecord.java | 76 ++++ .../core/edm/xml/ClientCsdlReference.java | 98 +++++ .../xml/ClientCsdlReferentialConstraint.java | 54 +++ .../core/edm/xml/ClientCsdlReturnType.java | 78 ++++ .../client/core/edm/xml/ClientCsdlSchema.java | 86 +++++ .../core/edm/xml/ClientCsdlSingleton.java | 62 ++++ .../client/core/edm/xml/ClientCsdlTerm.java | 83 +++++ ...lTwoParamsOpDynamicAnnotationExpression.java | 62 ++++ .../core/edm/xml/ClientCsdlTypeDefinition.java | 74 ++++ .../client/core/edm/xml/ClientCsdlUrlRef.java | 65 ++++ .../client/core/edm/xml/ClientDataServices.java | 93 ----- .../olingo/client/core/edm/xml/ClientEdmx.java | 95 ----- .../core/edm/xml/ClientEntityContainer.java | 72 ---- .../client/core/edm/xml/ClientEntityKey.java | 63 ---- .../client/core/edm/xml/ClientEntitySet.java | 65 ---- .../client/core/edm/xml/ClientEntityType.java | 76 ---- .../client/core/edm/xml/ClientEnumMember.java | 57 --- .../client/core/edm/xml/ClientEnumType.java | 65 ---- .../client/core/edm/xml/ClientFunction.java | 69 ---- .../core/edm/xml/ClientFunctionImport.java | 64 ---- .../olingo/client/core/edm/xml/ClientIf.java | 61 ---- .../client/core/edm/xml/ClientInclude.java | 76 ---- .../core/edm/xml/ClientIncludeAnnotations.java | 88 ----- .../olingo/client/core/edm/xml/ClientIsOf.java | 136 ------- .../core/edm/xml/ClientLabeledElement.java | 79 ---- .../edm/xml/ClientLabeledElementReference.java | 28 -- .../core/edm/xml/ClientNavigationProperty.java | 80 ----- .../xml/ClientNavigationPropertyBinding.java | 67 ---- .../edm/xml/ClientNavigationPropertyPath.java | 28 -- .../olingo/client/core/edm/xml/ClientNot.java | 39 -- .../olingo/client/core/edm/xml/ClientNull.java | 51 --- .../client/core/edm/xml/ClientOnDelete.java | 54 --- .../client/core/edm/xml/ClientParameter.java | 84 ----- .../olingo/client/core/edm/xml/ClientPath.java | 27 -- .../client/core/edm/xml/ClientProperty.java | 88 ----- .../client/core/edm/xml/ClientPropertyPath.java | 27 -- .../client/core/edm/xml/ClientPropertyRef.java | 54 --- .../core/edm/xml/ClientPropertyValue.java | 80 ----- .../client/core/edm/xml/ClientRecord.java | 76 ---- .../client/core/edm/xml/ClientReference.java | 98 ----- .../edm/xml/ClientReferentialConstraint.java | 54 --- .../client/core/edm/xml/ClientReturnType.java | 78 ---- .../client/core/edm/xml/ClientSchema.java | 86 ----- .../client/core/edm/xml/ClientSingleton.java | 62 ---- .../olingo/client/core/edm/xml/ClientTerm.java | 83 ----- ...tTwoParamsOpDynamicAnnotationExpression.java | 62 ---- .../core/edm/xml/ClientTypeDefinition.java | 74 ---- .../client/core/edm/xml/ClientUrlRef.java | 65 ---- .../ClientODataDeserializerImpl.java | 6 +- .../core/serialization/ODataReaderImpl.java | 4 +- 113 files changed, 4125 insertions(+), 4124 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/53b10f6b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/AbstractService.java ---------------------------------------------------------------------- diff --git a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/AbstractService.java b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/AbstractService.java index 8770286..f8506c2 100644 --- a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/AbstractService.java +++ b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/AbstractService.java @@ -30,7 +30,7 @@ import org.apache.commons.io.IOUtils; import org.apache.olingo.client.api.EdmEnabledODataClient; import org.apache.olingo.client.api.edm.xml.XMLMetadata; import org.apache.olingo.client.core.ODataClientFactory; -import org.apache.olingo.client.core.edm.ClientEdmProvider; +import org.apache.olingo.client.core.edm.ClientCsdlEdmProvider; import org.apache.olingo.commons.api.ODataRuntimeException; import org.apache.olingo.commons.api.edm.Edm; import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion; @@ -86,7 +86,7 @@ public abstract class AbstractService<C extends EdmEnabledODataClient> { } final Edm edm; if (metadata != null) { - ClientEdmProvider provider = new ClientEdmProvider(metadata.getSchemaByNsOrAlias()); + ClientCsdlEdmProvider provider = new ClientCsdlEdmProvider(metadata.getSchemaByNsOrAlias()); edm = new EdmProviderImpl(provider); }else{ edm = null; http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/53b10f6b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/ClientCsdlEdmProvider.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/ClientCsdlEdmProvider.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/ClientCsdlEdmProvider.java new file mode 100644 index 0000000..28536ba --- /dev/null +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/ClientCsdlEdmProvider.java @@ -0,0 +1,212 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.olingo.client.core.edm; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.apache.olingo.commons.api.ODataException; +import org.apache.olingo.commons.api.edm.FullQualifiedName; +import org.apache.olingo.commons.api.edm.provider.CsdlAbstractEdmProvider; +import org.apache.olingo.commons.api.edm.provider.CsdlAction; +import org.apache.olingo.commons.api.edm.provider.CsdlActionImport; +import org.apache.olingo.commons.api.edm.provider.CsdlAliasInfo; +import org.apache.olingo.commons.api.edm.provider.CsdlAnnotatable; +import org.apache.olingo.commons.api.edm.provider.CsdlAnnotations; +import org.apache.olingo.commons.api.edm.provider.CsdlComplexType; +import org.apache.olingo.commons.api.edm.provider.CsdlEntityContainer; +import org.apache.olingo.commons.api.edm.provider.CsdlEntityContainerInfo; +import org.apache.olingo.commons.api.edm.provider.CsdlEntitySet; +import org.apache.olingo.commons.api.edm.provider.CsdlEntityType; +import org.apache.olingo.commons.api.edm.provider.CsdlEnumType; +import org.apache.olingo.commons.api.edm.provider.CsdlFunction; +import org.apache.olingo.commons.api.edm.provider.CsdlFunctionImport; +import org.apache.olingo.commons.api.edm.provider.CsdlSchema; +import org.apache.olingo.commons.api.edm.provider.CsdlSingleton; +import org.apache.olingo.commons.api.edm.provider.CsdlTerm; +import org.apache.olingo.commons.api.edm.provider.CsdlTypeDefinition; + +public class ClientCsdlEdmProvider extends CsdlAbstractEdmProvider { + + private final Map<String, CsdlSchema> xmlSchemas; + + public ClientCsdlEdmProvider(Map<String, CsdlSchema> xmlSchemas) { + this.xmlSchemas = xmlSchemas; + } + + @Override + public CsdlEnumType getEnumType(final FullQualifiedName enumTypeName) throws ODataException { + CsdlSchema schema = xmlSchemas.get(enumTypeName.getNamespace()); + if (schema != null) { + return schema.getEnumType(enumTypeName.getName()); + } + return null; + } + + @Override + public CsdlTypeDefinition getTypeDefinition(final FullQualifiedName typeDefinitionName) throws ODataException { + CsdlSchema schema = xmlSchemas.get(typeDefinitionName.getNamespace()); + if (schema != null) { + return schema.getTypeDefinition(typeDefinitionName.getName()); + } + return null; + } + + @Override + public CsdlEntityType getEntityType(final FullQualifiedName entityTypeName) throws ODataException { + CsdlSchema schema = xmlSchemas.get(entityTypeName.getNamespace()); + if (schema != null) { + return schema.getEntityType(entityTypeName.getName()); + } + return null; + } + + @Override + public CsdlComplexType getComplexType(final FullQualifiedName complexTypeName) throws ODataException { + CsdlSchema schema = xmlSchemas.get(complexTypeName.getNamespace()); + if (schema != null) { + return schema.getComplexType(complexTypeName.getName()); + } + return null; + } + + @Override + public List<CsdlAction> getActions(final FullQualifiedName actionName) throws ODataException { + CsdlSchema schema = xmlSchemas.get(actionName.getNamespace()); + if (schema != null) { + return schema.getActions(actionName.getName()); + } + return null; + } + + @Override + public List<CsdlFunction> getFunctions(final FullQualifiedName functionName) throws ODataException { + CsdlSchema schema = xmlSchemas.get(functionName.getNamespace()); + if (schema != null) { + return schema.getFunctions(functionName.getName()); + } + return null; + } + + @Override + public CsdlTerm getTerm(final FullQualifiedName termName) throws ODataException { + CsdlSchema schema = xmlSchemas.get(termName.getNamespace()); + if (schema != null) { + return schema.getTerm(termName.getName()); + } + return null; + } + + @Override + public CsdlEntitySet getEntitySet(final FullQualifiedName entityContainer, final String entitySetName) + throws ODataException { + CsdlSchema schema = xmlSchemas.get(entityContainer.getNamespace()); + if (schema != null) { + return schema.getEntityContainer().getEntitySet(entitySetName); + } + return null; + } + + @Override + public CsdlSingleton getSingleton(final FullQualifiedName entityContainer, final String singletonName) + throws ODataException { + CsdlSchema schema = xmlSchemas.get(entityContainer.getNamespace()); + if (schema != null) { + return schema.getEntityContainer().getSingleton(singletonName); + } + return null; + } + + @Override + public CsdlActionImport getActionImport(final FullQualifiedName entityContainer, final String actionImportName) + throws ODataException { + CsdlSchema schema = xmlSchemas.get(entityContainer.getNamespace()); + if (schema != null) { + return schema.getEntityContainer().getActionImport(actionImportName); + } + return null; + } + + @Override + public CsdlFunctionImport getFunctionImport(final FullQualifiedName entityContainer, final String functionImportName) + throws ODataException { + CsdlSchema schema = xmlSchemas.get(entityContainer.getNamespace()); + if (schema != null) { + return schema.getEntityContainer().getFunctionImport(functionImportName); + } + return null; + } + + @Override + public CsdlEntityContainerInfo getEntityContainerInfo(final FullQualifiedName entityContainerName) + throws ODataException { + for (CsdlSchema schema : xmlSchemas.values()) { + if (schema.getEntityContainer() != null) { + return new CsdlEntityContainerInfo().setContainerName(entityContainerName).setExtendsContainer( + schema.getEntityContainer().getExtendsContainerFQN()); + } + } + return null; + } + + @Override + public List<CsdlAliasInfo> getAliasInfos() throws ODataException { + ArrayList<CsdlAliasInfo> aliasInfo = new ArrayList<CsdlAliasInfo>(); + for (CsdlSchema schema : xmlSchemas.values()) { + if (schema.getAlias() != null) { + aliasInfo.add(new CsdlAliasInfo().setNamespace(schema.getNamespace()).setAlias(schema.getAlias())); + } + } + return aliasInfo; + } + + @Override + public List<CsdlSchema> getSchemas() throws ODataException { + return new ArrayList<CsdlSchema>(xmlSchemas.values()); + } + + @Override + public CsdlEntityContainer getEntityContainer() throws ODataException { + for (CsdlSchema schema : xmlSchemas.values()) { + if (schema.getEntityContainer() != null) { + return schema.getEntityContainer(); + } + } + return null; + } + + @Override + public CsdlAnnotations getAnnotationsGroup(FullQualifiedName targetName) throws ODataException { + CsdlSchema schema = xmlSchemas.get(targetName.getNamespace()); + if (schema != null) { + return schema.getAnnotationGroup(targetName.getName()); + } + return null; + } + + @Override + public CsdlAnnotatable getAnnoatatable(FullQualifiedName annotatedName) throws ODataException { + final CsdlSchema schema = xmlSchemas.get(annotatedName.getNamespace()); + if (schema != null) { + return schema.getAnnotatables().get(annotatedName.getName()); + } + return null; + } +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/53b10f6b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/ClientCsdlXMLMetadata.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/ClientCsdlXMLMetadata.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/ClientCsdlXMLMetadata.java new file mode 100644 index 0000000..b4f7743 --- /dev/null +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/ClientCsdlXMLMetadata.java @@ -0,0 +1,75 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.olingo.client.core.edm; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.commons.lang3.StringUtils; +import org.apache.olingo.client.api.edm.xml.Edmx; +import org.apache.olingo.client.api.edm.xml.Reference; +import org.apache.olingo.client.api.edm.xml.XMLMetadata; +import org.apache.olingo.commons.api.edm.provider.CsdlAbstractEdmItem; +import org.apache.olingo.commons.api.edm.provider.CsdlSchema; + +/** + * Entry point for access information about EDM metadata. + */ +public class ClientCsdlXMLMetadata extends CsdlAbstractEdmItem implements XMLMetadata { + + private static final long serialVersionUID = 6025723060298454901L; + protected final Edmx edmx; + + public ClientCsdlXMLMetadata(final Edmx edmx) { + this.edmx = edmx; + } + + @Override + public List<CsdlSchema> getSchemas() { + return this.edmx.getDataServices().getSchemas(); + } + + @Override + public CsdlSchema getSchema(final int index) { + return getSchemas().get(index); + } + + @Override + public CsdlSchema getSchema(final String key) { + return getSchemaByNsOrAlias().get(key); + } + + @Override + public Map<String, CsdlSchema> getSchemaByNsOrAlias() { + final Map<String, CsdlSchema> schemaByNsOrAlias = new HashMap<String, CsdlSchema>(); + for (CsdlSchema schema : getSchemas()) { + schemaByNsOrAlias.put(schema.getNamespace(), schema); + if (StringUtils.isNotBlank(schema.getAlias())) { + schemaByNsOrAlias.put(schema.getAlias(), schema); + } + } + return schemaByNsOrAlias; + } + + @Override + public List<Reference> getReferences() { + return this.edmx.getReferences(); + } +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/53b10f6b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/ClientEdmProvider.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/ClientEdmProvider.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/ClientEdmProvider.java deleted file mode 100644 index 6284ade..0000000 --- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/ClientEdmProvider.java +++ /dev/null @@ -1,212 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.client.core.edm; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import org.apache.olingo.commons.api.ODataException; -import org.apache.olingo.commons.api.edm.FullQualifiedName; -import org.apache.olingo.commons.api.edm.provider.CsdlAbstractEdmProvider; -import org.apache.olingo.commons.api.edm.provider.CsdlAction; -import org.apache.olingo.commons.api.edm.provider.CsdlActionImport; -import org.apache.olingo.commons.api.edm.provider.CsdlAliasInfo; -import org.apache.olingo.commons.api.edm.provider.CsdlAnnotatable; -import org.apache.olingo.commons.api.edm.provider.CsdlAnnotations; -import org.apache.olingo.commons.api.edm.provider.CsdlComplexType; -import org.apache.olingo.commons.api.edm.provider.CsdlEntityContainer; -import org.apache.olingo.commons.api.edm.provider.CsdlEntityContainerInfo; -import org.apache.olingo.commons.api.edm.provider.CsdlEntitySet; -import org.apache.olingo.commons.api.edm.provider.CsdlEntityType; -import org.apache.olingo.commons.api.edm.provider.CsdlEnumType; -import org.apache.olingo.commons.api.edm.provider.CsdlFunction; -import org.apache.olingo.commons.api.edm.provider.CsdlFunctionImport; -import org.apache.olingo.commons.api.edm.provider.CsdlSchema; -import org.apache.olingo.commons.api.edm.provider.CsdlSingleton; -import org.apache.olingo.commons.api.edm.provider.CsdlTerm; -import org.apache.olingo.commons.api.edm.provider.CsdlTypeDefinition; - -public class ClientEdmProvider extends CsdlAbstractEdmProvider { - - private final Map<String, CsdlSchema> xmlSchemas; - - public ClientEdmProvider(Map<String, CsdlSchema> xmlSchemas) { - this.xmlSchemas = xmlSchemas; - } - - @Override - public CsdlEnumType getEnumType(final FullQualifiedName enumTypeName) throws ODataException { - CsdlSchema schema = xmlSchemas.get(enumTypeName.getNamespace()); - if (schema != null) { - return schema.getEnumType(enumTypeName.getName()); - } - return null; - } - - @Override - public CsdlTypeDefinition getTypeDefinition(final FullQualifiedName typeDefinitionName) throws ODataException { - CsdlSchema schema = xmlSchemas.get(typeDefinitionName.getNamespace()); - if (schema != null) { - return schema.getTypeDefinition(typeDefinitionName.getName()); - } - return null; - } - - @Override - public CsdlEntityType getEntityType(final FullQualifiedName entityTypeName) throws ODataException { - CsdlSchema schema = xmlSchemas.get(entityTypeName.getNamespace()); - if (schema != null) { - return schema.getEntityType(entityTypeName.getName()); - } - return null; - } - - @Override - public CsdlComplexType getComplexType(final FullQualifiedName complexTypeName) throws ODataException { - CsdlSchema schema = xmlSchemas.get(complexTypeName.getNamespace()); - if (schema != null) { - return schema.getComplexType(complexTypeName.getName()); - } - return null; - } - - @Override - public List<CsdlAction> getActions(final FullQualifiedName actionName) throws ODataException { - CsdlSchema schema = xmlSchemas.get(actionName.getNamespace()); - if (schema != null) { - return schema.getActions(actionName.getName()); - } - return null; - } - - @Override - public List<CsdlFunction> getFunctions(final FullQualifiedName functionName) throws ODataException { - CsdlSchema schema = xmlSchemas.get(functionName.getNamespace()); - if (schema != null) { - return schema.getFunctions(functionName.getName()); - } - return null; - } - - @Override - public CsdlTerm getTerm(final FullQualifiedName termName) throws ODataException { - CsdlSchema schema = xmlSchemas.get(termName.getNamespace()); - if (schema != null) { - return schema.getTerm(termName.getName()); - } - return null; - } - - @Override - public CsdlEntitySet getEntitySet(final FullQualifiedName entityContainer, final String entitySetName) - throws ODataException { - CsdlSchema schema = xmlSchemas.get(entityContainer.getNamespace()); - if (schema != null) { - return schema.getEntityContainer().getEntitySet(entitySetName); - } - return null; - } - - @Override - public CsdlSingleton getSingleton(final FullQualifiedName entityContainer, final String singletonName) - throws ODataException { - CsdlSchema schema = xmlSchemas.get(entityContainer.getNamespace()); - if (schema != null) { - return schema.getEntityContainer().getSingleton(singletonName); - } - return null; - } - - @Override - public CsdlActionImport getActionImport(final FullQualifiedName entityContainer, final String actionImportName) - throws ODataException { - CsdlSchema schema = xmlSchemas.get(entityContainer.getNamespace()); - if (schema != null) { - return schema.getEntityContainer().getActionImport(actionImportName); - } - return null; - } - - @Override - public CsdlFunctionImport getFunctionImport(final FullQualifiedName entityContainer, final String functionImportName) - throws ODataException { - CsdlSchema schema = xmlSchemas.get(entityContainer.getNamespace()); - if (schema != null) { - return schema.getEntityContainer().getFunctionImport(functionImportName); - } - return null; - } - - @Override - public CsdlEntityContainerInfo getEntityContainerInfo(final FullQualifiedName entityContainerName) - throws ODataException { - for (CsdlSchema schema : xmlSchemas.values()) { - if (schema.getEntityContainer() != null) { - return new CsdlEntityContainerInfo().setContainerName(entityContainerName).setExtendsContainer( - schema.getEntityContainer().getExtendsContainerFQN()); - } - } - return null; - } - - @Override - public List<CsdlAliasInfo> getAliasInfos() throws ODataException { - ArrayList<CsdlAliasInfo> aliasInfo = new ArrayList<CsdlAliasInfo>(); - for (CsdlSchema schema : xmlSchemas.values()) { - if (schema.getAlias() != null) { - aliasInfo.add(new CsdlAliasInfo().setNamespace(schema.getNamespace()).setAlias(schema.getAlias())); - } - } - return aliasInfo; - } - - @Override - public List<CsdlSchema> getSchemas() throws ODataException { - return new ArrayList<CsdlSchema>(xmlSchemas.values()); - } - - @Override - public CsdlEntityContainer getEntityContainer() throws ODataException { - for (CsdlSchema schema : xmlSchemas.values()) { - if (schema.getEntityContainer() != null) { - return schema.getEntityContainer(); - } - } - return null; - } - - @Override - public CsdlAnnotations getAnnotationsGroup(FullQualifiedName targetName) throws ODataException { - CsdlSchema schema = xmlSchemas.get(targetName.getNamespace()); - if (schema != null) { - return schema.getAnnotationGroup(targetName.getName()); - } - return null; - } - - @Override - public CsdlAnnotatable getAnnoatatable(FullQualifiedName annotatedName) throws ODataException { - final CsdlSchema schema = xmlSchemas.get(annotatedName.getNamespace()); - if (schema != null) { - return schema.getAnnotatables().get(annotatedName.getName()); - } - return null; - } -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/53b10f6b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/ClientXMLMetadata.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/ClientXMLMetadata.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/ClientXMLMetadata.java deleted file mode 100644 index 96c07c2..0000000 --- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/ClientXMLMetadata.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.client.core.edm; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.apache.commons.lang3.StringUtils; -import org.apache.olingo.client.api.edm.xml.Edmx; -import org.apache.olingo.client.api.edm.xml.Reference; -import org.apache.olingo.client.api.edm.xml.XMLMetadata; -import org.apache.olingo.commons.api.edm.provider.CsdlAbstractEdmItem; -import org.apache.olingo.commons.api.edm.provider.CsdlSchema; - -/** - * Entry point for access information about EDM metadata. - */ -public class ClientXMLMetadata extends CsdlAbstractEdmItem implements XMLMetadata { - - private static final long serialVersionUID = 6025723060298454901L; - protected final Edmx edmx; - - public ClientXMLMetadata(final Edmx edmx) { - this.edmx = edmx; - } - - @Override - public List<CsdlSchema> getSchemas() { - return this.edmx.getDataServices().getSchemas(); - } - - @Override - public CsdlSchema getSchema(final int index) { - return getSchemas().get(index); - } - - @Override - public CsdlSchema getSchema(final String key) { - return getSchemaByNsOrAlias().get(key); - } - - @Override - public Map<String, CsdlSchema> getSchemaByNsOrAlias() { - final Map<String, CsdlSchema> schemaByNsOrAlias = new HashMap<String, CsdlSchema>(); - for (CsdlSchema schema : getSchemas()) { - schemaByNsOrAlias.put(schema.getNamespace(), schema); - if (StringUtils.isNotBlank(schema.getAlias())) { - schemaByNsOrAlias.put(schema.getAlias(), schema); - } - } - return schemaByNsOrAlias; - } - - @Override - public List<Reference> getReferences() { - return this.edmx.getReferences(); - } -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/53b10f6b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientAnnotatableDynamicAnnotationExpression.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientAnnotatableDynamicAnnotationExpression.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientAnnotatableDynamicAnnotationExpression.java deleted file mode 100644 index 052c4c7..0000000 --- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientAnnotatableDynamicAnnotationExpression.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.client.core.edm.xml; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.olingo.commons.api.edm.provider.CsdlAnnotatable; -import org.apache.olingo.commons.api.edm.provider.CsdlAnnotation; - -abstract class AbstractClientAnnotatableDynamicAnnotationExpression - extends AbstractClientDynamicAnnotationExpression implements CsdlAnnotatable { - - private static final long serialVersionUID = -450668773857358139L; - - private final List<CsdlAnnotation> annotations = new ArrayList<CsdlAnnotation>(); - - @Override - public List<CsdlAnnotation> getAnnotations() { - return annotations; - } -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/53b10f6b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientAnnotationExpression.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientAnnotationExpression.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientAnnotationExpression.java deleted file mode 100644 index bcdaf40..0000000 --- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientAnnotationExpression.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.client.core.edm.xml; - -import org.apache.olingo.commons.api.edm.provider.CsdlAbstractEdmItem; -import org.apache.olingo.commons.api.edm.provider.annotation.AnnotationExpression; -import org.apache.olingo.commons.api.edm.provider.annotation.ConstantAnnotationExpression; -import org.apache.olingo.commons.api.edm.provider.annotation.DynamicAnnotationExpression; - -abstract class AbstractClientAnnotationExpression extends CsdlAbstractEdmItem implements AnnotationExpression { - - private static final long serialVersionUID = -4238652997159205377L; - - @Override - public boolean isConstant() { - return this instanceof ConstantAnnotationExpression; - } - - @Override - public ConstantAnnotationExpression asConstant() { - return isConstant() ? (ConstantAnnotationExpression) this : null; - } - - @Override - public boolean isDynamic() { - return this instanceof DynamicAnnotationExpression; - } - - @Override - public DynamicAnnotationExpression asDynamic() { - return isDynamic() ? (DynamicAnnotationExpression) this : null; - } -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/53b10f6b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientCsdlAnnotatableDynamicAnnotationExpression.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientCsdlAnnotatableDynamicAnnotationExpression.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientCsdlAnnotatableDynamicAnnotationExpression.java new file mode 100644 index 0000000..68e98ae --- /dev/null +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientCsdlAnnotatableDynamicAnnotationExpression.java @@ -0,0 +1,38 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.olingo.client.core.edm.xml; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.olingo.commons.api.edm.provider.CsdlAnnotatable; +import org.apache.olingo.commons.api.edm.provider.CsdlAnnotation; + +abstract class AbstractClientCsdlAnnotatableDynamicAnnotationExpression + extends AbstractClientCsdlDynamicAnnotationExpression implements CsdlAnnotatable { + + private static final long serialVersionUID = -450668773857358139L; + + private final List<CsdlAnnotation> annotations = new ArrayList<CsdlAnnotation>(); + + @Override + public List<CsdlAnnotation> getAnnotations() { + return annotations; + } +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/53b10f6b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientCsdlAnnotationExpression.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientCsdlAnnotationExpression.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientCsdlAnnotationExpression.java new file mode 100644 index 0000000..d362dfd --- /dev/null +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientCsdlAnnotationExpression.java @@ -0,0 +1,49 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.olingo.client.core.edm.xml; + +import org.apache.olingo.commons.api.edm.provider.CsdlAbstractEdmItem; +import org.apache.olingo.commons.api.edm.provider.annotation.AnnotationExpression; +import org.apache.olingo.commons.api.edm.provider.annotation.ConstantAnnotationExpression; +import org.apache.olingo.commons.api.edm.provider.annotation.DynamicAnnotationExpression; + +abstract class AbstractClientCsdlAnnotationExpression extends CsdlAbstractEdmItem implements AnnotationExpression { + + private static final long serialVersionUID = -4238652997159205377L; + + @Override + public boolean isConstant() { + return this instanceof ConstantAnnotationExpression; + } + + @Override + public ConstantAnnotationExpression asConstant() { + return isConstant() ? (ConstantAnnotationExpression) this : null; + } + + @Override + public boolean isDynamic() { + return this instanceof DynamicAnnotationExpression; + } + + @Override + public DynamicAnnotationExpression asDynamic() { + return isDynamic() ? (DynamicAnnotationExpression) this : null; + } +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/53b10f6b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientCsdlDynamicAnnotationExpression.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientCsdlDynamicAnnotationExpression.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientCsdlDynamicAnnotationExpression.java new file mode 100644 index 0000000..229ef87 --- /dev/null +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientCsdlDynamicAnnotationExpression.java @@ -0,0 +1,356 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.olingo.client.core.edm.xml; + +import com.fasterxml.jackson.core.JsonLocation; +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.databind.DeserializationContext; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.ClassUtils; +import org.apache.olingo.commons.api.edm.provider.annotation.AnnotationPath; +import org.apache.olingo.commons.api.edm.provider.annotation.Apply; +import org.apache.olingo.commons.api.edm.provider.annotation.Cast; +import org.apache.olingo.commons.api.edm.provider.annotation.Collection; +import org.apache.olingo.commons.api.edm.provider.annotation.DynamicAnnotationExpression; +import org.apache.olingo.commons.api.edm.provider.annotation.If; +import org.apache.olingo.commons.api.edm.provider.annotation.IsOf; +import org.apache.olingo.commons.api.edm.provider.annotation.LabeledElement; +import org.apache.olingo.commons.api.edm.provider.annotation.LabeledElementReference; +import org.apache.olingo.commons.api.edm.provider.annotation.NavigationPropertyPath; +import org.apache.olingo.commons.api.edm.provider.annotation.Not; +import org.apache.olingo.commons.api.edm.provider.annotation.Null; +import org.apache.olingo.commons.api.edm.provider.annotation.Path; +import org.apache.olingo.commons.api.edm.provider.annotation.PropertyPath; +import org.apache.olingo.commons.api.edm.provider.annotation.PropertyValue; +import org.apache.olingo.commons.api.edm.provider.annotation.Record; +import org.apache.olingo.commons.api.edm.provider.annotation.TwoParamsOpDynamicAnnotationExpression; +import org.apache.olingo.commons.api.edm.provider.annotation.UrlRef; + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; + +import java.io.IOException; + +@JsonDeserialize(using = AbstractClientCsdlDynamicAnnotationExpression.DynamicAnnotationExpressionDeserializer.class) +abstract class AbstractClientCsdlDynamicAnnotationExpression + extends AbstractClientCsdlAnnotationExpression implements DynamicAnnotationExpression { + + private static final long serialVersionUID = 1093411847477874348L; + + @Override + public boolean isNot() { + return this instanceof Not; + } + + @Override + public Not asNot() { + return isNot() ? (Not) this : null; + + } + + @Override + public boolean isTwoParamsOp() { + return this instanceof TwoParamsOpDynamicAnnotationExpression; + } + + @Override + public TwoParamsOpDynamicAnnotationExpression asTwoParamsOp() { + return isTwoParamsOp() ? (TwoParamsOpDynamicAnnotationExpression) this : null; + } + + @Override + public boolean isAnnotationPath() { + return this instanceof AnnotationPath; + } + + @Override + public AnnotationPath asAnnotationPath() { + return isAnnotationPath() ? (AnnotationPath) this : null; + } + + @Override + public boolean isApply() { + return this instanceof Apply; + } + + @Override + public Apply asApply() { + return isApply() ? (Apply) this : null; + } + + @Override + public boolean isCast() { + return this instanceof Cast; + } + + @Override + public Cast asCast() { + return isCast() ? (Cast) this : null; + } + + @Override + public boolean isCollection() { + return this instanceof Collection; + } + + @Override + public Collection asCollection() { + return isCollection() ? (Collection) this : null; + } + + @Override + public boolean isIf() { + return this instanceof If; + } + + @Override + public If asIf() { + return isIf() ? (If) this : null; + } + + @Override + public boolean isIsOf() { + return this instanceof IsOf; + } + + @Override + public IsOf asIsOf() { + return isIsOf() ? (IsOf) this : null; + } + + @Override + public boolean isLabeledElement() { + return this instanceof LabeledElement; + } + + @Override + public LabeledElement asLabeledElement() { + return isLabeledElement() ? (LabeledElement) this : null; + } + + @Override + public boolean isLabeledElementReference() { + return this instanceof LabeledElementReference; + } + + @Override + public LabeledElementReference asLabeledElementReference() { + return isLabeledElementReference() ? (LabeledElementReference) this : null; + } + + @Override + public boolean isNull() { + return this instanceof Null; + } + + @Override + public Null asNull() { + return isNull() ? (Null) this : null; + } + + @Override + public boolean isNavigationPropertyPath() { + return this instanceof NavigationPropertyPath; + } + + @Override + public NavigationPropertyPath asNavigationPropertyPath() { + return isNavigationPropertyPath() ? (NavigationPropertyPath) this : null; + } + + @Override + public boolean isPath() { + return this instanceof Path; + } + + @Override + public Path asPath() { + return isPath() ? (Path) this : null; + } + + @Override + public boolean isPropertyPath() { + return this instanceof PropertyPath; + } + + @Override + public PropertyPath asPropertyPath() { + return isPropertyPath() ? (PropertyPath) this : null; + } + + @Override + public boolean isPropertyValue() { + return this instanceof PropertyValue; + } + + @Override + public PropertyValue asPropertyValue() { + return isPropertyValue() ? (PropertyValue) this : null; + } + + @Override + public boolean isRecord() { + return this instanceof Record; + } + + @Override + public Record asRecord() { + return isRecord() ? (Record) this : null; + } + + @Override + public boolean isUrlRef() { + return this instanceof UrlRef; + } + + @Override + public UrlRef asUrlRef() { + return isUrlRef() ? (UrlRef) this : null; + } + + static class DynamicAnnotationExpressionDeserializer + extends AbstractClientCsdlEdmDeserializer<AbstractClientCsdlDynamicAnnotationExpression> { + + private static final String[] EL_OR_ATTR = { + AnnotationPath.class.getSimpleName(), NavigationPropertyPath.class.getSimpleName(), + Path.class.getSimpleName(), PropertyPath.class.getSimpleName() + }; + + private static final String APPLY = Apply.class.getSimpleName(); + private static final String CAST = Cast.class.getSimpleName(); + private static final String COLLECTION = Collection.class.getSimpleName(); + private static final String IF = If.class.getSimpleName(); + private static final String IS_OF = IsOf.class.getSimpleName(); + private static final String LABELED_ELEMENT = LabeledElement.class.getSimpleName(); + private static final String NULL = Null.class.getSimpleName(); + private static final String RECORD = Record.class.getSimpleName(); + private static final String URL_REF = UrlRef.class.getSimpleName(); + + private AbstractClientCsdlElementOrAttributeExpression getElementOrAttributeExpression(final String simpleClassName) + throws JsonParseException { + + try { + @SuppressWarnings("unchecked") + Class<? extends AbstractClientCsdlElementOrAttributeExpression> elOrAttrClass = + (Class<? extends AbstractClientCsdlElementOrAttributeExpression>) ClassUtils.getClass( + getClass().getPackage().getName() + ".ClientCsdl" + simpleClassName); + return elOrAttrClass.newInstance(); + } catch (Exception e) { + throw new JsonParseException("Could not instantiate " + simpleClassName, JsonLocation.NA, e); + } + } + + private AbstractClientCsdlAnnotationExpression parseConstOrEnumExpression(final JsonParser jp) throws IOException { + AbstractClientCsdlAnnotationExpression result; + if (isAnnotationConstExprConstruct(jp)) { + result = parseAnnotationConstExprConstruct(jp); + } else { + result = jp.readValueAs(AbstractClientCsdlDynamicAnnotationExpression.class); + } + jp.nextToken(); + + return result; + } + + @Override + protected AbstractClientCsdlDynamicAnnotationExpression doDeserialize(final JsonParser jp, + final DeserializationContext ctxt) throws IOException { + + AbstractClientCsdlDynamicAnnotationExpression expression = null; + + if ("Not".equals(jp.getCurrentName())) { + final ClientCsdlNot not = new ClientCsdlNot(); + + jp.nextToken(); + //Search for field name + while (jp.getCurrentToken() != JsonToken.FIELD_NAME) { + jp.nextToken(); + } + not.setExpression(jp.readValueAs(AbstractClientCsdlDynamicAnnotationExpression.class)); + //Search for end object + while (jp.getCurrentToken() != JsonToken.END_OBJECT || !jp.getCurrentName().equals("Not")) { + jp.nextToken(); + } + + expression = not; + } else if (TwoParamsOpDynamicAnnotationExpression.Type.fromString(jp.getCurrentName()) != null) { + final ClientCsdlTwoParamsOpDynamicAnnotationExpression dynExprDoubleParamOp = + new ClientCsdlTwoParamsOpDynamicAnnotationExpression(); + dynExprDoubleParamOp.setType(TwoParamsOpDynamicAnnotationExpression.Type.fromString(jp.getCurrentName())); + + jp.nextToken(); + //Search for field name + while (jp.getCurrentToken() != JsonToken.FIELD_NAME) { + jp.nextToken(); + } + dynExprDoubleParamOp.setLeftExpression(jp.readValueAs(AbstractClientCsdlDynamicAnnotationExpression.class)); + dynExprDoubleParamOp.setRightExpression(jp.readValueAs(AbstractClientCsdlDynamicAnnotationExpression.class)); + //Search for expression + while (jp.getCurrentToken() != JsonToken.END_OBJECT || !jp.getCurrentName().equals(dynExprDoubleParamOp + .getType().name())) { + jp.nextToken(); + } + + expression = dynExprDoubleParamOp; + } else if (ArrayUtils.contains(EL_OR_ATTR, jp.getCurrentName())) { + final AbstractClientCsdlElementOrAttributeExpression elOrAttr = + getElementOrAttributeExpression(jp.getCurrentName()); + elOrAttr.setValue(jp.nextTextValue()); + expression = elOrAttr; + } else if (APPLY.equals(jp.getCurrentName())) { + jp.nextToken(); + expression = jp.readValueAs(ClientCsdlApply.class); + } else if (CAST.equals(jp.getCurrentName())) { + jp.nextToken(); + expression = jp.readValueAs(ClientCsdlCast.class); + } else if (COLLECTION.equals(jp.getCurrentName())) { + jp.nextToken(); + expression = jp.readValueAs(ClientCsdlCollection.class); + } else if (IF.equals(jp.getCurrentName())) { + jp.nextToken(); + jp.nextToken(); + + final ClientCsdlIf ifImpl = new ClientCsdlIf(); + ifImpl.setGuard(parseConstOrEnumExpression(jp)); + ifImpl.setThen(parseConstOrEnumExpression(jp)); + ifImpl.setElse(parseConstOrEnumExpression(jp)); + + expression = ifImpl; + } else if (IS_OF.equals(jp.getCurrentName())) { + jp.nextToken(); + expression = jp.readValueAs(ClientCsdlIsOf.class); + } else if (LABELED_ELEMENT.equals(jp.getCurrentName())) { + jp.nextToken(); + expression = jp.readValueAs(ClientCsdlLabeledElement.class); + } else if (NULL.equals(jp.getCurrentName())) { + jp.nextToken(); + expression = jp.readValueAs(ClientCsdlNull.class); + } else if (RECORD.equals(jp.getCurrentName())) { + jp.nextToken(); + expression = jp.readValueAs(ClientCsdlRecord.class); + } else if (URL_REF.equals(jp.getCurrentName())) { + jp.nextToken(); + expression = jp.readValueAs(ClientCsdlUrlRef.class); + } + + return expression; + } + } +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/53b10f6b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientCsdlEdmDeserializer.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientCsdlEdmDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientCsdlEdmDeserializer.java new file mode 100644 index 0000000..c96654c --- /dev/null +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientCsdlEdmDeserializer.java @@ -0,0 +1,60 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.olingo.client.core.edm.xml; + +import java.io.IOException; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.fasterxml.jackson.dataformat.xml.deser.FromXmlParser; + +abstract class AbstractClientCsdlEdmDeserializer<T> extends JsonDeserializer<T> { + + protected boolean isAnnotationConstExprConstruct(final JsonParser jp) throws IOException { + return ClientCsdlConstantAnnotationExpression.Type.fromString(jp.getCurrentName()) != null; + } + + protected ClientCsdlConstantAnnotationExpression parseAnnotationConstExprConstruct(final JsonParser jp) + throws IOException { + final ClientCsdlConstantAnnotationExpression constExpr = new ClientCsdlConstantAnnotationExpression(); + constExpr.setType(ClientCsdlConstantAnnotationExpression.Type.fromString(jp.getCurrentName())); + constExpr.setValue(jp.nextTextValue()); + return constExpr; + } + + protected ClientCsdlReturnType parseReturnType(final JsonParser jp, final String elementName) throws IOException { + final ClientCsdlReturnType returnType; + if (elementName.equals(((FromXmlParser) jp).getStaxReader().getLocalName())) { + returnType = new ClientCsdlReturnType(); + returnType.setType(jp.nextTextValue()); + } else { + jp.nextToken(); + returnType = jp.readValueAs(ClientCsdlReturnType.class); + } + return returnType; + } + + protected abstract T doDeserialize(JsonParser jp, DeserializationContext ctxt) throws IOException; + + @Override + public T deserialize(final JsonParser jp, final DeserializationContext ctxt) throws IOException { + return doDeserialize(jp, ctxt); + } +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/53b10f6b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientCsdlElementOrAttributeExpression.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientCsdlElementOrAttributeExpression.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientCsdlElementOrAttributeExpression.java new file mode 100644 index 0000000..6c4c5cf --- /dev/null +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientCsdlElementOrAttributeExpression.java @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.olingo.client.core.edm.xml; + +/** + * Groups dynamic expressions that may be provided using element notation or attribute notation. + */ +class AbstractClientCsdlElementOrAttributeExpression extends AbstractClientCsdlDynamicAnnotationExpression { + + private static final long serialVersionUID = 1588336268773032932L; + + private String value; + + public String getValue() { + return value; + } + + public void setValue(final String value) { + this.value = value; + } +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/53b10f6b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientDynamicAnnotationExpression.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientDynamicAnnotationExpression.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientDynamicAnnotationExpression.java deleted file mode 100644 index 8e8440e..0000000 --- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientDynamicAnnotationExpression.java +++ /dev/null @@ -1,356 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.client.core.edm.xml; - -import com.fasterxml.jackson.core.JsonLocation; -import com.fasterxml.jackson.core.JsonParseException; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.JsonToken; -import com.fasterxml.jackson.databind.DeserializationContext; -import org.apache.commons.lang3.ArrayUtils; -import org.apache.commons.lang3.ClassUtils; -import org.apache.olingo.commons.api.edm.provider.annotation.AnnotationPath; -import org.apache.olingo.commons.api.edm.provider.annotation.Apply; -import org.apache.olingo.commons.api.edm.provider.annotation.Cast; -import org.apache.olingo.commons.api.edm.provider.annotation.Collection; -import org.apache.olingo.commons.api.edm.provider.annotation.DynamicAnnotationExpression; -import org.apache.olingo.commons.api.edm.provider.annotation.If; -import org.apache.olingo.commons.api.edm.provider.annotation.IsOf; -import org.apache.olingo.commons.api.edm.provider.annotation.LabeledElement; -import org.apache.olingo.commons.api.edm.provider.annotation.LabeledElementReference; -import org.apache.olingo.commons.api.edm.provider.annotation.NavigationPropertyPath; -import org.apache.olingo.commons.api.edm.provider.annotation.Not; -import org.apache.olingo.commons.api.edm.provider.annotation.Null; -import org.apache.olingo.commons.api.edm.provider.annotation.Path; -import org.apache.olingo.commons.api.edm.provider.annotation.PropertyPath; -import org.apache.olingo.commons.api.edm.provider.annotation.PropertyValue; -import org.apache.olingo.commons.api.edm.provider.annotation.Record; -import org.apache.olingo.commons.api.edm.provider.annotation.TwoParamsOpDynamicAnnotationExpression; -import org.apache.olingo.commons.api.edm.provider.annotation.UrlRef; - -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; - -import java.io.IOException; - -@JsonDeserialize(using = AbstractClientDynamicAnnotationExpression.DynamicAnnotationExpressionDeserializer.class) -abstract class AbstractClientDynamicAnnotationExpression - extends AbstractClientAnnotationExpression implements DynamicAnnotationExpression { - - private static final long serialVersionUID = 1093411847477874348L; - - @Override - public boolean isNot() { - return this instanceof Not; - } - - @Override - public Not asNot() { - return isNot() ? (Not) this : null; - - } - - @Override - public boolean isTwoParamsOp() { - return this instanceof TwoParamsOpDynamicAnnotationExpression; - } - - @Override - public TwoParamsOpDynamicAnnotationExpression asTwoParamsOp() { - return isTwoParamsOp() ? (TwoParamsOpDynamicAnnotationExpression) this : null; - } - - @Override - public boolean isAnnotationPath() { - return this instanceof AnnotationPath; - } - - @Override - public AnnotationPath asAnnotationPath() { - return isAnnotationPath() ? (AnnotationPath) this : null; - } - - @Override - public boolean isApply() { - return this instanceof Apply; - } - - @Override - public Apply asApply() { - return isApply() ? (Apply) this : null; - } - - @Override - public boolean isCast() { - return this instanceof Cast; - } - - @Override - public Cast asCast() { - return isCast() ? (Cast) this : null; - } - - @Override - public boolean isCollection() { - return this instanceof Collection; - } - - @Override - public Collection asCollection() { - return isCollection() ? (Collection) this : null; - } - - @Override - public boolean isIf() { - return this instanceof If; - } - - @Override - public If asIf() { - return isIf() ? (If) this : null; - } - - @Override - public boolean isIsOf() { - return this instanceof IsOf; - } - - @Override - public IsOf asIsOf() { - return isIsOf() ? (IsOf) this : null; - } - - @Override - public boolean isLabeledElement() { - return this instanceof LabeledElement; - } - - @Override - public LabeledElement asLabeledElement() { - return isLabeledElement() ? (LabeledElement) this : null; - } - - @Override - public boolean isLabeledElementReference() { - return this instanceof LabeledElementReference; - } - - @Override - public LabeledElementReference asLabeledElementReference() { - return isLabeledElementReference() ? (LabeledElementReference) this : null; - } - - @Override - public boolean isNull() { - return this instanceof Null; - } - - @Override - public Null asNull() { - return isNull() ? (Null) this : null; - } - - @Override - public boolean isNavigationPropertyPath() { - return this instanceof NavigationPropertyPath; - } - - @Override - public NavigationPropertyPath asNavigationPropertyPath() { - return isNavigationPropertyPath() ? (NavigationPropertyPath) this : null; - } - - @Override - public boolean isPath() { - return this instanceof Path; - } - - @Override - public Path asPath() { - return isPath() ? (Path) this : null; - } - - @Override - public boolean isPropertyPath() { - return this instanceof PropertyPath; - } - - @Override - public PropertyPath asPropertyPath() { - return isPropertyPath() ? (PropertyPath) this : null; - } - - @Override - public boolean isPropertyValue() { - return this instanceof PropertyValue; - } - - @Override - public PropertyValue asPropertyValue() { - return isPropertyValue() ? (PropertyValue) this : null; - } - - @Override - public boolean isRecord() { - return this instanceof Record; - } - - @Override - public Record asRecord() { - return isRecord() ? (Record) this : null; - } - - @Override - public boolean isUrlRef() { - return this instanceof UrlRef; - } - - @Override - public UrlRef asUrlRef() { - return isUrlRef() ? (UrlRef) this : null; - } - - static class DynamicAnnotationExpressionDeserializer - extends AbstractClientEdmDeserializer<AbstractClientDynamicAnnotationExpression> { - - private static final String[] EL_OR_ATTR = { - AnnotationPath.class.getSimpleName(), NavigationPropertyPath.class.getSimpleName(), - Path.class.getSimpleName(), PropertyPath.class.getSimpleName() - }; - - private static final String APPLY = Apply.class.getSimpleName(); - private static final String CAST = Cast.class.getSimpleName(); - private static final String COLLECTION = Collection.class.getSimpleName(); - private static final String IF = If.class.getSimpleName(); - private static final String IS_OF = IsOf.class.getSimpleName(); - private static final String LABELED_ELEMENT = LabeledElement.class.getSimpleName(); - private static final String NULL = Null.class.getSimpleName(); - private static final String RECORD = Record.class.getSimpleName(); - private static final String URL_REF = UrlRef.class.getSimpleName(); - - private AbstractClientElementOrAttributeExpression getElementOrAttributeExpression(final String simpleClassName) - throws JsonParseException { - - try { - @SuppressWarnings("unchecked") - Class<? extends AbstractClientElementOrAttributeExpression> elOrAttrClass = - (Class<? extends AbstractClientElementOrAttributeExpression>) ClassUtils.getClass( - getClass().getPackage().getName() + ".Client" + simpleClassName); - return elOrAttrClass.newInstance(); - } catch (Exception e) { - throw new JsonParseException("Could not instantiate " + simpleClassName, JsonLocation.NA, e); - } - } - - private AbstractClientAnnotationExpression parseConstOrEnumExpression(final JsonParser jp) throws IOException { - AbstractClientAnnotationExpression result; - if (isAnnotationConstExprConstruct(jp)) { - result = parseAnnotationConstExprConstruct(jp); - } else { - result = jp.readValueAs(AbstractClientDynamicAnnotationExpression.class); - } - jp.nextToken(); - - return result; - } - - @Override - protected AbstractClientDynamicAnnotationExpression doDeserialize(final JsonParser jp, - final DeserializationContext ctxt) throws IOException { - - AbstractClientDynamicAnnotationExpression expression = null; - - if ("Not".equals(jp.getCurrentName())) { - final ClientNot not = new ClientNot(); - - jp.nextToken(); - //Search for field name - while (jp.getCurrentToken() != JsonToken.FIELD_NAME) { - jp.nextToken(); - } - not.setExpression(jp.readValueAs(AbstractClientDynamicAnnotationExpression.class)); - //Search for end object - while (jp.getCurrentToken() != JsonToken.END_OBJECT || !jp.getCurrentName().equals("Not")) { - jp.nextToken(); - } - - expression = not; - } else if (TwoParamsOpDynamicAnnotationExpression.Type.fromString(jp.getCurrentName()) != null) { - final ClientTwoParamsOpDynamicAnnotationExpression dynExprDoubleParamOp = - new ClientTwoParamsOpDynamicAnnotationExpression(); - dynExprDoubleParamOp.setType(TwoParamsOpDynamicAnnotationExpression.Type.fromString(jp.getCurrentName())); - - jp.nextToken(); - //Search for field name - while (jp.getCurrentToken() != JsonToken.FIELD_NAME) { - jp.nextToken(); - } - dynExprDoubleParamOp.setLeftExpression(jp.readValueAs(AbstractClientDynamicAnnotationExpression.class)); - dynExprDoubleParamOp.setRightExpression(jp.readValueAs(AbstractClientDynamicAnnotationExpression.class)); - //Search for expression - while (jp.getCurrentToken() != JsonToken.END_OBJECT || !jp.getCurrentName().equals(dynExprDoubleParamOp - .getType().name())) { - jp.nextToken(); - } - - expression = dynExprDoubleParamOp; - } else if (ArrayUtils.contains(EL_OR_ATTR, jp.getCurrentName())) { - final AbstractClientElementOrAttributeExpression elOrAttr = - getElementOrAttributeExpression(jp.getCurrentName()); - elOrAttr.setValue(jp.nextTextValue()); - expression = elOrAttr; - } else if (APPLY.equals(jp.getCurrentName())) { - jp.nextToken(); - expression = jp.readValueAs(ClientApply.class); - } else if (CAST.equals(jp.getCurrentName())) { - jp.nextToken(); - expression = jp.readValueAs(ClientCast.class); - } else if (COLLECTION.equals(jp.getCurrentName())) { - jp.nextToken(); - expression = jp.readValueAs(ClientCollection.class); - } else if (IF.equals(jp.getCurrentName())) { - jp.nextToken(); - jp.nextToken(); - - final ClientIf ifImpl = new ClientIf(); - ifImpl.setGuard(parseConstOrEnumExpression(jp)); - ifImpl.setThen(parseConstOrEnumExpression(jp)); - ifImpl.setElse(parseConstOrEnumExpression(jp)); - - expression = ifImpl; - } else if (IS_OF.equals(jp.getCurrentName())) { - jp.nextToken(); - expression = jp.readValueAs(ClientIsOf.class); - } else if (LABELED_ELEMENT.equals(jp.getCurrentName())) { - jp.nextToken(); - expression = jp.readValueAs(ClientLabeledElement.class); - } else if (NULL.equals(jp.getCurrentName())) { - jp.nextToken(); - expression = jp.readValueAs(ClientNull.class); - } else if (RECORD.equals(jp.getCurrentName())) { - jp.nextToken(); - expression = jp.readValueAs(ClientRecord.class); - } else if (URL_REF.equals(jp.getCurrentName())) { - jp.nextToken(); - expression = jp.readValueAs(ClientUrlRef.class); - } - - return expression; - } - } -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/53b10f6b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientEdmDeserializer.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientEdmDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientEdmDeserializer.java deleted file mode 100644 index 5447de6..0000000 --- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientEdmDeserializer.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.client.core.edm.xml; - -import java.io.IOException; - -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.JsonDeserializer; -import com.fasterxml.jackson.dataformat.xml.deser.FromXmlParser; - -abstract class AbstractClientEdmDeserializer<T> extends JsonDeserializer<T> { - - protected boolean isAnnotationConstExprConstruct(final JsonParser jp) throws IOException { - return ClientConstantAnnotationExpression.Type.fromString(jp.getCurrentName()) != null; - } - - protected ClientConstantAnnotationExpression parseAnnotationConstExprConstruct(final JsonParser jp) - throws IOException { - final ClientConstantAnnotationExpression constExpr = new ClientConstantAnnotationExpression(); - constExpr.setType(ClientConstantAnnotationExpression.Type.fromString(jp.getCurrentName())); - constExpr.setValue(jp.nextTextValue()); - return constExpr; - } - - protected ClientReturnType parseReturnType(final JsonParser jp, final String elementName) throws IOException { - final ClientReturnType returnType; - if (elementName.equals(((FromXmlParser) jp).getStaxReader().getLocalName())) { - returnType = new ClientReturnType(); - returnType.setType(jp.nextTextValue()); - } else { - jp.nextToken(); - returnType = jp.readValueAs(ClientReturnType.class); - } - return returnType; - } - - protected abstract T doDeserialize(JsonParser jp, DeserializationContext ctxt) throws IOException; - - @Override - public T deserialize(final JsonParser jp, final DeserializationContext ctxt) throws IOException { - return doDeserialize(jp, ctxt); - } -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/53b10f6b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientElementOrAttributeExpression.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientElementOrAttributeExpression.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientElementOrAttributeExpression.java deleted file mode 100644 index 7bcbf90..0000000 --- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractClientElementOrAttributeExpression.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.client.core.edm.xml; - -/** - * Groups dynamic expressions that may be provided using element notation or attribute notation. - */ -class AbstractClientElementOrAttributeExpression extends AbstractClientDynamicAnnotationExpression { - - private static final long serialVersionUID = 1588336268773032932L; - - private String value; - - public String getValue() { - return value; - } - - public void setValue(final String value) { - this.value = value; - } -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/53b10f6b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ClientAction.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ClientAction.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ClientAction.java deleted file mode 100644 index af274c5..0000000 --- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ClientAction.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.client.core.edm.xml; - -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.JsonToken; -import com.fasterxml.jackson.databind.DeserializationContext; -import org.apache.commons.lang3.BooleanUtils; -import org.apache.olingo.commons.api.edm.provider.CsdlAction; - -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; - -import java.io.IOException; - -@JsonDeserialize(using = ClientAction.ActionDeserializer.class) -class ClientAction extends CsdlAction { - - private static final long serialVersionUID = 5321541275349234088L; - - static class ActionDeserializer extends AbstractClientEdmDeserializer<ClientAction> { - - @Override - protected ClientAction doDeserialize(final JsonParser jp, final DeserializationContext ctxt) - throws IOException { - - final ClientAction action = new ClientAction(); - - for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) { - final JsonToken token = jp.getCurrentToken(); - if (token == JsonToken.FIELD_NAME) { - if ("Name".equals(jp.getCurrentName())) { - action.setName(jp.nextTextValue()); - } else if ("IsBound".equals(jp.getCurrentName())) { - action.setBound(BooleanUtils.toBoolean(jp.nextTextValue())); - } else if ("EntitySetPath".equals(jp.getCurrentName())) { - action.setEntitySetPath(jp.nextTextValue()); - } else if ("Parameter".equals(jp.getCurrentName())) { - jp.nextToken(); - action.getParameters().add(jp.readValueAs(ClientParameter.class)); - } else if ("ReturnType".equals(jp.getCurrentName())) { - action.setReturnType(parseReturnType(jp, "Action")); - } else if ("Annotation".equals(jp.getCurrentName())) { - jp.nextToken(); - action.getAnnotations().add(jp.readValueAs(ClientAnnotation.class)); - } - } - } - - return action; - } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/53b10f6b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ClientActionImport.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ClientActionImport.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ClientActionImport.java deleted file mode 100644 index 2419332..0000000 --- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ClientActionImport.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.client.core.edm.xml; - -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.JsonToken; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import org.apache.olingo.commons.api.edm.provider.CsdlActionImport; - -import java.io.IOException; - -@JsonDeserialize(using = ClientActionImport.ActionImportDeserializer.class) -class ClientActionImport extends CsdlActionImport { - - private static final long serialVersionUID = 2971468441177647068L; - - static class ActionImportDeserializer extends AbstractClientEdmDeserializer<ClientActionImport> { - - @Override - protected ClientActionImport doDeserialize(final JsonParser jp, final DeserializationContext ctxt) - throws IOException { - - final ClientActionImport action = new ClientActionImport(); - - for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) { - final JsonToken token = jp.getCurrentToken(); - if (token == JsonToken.FIELD_NAME) { - if ("Action".equals(jp.getCurrentName())) { - action.setAction(jp.nextTextValue()); - } else if ("Name".equals(jp.getCurrentName())) { - action.setName(jp.nextTextValue()); - } else if ("EntitySet".equals(jp.getCurrentName())) { - action.setEntitySet(jp.nextTextValue()); - } - } - } - - return action; - } - } -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/53b10f6b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ClientAnnotation.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ClientAnnotation.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ClientAnnotation.java deleted file mode 100644 index a8a978a..0000000 --- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ClientAnnotation.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.client.core.edm.xml; - -import java.io.IOException; - -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.JsonToken; -import com.fasterxml.jackson.databind.DeserializationContext; -import org.apache.olingo.commons.api.edm.provider.CsdlAnnotation; - -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; - -@JsonDeserialize(using = ClientAnnotation.AnnotationDeserializer.class) -class ClientAnnotation extends CsdlAnnotation { - - private static final long serialVersionUID = 5464714417411058033L; - - static class AnnotationDeserializer extends AbstractClientEdmDeserializer<CsdlAnnotation> { - - @Override - protected CsdlAnnotation doDeserialize(final JsonParser jp, final DeserializationContext ctxt) - throws IOException { - - final ClientAnnotation annotation = new ClientAnnotation(); - - for (; jp.getCurrentToken() != null && jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) { - final JsonToken token = jp.getCurrentToken(); - if (token == JsonToken.FIELD_NAME) { - if ("Term".equals(jp.getCurrentName())) { - annotation.setTerm(jp.nextTextValue()); - } else if ("Qualifier".equals(jp.getCurrentName())) { - annotation.setQualifier(jp.nextTextValue()); - } else if ("Annotation".equals(jp.getCurrentName())) { - jp.nextToken(); - annotation.getAnnotations().add(jp.readValueAs(ClientAnnotation.class)); - } else if (isAnnotationConstExprConstruct(jp)) { - // Constant Expressions - annotation.setExpression(parseAnnotationConstExprConstruct(jp)); - } else { - // Dynamic Expressions - annotation.setExpression(jp.readValueAs(AbstractClientDynamicAnnotationExpression.class)); - } - } - } - - return annotation; - } - } -}
