http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/pom.xml ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-client-core/pom.xml b/odata2-lib/odata-client-core/pom.xml new file mode 100644 index 0000000..e63401b --- /dev/null +++ b/odata2-lib/odata-client-core/pom.xml @@ -0,0 +1,90 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.apache.olingo</groupId> + <artifactId>olingo-odata2-lib</artifactId> + <version>2.0.11-SNAPSHOT</version> + <relativePath>..</relativePath> + </parent> + + <artifactId>olingo-odata2-client-core</artifactId> + <packaging>jar</packaging> + <name>${project.artifactId}</name> + + + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>${junit.version}</version> + </dependency> + <dependency> + <groupId>org.apache.olingo</groupId> + <artifactId>olingo-odata2-client-api</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.olingo</groupId> + <artifactId>olingo-odata2-core</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.olingo</groupId> + <artifactId>olingo-odata2-testutil</artifactId> + <version>${project.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>xmlunit</groupId> + <artifactId>xmlunit</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.httpcomponents</groupId> + <artifactId>httpcore</artifactId> + <version>${httpcore.version}</version> + </dependency> + </dependencies> + <build> + <plugins> + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile> + </archive> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <executions> + <execution> + <id>bundle-manifest</id> + <phase>process-classes</phase> + <goals> + <goal>manifest</goal> + </goals> + </execution> + </executions> + <configuration> + <instructions> + <Import-Package> + * + </Import-Package> + <Export-Package> + </Export-Package> + <Bundle-DocURL>${project.url}</Bundle-DocURL> + <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy> + <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName> + </instructions> + </configuration> + </plugin> + </plugins> + </build> + + +</project>
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ODataClientImpl.java ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ODataClientImpl.java b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ODataClientImpl.java new file mode 100644 index 0000000..1a51999 --- /dev/null +++ b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ODataClientImpl.java @@ -0,0 +1,199 @@ +package org.apache.olingo.odata2.client.core; + +import java.io.InputStream; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +import org.apache.olingo.odata2.api.edm.Edm; +import org.apache.olingo.odata2.api.edm.EdmException; +import org.apache.olingo.odata2.api.ep.EntityProviderException; +import org.apache.olingo.odata2.api.exception.ODataNotAcceptableException; +import org.apache.olingo.odata2.api.uri.PathSegment; +import org.apache.olingo.odata2.api.uri.UriInfo; +import org.apache.olingo.odata2.api.uri.UriNotMatchingException; +import org.apache.olingo.odata2.api.uri.UriSyntaxException; +import org.apache.olingo.odata2.client.api.ODataClient; +import org.apache.olingo.odata2.client.api.edm.EdmDataServices; +import org.apache.olingo.odata2.client.api.ep.ContentTypeBasedDeserializer; +import org.apache.olingo.odata2.client.api.ep.ContentTypeBasedSerializer; +import org.apache.olingo.odata2.client.api.ep.DeserializerMetadataProviderInterface; +import org.apache.olingo.odata2.client.api.uri.EdmURIBuilder; +import org.apache.olingo.odata2.client.api.uri.URIBuilder; +import org.apache.olingo.odata2.client.core.ep.AtomSerializerDeserializer; +import org.apache.olingo.odata2.client.core.ep.JsonSerializerDeserializer; +import org.apache.olingo.odata2.client.core.ep.deserializer.XmlMetadataDeserializer; +import org.apache.olingo.odata2.client.core.uri.EdmURIBuilderImpl; +import org.apache.olingo.odata2.client.core.uri.URIBuilderImpl; +import org.apache.olingo.odata2.core.ODataPathSegmentImpl; +import org.apache.olingo.odata2.core.commons.ContentType; +import org.apache.olingo.odata2.core.uri.UriParserImpl; + +/** + * Implementation class to obtain serializers and deserializers based on content type + * + */ +public class ODataClientImpl extends ODataClient implements DeserializerMetadataProviderInterface{ + + private static final String AMP = "&"; + private static final String EQUAL = "="; + private static final String QUESTIONMARK = "\\?"; + private static final String SLASH = "/"; + + @Override + public ContentTypeBasedSerializer createSerializer(final String contentType) + throws EntityProviderException { + return createSerializer(ContentType.createAsCustom(contentType)); + + } + + private ContentTypeBasedSerializer createSerializer(ContentType contentType) + throws EntityProviderException { + try { + switch (contentType.getODataFormat()) { + case ATOM: + case XML: + return new AtomSerializerDeserializer(contentType.getODataFormat()); + case JSON: + return new JsonSerializerDeserializer(); + default: + throw new ODataNotAcceptableException(ODataNotAcceptableException.NOT_SUPPORTED_CONTENT_TYPE + .addContent(contentType)); + } + } catch (final ODataNotAcceptableException e) { + throw new EntityProviderException(EntityProviderException.COMMON, e); + } + } + + @Override + public ContentTypeBasedDeserializer createDeserializer(final String contentType) + throws EntityProviderException { + return createDeserializer(ContentType.createAsCustom(contentType)); + + } + + private ContentTypeBasedDeserializer createDeserializer(ContentType contentType) + throws EntityProviderException { + try { + switch (contentType.getODataFormat()) { + case ATOM: + case XML: + return new AtomSerializerDeserializer(contentType.getODataFormat()); + case JSON: + return new JsonSerializerDeserializer(); + default: + throw new ODataNotAcceptableException(ODataNotAcceptableException.NOT_SUPPORTED_CONTENT_TYPE + .addContent(contentType)); + } + } catch (final ODataNotAcceptableException e) { + throw new EntityProviderException(EntityProviderException.COMMON, e); + } + } + + @Override + public EdmDataServices readMetadata(InputStream content, boolean validate) + throws EntityProviderException, EdmException { + return new XmlMetadataDeserializer().readMetadata(content, validate); + } + + @Override + public UriInfo parseUri(Edm edm, List<PathSegment> pathSegments, Map<String, List<String>> queryParameters) + throws UriSyntaxException, UriNotMatchingException, EdmException { + return new UriParserImpl(edm).parseAll(pathSegments, queryParameters); + } + + @Override + public UriInfo parseUri(Edm edm, String uri) throws UriSyntaxException, UriNotMatchingException, EdmException { + final String[] path = uri.split(QUESTIONMARK, -1); + if (path.length > 2) { + throw new UriSyntaxException(UriSyntaxException.URISYNTAX); + } + + final List<PathSegment> pathSegments = getPathSegments(path[0]); + + Map<String, List<String>> queryParameters; + if (path.length == 2) { + queryParameters = getQueryParameters(unescape(path[1])); + } else { + queryParameters = new HashMap<String, List<String>>(); + } + + return new UriParserImpl(edm).parseAll(pathSegments, queryParameters); + } + /** + * Fetch query parameters + * @param uri + * @return + */ + private Map<String, List<String>> getQueryParameters(final String uri) { + Map<String, List<String>> allQueryParameters = new HashMap<String, List<String>>(); + + for (final String option : uri.split(AMP)) { + final String[] keyAndValue = option.split(EQUAL); + List<String> list = allQueryParameters.containsKey(keyAndValue[0]) ? + allQueryParameters.get(keyAndValue[0]) : new LinkedList<String>(); + + list.add(keyAndValue.length == 2 ? keyAndValue[1] : ""); + + allQueryParameters.put(keyAndValue[0], list); + } + + return allQueryParameters; + } + /** + * Fetch path segments + * @param uri + * @return + * @throws UriSyntaxException + */ + private List<PathSegment> getPathSegments(final String uri) throws UriSyntaxException { + List<PathSegment> pathSegments = new ArrayList<PathSegment>(); + for (final String segment : uri.split(SLASH, -1)) { + final String unescapedSegment = unescape(segment); + PathSegment oDataSegment = new ODataPathSegmentImpl(unescapedSegment, null); + pathSegments.add(oDataSegment); + } + return pathSegments; + } + + private String unescape(final String s) throws UriSyntaxException { + try { + return new URI(s).getPath(); + } catch (URISyntaxException e) { + throw new UriSyntaxException(UriSyntaxException.NOTEXT, e); + } + } + + +/** + * Fetch Query parameters + * @param uri + * @return + */ + private Map<String, String> getQueryParametersWithStrictFilter(String uri) { + Map<String, String> queryParameters = new HashMap<String, String>(); + for (final String option : uri.split(AMP)) { + final String[] keyAndValue = option.split(EQUAL); + if (keyAndValue.length == 2) { + queryParameters.put(keyAndValue[0], keyAndValue[1]); + } else { + queryParameters.put(keyAndValue[0], ""); + } + } + return queryParameters; + } + +@Override + public EdmURIBuilder edmUriBuilder(String serviceRoot) { + return new EdmURIBuilderImpl(serviceRoot); + } + +@Override + public URIBuilder uriBuilder(String serviceRoot) { + return new URIBuilderImpl(serviceRoot); + } +} http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/EdmMetadataAssociationEnd.java ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/EdmMetadataAssociationEnd.java b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/EdmMetadataAssociationEnd.java new file mode 100644 index 0000000..dacb8d3 --- /dev/null +++ b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/EdmMetadataAssociationEnd.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.odata2.client.core.edm; + +import org.apache.olingo.odata2.api.edm.EdmAssociationEnd; + +/** + * @org.apache.olingo.odata2.DoNotImplement + * A CSDL AssociationEnd element + * + * <p>EdmAssociationEnd defines one side of the relationship of two entity types. + * + */ +public interface EdmMetadataAssociationEnd extends EdmAssociationEnd { + + + /** + * @return {@link OnDelete} on delete + */ + public EdmOnDelete getOnDelete() ; + +} http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/EdmOnDelete.java ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/EdmOnDelete.java b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/EdmOnDelete.java new file mode 100644 index 0000000..0a39db6 --- /dev/null +++ b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/EdmOnDelete.java @@ -0,0 +1,52 @@ +/******************************************************************************* + * 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.odata2.client.core.edm; + +import java.util.List; + +import org.apache.olingo.odata2.api.edm.EdmAction; +import org.apache.olingo.odata2.api.edm.EdmAnnotationAttribute; +import org.apache.olingo.odata2.api.edm.EdmAnnotationElement; +import org.apache.olingo.odata2.client.api.edm.EdmDocumentation; + +/** + * Objects of this class represent an OnDelete Action + * + */ +public interface EdmOnDelete { + /** + * @return {@link EdmAction} action + */ + public EdmAction getAction() ; + + /** + * @return {@link Documentation} documentation + */ + public EdmDocumentation getDocumentation() ; + + /** + * @return List of {@link AnnotationAttribute} annotation attributes + */ + public List<EdmAnnotationAttribute> getAnnotationAttributes(); + + /** + * @return List of {@link AnnotationElement} annotation elements + */ + public List<EdmAnnotationElement> getAnnotationElements() ; +} http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmAnnotationAttributeImpl.java ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmAnnotationAttributeImpl.java b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmAnnotationAttributeImpl.java new file mode 100644 index 0000000..7675a41 --- /dev/null +++ b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmAnnotationAttributeImpl.java @@ -0,0 +1,99 @@ +/******************************************************************************* + * 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.odata2.client.core.edm.Impl; + +import org.apache.olingo.odata2.api.edm.Edm; +import org.apache.olingo.odata2.api.edm.EdmAnnotationAttribute; + +/** + * Objects of this class represent an annotation attribute + * + */ +public class EdmAnnotationAttributeImpl implements EdmAnnotationAttribute { + + private String namespace; + private String prefix; + private String name; + private String text; + + @Override + public String getNamespace() { + return namespace; + } + + @Override + public String getPrefix() { + return prefix; + } + + @Override + public String getName() { + return name; + } + + @Override + public String getText() { + return text; + } + + /** + * Sets the namespace for this {@link EdmAnnotationAttributeImpl}. + * @param namespace + * @return {@link EdmAnnotationAttributeImpl} for method chaining + */ + public EdmAnnotationAttributeImpl setNamespace(final String namespace) { + this.namespace = namespace; + return this; + } + + /** + * Sets the prefix for this {@link EdmAnnotationAttributeImpl}. + * @param prefix + * @return {@link EdmAnnotationAttributeImpl} for method chaining + */ + public EdmAnnotationAttributeImpl setPrefix(final String prefix) { + this.prefix = prefix; + return this; + } + + /** + * Sets the name for this {@link EdmAnnotationAttributeImpl}. + * @param name + * @return {@link EdmAnnotationAttributeImpl} for method chaining + */ + public EdmAnnotationAttributeImpl setName(final String name) { + this.name = name; + return this; + } + + /** + * Sets the text for this {@link EdmAnnotationAttributeImpl}. + * @param text + * @return {@link EdmAnnotationAttributeImpl} for method chaining + */ + public EdmAnnotationAttributeImpl setText(final String text) { + this.text = text; + return this; + } + + @Override + public String toString() { + return namespace + Edm.DELIMITER + name; + } +} http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmAnnotationElementImpl.java ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmAnnotationElementImpl.java b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmAnnotationElementImpl.java new file mode 100644 index 0000000..ae117c1 --- /dev/null +++ b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmAnnotationElementImpl.java @@ -0,0 +1,93 @@ +/******************************************************************************* + * 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.odata2.client.core.edm.Impl; + +import java.util.List; + +import org.apache.olingo.odata2.api.edm.Edm; +import org.apache.olingo.odata2.api.edm.EdmAnnotationAttribute; +import org.apache.olingo.odata2.api.edm.EdmAnnotationElement; + +/** + * Objects of this class represent AnnotationElement + * + */ +public class EdmAnnotationElementImpl implements EdmAnnotationElement { + + List<EdmAnnotationElement> childElements; + List<EdmAnnotationAttribute> attributes; + private String namespace; + private String prefix; + private String name; + private String text; + + public void setNamespace(String namespace) { + this.namespace = namespace; + } + public void setPrefix(String prefix) { + this.prefix = prefix; + } + public void setName(String name) { + this.name = name; + } + public void setText(String text) { + this.text = text; + } + + public void setChildElements(List<EdmAnnotationElement> childElements) { + this.childElements = childElements; + } + public void setAttributes(List<EdmAnnotationAttribute> attributes) { + this.attributes = attributes; + } + @Override + public String getName() { + return name; + } + + @Override + public String getNamespace() { + return namespace; + } + + @Override + public String getPrefix() { + return prefix; + } + + @Override + public String getText() { + return text; + } + + @Override + public List<EdmAnnotationElement> getChildElements() { + return childElements; + } + + @Override + public List<EdmAnnotationAttribute> getAttributes() { + return attributes; + } + + @Override + public String toString() { + return namespace + Edm.DELIMITER + name; + } +} http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmAnnotationsImpl.java ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmAnnotationsImpl.java b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmAnnotationsImpl.java new file mode 100644 index 0000000..95ac630 --- /dev/null +++ b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmAnnotationsImpl.java @@ -0,0 +1,82 @@ +/******************************************************************************* + * 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.odata2.client.core.edm.Impl; + +import java.util.List; + +import org.apache.olingo.odata2.api.edm.EdmAnnotationAttribute; +import org.apache.olingo.odata2.api.edm.EdmAnnotationElement; +import org.apache.olingo.odata2.api.edm.EdmAnnotations; + +/** + * Objects of this class represent annotation elements and attributes + * + */ +public class EdmAnnotationsImpl implements EdmAnnotations { + + private List<EdmAnnotationAttribute> annotationAttributes; + private List<EdmAnnotationElement> annotationElements; + + @Override + public List<EdmAnnotationElement> getAnnotationElements() { + return annotationElements; + } + + @Override + public EdmAnnotationElement getAnnotationElement(final String name, final String namespace) { + if (annotationElements != null) { + for (EdmAnnotationElement element : annotationElements) { + if (element.getName().equals(name) && element.getNamespace().equals(namespace)) { + return element; + } + } + } + return null; + } + + @Override + public List<EdmAnnotationAttribute> getAnnotationAttributes() { + return annotationAttributes; + } + + @Override + public EdmAnnotationAttribute getAnnotationAttribute(final String name, final String namespace) { + if (annotationAttributes != null) { + for (EdmAnnotationAttribute attribute : annotationAttributes) { + if (attribute.getName().equals(name) && attribute.getNamespace().equals(namespace)) { + return attribute; + } + } + } + return null; + } + + public void setAnnotationAttributes(List<EdmAnnotationAttribute> annotationAttributes) { + this.annotationAttributes = annotationAttributes; + } + + public void setAnnotationElements(List<EdmAnnotationElement> annotationElements) { + this.annotationElements = annotationElements; + } + @Override + public String toString() { + return String.format(annotationAttributes + " " +annotationElements); + } + +} http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmAssociationEndImpl.java ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmAssociationEndImpl.java b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmAssociationEndImpl.java new file mode 100644 index 0000000..3f7a161 --- /dev/null +++ b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmAssociationEndImpl.java @@ -0,0 +1,106 @@ +/******************************************************************************* + * 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.odata2.client.core.edm.Impl; + +import org.apache.olingo.odata2.api.edm.EdmAnnotatable; +import org.apache.olingo.odata2.api.edm.EdmAnnotations; +import org.apache.olingo.odata2.api.edm.EdmEntityType; +import org.apache.olingo.odata2.api.edm.EdmException; +import org.apache.olingo.odata2.api.edm.EdmMultiplicity; +import org.apache.olingo.odata2.api.edm.FullQualifiedName; +import org.apache.olingo.odata2.client.core.edm.EdmMetadataAssociationEnd; +import org.apache.olingo.odata2.client.core.edm.EdmOnDelete; + +/** + * Objects of this class represent AssociationEnds + * + */ +public class EdmAssociationEndImpl implements EdmMetadataAssociationEnd, EdmAnnotatable { + + private EdmImpl edm; + private EdmAnnotations annotations; + private String role; + private EdmMultiplicity edmMultiplicity; + private FullQualifiedName associationEndTypeName; + private EdmOnDelete onDelete; + + @Override + public String getRole() { + return role; + } + + /** + * @param edm the edm to set + */ + public void setEdm(EdmImpl edm) { + this.edm = edm; + } + + + @Override + public EdmEntityType getEntityType() throws EdmException { + EdmEntityType entityType = edm.getEntityType( + associationEndTypeName.getNamespace(), + associationEndTypeName.getName()); + if (entityType == null) { + throw new EdmException(EdmException.ENTITYTYPEPROBLEM); + } + return entityType; + } + + @Override + public EdmMultiplicity getMultiplicity() { + return edmMultiplicity; + } + + @Override + public EdmAnnotations getAnnotations() throws EdmException { + return annotations; + } + + public void setRole(String role) { + this.role = role; + } + + public void setMultiplicity(EdmMultiplicity edmMultiplicity) { + this.edmMultiplicity = edmMultiplicity; + } + + public void setType(FullQualifiedName associationEndTypeName) { + this.associationEndTypeName = associationEndTypeName; + } + + public void setAnnotations(EdmAnnotations annotations) { + this.annotations = annotations; + } + + public void setOnDelete(EdmOnDelete onDelete) { + this.onDelete = onDelete; + } + + @Override + public EdmOnDelete getOnDelete() { + return onDelete; + } + + @Override + public String toString() { + return String.format(annotations.toString()); + } +} http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmAssociationImpl.java ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmAssociationImpl.java b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmAssociationImpl.java new file mode 100644 index 0000000..a885f94 --- /dev/null +++ b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmAssociationImpl.java @@ -0,0 +1,149 @@ +/******************************************************************************* + * 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.odata2.client.core.edm.Impl; + +import java.util.List; + +import org.apache.olingo.odata2.api.edm.Edm; +import org.apache.olingo.odata2.api.edm.EdmAnnotatable; +import org.apache.olingo.odata2.api.edm.EdmAnnotations; +import org.apache.olingo.odata2.api.edm.EdmAssociation; +import org.apache.olingo.odata2.api.edm.EdmAssociationEnd; +import org.apache.olingo.odata2.api.edm.EdmException; +import org.apache.olingo.odata2.api.edm.EdmMultiplicity; +import org.apache.olingo.odata2.api.edm.EdmReferentialConstraint; +import org.apache.olingo.odata2.api.edm.EdmTypeKind; +import org.apache.olingo.odata2.client.api.edm.EdmDocumentation; +import org.apache.olingo.odata2.client.core.edm.EdmMetadataAssociationEnd; + +/** + * Objects of this class represent Asociation + * + */ +public class EdmAssociationImpl extends EdmNamedImpl implements EdmAssociation, EdmAnnotatable { + + private String namespace; + private EdmAnnotations annotations; + private EdmReferentialConstraintImpl referentialConstraint; + private List<EdmMetadataAssociationEnd> associationEnds; + private EdmDocumentation documentation; + + + public EdmDocumentation getDocumentation() { + return documentation; + } + + + + public void setDocumentation(EdmDocumentation documentation) { + this.documentation = documentation; + } + + + + public List<EdmMetadataAssociationEnd> getAssociationEnds() { + return associationEnds; + } + + + @Override + public String getNamespace() throws EdmException { + return namespace; + } + + + + /** + * @param namespace the namespace to set + */ + public void setNamespace(String namespace) { + this.namespace = namespace; + } + + @Override + public EdmTypeKind getKind() { + return EdmTypeKind.ASSOCIATION; + } + + @Override + public EdmAssociationEnd getEnd(final String role) throws EdmException { + if (!associationEnds.isEmpty()) { + EdmAssociationEnd end = associationEnds.get(0); + if (role.equals(end.getRole())) { + return end; + } + end = associationEnds.get(1); + if (role.equals(end.getRole())) { + return end; + } + } + return null; + } + + @Override + public EdmAnnotations getAnnotations() throws EdmException { + return annotations; + } + + public EdmMultiplicity getEndMultiplicity(final String role) throws EdmException { + EdmMetadataAssociationEnd end = getEnd1(); + if (end!=null && role.equals(end.getRole())) { + return end.getMultiplicity(); + } + end = getEnd2(); + if (end!=null && role.equals(end.getRole())) { + return end.getMultiplicity(); + } + + return null; + } + + @Override + public EdmMetadataAssociationEnd getEnd1() throws EdmException { + return associationEnds.isEmpty()?null:associationEnds.get(0); + } + + @Override + public EdmMetadataAssociationEnd getEnd2() throws EdmException { + return associationEnds.isEmpty()?null:associationEnds.get(1); + } + + @Override + public EdmReferentialConstraint getReferentialConstraint() throws EdmException { + return this.referentialConstraint; + } + + public void setReferentialConstraint(EdmReferentialConstraint referentialConstraint) { + this.referentialConstraint = (EdmReferentialConstraintImpl) referentialConstraint; + } + + public void setAnnotations(EdmAnnotations annotations) { + this.annotations = annotations; + } + + public void setAssociationEnds(List<EdmMetadataAssociationEnd> associationEnds) { + this.associationEnds = associationEnds; + } + + @Override + public String toString() { + return namespace + Edm.DELIMITER + name; + } + +} http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmAssociationSetEndImpl.java ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmAssociationSetEndImpl.java b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmAssociationSetEndImpl.java new file mode 100644 index 0000000..024c8ca --- /dev/null +++ b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmAssociationSetEndImpl.java @@ -0,0 +1,92 @@ +/******************************************************************************* + * 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.odata2.client.core.edm.Impl; + +import org.apache.olingo.odata2.api.edm.EdmAnnotatable; +import org.apache.olingo.odata2.api.edm.EdmAnnotations; +import org.apache.olingo.odata2.api.edm.EdmAssociationSetEnd; +import org.apache.olingo.odata2.api.edm.EdmEntitySet; +import org.apache.olingo.odata2.api.edm.EdmException; + +/** + * Objects of this class represent AssociationSetEnd + * + */ +public class EdmAssociationSetEndImpl implements EdmAssociationSetEnd, EdmAnnotatable { + + private EdmEntitySet entitySet; + private String role; + private EdmAssociationSetEnd end; + private EdmAnnotations annotations; + private String entitySetName; + + @Override + public EdmEntitySet getEntitySet() throws EdmException { + return entitySet; + } + + public EdmAssociationSetEnd getEnd() { + return end; + } + + public void setEnd(EdmAssociationSetEnd end) { + this.end = end; + } + + public void setRole(String role) { + this.role = role; + } + + public void setAnnotations(EdmAnnotations annotations) { + this.annotations = annotations; + } + + @Override + public String getRole() { + return role; + } + + @Override + public EdmAnnotations getAnnotations() throws EdmException { + return annotations; + } + + public void setEntitySetName(String entitySetName) { + this.entitySetName = entitySetName; + } + + /** + * @return the entitySetName + */ + public String getEntitySetName() { + return entitySetName; + } + + /** + * @param entitySet the entitySet to set + */ + public void setEntitySet(EdmEntitySet entitySet) { + this.entitySet = entitySet; + } + + @Override + public String toString() { + return String.format(end.toString()); + } +} http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmAssociationSetImpl.java ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmAssociationSetImpl.java b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmAssociationSetImpl.java new file mode 100644 index 0000000..4df79b7 --- /dev/null +++ b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmAssociationSetImpl.java @@ -0,0 +1,137 @@ +/******************************************************************************* + * 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.odata2.client.core.edm.Impl; + +import org.apache.olingo.odata2.api.edm.Edm; +import org.apache.olingo.odata2.api.edm.EdmAnnotatable; +import org.apache.olingo.odata2.api.edm.EdmAnnotations; +import org.apache.olingo.odata2.api.edm.EdmAssociation; +import org.apache.olingo.odata2.api.edm.EdmAssociationSet; +import org.apache.olingo.odata2.api.edm.EdmAssociationSetEnd; +import org.apache.olingo.odata2.api.edm.EdmEntityContainer; +import org.apache.olingo.odata2.api.edm.EdmEntitySet; +import org.apache.olingo.odata2.api.edm.EdmException; +import org.apache.olingo.odata2.api.edm.FullQualifiedName; +import org.apache.olingo.odata2.client.api.edm.EdmDocumentation; + +/** + * Objects of this class represent AssociationSet + * + */ +public class EdmAssociationSetImpl extends EdmNamedImpl implements EdmAssociationSet, EdmAnnotatable { + + private EdmEntityContainer edmEntityContainer; + private EdmAnnotations annotations; + private FullQualifiedName associationSetFQName; + private EdmAssociationSetEnd end2; + private EdmAssociationSetEnd end1; + private EdmDocumentation documentation; + + + public FullQualifiedName getAssociationSetFQName() { + return associationSetFQName ; + } + public void setDocumentation(EdmDocumentation documentation) { + this.documentation = documentation; + } + + @Override + public EdmAssociation getAssociation() throws EdmException { + EdmAssociation association = + edm.getAssociation(this.associationSetFQName.getNamespace(), + this.associationSetFQName.getName()); + if (association == null) { + throw new EdmException(EdmException.ASSOCIATIONNOTFOUND); + } + return association; + } + + /** + * @param annotations the annotations to set + */ + public void setAnnotations(EdmAnnotations annotations) { + this.annotations = annotations; + } + + /** + * @param edmEntityContainer the edmEntityContainer to set + */ + public void setEdmEntityContainer(EdmEntityContainer edmEntityContainer) { + this.edmEntityContainer = edmEntityContainer; + } + + @Override + public EdmAssociationSetEnd getEnd(final String role) throws EdmException { + EdmAssociationSetEnd end; + if (end1.getRole().equals(role)) { + end = this.end1; + } else if (end2.getRole().equals(role)) { + end = this.end2; + } else { + return null; + } + EdmEntitySet entitySet = edmEntityContainer.getEntitySet(((EdmAssociationSetEndImpl)end).getEntitySetName()); + if (entitySet == null) { + throw new EdmException(EdmException.COMMON);//TODO + } + return end; + } + + @Override + public EdmEntityContainer getEntityContainer() throws EdmException { + return edmEntityContainer; + } + + @Override + public EdmAnnotations getAnnotations() throws EdmException { + return annotations; + } + + public void setAssociation(FullQualifiedName associationSetFQName) { + this.associationSetFQName = associationSetFQName; + } + + public void setEnd1(EdmAssociationSetEnd end1) { + this.end1 = end1; + } + + public void setEnd2(EdmAssociationSetEnd end2) { + this.end2 = end2; + } + + /** + * @return the end2 + */ + public EdmAssociationSetEnd getEnd2() { + return end2; + } + + /** + * @return the end1 + */ + public EdmAssociationSetEnd getEnd1() { + return end1; + } + + @Override + public String toString() { + return associationSetFQName.getNamespace() + Edm.DELIMITER + associationSetFQName.getName(); + } + +} http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmComplexPropertyImpl.java ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmComplexPropertyImpl.java b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmComplexPropertyImpl.java new file mode 100644 index 0000000..8d9692d --- /dev/null +++ b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmComplexPropertyImpl.java @@ -0,0 +1,56 @@ +/******************************************************************************* + * 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.odata2.client.core.edm.Impl; + +import org.apache.olingo.odata2.api.edm.Edm; +import org.apache.olingo.odata2.api.edm.EdmException; +import org.apache.olingo.odata2.api.edm.EdmType; + +/** + * Objects of this class represent ComplexProperty + */ +public class EdmComplexPropertyImpl extends EdmPropertyImpl { + + + + @Override + public EdmType getType() throws EdmException { + if (edmType == null) { + edmType = edm.getComplexType(typeName.getNamespace(), typeName.getName()); + } + if (edmType == null) { + throw new EdmException(EdmException.TYPEPROBLEM); + } + return edmType; + } + + + public boolean isSimple() { + return false; + } + + @Override + public String toString() { + try { + return edmType.getNamespace()+ Edm.DELIMITER + edmType.getName(); + } catch (EdmException e) { //NOPMD - suppressed + return null; //NOSONAR + } + } +} http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmComplexTypeImpl.java ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmComplexTypeImpl.java b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmComplexTypeImpl.java new file mode 100644 index 0000000..3fc7c1a --- /dev/null +++ b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmComplexTypeImpl.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.odata2.client.core.edm.Impl; + +import org.apache.olingo.odata2.api.edm.EdmComplexType; +import org.apache.olingo.odata2.api.edm.EdmException; +import org.apache.olingo.odata2.api.edm.EdmMapping; +import org.apache.olingo.odata2.api.edm.EdmTypeKind; +import org.apache.olingo.odata2.api.edm.FullQualifiedName; + +/** + * Objects of this class represent ComplexType + * + */ +public class EdmComplexTypeImpl extends EdmStructuralTypeImpl implements EdmComplexType{ + + private boolean isAbstract; + + private FullQualifiedName baseType; + private EdmMapping mapping; + + public EdmMapping getMapping() { + return mapping; + } + public void setMapping(EdmMapping mapping) { + this.mapping = mapping; + } + public void setAbstract(boolean isAbstract) { + this.isAbstract = isAbstract; + } + @Override + public EdmComplexType getBaseType() throws EdmException { + if(edmBaseType!=null){ + return (EdmComplexTypeImpl) edmBaseType; + } else { + return null; + } + } + public FullQualifiedName getEdmBaseTypeName() { + return baseType; + } + public void setBaseTypeName(FullQualifiedName baseType) { + this.baseType = baseType; + } + + public boolean isAbstract() { + return isAbstract; + } + + @Override + public String toString() { + return name; + } + + @Override + public EdmTypeKind getKind() { + return EdmTypeKind.COMPLEX; + } +} http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmCustomizableFeedMappingsImpl.java ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmCustomizableFeedMappingsImpl.java b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmCustomizableFeedMappingsImpl.java new file mode 100644 index 0000000..180cb47 --- /dev/null +++ b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmCustomizableFeedMappingsImpl.java @@ -0,0 +1,140 @@ +/******************************************************************************* + * 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.odata2.client.core.edm.Impl; + +import org.apache.olingo.odata2.api.edm.EdmContentKind; +import org.apache.olingo.odata2.api.edm.EdmCustomizableFeedMappings; + +/** + * Objects of this class represent customizable feed mappings. + * + */ +public class EdmCustomizableFeedMappingsImpl implements EdmCustomizableFeedMappings { + + private Boolean fcKeepInContent; + private EdmContentKind fcContentKind; + private String fcNsPrefix; + private String fcNsUri; + private String fcSourcePath; + private String fcTargetPath; + + @Override + public Boolean isFcKeepInContent() { + return fcKeepInContent; + } + + @Override + public EdmContentKind getFcContentKind() { + return fcContentKind; + } + + @Override + public String getFcNsPrefix() { + return fcNsPrefix; + } + + @Override + public String getFcNsUri() { + return fcNsUri; + } + + @Override + public String getFcSourcePath() { + return fcSourcePath; + } + + @Override + public String getFcTargetPath() { + return fcTargetPath; + } + + /** + * @return <b>boolean</b> + */ + public Boolean getFcKeepInContent() { + return fcKeepInContent; + } + + /** + * Sets if this is kept in content. + * @param fcKeepInContent + * @return {@link EdmCustomizableFeedMappingsImpl} for method chaining + */ + public EdmCustomizableFeedMappingsImpl setFcKeepInContent(final Boolean fcKeepInContent) { + this.fcKeepInContent = fcKeepInContent; + return this; + } + + /** + * Sets the {@link EdmContentKind}. + * @param fcContentKind + * @return {@link EdmCustomizableFeedMappingsImpl} for method chaining + */ + public EdmCustomizableFeedMappingsImpl setFcContentKind(final EdmContentKind fcContentKind) { + this.fcContentKind = fcContentKind; + return this; + } + + /** + * Sets the prefix. + * @param fcNsPrefix + * @return {@link EdmCustomizableFeedMappingsImpl} for method chaining + */ + public EdmCustomizableFeedMappingsImpl setFcNsPrefix(final String fcNsPrefix) { + this.fcNsPrefix = fcNsPrefix; + return this; + } + + /** + * Sets the Uri. + * @param fcNsUri + * @return {@link EdmCustomizableFeedMappingsImpl} for method chaining + */ + public EdmCustomizableFeedMappingsImpl setFcNsUri(final String fcNsUri) { + this.fcNsUri = fcNsUri; + return this; + } + + /** + * Sets the source path. + * @param fcSourcePath + * @return {@link EdmCustomizableFeedMappingsImpl} for method chaining + */ + public EdmCustomizableFeedMappingsImpl setFcSourcePath(final String fcSourcePath) { + this.fcSourcePath = fcSourcePath; + return this; + } + + /** + * <p>Sets the target path.</p> + * <p>For standard Atom elements, constants are available in {@link org.apache.olingo.odata2.api.edm.EdmTargetPath + * EdmTargetPath}.</p> + * @param fcTargetPath + * @return {@link EdmCustomizableFeedMappingsImpl} for method chaining + */ + public EdmCustomizableFeedMappingsImpl setFcTargetPath(final String fcTargetPath) { + this.fcTargetPath = fcTargetPath; + return this; + } + + @Override + public String toString() { + return String.format(fcNsPrefix + " " + fcNsUri); + } +} http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmDocumentationImpl.java ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmDocumentationImpl.java b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmDocumentationImpl.java new file mode 100644 index 0000000..f65c4ba --- /dev/null +++ b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmDocumentationImpl.java @@ -0,0 +1,110 @@ +/******************************************************************************* + * 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.odata2.client.core.edm.Impl; + +import java.util.List; + +import org.apache.olingo.odata2.api.edm.EdmAnnotationAttribute; +import org.apache.olingo.odata2.api.edm.EdmAnnotationElement; +import org.apache.olingo.odata2.client.api.edm.EdmDocumentation; + +/** + * Objects of this class represent documentation + * + */ +public class EdmDocumentationImpl implements EdmDocumentation{ + + private String summary; + private String longDescription; + private List<EdmAnnotationAttribute> annotationAttributes; + private List<EdmAnnotationElement> annotationElements; + + /** + * @return <b>String</b> summary + */ + public String getSummary() { + return summary; + } + + /** + * @return <b>String</b> the long description + */ + public String getLongDescription() { + return longDescription; + } + + /** + * @return collection of {@link EdmAnnotationAttributeImpl} annotation attributes + */ + public List<EdmAnnotationAttribute> getAnnotationAttributes() { + return annotationAttributes; + } + + /** + * @return collection of {@link AnnotationElement} annotation elements + */ + public List<EdmAnnotationElement> getAnnotationElements() { + return annotationElements; + } + + /** + * Sets the summary for this {@link EdmDocumentationImpl} + * @param summary + * @return {@link EdmDocumentationImpl} for method chaining + */ + public EdmDocumentationImpl setSummary(final String summary) { + this.summary = summary; + return this; + } + + /** + * Sets the long description for this {@link EdmDocumentationImpl} + * @param longDescription + * @return {@link EdmDocumentationImpl} for method chaining + */ + public EdmDocumentationImpl setLongDescription(final String longDescription) { + this.longDescription = longDescription; + return this; + } + + /** + * Sets the collection of {@link EdmAnnotationAttributeImpl} for this {@link EdmDocumentationImpl} + * @param annotationAttributes + * @return {@link EdmDocumentationImpl} for method chaining + */ + public EdmDocumentationImpl setAnnotationAttributes(final List<EdmAnnotationAttribute> annotationAttributes) { + this.annotationAttributes = annotationAttributes; + return this; + } + + /** + * Sets the collection of {@link AnnotationElement} for this {@link EdmDocumentationImpl} + * @param annotationElements + * @return {@link EdmDocumentationImpl} for method chaining + */ + public EdmDocumentationImpl setAnnotationElements(final List<EdmAnnotationElement> annotationElements) { + this.annotationElements = annotationElements; + return this; + } + + @Override + public String toString() { + return String.format(summary); + } +} http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmElementImpl.java ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmElementImpl.java b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmElementImpl.java new file mode 100644 index 0000000..480af98 --- /dev/null +++ b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmElementImpl.java @@ -0,0 +1,55 @@ +/******************************************************************************* + * 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.odata2.client.core.edm.Impl; + +import org.apache.olingo.odata2.api.edm.EdmElement; +import org.apache.olingo.odata2.api.edm.EdmException; +import org.apache.olingo.odata2.api.edm.EdmFacets; +import org.apache.olingo.odata2.api.edm.EdmMapping; + +/** + * Objects of this class represent EdmElement + */ +public abstract class EdmElementImpl extends EdmTypedImpl implements EdmElement { + + private EdmFacets edmFacets; + private EdmMapping edmMapping; + + @Override + public EdmMapping getMapping() throws EdmException { + return edmMapping; + } + + public void setFacets(EdmFacets edmFacets) { + this.edmFacets = edmFacets; + } + + public void setMapping(EdmMapping edmMapping) { + this.edmMapping = edmMapping; + } + + @Override + public EdmFacets getFacets() throws EdmException { + return edmFacets; + } + @Override + public String toString() { + return String.format(name); + } +} http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmEntityContainerImpl.java ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmEntityContainerImpl.java b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmEntityContainerImpl.java new file mode 100644 index 0000000..bed4d44 --- /dev/null +++ b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmEntityContainerImpl.java @@ -0,0 +1,222 @@ +/******************************************************************************* + * 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.odata2.client.core.edm.Impl; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +import org.apache.olingo.odata2.api.edm.EdmAnnotatable; +import org.apache.olingo.odata2.api.edm.EdmAnnotations; +import org.apache.olingo.odata2.api.edm.EdmAssociation; +import org.apache.olingo.odata2.api.edm.EdmAssociationSet; +import org.apache.olingo.odata2.api.edm.EdmEntityContainer; +import org.apache.olingo.odata2.api.edm.EdmEntitySet; +import org.apache.olingo.odata2.api.edm.EdmException; +import org.apache.olingo.odata2.api.edm.EdmFunctionImport; +import org.apache.olingo.odata2.api.edm.EdmNavigationProperty; +import org.apache.olingo.odata2.api.exception.ODataException; +import org.apache.olingo.odata2.client.api.edm.ClientEdm; +import org.apache.olingo.odata2.client.api.edm.EdmDocumentation; + +/** + * Objects of this class represent EdmEntityContainer + */ +public class EdmEntityContainerImpl implements EdmEntityContainer, EdmAnnotatable { + + private EdmImpl edm; + private List<EdmEntityContainer> entityContainerHierachy; + private List<EdmEntitySet> edmEntitySets; + private Map<String, EdmAssociationSet> edmAssociationSetMap; + private List<EdmAssociationSet> edmAssociationSets; + private List<EdmFunctionImport> edmFunctionImports; + private EdmEntityContainer edmExtendedEntityContainer; + private boolean isDefaultContainer; + private EdmAnnotations annotations; + private EdmDocumentation documentation; + private String name; + private String extendz; + + public Map<String, EdmAssociationSet> getEdmAssociationSetMap() { + return edmAssociationSetMap; + } + + public void setEdmAssociationSetMap(Map<String, EdmAssociationSet> associationSetMap) { + this.edmAssociationSetMap = associationSetMap; + } + + public EdmDocumentation getDocumentation() { + return documentation; + } + + public void setDocumentation(EdmDocumentation documentation) { + this.documentation = documentation; + } + + public void setEdm(EdmImpl edm) { + this.edm = edm; + } + + public ClientEdm getEdm() { + return edm; + } + + public EdmEntityContainer getEdmExtendedEntityContainer() { + return edmExtendedEntityContainer; + } + + public void setEdmExtendedEntityContainer(EdmEntityContainer edmExtendedEntityContainer) { + this.edmExtendedEntityContainer = edmExtendedEntityContainer; + } + + public void setEntityContainerHierachy(List<EdmEntityContainer> entityContainerHierachy) { + this.entityContainerHierachy = entityContainerHierachy; + } + + public String getExtendz() { + return extendz; + } + + public void setExtendz(String extendz) { + this.extendz = extendz; + } + + public void setName(String name) { + this.name = name; + } + + public void setAnnotations(EdmAnnotations annotations) { + this.annotations = annotations; + } + public EdmEntityContainerImpl(final EdmImpl edm) + throws EdmException { + this.edm = edm; + edmEntitySets = new ArrayList<EdmEntitySet>(); + edmAssociationSets = new ArrayList<EdmAssociationSet>(); + edmFunctionImports = new ArrayList<EdmFunctionImport>(); + } + + public boolean isDefaultContainer() { + return isDefaultContainer; + } + + public void setDefaultContainer(boolean isDefaultContainer) { + this.isDefaultContainer = isDefaultContainer; + } + @Override + public String getName() throws EdmException { + return name; + } + + @Override + public EdmEntitySet getEntitySet(final String name) throws EdmException { + EdmEntitySet edmEntitySet = null; + for(EdmEntitySet entity:edmEntitySets){ + if(name.equals(entity.getName())){ + edmEntitySet = entity; + + } + } + return edmEntitySet; + + } + + @Override + public EdmFunctionImport getFunctionImport(final String name) throws EdmException { + for (EdmFunctionImport edmFunctionImport : edmFunctionImports) { + if (edmFunctionImport.getName().equalsIgnoreCase(name)) { + return edmFunctionImport; + } + } + return null; + } + + @Override + public EdmAssociationSet getAssociationSet(final EdmEntitySet sourceEntitySet, + final EdmNavigationProperty navigationProperty) throws EdmException { + EdmAssociation edmAssociation = navigationProperty.getRelationship(); + String association = edmAssociation.getNamespace() + "." + edmAssociation.getName(); + String entitySetName = sourceEntitySet.getName(); + String entitySetFromRole = navigationProperty.getFromRole(); + + String key = entitySetName + ">>" + association + ">>" + entitySetFromRole; + + for (Entry<String, EdmAssociationSet> edmAssociationSet : edmAssociationSetMap.entrySet()) { + if (edmAssociationSet.getKey().equalsIgnoreCase(key)) { + return edmAssociationSet.getValue(); + } + } + return null; + + } + + @Override + public boolean isDefaultEntityContainer() { + return isDefaultContainer; + } + + @Override + public EdmAnnotations getAnnotations() throws EdmException { + return annotations; + } + + @Override + public List<EdmEntitySet> getEntitySets() throws EdmException { + return edmEntitySets; + } + + + + @Override + public List<EdmAssociationSet> getAssociationSets() throws EdmException { + return edmAssociationSets; + } + + public List<EdmEntitySet> getEdmEntitySets() { + return edmEntitySets; + } + + public EdmEntityContainerImpl setEdmEntitySets( List<EdmEntitySet> edmEntitySets) { + this.edmEntitySets = edmEntitySets; + return this; + } + + public List<EdmAssociationSet> getEdmAssociationSets() { + return edmAssociationSets; + } + + public EdmEntityContainerImpl setEdmAssociationSets(List<EdmAssociationSet> edmAssociationSets) { + this.edmAssociationSets = edmAssociationSets; + return this; + } + + public List<EdmFunctionImport> getEdmFunctionImports() { + return edmFunctionImports; + } + + public EdmEntityContainerImpl setEdmFunctionImports(List<EdmFunctionImport> edmFunctionImports) { + this.edmFunctionImports = edmFunctionImports; + return this; + } + @Override + public String toString() { + return String.format(name); + } +} http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmEntitySetImpl.java ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmEntitySetImpl.java b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmEntitySetImpl.java new file mode 100644 index 0000000..103ab0a --- /dev/null +++ b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmEntitySetImpl.java @@ -0,0 +1,136 @@ +/******************************************************************************* + * 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.odata2.client.core.edm.Impl; + +import org.apache.olingo.odata2.api.edm.EdmAnnotatable; +import org.apache.olingo.odata2.api.edm.EdmAnnotations; +import org.apache.olingo.odata2.api.edm.EdmAssociationSet; +import org.apache.olingo.odata2.api.edm.EdmAssociationSetEnd; +import org.apache.olingo.odata2.api.edm.EdmEntityContainer; +import org.apache.olingo.odata2.api.edm.EdmEntitySet; +import org.apache.olingo.odata2.api.edm.EdmEntityType; +import org.apache.olingo.odata2.api.edm.EdmException; +import org.apache.olingo.odata2.api.edm.EdmMapping; +import org.apache.olingo.odata2.api.edm.EdmNavigationProperty; +import org.apache.olingo.odata2.api.edm.FullQualifiedName; +import org.apache.olingo.odata2.client.api.edm.EdmDocumentation; + +/** + * Objects of this class represent EdmEntitySet + * + */ +public class EdmEntitySetImpl extends EdmNamedImpl implements EdmEntitySet, EdmAnnotatable { + + private EdmEntityContainer edmEntityContainer; + private EdmEntityType edmEntityType; + private EdmAnnotationsImpl annotations; + private FullQualifiedName entityTypeName; + + private EdmMapping mapping; + private EdmDocumentation documentation; + + + public FullQualifiedName getEntityTypeName() { + return entityTypeName; + } + + public void setEntityTypeName(FullQualifiedName entityTypeName) { + this.entityTypeName = entityTypeName; + } + + @Override + public EdmEntityType getEntityType() throws EdmException { + return edmEntityType; + } + + public EdmEntityContainer getEdmEntityContainer() { + return edmEntityContainer; + } + + public void setEdmEntityContainer(EdmEntityContainer edmEntityContainer) { + this.edmEntityContainer = edmEntityContainer; + } + + public EdmEntityType getEdmEntityType() { + return edmEntityType; + } + + public void setEdmEntityType(EdmEntityType edmEntityType) { + this.edmEntityType = edmEntityType; + } + + public void setAnnotations(EdmAnnotationsImpl annotations) { + this.annotations = annotations; + } + + public EdmDocumentation getDocumentation() { + return documentation; + } + + public void setDocumentation(EdmDocumentation documentation) { + this.documentation = documentation; + } + + public void setMapping(EdmMapping mapping) { + this.mapping = mapping; + } + + @Override + public EdmEntitySet getRelatedEntitySet(final EdmNavigationProperty navigationProperty) throws EdmException { + EdmAssociationSet associationSet = + edmEntityContainer.getAssociationSet(edmEntityContainer.getEntitySet(name), navigationProperty); + if(associationSet == null){ + return null; + } + EdmAssociationSetEnd toEnd = associationSet.getEnd(navigationProperty.getToRole()); + if (toEnd == null) { + throw new EdmException(EdmException.NAVIGATIONPROPERTYNOTFOUND,navigationProperty.getName()); + } + EdmEntitySet targetEntitySet = toEnd.getEntitySet(); + if (targetEntitySet == null) { + throw new EdmException(EdmException.NAVIGATIONPROPERTYNOTFOUND,navigationProperty.getName()); + } + return targetEntitySet; + } + + @Override + public EdmEntityContainer getEntityContainer() throws EdmException { + return edmEntityContainer; + } + + @Override + public EdmAnnotations getAnnotations() throws EdmException { + return annotations; + } + + @Override + public EdmMapping getMapping() throws EdmException { + return mapping; + } + + public void setEdmEntityTypeName(FullQualifiedName fqName) { + this.entityTypeName = fqName; + } + + @Override + public String toString() { + return String.format(name); + } + +} http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmEntityTypeImpl.java ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmEntityTypeImpl.java b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmEntityTypeImpl.java new file mode 100644 index 0000000..d4f1032 --- /dev/null +++ b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmEntityTypeImpl.java @@ -0,0 +1,133 @@ +/******************************************************************************* + * 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.odata2.client.core.edm.Impl; + +import java.util.List; + +import org.apache.olingo.odata2.api.edm.Edm; +import org.apache.olingo.odata2.api.edm.EdmCustomizableFeedMappings; +import org.apache.olingo.odata2.api.edm.EdmEntityType; +import org.apache.olingo.odata2.api.edm.EdmException; +import org.apache.olingo.odata2.api.edm.EdmNavigationProperty; +import org.apache.olingo.odata2.api.edm.EdmProperty; +import org.apache.olingo.odata2.api.edm.EdmTyped; +import org.apache.olingo.odata2.api.edm.FullQualifiedName; + +/** + * Objects of this class represent EdmEntityType + * + */ +public class EdmEntityTypeImpl extends EdmStructuralTypeImpl implements EdmEntityType { + + private List<EdmProperty> edmKeyProperties; + private List<String> edmKeyPropertyNames; + private List<EdmNavigationProperty> navigationProperties; + private List<String> edmNavigationPropertyNames; + private boolean hasStream; + private boolean isAbstract; + private FullQualifiedName baseType; + private EdmCustomizableFeedMappings customizableFeedMappings; + + public void setBaseType(FullQualifiedName baseType) { + this.baseType = baseType; + } + + public void setAbstract(boolean isAbstract) { + this.isAbstract = isAbstract; + } + + public void setEdmKeyProperties(List<EdmProperty> edmKeyProperties) { + this.edmKeyProperties = edmKeyProperties; + } + + public void setNavigationProperties(List<EdmNavigationProperty> navigationProperties) { + this.navigationProperties = navigationProperties; + } + + public void setEdmNavigationPropertyNames(List<String> edmNavigationPropertyNames) { + this.edmNavigationPropertyNames = edmNavigationPropertyNames; + } + + public void setHasStream(boolean hasStream) { + this.hasStream = hasStream; + } + + @Override + public List<String> getKeyPropertyNames() throws EdmException { + return edmKeyPropertyNames; + } + + public void setEdmKeyPropertyNames(List<String> edmKeyPropertyNames) { + this.edmKeyPropertyNames = edmKeyPropertyNames; + } + + @Override + public List<EdmProperty> getKeyProperties() throws EdmException { + return edmKeyProperties; + } + + @Override + public boolean hasStream() throws EdmException { + return hasStream; + } + + @Override + public EdmCustomizableFeedMappings getCustomizableFeedMappings() throws EdmException { + return customizableFeedMappings; + } + + @Override + public List<String> getNavigationPropertyNames() throws EdmException { + return edmNavigationPropertyNames; + } + + @Override + public EdmEntityType getBaseType() throws EdmException { + return (EdmEntityType) edmBaseType; + } + + public FullQualifiedName getBaseTypeName() throws EdmException { + return baseType; + } + + @Override + protected EdmTyped getPropertyInternal(final String name) throws EdmException { + EdmTyped edmProperty = super.getPropertyInternal(name); + + if (edmProperty != null) { + return edmProperty; + } + for (EdmNavigationProperty navigations : navigationProperties) { + if (navigations.getName().equals(name)) { + return navigations; + } + } + return edmProperty; + } + + public void setCustomizableFeedMappings(EdmCustomizableFeedMappings edmCustomizableFeedMappings) { + this.customizableFeedMappings = edmCustomizableFeedMappings; + } + + @Override + public String toString() { + return String.format(namespace+ Edm.DELIMITER +name); + } + +} http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9e949e40/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmFunctionImportImpl.java ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmFunctionImportImpl.java b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmFunctionImportImpl.java new file mode 100644 index 0000000..8521ad7 --- /dev/null +++ b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/edm/Impl/EdmFunctionImportImpl.java @@ -0,0 +1,179 @@ +/******************************************************************************* + * 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.odata2.client.core.edm.Impl; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +import org.apache.olingo.odata2.api.edm.EdmAnnotatable; +import org.apache.olingo.odata2.api.edm.EdmAnnotations; +import org.apache.olingo.odata2.api.edm.EdmEntityContainer; +import org.apache.olingo.odata2.api.edm.EdmEntitySet; +import org.apache.olingo.odata2.api.edm.EdmException; +import org.apache.olingo.odata2.api.edm.EdmFunctionImport; +import org.apache.olingo.odata2.api.edm.EdmMapping; +import org.apache.olingo.odata2.api.edm.EdmParameter; +import org.apache.olingo.odata2.api.edm.EdmTyped; +import org.apache.olingo.odata2.client.api.edm.EdmDocumentation; + +/** + * Objects of this class represent EdmFunctionImport + */ +public class EdmFunctionImportImpl extends EdmNamedImpl implements EdmFunctionImport, EdmAnnotatable { + + private EdmEntityContainer edmEntityContainer; + private Map<String, EdmParameter> edmParameters; + private Map<String, ArrayList<EdmFunctionImportParameter>> parameters; + private List<String> parametersList; + private EdmAnnotations annotations; + private EdmTyped edmReturnType; + private String entitySet; + private String httpMethod; + private EdmMapping mapping; + private EdmDocumentation documentation; + + public EdmTyped getEdmReturnType() { + return edmReturnType; + } + + public void setEdmReturnType(EdmTyped edmReturnType) { + this.edmReturnType = edmReturnType; + } + + public EdmDocumentation getDocumentation() { + return documentation; + } + + public void setDocumentation(EdmDocumentation documentation) { + this.documentation = documentation; + } + + public void setMapping(EdmMapping mapping) { + this.mapping = mapping; + } + + /** + * @param returnType the returnType to set + */ + public void setReturnType(EdmTyped returnType) { + this.edmReturnType = returnType; + } + + /** + * @param edmEntitySet the entitySet to set + */ + public void setEntitySet(String edmEntitySet) { + this.entitySet = edmEntitySet; + } + + /** + * @param httpMethod the httpMethod to set + */ + public void setHttpMethod(String httpMethod) { + this.httpMethod = httpMethod; + } + + public EdmEntityContainer getEdmEntityContainer() { + return edmEntityContainer; + } + + public void setEdmEntityContainer(EdmEntityContainer edmEntityContainer) { + this.edmEntityContainer = edmEntityContainer; + } + + public Map<String, EdmParameter> getEdmParameters() { + return edmParameters; + } + + public void setEdmParameters(Map<String, EdmParameter> edmParameters) { + this.edmParameters = edmParameters; + } + + public Map<String, ArrayList<EdmFunctionImportParameter>> getParameters() { + return parameters; + } + + public void setParameters(Map<String, ArrayList<EdmFunctionImportParameter>> parameters) { + this.parameters = parameters; + } + + public List<String> getParametersList() { + return parametersList; + } + + public void setParametersList(List<String> parametersList) { + this.parametersList = parametersList; + } + + public void setAnnotations(EdmAnnotations annotations) { + this.annotations = annotations; + } + + @Override + public EdmParameter getParameter(final String name) throws EdmException { + for (Entry<String, EdmParameter> param : edmParameters.entrySet()) { + if (param.getKey().equalsIgnoreCase(name)) { + return param.getValue(); + } + } + return null; + } + + @Override + public List<String> getParameterNames() throws EdmException { + return parametersList; + } + + @Override + public EdmEntitySet getEntitySet() throws EdmException { + return edmEntityContainer.getEntitySet(entitySet); + } + + @Override + public String getHttpMethod() throws EdmException { + return this.httpMethod; + } + + @Override + public EdmTyped getReturnType() throws EdmException { + return edmReturnType; + } + + @Override + public EdmEntityContainer getEntityContainer() throws EdmException { + return edmEntityContainer; + } + + @Override + public EdmAnnotations getAnnotations() throws EdmException { + return annotations; + } + + @Override + public EdmMapping getMapping() throws EdmException { + return mapping; + } + @Override + public String toString() { + return String.format(name); + } + +}