You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ch...@apache.org on 2015/04/04 19:05:16 UTC
[10/50] [abbrv] olingo-odata4 git commit: [OLINGO-575] Edm cleanup:
Remove EdmAnnotationHelperImpl
[OLINGO-575] Edm cleanup: Remove EdmAnnotationHelperImpl
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/16b94eb4
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/16b94eb4
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/16b94eb4
Branch: refs/heads/OLINGO-549-ODataV4-JPA
Commit: 16b94eb47e3b9f0274fd9ec66e68b729b00d5a17
Parents: 4f33c70
Author: Michael Bolz <mi...@sap.com>
Authored: Fri Mar 27 13:41:03 2015 +0100
Committer: Michael Bolz <mi...@sap.com>
Committed: Fri Mar 27 13:45:00 2015 +0100
----------------------------------------------------------------------
.../edm/provider/AbstractEdmAnnotatable.java | 65 +++++++
.../core/edm/provider/AbstractEdmBase.java | 31 ++++
.../edm/provider/AbstractEdmBindingTarget.java | 127 +++++++++++++
.../core/edm/provider/AbstractEdmNamed.java | 38 ++++
.../core/edm/provider/AbstractEdmOperation.java | 162 ++++++++++++++++
.../provider/AbstractEdmOperationImport.java | 77 ++++++++
.../edm/provider/AbstractEdmStructuredType.java | 184 +++++++++++++++++++
.../core/edm/provider/EdmActionImpl.java | 4 +-
.../core/edm/provider/EdmActionImportImpl.java | 2 +-
.../edm/provider/EdmAnnotationHelperImpl.java | 67 -------
.../core/edm/provider/EdmAnnotationImpl.java | 18 +-
.../core/edm/provider/EdmBindingTargetImpl.java | 141 --------------
.../core/edm/provider/EdmComplexTypeImpl.java | 19 +-
.../core/edm/provider/EdmElementImpl.java | 29 ---
.../edm/provider/EdmEntityContainerImpl.java | 21 +--
.../core/edm/provider/EdmEntitySetImpl.java | 2 +-
.../core/edm/provider/EdmEntityTypeImpl.java | 16 +-
.../core/edm/provider/EdmEnumTypeImpl.java | 6 +-
.../core/edm/provider/EdmFunctionImpl.java | 4 +-
.../edm/provider/EdmFunctionImportImpl.java | 2 +-
.../core/edm/provider/EdmMemberImpl.java | 21 +--
.../commons/core/edm/provider/EdmNamedImpl.java | 39 ----
.../edm/provider/EdmNavigationPropertyImpl.java | 19 +-
.../core/edm/provider/EdmOperationImpl.java | 176 ------------------
.../edm/provider/EdmOperationImportImpl.java | 93 ----------
.../core/edm/provider/EdmParameterImpl.java | 21 +--
.../core/edm/provider/EdmPropertyImpl.java | 21 +--
.../provider/EdmReferentialConstraintImpl.java | 19 +-
.../core/edm/provider/EdmSingletonImpl.java | 2 +-
.../edm/provider/EdmStructuredTypeImpl.java | 184 -------------------
.../commons/core/edm/provider/EdmTermImpl.java | 18 +-
.../edm/provider/EdmTypeDefinitionImpl.java | 22 +--
.../commons/core/edm/provider/EdmTypeImpl.java | 8 +-
.../commons/core/edm/provider/EdmTypeInfo.java | 26 +--
.../core/edm/provider/AbstractEdmNamedTest.java | 59 ++++++
.../core/edm/provider/EdmNamedImplTest.java | 42 -----
.../core/edm/provider/EdmTypeImplTest.java | 19 +-
37 files changed, 806 insertions(+), 998 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/16b94eb4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/AbstractEdmAnnotatable.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/AbstractEdmAnnotatable.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/AbstractEdmAnnotatable.java
new file mode 100644
index 0000000..d36c3a2
--- /dev/null
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/AbstractEdmAnnotatable.java
@@ -0,0 +1,65 @@
+/*
+ * 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.commons.core.edm.provider;
+
+import org.apache.olingo.commons.api.edm.Edm;
+import org.apache.olingo.commons.api.edm.EdmAnnotatable;
+import org.apache.olingo.commons.api.edm.EdmAnnotation;
+import org.apache.olingo.commons.api.edm.EdmTerm;
+import org.apache.olingo.commons.api.edm.provider.Annotatable;
+import org.apache.olingo.commons.api.edm.provider.Annotation;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public abstract class AbstractEdmAnnotatable extends AbstractEdmBase implements EdmAnnotatable {
+
+ private final Annotatable annotatable;
+ private List<EdmAnnotation> annotations;
+
+ public AbstractEdmAnnotatable(final Edm edm, final Annotatable annotatable) {
+ super(edm);
+ this.annotatable = annotatable;
+ }
+
+ @Override
+ public EdmAnnotation getAnnotation(final EdmTerm term) {
+ EdmAnnotation result = null;
+ for (EdmAnnotation annotation : getAnnotations()) {
+ if (term.getFullQualifiedName().equals(annotation.getTerm().getFullQualifiedName())) {
+ result = annotation;
+ }
+ }
+
+ return result;
+ }
+
+ @Override
+ public List<EdmAnnotation> getAnnotations() {
+ if (annotations == null) {
+ annotations = new ArrayList<EdmAnnotation>();
+ if(annotatable != null) {
+ for (Annotation annotation : annotatable.getAnnotations()) {
+ annotations.add(new EdmAnnotationImpl(edm, annotation));
+ }
+ }
+ }
+ return annotations;
+ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/16b94eb4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/AbstractEdmBase.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/AbstractEdmBase.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/AbstractEdmBase.java
new file mode 100644
index 0000000..e6d3c6a
--- /dev/null
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/AbstractEdmBase.java
@@ -0,0 +1,31 @@
+/*
+ * 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.commons.core.edm.provider;
+
+import org.apache.olingo.commons.api.edm.Edm;
+import org.apache.olingo.commons.api.edm.EdmAnnotatable;
+
+public abstract class AbstractEdmBase implements EdmAnnotatable {
+
+ protected final Edm edm;
+
+ public AbstractEdmBase(final Edm edm) {
+ this.edm = edm;
+ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/16b94eb4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/AbstractEdmBindingTarget.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/AbstractEdmBindingTarget.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/AbstractEdmBindingTarget.java
new file mode 100644
index 0000000..61bba66
--- /dev/null
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/AbstractEdmBindingTarget.java
@@ -0,0 +1,127 @@
+/*
+ * 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.commons.core.edm.provider;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.olingo.commons.api.edm.Edm;
+import org.apache.olingo.commons.api.edm.EdmBindingTarget;
+import org.apache.olingo.commons.api.edm.EdmEntityContainer;
+import org.apache.olingo.commons.api.edm.EdmEntityType;
+import org.apache.olingo.commons.api.edm.EdmException;
+import org.apache.olingo.commons.api.edm.EdmNavigationPropertyBinding;
+import org.apache.olingo.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.commons.api.edm.Target;
+import org.apache.olingo.commons.api.edm.provider.BindingTarget;
+import org.apache.olingo.commons.api.edm.provider.NavigationPropertyBinding;
+
+public abstract class AbstractEdmBindingTarget extends AbstractEdmNamed implements EdmBindingTarget {
+
+ private final BindingTarget target;
+ private final EdmEntityContainer container;
+
+ private List<EdmNavigationPropertyBinding> navigationPropertyBindings;
+
+ public AbstractEdmBindingTarget(final Edm edm, final EdmEntityContainer container, final BindingTarget target) {
+ super(edm, target.getName(), target);
+ this.container = container;
+ this.target = target;
+ }
+
+ @Override
+ public List<EdmNavigationPropertyBinding> getNavigationPropertyBindings() {
+ if (navigationPropertyBindings == null) {
+ List<NavigationPropertyBinding> providerBindings = target.getNavigationPropertyBindings();
+ navigationPropertyBindings = new ArrayList<EdmNavigationPropertyBinding>();
+ if (providerBindings != null) {
+ for (NavigationPropertyBinding binding : providerBindings) {
+ navigationPropertyBindings.add(new EdmNavigationPropertyBindingImpl(binding.getPath(), binding.getTarget()));
+ }
+ }
+ }
+ return navigationPropertyBindings;
+ }
+
+ @Override
+ public EdmEntityContainer getEntityContainer() {
+ return container;
+ }
+
+ @Override
+ public EdmEntityType getEntityType() {
+ final EdmEntityType entityType = edm.getEntityType(target.getTypeFQN());
+ if (entityType == null) {
+ throw new EdmException("Can´t find entity type: " + target.getTypeFQN() + " for entity set or singleton: "
+ + getName());
+ }
+ return entityType;
+ }
+
+ @Override
+ public FullQualifiedName getAnnotationsTargetFQN() {
+ return container.getFullQualifiedName();
+ }
+
+ @Override
+ public String getAnnotationsTargetPath() {
+ return getName();
+ }
+
+ @Override
+ public EdmBindingTarget getRelatedBindingTarget(final String path) {
+ if (path == null) {
+ return null;
+ }
+ EdmBindingTarget bindingTarget = null;
+ boolean found = false;
+ for (final Iterator<EdmNavigationPropertyBinding> itor = getNavigationPropertyBindings().iterator(); itor.hasNext()
+ && !found;) {
+
+ final EdmNavigationPropertyBinding binding = itor.next();
+ if (path.startsWith(binding.getPath())) {
+ final Target edmTarget = new Target.Builder(binding.getTarget(), container).build();
+
+ final EdmEntityContainer entityContainer = edm.getEntityContainer(edmTarget.getEntityContainer());
+ if (entityContainer == null) {
+ throw new EdmException("Cannot find entity container with name: " + edmTarget.getEntityContainer());
+ }
+ try {
+ bindingTarget = entityContainer.getEntitySet(edmTarget.getTargetName());
+
+ if (bindingTarget == null) {
+ throw new EdmException("Cannot find EntitySet " + edmTarget.getTargetName());
+ }
+ } catch (EdmException e) {
+ // try with singletons ...
+ bindingTarget = entityContainer.getSingleton(edmTarget.getTargetName());
+
+ if (bindingTarget == null) {
+ throw new EdmException("Cannot find Singleton " + edmTarget.getTargetName());
+ }
+ } finally {
+ found = bindingTarget != null;
+ }
+ }
+ }
+
+ return bindingTarget;
+ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/16b94eb4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/AbstractEdmNamed.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/AbstractEdmNamed.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/AbstractEdmNamed.java
new file mode 100644
index 0000000..8835bc5
--- /dev/null
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/AbstractEdmNamed.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.commons.core.edm.provider;
+
+import org.apache.olingo.commons.api.edm.Edm;
+import org.apache.olingo.commons.api.edm.EdmNamed;
+import org.apache.olingo.commons.api.edm.provider.Annotatable;
+
+public abstract class AbstractEdmNamed extends AbstractEdmAnnotatable implements EdmNamed {
+
+ private final String name;
+
+ public AbstractEdmNamed(final Edm edm, final String name, final Annotatable annotatable) {
+ super(edm, annotatable);
+ this.name = name;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/16b94eb4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/AbstractEdmOperation.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/AbstractEdmOperation.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/AbstractEdmOperation.java
new file mode 100644
index 0000000..788a974
--- /dev/null
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/AbstractEdmOperation.java
@@ -0,0 +1,162 @@
+/*
+ * 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.commons.core.edm.provider;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.olingo.commons.api.edm.Edm;
+import org.apache.olingo.commons.api.edm.EdmBindingTarget;
+import org.apache.olingo.commons.api.edm.EdmEntitySet;
+import org.apache.olingo.commons.api.edm.EdmException;
+import org.apache.olingo.commons.api.edm.EdmOperation;
+import org.apache.olingo.commons.api.edm.EdmParameter;
+import org.apache.olingo.commons.api.edm.EdmReturnType;
+import org.apache.olingo.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.commons.api.edm.constants.EdmTypeKind;
+import org.apache.olingo.commons.api.edm.provider.Operation;
+import org.apache.olingo.commons.api.edm.provider.Parameter;
+
+public abstract class AbstractEdmOperation extends EdmTypeImpl implements EdmOperation {
+
+ protected final Operation operation;
+ private final Map<String, EdmParameter> parameters = new LinkedHashMap<String, EdmParameter>();
+ private String entitySetPath;
+ private boolean isBound;
+ private EdmReturnType returnType;
+ private List<String> parameterNames;
+
+ protected static <T extends AbstractEdmOperation> T getInstance(final T instance) {
+ final List<Parameter> providerParameters = instance.operation.getParameters();
+ if (providerParameters != null) {
+ final List<EdmParameter> _parameters = new ArrayList<EdmParameter>(providerParameters.size());
+ for (Parameter parameter : providerParameters) {
+ _parameters.add(new EdmParameterImpl(instance.edm, parameter));
+ }
+ instance.setParameters(_parameters);
+ }
+
+ final String entitySetPath = instance.operation.getEntitySetPath();
+ if (entitySetPath != null) {
+ instance.setEntitySetPath(entitySetPath);
+ }
+
+ instance.setIsBound(instance.operation.isBound());
+
+ if (instance.operation.getReturnType() != null) {
+ instance.setReturnType(new EdmReturnTypeImpl(instance.edm, instance.operation.getReturnType()));
+ }
+
+ return instance;
+ }
+
+ protected AbstractEdmOperation(final Edm edm, final FullQualifiedName name, final Operation operation,
+ final EdmTypeKind kind) {
+
+ super(edm, name, kind, operation);
+ this.operation = operation;
+ }
+
+ protected void setParameters(final List<EdmParameter> _parameters) {
+ for (EdmParameter parameter : _parameters) {
+ parameters.put(parameter.getName(), parameter);
+ }
+ }
+
+ protected void setEntitySetPath(final String entitySetPath) {
+ this.entitySetPath = entitySetPath;
+ }
+
+ protected void setIsBound(final boolean isBound) {
+ this.isBound = isBound;
+ }
+
+ protected void setReturnType(final EdmReturnType returnType) {
+ this.returnType = returnType;
+ }
+
+ @Override
+ public EdmParameter getParameter(final String name) {
+ return parameters.get(name);
+ }
+
+ @Override
+ public List<String> getParameterNames() {
+ if (parameterNames == null) {
+ parameterNames = new ArrayList<String>(parameters.size());
+ for (String parameterName : parameters.keySet()) {
+ parameterNames.add(parameterName);
+ }
+ }
+ return parameterNames;
+ }
+
+ @Override
+ public EdmEntitySet getReturnedEntitySet(final EdmEntitySet bindingParameterEntitySet) {
+ EdmEntitySet returnedEntitySet = null;
+ if (bindingParameterEntitySet != null && entitySetPath != null) {
+ final EdmBindingTarget relatedBindingTarget = bindingParameterEntitySet.getRelatedBindingTarget(entitySetPath);
+ if (relatedBindingTarget == null) {
+ throw new EdmException("Cannot find entity set with path: " + entitySetPath);
+ }
+ if (relatedBindingTarget instanceof EdmEntitySet) {
+ returnedEntitySet = (EdmEntitySet) relatedBindingTarget;
+ } else {
+ throw new EdmException("BindingTarget with name: " + relatedBindingTarget.getName()
+ + " must be an entity set");
+ }
+ }
+ return returnedEntitySet;
+ }
+
+ @Override
+ public EdmReturnType getReturnType() {
+ return returnType;
+ }
+
+ @Override
+ public boolean isBound() {
+ return isBound;
+ }
+
+ @Override
+ public FullQualifiedName getBindingParameterTypeFqn() {
+ if (isBound()) {
+ Parameter bindingParameter = operation.getParameters().get(0);
+ return bindingParameter.getTypeFQN();
+ }
+ return null;
+ }
+
+ @Override
+ public Boolean isBindingParameterTypeCollection() {
+ if (isBound()) {
+ Parameter bindingParameter = operation.getParameters().get(0);
+ return bindingParameter.isCollection();
+ }
+ return null;
+ }
+
+ @Override
+ public String getEntitySetPath(){
+ return operation.getEntitySetPath();
+ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/16b94eb4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/AbstractEdmOperationImport.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/AbstractEdmOperationImport.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/AbstractEdmOperationImport.java
new file mode 100644
index 0000000..82c3465
--- /dev/null
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/AbstractEdmOperationImport.java
@@ -0,0 +1,77 @@
+/*
+ * 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.commons.core.edm.provider;
+
+import org.apache.olingo.commons.api.edm.Edm;
+import org.apache.olingo.commons.api.edm.EdmEntityContainer;
+import org.apache.olingo.commons.api.edm.EdmEntitySet;
+import org.apache.olingo.commons.api.edm.EdmException;
+import org.apache.olingo.commons.api.edm.EdmOperationImport;
+import org.apache.olingo.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.commons.api.edm.Target;
+import org.apache.olingo.commons.api.edm.provider.OperationImport;
+
+public abstract class AbstractEdmOperationImport extends AbstractEdmNamed implements EdmOperationImport {
+
+ protected final EdmEntityContainer container;
+ private final Target entitySet;
+ private EdmEntitySet returnedEntitySet;
+
+ public AbstractEdmOperationImport(final Edm edm, final EdmEntityContainer container,
+ final OperationImport operationImport) {
+ super(edm, operationImport.getName(), operationImport);
+ this.container = container;
+ this.entitySet = new Target.Builder(operationImport.getEntitySet(), container).build();
+ }
+
+ @Override
+ public FullQualifiedName getFullQualifiedName() {
+ return new FullQualifiedName(container.getNamespace(), getName());
+ }
+
+ @Override
+ public EdmEntitySet getReturnedEntitySet() {
+ if (entitySet != null && returnedEntitySet == null) {
+ EdmEntityContainer entityContainer = edm.getEntityContainer(entitySet.getEntityContainer());
+ if (entityContainer == null) {
+ throw new EdmException("Can´t find entity container with name: " + entitySet.getEntityContainer());
+ }
+ returnedEntitySet = entityContainer.getEntitySet(entitySet.getTargetName());
+ if (returnedEntitySet == null) {
+ throw new EdmException("Can´t find entity set with name: " + entitySet.getTargetName());
+ }
+ }
+ return returnedEntitySet;
+ }
+
+ @Override
+ public EdmEntityContainer getEntityContainer() {
+ return container;
+ }
+
+ @Override
+ public FullQualifiedName getAnnotationsTargetFQN() {
+ return container.getFullQualifiedName();
+ }
+
+ @Override
+ public String getAnnotationsTargetPath() {
+ return getName();
+ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/16b94eb4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/AbstractEdmStructuredType.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/AbstractEdmStructuredType.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/AbstractEdmStructuredType.java
new file mode 100644
index 0000000..1d773ea
--- /dev/null
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/AbstractEdmStructuredType.java
@@ -0,0 +1,184 @@
+/*
+ * 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.commons.core.edm.provider;
+
+import org.apache.olingo.commons.api.edm.Edm;
+import org.apache.olingo.commons.api.edm.EdmElement;
+import org.apache.olingo.commons.api.edm.EdmException;
+import org.apache.olingo.commons.api.edm.EdmNavigationProperty;
+import org.apache.olingo.commons.api.edm.EdmProperty;
+import org.apache.olingo.commons.api.edm.EdmStructuredType;
+import org.apache.olingo.commons.api.edm.EdmType;
+import org.apache.olingo.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.commons.api.edm.constants.EdmTypeKind;
+import org.apache.olingo.commons.api.edm.provider.NavigationProperty;
+import org.apache.olingo.commons.api.edm.provider.Property;
+import org.apache.olingo.commons.api.edm.provider.StructuralType;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+public abstract class AbstractEdmStructuredType extends EdmTypeImpl implements EdmStructuredType {
+
+ protected EdmStructuredType baseType;
+ protected FullQualifiedName baseTypeName;
+
+ private List<String> propertyNames;
+ private List<String> navigationPropertyNames;
+ private Map<String, EdmProperty> properties;
+ private Map<String, EdmNavigationProperty> navigationProperties;
+ private final StructuralType structuredType;
+
+ public AbstractEdmStructuredType(
+ final Edm edm,
+ final FullQualifiedName typeName,
+ final EdmTypeKind kind,
+ final StructuralType structuredType) {
+
+ super(edm, typeName, kind, structuredType);
+ this.baseTypeName = structuredType.getBaseTypeFQN();
+ this.structuredType = structuredType;
+ }
+
+ protected abstract EdmStructuredType buildBaseType(FullQualifiedName baseTypeName);
+
+ protected abstract void checkBaseType();
+
+ @Override
+ public List<String> getPropertyNames() {
+ if (propertyNames == null) {
+ propertyNames = new ArrayList<String>();
+ checkBaseType();
+ if (baseType != null) {
+ propertyNames.addAll(baseType.getPropertyNames());
+ }
+ propertyNames.addAll(getProperties().keySet());
+ }
+ return propertyNames;
+ }
+
+ @Override
+ public List<String> getNavigationPropertyNames() {
+ if (navigationPropertyNames == null) {
+ navigationPropertyNames = new ArrayList<String>();
+ checkBaseType();
+ if (baseType != null) {
+ navigationPropertyNames.addAll(baseType.getNavigationPropertyNames());
+ }
+ navigationPropertyNames.addAll(getNavigationProperties().keySet());
+ }
+ return navigationPropertyNames;
+ }
+
+ @Override
+ public EdmElement getProperty(final String name) {
+ EdmElement property = getStructuralProperty(name);
+ if (property == null) {
+ property = getNavigationProperty(name);
+ }
+ return property;
+ }
+
+ @Override
+ public EdmProperty getStructuralProperty(final String name) {
+ EdmProperty property = null;
+ checkBaseType();
+ if (baseType != null) {
+ property = baseType.getStructuralProperty(name);
+ }
+ if (property == null) {
+ property = getProperties().get(name);
+ }
+ return property;
+ }
+
+ @Override
+ public EdmNavigationProperty getNavigationProperty(final String name) {
+ EdmNavigationProperty property = null;
+ checkBaseType();
+ if (baseType != null) {
+ property = baseType.getNavigationProperty(name);
+ }
+ if (property == null) {
+ property = getNavigationProperties().get(name);
+ }
+ return property;
+ }
+
+ @Override
+ public boolean compatibleTo(final EdmType targetType) {
+ EdmStructuredType sourceType = this;
+ if (targetType == null) {
+ throw new EdmException("Target type must not be null");
+ }
+ while (!sourceType.getName().equals(targetType.getName())
+ || !sourceType.getNamespace().equals(targetType.getNamespace())) {
+
+ sourceType = sourceType.getBaseType();
+ if (sourceType == null) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ @Override
+ public String getAnnotationsTargetPath() {
+ return null;
+ }
+
+ @Override
+ public FullQualifiedName getAnnotationsTargetFQN() {
+ return getFullQualifiedName();
+ }
+
+ public Map<String, EdmProperty> getProperties() {
+ if (properties == null) {
+ properties = new LinkedHashMap<String, EdmProperty>();
+ for (Property property : structuredType.getProperties()) {
+ properties.put(property.getName(), new EdmPropertyImpl(edm, typeName, property));
+ }
+ }
+ return properties;
+ }
+
+ public Map<String, EdmNavigationProperty> getNavigationProperties() {
+ if (navigationProperties == null) {
+ navigationProperties = new LinkedHashMap<String, EdmNavigationProperty>();
+ if (structuredType.getNavigationProperties() != null) {
+ for (NavigationProperty navigationProperty : structuredType.getNavigationProperties()) {
+ navigationProperties.put(navigationProperty.getName(),
+ new EdmNavigationPropertyImpl(edm, typeName, navigationProperty));
+ }
+ }
+ }
+ return navigationProperties;
+ }
+
+ public boolean isOpenType() {
+ return structuredType.isOpenType();
+ }
+
+ public boolean isAbstract() {
+ return structuredType.isAbstract();
+ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/16b94eb4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmActionImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmActionImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmActionImpl.java
index 292f234..822ebc8 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmActionImpl.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmActionImpl.java
@@ -24,10 +24,10 @@ import org.apache.olingo.commons.api.edm.FullQualifiedName;
import org.apache.olingo.commons.api.edm.constants.EdmTypeKind;
import org.apache.olingo.commons.api.edm.provider.Action;
-public class EdmActionImpl extends EdmOperationImpl implements EdmAction {
+public class EdmActionImpl extends AbstractEdmOperation implements EdmAction {
public static EdmActionImpl getInstance(final Edm edm, final FullQualifiedName name, final Action action) {
- return EdmOperationImpl.getInstance(new EdmActionImpl(edm, name, action));
+ return AbstractEdmOperation.getInstance(new EdmActionImpl(edm, name, action));
}
private EdmActionImpl(final Edm edm, final FullQualifiedName name, final Action action) {
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/16b94eb4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmActionImportImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmActionImportImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmActionImportImpl.java
index 5d9c68a..7d93e9a 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmActionImportImpl.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmActionImportImpl.java
@@ -24,7 +24,7 @@ import org.apache.olingo.commons.api.edm.EdmActionImport;
import org.apache.olingo.commons.api.edm.EdmEntityContainer;
import org.apache.olingo.commons.api.edm.provider.ActionImport;
-public class EdmActionImportImpl extends EdmOperationImportImpl implements EdmActionImport {
+public class EdmActionImportImpl extends AbstractEdmOperationImport implements EdmActionImport {
private final ActionImport actionImport;
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/16b94eb4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmAnnotationHelperImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmAnnotationHelperImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmAnnotationHelperImpl.java
deleted file mode 100644
index e4b9d9b..0000000
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmAnnotationHelperImpl.java
+++ /dev/null
@@ -1,67 +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.commons.core.edm.provider;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.EdmAnnotatable;
-import org.apache.olingo.commons.api.edm.EdmAnnotation;
-import org.apache.olingo.commons.api.edm.EdmTerm;
-import org.apache.olingo.commons.api.edm.provider.Annotatable;
-import org.apache.olingo.commons.api.edm.provider.Annotation;
-
-public class EdmAnnotationHelperImpl implements EdmAnnotatable {
-
- private final Edm edm;
-
- private final Annotatable annotatable;
-
- private List<EdmAnnotation> annotations;
-
- public EdmAnnotationHelperImpl(final Edm edm, final Annotatable annotatable) {
- this.edm = edm;
- this.annotatable = annotatable;
- }
-
- @Override
- public EdmAnnotation getAnnotation(final EdmTerm term) {
- EdmAnnotation result = null;
- for (EdmAnnotation annotation : getAnnotations()) {
- if (term.getFullQualifiedName().equals(annotation.getTerm().getFullQualifiedName())) {
- result = annotation;
- }
- }
-
- return result;
- }
-
- @Override
- public List<EdmAnnotation> getAnnotations() {
- if (annotations == null) {
- annotations = new ArrayList<EdmAnnotation>();
- for (Annotation annotation : annotatable.getAnnotations()) {
- annotations.add(new EdmAnnotationImpl(edm, annotation));
- }
- }
- return annotations;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/16b94eb4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmAnnotationImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmAnnotationImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmAnnotationImpl.java
index 60eb0b4..07523e6 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmAnnotationImpl.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmAnnotationImpl.java
@@ -60,18 +60,15 @@ import org.apache.olingo.commons.core.edm.annotation.EdmPropertyValueImpl;
import org.apache.olingo.commons.core.edm.annotation.EdmRecordImpl;
import org.apache.olingo.commons.core.edm.annotation.EdmUrlRefImpl;
-public class EdmAnnotationImpl implements EdmAnnotation {
+public class EdmAnnotationImpl extends AbstractEdmAnnotatable implements EdmAnnotation {
- private final Edm edm;
private final Annotation annotation;
- private final EdmAnnotationHelperImpl helper;
private EdmTerm term;
private EdmAnnotationExpression expression;
public EdmAnnotationImpl(final Edm edm, final Annotation annotation) {
- this.edm = edm;
+ super(edm, annotation);
this.annotation = annotation;
- this.helper = new EdmAnnotationHelperImpl(edm, annotation);
}
@Override
@@ -225,15 +222,4 @@ public class EdmAnnotationImpl implements EdmAnnotation {
}
return expression;
}
-
- @Override
- public EdmAnnotation getAnnotation(final EdmTerm term) {
- return helper.getAnnotation(term);
- }
-
- @Override
- public List<EdmAnnotation> getAnnotations() {
- return helper.getAnnotations();
- }
-
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/16b94eb4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmBindingTargetImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmBindingTargetImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmBindingTargetImpl.java
deleted file mode 100644
index b4b035f..0000000
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmBindingTargetImpl.java
+++ /dev/null
@@ -1,141 +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.commons.core.edm.provider;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.EdmAnnotation;
-import org.apache.olingo.commons.api.edm.EdmBindingTarget;
-import org.apache.olingo.commons.api.edm.EdmEntityContainer;
-import org.apache.olingo.commons.api.edm.EdmEntityType;
-import org.apache.olingo.commons.api.edm.EdmException;
-import org.apache.olingo.commons.api.edm.EdmNavigationPropertyBinding;
-import org.apache.olingo.commons.api.edm.EdmTerm;
-import org.apache.olingo.commons.api.edm.FullQualifiedName;
-import org.apache.olingo.commons.api.edm.Target;
-import org.apache.olingo.commons.api.edm.provider.BindingTarget;
-import org.apache.olingo.commons.api.edm.provider.NavigationPropertyBinding;
-
-public abstract class EdmBindingTargetImpl extends EdmNamedImpl implements EdmBindingTarget {
-
- private final BindingTarget target;
- private final EdmAnnotationHelperImpl helper;
- private final EdmEntityContainer container;
-
- private List<EdmNavigationPropertyBinding> navigationPropertyBindings;
-
- public EdmBindingTargetImpl(final Edm edm, final EdmEntityContainer container, final BindingTarget target) {
- super(edm, target.getName());
- this.container = container;
- this.target = target;
- this.helper = new EdmAnnotationHelperImpl(edm, target);
- }
-
- @Override
- public List<EdmNavigationPropertyBinding> getNavigationPropertyBindings() {
- if (navigationPropertyBindings == null) {
- List<NavigationPropertyBinding> providerBindings = target.getNavigationPropertyBindings();
- navigationPropertyBindings = new ArrayList<EdmNavigationPropertyBinding>();
- if (providerBindings != null) {
- for (NavigationPropertyBinding binding : providerBindings) {
- navigationPropertyBindings.add(new EdmNavigationPropertyBindingImpl(binding.getPath(), binding.getTarget()));
- }
- }
- }
- return navigationPropertyBindings;
- }
-
- @Override
- public EdmEntityContainer getEntityContainer() {
- return container;
- }
-
- @Override
- public EdmEntityType getEntityType() {
- final EdmEntityType entityType = edm.getEntityType(target.getTypeFQN());
- if (entityType == null) {
- throw new EdmException("Can´t find entity type: " + target.getTypeFQN() + " for entity set or singleton: "
- + getName());
- }
- return entityType;
- }
-
- @Override
- public FullQualifiedName getAnnotationsTargetFQN() {
- return container.getFullQualifiedName();
- }
-
- @Override
- public String getAnnotationsTargetPath() {
- return getName();
- }
-
- @Override
- public EdmBindingTarget getRelatedBindingTarget(final String path) {
- if (path == null) {
- return null;
- }
- EdmBindingTarget bindingTarget = null;
- boolean found = false;
- for (final Iterator<EdmNavigationPropertyBinding> itor = getNavigationPropertyBindings().iterator(); itor.hasNext()
- && !found;) {
-
- final EdmNavigationPropertyBinding binding = itor.next();
- if (path.startsWith(binding.getPath())) {
- final Target edmTarget = new Target.Builder(binding.getTarget(), container).build();
-
- final EdmEntityContainer entityContainer = edm.getEntityContainer(edmTarget.getEntityContainer());
- if (entityContainer == null) {
- throw new EdmException("Cannot find entity container with name: " + edmTarget.getEntityContainer());
- }
- try {
- bindingTarget = entityContainer.getEntitySet(edmTarget.getTargetName());
-
- if (bindingTarget == null) {
- throw new EdmException("Cannot find EntitySet " + edmTarget.getTargetName());
- }
- } catch (EdmException e) {
- // try with singletons ...
- bindingTarget = entityContainer.getSingleton(edmTarget.getTargetName());
-
- if (bindingTarget == null) {
- throw new EdmException("Cannot find Singleton " + edmTarget.getTargetName());
- }
- } finally {
- found = bindingTarget != null;
- }
- }
- }
-
- return bindingTarget;
- }
-
- @Override
- public EdmAnnotation getAnnotation(final EdmTerm term) {
- return helper.getAnnotation(term);
- }
-
- @Override
- public List<EdmAnnotation> getAnnotations() {
- return helper.getAnnotations();
- }
-}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/16b94eb4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmComplexTypeImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmComplexTypeImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmComplexTypeImpl.java
index 16ba237..4949d24 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmComplexTypeImpl.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmComplexTypeImpl.java
@@ -18,21 +18,15 @@
*/
package org.apache.olingo.commons.core.edm.provider;
-import java.util.List;
-
import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.EdmAnnotation;
import org.apache.olingo.commons.api.edm.EdmComplexType;
import org.apache.olingo.commons.api.edm.EdmException;
import org.apache.olingo.commons.api.edm.EdmStructuredType;
-import org.apache.olingo.commons.api.edm.EdmTerm;
import org.apache.olingo.commons.api.edm.FullQualifiedName;
import org.apache.olingo.commons.api.edm.constants.EdmTypeKind;
import org.apache.olingo.commons.api.edm.provider.ComplexType;
-public class EdmComplexTypeImpl extends EdmStructuredTypeImpl implements EdmComplexType {
-
- private EdmAnnotationHelperImpl annotationHelper;
+public class EdmComplexTypeImpl extends AbstractEdmStructuredType implements EdmComplexType {
public static EdmComplexTypeImpl getInstance(
final Edm edm, final FullQualifiedName name, final ComplexType complexType) {
@@ -41,20 +35,9 @@ public class EdmComplexTypeImpl extends EdmStructuredTypeImpl implements EdmComp
private EdmComplexTypeImpl(final Edm edm, final FullQualifiedName name, final ComplexType complexType) {
super(edm, name, EdmTypeKind.COMPLEX, complexType);
- this.annotationHelper = new EdmAnnotationHelperImpl(edm, complexType);
}
@Override
- public EdmAnnotation getAnnotation(final EdmTerm term) {
- return annotationHelper == null ? null : annotationHelper.getAnnotation(term);
- }
-
- @Override
- public List<EdmAnnotation> getAnnotations() {
- return annotationHelper == null ? null : annotationHelper.getAnnotations();
- }
-
- @Override
protected EdmStructuredType buildBaseType(final FullQualifiedName baseTypeName) {
EdmComplexType baseType = null;
if (baseTypeName != null) {
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/16b94eb4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmElementImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmElementImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmElementImpl.java
deleted file mode 100644
index 686e45d..0000000
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmElementImpl.java
+++ /dev/null
@@ -1,29 +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.commons.core.edm.provider;
-
-import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.EdmElement;
-
-public abstract class EdmElementImpl extends EdmNamedImpl implements EdmElement {
-
- public EdmElementImpl(final Edm edm, final String name) {
- super(edm, name);
- }
-}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/16b94eb4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmEntityContainerImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmEntityContainerImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmEntityContainerImpl.java
index 5d3eef3..bcca96a 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmEntityContainerImpl.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmEntityContainerImpl.java
@@ -19,7 +19,6 @@
package org.apache.olingo.commons.core.edm.provider;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -27,13 +26,11 @@ import java.util.Map;
import org.apache.olingo.commons.api.ODataException;
import org.apache.olingo.commons.api.edm.Edm;
import org.apache.olingo.commons.api.edm.EdmActionImport;
-import org.apache.olingo.commons.api.edm.EdmAnnotation;
import org.apache.olingo.commons.api.edm.EdmEntityContainer;
import org.apache.olingo.commons.api.edm.EdmEntitySet;
import org.apache.olingo.commons.api.edm.EdmException;
import org.apache.olingo.commons.api.edm.EdmFunctionImport;
import org.apache.olingo.commons.api.edm.EdmSingleton;
-import org.apache.olingo.commons.api.edm.EdmTerm;
import org.apache.olingo.commons.api.edm.FullQualifiedName;
import org.apache.olingo.commons.api.edm.provider.ActionImport;
import org.apache.olingo.commons.api.edm.provider.EdmProvider;
@@ -43,11 +40,10 @@ import org.apache.olingo.commons.api.edm.provider.EntitySet;
import org.apache.olingo.commons.api.edm.provider.FunctionImport;
import org.apache.olingo.commons.api.edm.provider.Singleton;
-public class EdmEntityContainerImpl extends EdmNamedImpl implements EdmEntityContainer {
+public class EdmEntityContainerImpl extends AbstractEdmNamed implements EdmEntityContainer {
private final EdmProvider provider;
private EntityContainer container;
- private EdmAnnotationHelperImpl helper;
protected final FullQualifiedName entityContainerName;
private final FullQualifiedName parentContainerName;
@@ -66,7 +62,7 @@ public class EdmEntityContainerImpl extends EdmNamedImpl implements EdmEntityCon
public EdmEntityContainerImpl(final Edm edm, final EdmProvider provider,
final EntityContainerInfo entityContainerInfo) {
- super(edm, entityContainerInfo.getContainerName().getName());
+ super(edm, entityContainerInfo.getContainerName().getName(), null);
this.provider = provider;
this.entityContainerName = entityContainerInfo.getContainerName();
this.parentContainerName = entityContainerInfo.getExtendsContainer();
@@ -74,12 +70,11 @@ public class EdmEntityContainerImpl extends EdmNamedImpl implements EdmEntityCon
public EdmEntityContainerImpl(final Edm edm, final EdmProvider provider, final FullQualifiedName containerFQN,
final EntityContainer entityContainer) {
- super(edm, containerFQN.getName());
+ super(edm, containerFQN.getName(), entityContainer);
this.provider = provider;
container = entityContainer;
this.entityContainerName = containerFQN;
this.parentContainerName = entityContainer.getExtendsContainerFQN();
- this.helper = new EdmAnnotationHelperImpl(edm, entityContainer);
}
@Override
@@ -326,14 +321,4 @@ public class EdmEntityContainerImpl extends EdmNamedImpl implements EdmEntityCon
public TargetType getAnnotationsTargetType() {
return TargetType.EntityContainer;
}
-
- @Override
- public EdmAnnotation getAnnotation(final EdmTerm term) {
- return helper == null ? null : helper.getAnnotation(term);
- }
-
- @Override
- public List<EdmAnnotation> getAnnotations() {
- return helper == null ? Collections.<EdmAnnotation> emptyList() : helper.getAnnotations();
- }
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/16b94eb4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmEntitySetImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmEntitySetImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmEntitySetImpl.java
index d69f6fe..867b82c 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmEntitySetImpl.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmEntitySetImpl.java
@@ -23,7 +23,7 @@ import org.apache.olingo.commons.api.edm.EdmEntityContainer;
import org.apache.olingo.commons.api.edm.EdmEntitySet;
import org.apache.olingo.commons.api.edm.provider.EntitySet;
-public class EdmEntitySetImpl extends EdmBindingTargetImpl implements EdmEntitySet {
+public class EdmEntitySetImpl extends AbstractEdmBindingTarget implements EdmEntitySet {
private EntitySet entitySet;
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/16b94eb4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmEntityTypeImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmEntityTypeImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmEntityTypeImpl.java
index 84445aa..cdb51f5 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmEntityTypeImpl.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmEntityTypeImpl.java
@@ -24,22 +24,19 @@ import java.util.List;
import java.util.Map;
import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.EdmAnnotation;
import org.apache.olingo.commons.api.edm.EdmEntityType;
import org.apache.olingo.commons.api.edm.EdmException;
import org.apache.olingo.commons.api.edm.EdmKeyPropertyRef;
import org.apache.olingo.commons.api.edm.EdmStructuredType;
-import org.apache.olingo.commons.api.edm.EdmTerm;
import org.apache.olingo.commons.api.edm.FullQualifiedName;
import org.apache.olingo.commons.api.edm.constants.EdmTypeKind;
import org.apache.olingo.commons.api.edm.provider.EntityType;
import org.apache.olingo.commons.api.edm.provider.PropertyRef;
-public class EdmEntityTypeImpl extends EdmStructuredTypeImpl implements EdmEntityType {
+public class EdmEntityTypeImpl extends AbstractEdmStructuredType implements EdmEntityType {
private EntityType entityType;
private boolean baseTypeChecked = false;
- private EdmAnnotationHelperImpl annotationHelper;
private final boolean hasStream;
protected EdmEntityType entityBaseType;
private final List<String> keyPredicateNames = new ArrayList<String>();
@@ -56,7 +53,6 @@ public class EdmEntityTypeImpl extends EdmStructuredTypeImpl implements EdmEntit
super(edm, name, EdmTypeKind.ENTITY, entityType);
this.entityType = entityType;
hasStream = entityType.hasStream();
- this.annotationHelper = new EdmAnnotationHelperImpl(edm, entityType);
}
@Override
@@ -151,14 +147,4 @@ public class EdmEntityTypeImpl extends EdmStructuredTypeImpl implements EdmEntit
public TargetType getAnnotationsTargetType() {
return TargetType.EntityType;
}
-
- @Override
- public EdmAnnotation getAnnotation(final EdmTerm term) {
- return annotationHelper.getAnnotation(term);
- }
-
- @Override
- public List<EdmAnnotation> getAnnotations() {
- return annotationHelper.getAnnotations();
- }
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/16b94eb4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmEnumTypeImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmEnumTypeImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmEnumTypeImpl.java
index df09c3c..af56e38 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmEnumTypeImpl.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmEnumTypeImpl.java
@@ -42,13 +42,13 @@ import org.apache.olingo.commons.core.edm.primitivetype.EdmPrimitiveTypeFactory;
public class EdmEnumTypeImpl extends EdmTypeImpl implements EdmEnumType {
private static final Set<EdmPrimitiveTypeKind> VALID_UNDERLYING_TYPES = new HashSet<EdmPrimitiveTypeKind>();
- {
+ static {
VALID_UNDERLYING_TYPES.add(EdmPrimitiveTypeKind.Byte);
VALID_UNDERLYING_TYPES.add(EdmPrimitiveTypeKind.SByte);
VALID_UNDERLYING_TYPES.add(EdmPrimitiveTypeKind.Int16);
VALID_UNDERLYING_TYPES.add(EdmPrimitiveTypeKind.Int32);
VALID_UNDERLYING_TYPES.add(EdmPrimitiveTypeKind.Int64);
- };
+ }
private final EdmPrimitiveType underlyingType;
private final EnumType enumType;
@@ -58,7 +58,7 @@ public class EdmEnumTypeImpl extends EdmTypeImpl implements EdmEnumType {
private LinkedHashMap<String, EdmMember> membersMap;
public EdmEnumTypeImpl(final Edm edm, final FullQualifiedName enumName, final EnumType enumType) {
- super(edm, enumName, EdmTypeKind.ENUM);
+ super(edm, enumName, EdmTypeKind.ENUM, enumType);
if (enumType.getUnderlyingType() == null) {
underlyingType = EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Int32);
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/16b94eb4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmFunctionImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmFunctionImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmFunctionImpl.java
index 4a29d83..0279a78 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmFunctionImpl.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmFunctionImpl.java
@@ -26,12 +26,12 @@ import org.apache.olingo.commons.api.edm.FullQualifiedName;
import org.apache.olingo.commons.api.edm.constants.EdmTypeKind;
import org.apache.olingo.commons.api.edm.provider.Function;
-public class EdmFunctionImpl extends EdmOperationImpl implements EdmFunction {
+public class EdmFunctionImpl extends AbstractEdmOperation implements EdmFunction {
private final Function function;
public static EdmFunctionImpl getInstance(final Edm edm, final FullQualifiedName name, final Function function) {
- return EdmOperationImpl.getInstance(new EdmFunctionImpl(edm, name, function));
+ return AbstractEdmOperation.getInstance(new EdmFunctionImpl(edm, name, function));
}
private EdmFunctionImpl(final Edm edm, final FullQualifiedName name, final Function function) {
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/16b94eb4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmFunctionImportImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmFunctionImportImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmFunctionImportImpl.java
index ead3116..b2e2397 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmFunctionImportImpl.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmFunctionImportImpl.java
@@ -27,7 +27,7 @@ import org.apache.olingo.commons.api.edm.EdmFunctionImport;
import org.apache.olingo.commons.api.edm.FullQualifiedName;
import org.apache.olingo.commons.api.edm.provider.FunctionImport;
-public class EdmFunctionImportImpl extends EdmOperationImportImpl implements EdmFunctionImport {
+public class EdmFunctionImportImpl extends AbstractEdmOperationImport implements EdmFunctionImport {
private final FunctionImport functionImport;
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/16b94eb4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmMemberImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmMemberImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmMemberImpl.java
index a7d1366..b3a6f1e 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmMemberImpl.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmMemberImpl.java
@@ -18,26 +18,20 @@
*/
package org.apache.olingo.commons.core.edm.provider;
-import java.util.List;
-
import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.EdmAnnotation;
import org.apache.olingo.commons.api.edm.EdmMember;
-import org.apache.olingo.commons.api.edm.EdmTerm;
import org.apache.olingo.commons.api.edm.FullQualifiedName;
import org.apache.olingo.commons.api.edm.provider.EnumMember;
-public class EdmMemberImpl extends EdmNamedImpl implements EdmMember {
+public class EdmMemberImpl extends AbstractEdmNamed implements EdmMember {
- private final EdmAnnotationHelperImpl helper;
private final FullQualifiedName enumFQN;
private final EnumMember member;
public EdmMemberImpl(final Edm edm, final FullQualifiedName enumFQN, final EnumMember member) {
- super(edm, member.getName());
+ super(edm, member.getName(), member);
this.enumFQN = enumFQN;
this.member = member;
- this.helper = new EdmAnnotationHelperImpl(edm, member);
}
@Override
@@ -59,15 +53,4 @@ public class EdmMemberImpl extends EdmNamedImpl implements EdmMember {
public String getValue() {
return member.getValue();
}
-
- @Override
- public EdmAnnotation getAnnotation(final EdmTerm term) {
- return helper.getAnnotation(term);
- }
-
- @Override
- public List<EdmAnnotation> getAnnotations() {
- return helper.getAnnotations();
- }
-
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/16b94eb4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmNamedImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmNamedImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmNamedImpl.java
deleted file mode 100644
index 93e7583..0000000
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmNamedImpl.java
+++ /dev/null
@@ -1,39 +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.commons.core.edm.provider;
-
-import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.EdmNamed;
-
-public abstract class EdmNamedImpl implements EdmNamed {
-
- protected final Edm edm;
-
- private final String name;
-
- public EdmNamedImpl(final Edm edm, final String name) {
- this.edm = edm;
- this.name = name;
- }
-
- @Override
- public String getName() {
- return name;
- }
-}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/16b94eb4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmNavigationPropertyImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmNavigationPropertyImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmNavigationPropertyImpl.java
index e72a98e..db75e0c 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmNavigationPropertyImpl.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmNavigationPropertyImpl.java
@@ -22,32 +22,29 @@ import java.util.ArrayList;
import java.util.List;
import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.EdmAnnotation;
+import org.apache.olingo.commons.api.edm.EdmElement;
import org.apache.olingo.commons.api.edm.EdmEntityType;
import org.apache.olingo.commons.api.edm.EdmException;
import org.apache.olingo.commons.api.edm.EdmNavigationProperty;
import org.apache.olingo.commons.api.edm.EdmReferentialConstraint;
import org.apache.olingo.commons.api.edm.EdmStructuredType;
-import org.apache.olingo.commons.api.edm.EdmTerm;
import org.apache.olingo.commons.api.edm.FullQualifiedName;
import org.apache.olingo.commons.api.edm.provider.NavigationProperty;
import org.apache.olingo.commons.api.edm.provider.ReferentialConstraint;
-public class EdmNavigationPropertyImpl extends EdmElementImpl implements EdmNavigationProperty {
+public class EdmNavigationPropertyImpl extends AbstractEdmNamed implements EdmElement, EdmNavigationProperty {
private final FullQualifiedName structuredTypeName;
private final NavigationProperty navigationProperty;
- private final EdmAnnotationHelperImpl helper;
private List<EdmReferentialConstraint> referentialConstraints;
private EdmEntityType typeImpl;
private EdmNavigationProperty partnerNavigationProperty;
public EdmNavigationPropertyImpl(
final Edm edm, final FullQualifiedName structuredTypeName, final NavigationProperty navigationProperty) {
- super(edm, navigationProperty.getName());
+ super(edm, navigationProperty.getName(), navigationProperty);
this.structuredTypeName = structuredTypeName;
this.navigationProperty = navigationProperty;
- this.helper = new EdmAnnotationHelperImpl(edm, navigationProperty);
}
@Override
@@ -139,14 +136,4 @@ public class EdmNavigationPropertyImpl extends EdmElementImpl implements EdmNavi
public FullQualifiedName getAnnotationsTargetFQN() {
return structuredTypeName;
}
-
- @Override
- public EdmAnnotation getAnnotation(final EdmTerm term) {
- return helper.getAnnotation(term);
- }
-
- @Override
- public List<EdmAnnotation> getAnnotations() {
- return helper.getAnnotations();
- }
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/16b94eb4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmOperationImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmOperationImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmOperationImpl.java
deleted file mode 100644
index 217c732..0000000
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmOperationImpl.java
+++ /dev/null
@@ -1,176 +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.commons.core.edm.provider;
-
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.EdmAnnotation;
-import org.apache.olingo.commons.api.edm.EdmBindingTarget;
-import org.apache.olingo.commons.api.edm.EdmEntitySet;
-import org.apache.olingo.commons.api.edm.EdmException;
-import org.apache.olingo.commons.api.edm.EdmOperation;
-import org.apache.olingo.commons.api.edm.EdmParameter;
-import org.apache.olingo.commons.api.edm.EdmReturnType;
-import org.apache.olingo.commons.api.edm.EdmTerm;
-import org.apache.olingo.commons.api.edm.FullQualifiedName;
-import org.apache.olingo.commons.api.edm.constants.EdmTypeKind;
-import org.apache.olingo.commons.api.edm.provider.Operation;
-import org.apache.olingo.commons.api.edm.provider.Parameter;
-
-public abstract class EdmOperationImpl extends EdmTypeImpl implements EdmOperation {
-
- protected final Operation operation;
- protected final EdmAnnotationHelperImpl helper;
- private final Map<String, EdmParameter> parameters = new LinkedHashMap<String, EdmParameter>();
- private String entitySetPath;
- private boolean isBound;
- private EdmReturnType returnType;
- private List<String> parameterNames;
-
- protected static <T extends EdmOperationImpl> T getInstance(final T instance) {
- final List<Parameter> providerParameters = instance.operation.getParameters();
- if (providerParameters != null) {
- final List<EdmParameter> _parameters = new ArrayList<EdmParameter>(providerParameters.size());
- for (Parameter parameter : providerParameters) {
- _parameters.add(new EdmParameterImpl(instance.edm, parameter));
- }
- instance.setParameters(_parameters);
- }
-
- final String entitySetPath = instance.operation.getEntitySetPath();
- if (entitySetPath != null) {
- instance.setEntitySetPath(entitySetPath);
- }
-
- instance.setIsBound(instance.operation.isBound());
-
- if (instance.operation.getReturnType() != null) {
- instance.setReturnType(new EdmReturnTypeImpl(instance.edm, instance.operation.getReturnType()));
- }
-
- return instance;
- }
-
- protected EdmOperationImpl(final Edm edm, final FullQualifiedName name, final Operation operation,
- final EdmTypeKind kind) {
-
- super(edm, name, kind);
- this.operation = operation;
- this.helper = new EdmAnnotationHelperImpl(edm, operation);
- }
-
- protected void setParameters(final List<EdmParameter> _parameters) {
- for (EdmParameter parameter : _parameters) {
- parameters.put(parameter.getName(), parameter);
- }
- }
-
- protected void setEntitySetPath(final String entitySetPath) {
- this.entitySetPath = entitySetPath;
- }
-
- protected void setIsBound(final boolean isBound) {
- this.isBound = isBound;
- }
-
- protected void setReturnType(final EdmReturnType returnType) {
- this.returnType = returnType;
- }
-
- @Override
- public EdmParameter getParameter(final String name) {
- return parameters.get(name);
- }
-
- @Override
- public List<String> getParameterNames() {
- if (parameterNames == null) {
- parameterNames = new ArrayList<String>(parameters.size());
- for (String parameterName : parameters.keySet()) {
- parameterNames.add(parameterName);
- }
- }
- return parameterNames;
- }
-
- @Override
- public EdmEntitySet getReturnedEntitySet(final EdmEntitySet bindingParameterEntitySet) {
- EdmEntitySet returnedEntitySet = null;
- if (bindingParameterEntitySet != null && entitySetPath != null) {
- final EdmBindingTarget relatedBindingTarget = bindingParameterEntitySet.getRelatedBindingTarget(entitySetPath);
- if (relatedBindingTarget == null) {
- throw new EdmException("Cannot find entity set with path: " + entitySetPath);
- }
- if (relatedBindingTarget instanceof EdmEntitySet) {
- returnedEntitySet = (EdmEntitySet) relatedBindingTarget;
- } else {
- throw new EdmException("BindingTarget with name: " + relatedBindingTarget.getName()
- + " must be an entity set");
- }
- }
- return returnedEntitySet;
- }
-
- @Override
- public EdmReturnType getReturnType() {
- return returnType;
- }
-
- @Override
- public boolean isBound() {
- return isBound;
- }
-
- @Override
- public FullQualifiedName getBindingParameterTypeFqn() {
- if (isBound()) {
- Parameter bindingParameter = operation.getParameters().get(0);
- return bindingParameter.getTypeFQN();
- }
- return null;
- }
-
- @Override
- public Boolean isBindingParameterTypeCollection() {
- if (isBound()) {
- Parameter bindingParameter = operation.getParameters().get(0);
- return bindingParameter.isCollection();
- }
- return null;
- }
-
- @Override
- public EdmAnnotation getAnnotation(final EdmTerm term) {
- return helper.getAnnotation(term);
- }
-
- @Override
- public List<EdmAnnotation> getAnnotations() {
- return helper.getAnnotations();
- }
-
- @Override
- public String getEntitySetPath(){
- return operation.getEntitySetPath();
- }
-}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/16b94eb4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmOperationImportImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmOperationImportImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmOperationImportImpl.java
deleted file mode 100644
index 3ace167..0000000
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmOperationImportImpl.java
+++ /dev/null
@@ -1,93 +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.commons.core.edm.provider;
-
-import java.util.List;
-
-import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.EdmAnnotation;
-import org.apache.olingo.commons.api.edm.EdmEntityContainer;
-import org.apache.olingo.commons.api.edm.EdmEntitySet;
-import org.apache.olingo.commons.api.edm.EdmException;
-import org.apache.olingo.commons.api.edm.EdmOperationImport;
-import org.apache.olingo.commons.api.edm.EdmTerm;
-import org.apache.olingo.commons.api.edm.FullQualifiedName;
-import org.apache.olingo.commons.api.edm.Target;
-import org.apache.olingo.commons.api.edm.provider.OperationImport;
-
-public abstract class EdmOperationImportImpl extends EdmNamedImpl implements EdmOperationImport {
-
- protected final EdmEntityContainer container;
- private final Target entitySet;
- private EdmEntitySet returnedEntitySet;
- private final EdmAnnotationHelperImpl helper;
-
- public EdmOperationImportImpl(final Edm edm, final EdmEntityContainer container,
- final OperationImport operationImport) {
- super(edm, operationImport.getName());
- this.container = container;
- this.helper = new EdmAnnotationHelperImpl(edm, operationImport);
- this.entitySet = new Target.Builder(operationImport.getEntitySet(), container).build();
- }
-
- @Override
- public FullQualifiedName getFullQualifiedName() {
- return new FullQualifiedName(container.getNamespace(), getName());
- }
-
- @Override
- public EdmEntitySet getReturnedEntitySet() {
- if (entitySet != null && returnedEntitySet == null) {
- EdmEntityContainer entityContainer = edm.getEntityContainer(entitySet.getEntityContainer());
- if (entityContainer == null) {
- throw new EdmException("Can´t find entity container with name: " + entitySet.getEntityContainer());
- }
- returnedEntitySet = entityContainer.getEntitySet(entitySet.getTargetName());
- if (returnedEntitySet == null) {
- throw new EdmException("Can´t find entity set with name: " + entitySet.getTargetName());
- }
- }
- return returnedEntitySet;
- }
-
- @Override
- public EdmEntityContainer getEntityContainer() {
- return container;
- }
-
- @Override
- public FullQualifiedName getAnnotationsTargetFQN() {
- return container.getFullQualifiedName();
- }
-
- @Override
- public String getAnnotationsTargetPath() {
- return getName();
- }
-
- @Override
- public EdmAnnotation getAnnotation(final EdmTerm term) {
- return helper.getAnnotation(term);
- }
-
- @Override
- public List<EdmAnnotation> getAnnotations() {
- return helper.getAnnotations();
- }
-}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/16b94eb4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmParameterImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmParameterImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmParameterImpl.java
index 157a779..0973185 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmParameterImpl.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmParameterImpl.java
@@ -18,29 +18,24 @@
*/
package org.apache.olingo.commons.core.edm.provider;
-import java.util.List;
-
import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.EdmAnnotation;
+import org.apache.olingo.commons.api.edm.EdmElement;
import org.apache.olingo.commons.api.edm.EdmException;
import org.apache.olingo.commons.api.edm.EdmMapping;
import org.apache.olingo.commons.api.edm.EdmParameter;
-import org.apache.olingo.commons.api.edm.EdmTerm;
import org.apache.olingo.commons.api.edm.EdmType;
import org.apache.olingo.commons.api.edm.geo.SRID;
import org.apache.olingo.commons.api.edm.provider.Parameter;
-public class EdmParameterImpl extends EdmElementImpl implements EdmParameter {
+public class EdmParameterImpl extends AbstractEdmNamed implements EdmParameter, EdmElement {
private final Parameter parameter;
- private final EdmAnnotationHelperImpl helper;
private final EdmTypeInfo typeInfo;
private EdmType typeImpl;
public EdmParameterImpl(final Edm edm, final Parameter parameter) {
- super(edm, parameter.getName());
+ super(edm, parameter.getName(), parameter);
this.parameter = parameter;
- this.helper = new EdmAnnotationHelperImpl(edm, parameter);
this.typeInfo = new EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(parameter.getType()).build();
}
@@ -80,16 +75,6 @@ public class EdmParameterImpl extends EdmElementImpl implements EdmParameter {
}
@Override
- public EdmAnnotation getAnnotation(final EdmTerm term) {
- return helper.getAnnotation(term);
- }
-
- @Override
- public List<EdmAnnotation> getAnnotations() {
- return helper.getAnnotations();
- }
-
- @Override
public EdmType getType() {
if (typeImpl == null) {
typeImpl = typeInfo.getType();
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/16b94eb4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmPropertyImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmPropertyImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmPropertyImpl.java
index 973640e..14c3faf 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmPropertyImpl.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmPropertyImpl.java
@@ -18,34 +18,29 @@
*/
package org.apache.olingo.commons.core.edm.provider;
-import java.util.List;
-
import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.EdmAnnotation;
+import org.apache.olingo.commons.api.edm.EdmElement;
import org.apache.olingo.commons.api.edm.EdmException;
import org.apache.olingo.commons.api.edm.EdmMapping;
import org.apache.olingo.commons.api.edm.EdmProperty;
-import org.apache.olingo.commons.api.edm.EdmTerm;
import org.apache.olingo.commons.api.edm.EdmType;
import org.apache.olingo.commons.api.edm.FullQualifiedName;
import org.apache.olingo.commons.api.edm.geo.SRID;
import org.apache.olingo.commons.api.edm.provider.Property;
-public class EdmPropertyImpl extends EdmElementImpl implements EdmProperty {
+public class EdmPropertyImpl extends AbstractEdmNamed implements EdmProperty, EdmElement {
private final FullQualifiedName structuredTypeName;
private final Property property;
private final EdmTypeInfo typeInfo;
- private EdmAnnotationHelperImpl helper;
private EdmType propertyType;
public EdmPropertyImpl(final Edm edm, final FullQualifiedName structuredTypeName, final Property property) {
- super(edm, property.getName());
+ super(edm, property.getName(), property);
this.structuredTypeName = structuredTypeName;
this.property = property;
typeInfo = new EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(property.getType().toString()).build();
- this.helper = new EdmAnnotationHelperImpl(edm, property);
}
@Override
@@ -126,16 +121,6 @@ public class EdmPropertyImpl extends EdmElementImpl implements EdmProperty {
}
@Override
- public EdmAnnotation getAnnotation(final EdmTerm term) {
- return helper.getAnnotation(term);
- }
-
- @Override
- public List<EdmAnnotation> getAnnotations() {
- return helper.getAnnotations();
- }
-
- @Override
public boolean isPrimitive() {
return typeInfo.isPrimitiveType();
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/16b94eb4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmReferentialConstraintImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmReferentialConstraintImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmReferentialConstraintImpl.java
index 4a8d7d8..ac38d20 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmReferentialConstraintImpl.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmReferentialConstraintImpl.java
@@ -18,22 +18,17 @@
*/
package org.apache.olingo.commons.core.edm.provider;
-import java.util.List;
-
import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.EdmAnnotation;
import org.apache.olingo.commons.api.edm.EdmReferentialConstraint;
-import org.apache.olingo.commons.api.edm.EdmTerm;
import org.apache.olingo.commons.api.edm.provider.ReferentialConstraint;
-public class EdmReferentialConstraintImpl implements EdmReferentialConstraint {
+public class EdmReferentialConstraintImpl extends AbstractEdmAnnotatable implements EdmReferentialConstraint {
- private final EdmAnnotationHelperImpl helper;
private final ReferentialConstraint constraint;
public EdmReferentialConstraintImpl(final Edm edm, final ReferentialConstraint constraint) {
+ super(edm, constraint);
this.constraint = constraint;
- this.helper = new EdmAnnotationHelperImpl(edm, constraint);
}
@Override
@@ -45,14 +40,4 @@ public class EdmReferentialConstraintImpl implements EdmReferentialConstraint {
public String getReferencedPropertyName() {
return constraint.getReferencedProperty();
}
-
- @Override
- public EdmAnnotation getAnnotation(final EdmTerm term) {
- return helper.getAnnotation(term);
- }
-
- @Override
- public List<EdmAnnotation> getAnnotations() {
- return helper.getAnnotations();
- }
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/16b94eb4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmSingletonImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmSingletonImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmSingletonImpl.java
index ca953dc..764a6c6 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmSingletonImpl.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/provider/EdmSingletonImpl.java
@@ -23,7 +23,7 @@ import org.apache.olingo.commons.api.edm.EdmEntityContainer;
import org.apache.olingo.commons.api.edm.EdmSingleton;
import org.apache.olingo.commons.api.edm.provider.Singleton;
-public class EdmSingletonImpl extends EdmBindingTargetImpl implements EdmSingleton {
+public class EdmSingletonImpl extends AbstractEdmBindingTarget implements EdmSingleton {
public EdmSingletonImpl(final Edm edm, final EdmEntityContainer container, final Singleton singleton) {
super(edm, container, singleton);