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 2014/04/01 16:47:29 UTC
[9/9] git commit: [OLINGO-168] More TechProvider Refactoring
[OLINGO-168] More TechProvider Refactoring
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/6a3a4a1d
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/6a3a4a1d
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/6a3a4a1d
Branch: refs/heads/olingo168
Commit: 6a3a4a1d7227198575822eb30bb237701583b061
Parents: 59ef14f
Author: Christian Amend <ch...@apache.org>
Authored: Tue Apr 1 16:43:10 2014 +0200
Committer: Christian Amend <ch...@apache.org>
Committed: Tue Apr 1 16:46:50 2014 +0200
----------------------------------------------------------------------
.../client/core/edm/EdmBindingTargetImpl.java | 39 +-
.../client/core/edm/EdmEntityContainerImpl.java | 9 +-
.../core/edm/EdmNavigationPropertyImpl.java | 33 +-
.../client/core/edm/EdmOperationImpl.java | 2 +-
.../client/core/edm/v3/EdmEntitySetProxy.java | 7 +
.../commons/api/edm/EdmBindingTarget.java | 7 +
.../commons/api/edm/EdmEntityContainer.java | 5 +
.../commons/api/edm/EdmNavigationProperty.java | 27 +-
.../api/edm/EdmNavigationPropertyBinding.java | 28 ++
.../api/edm/EdmReferentialConstraint.java | 28 ++
.../core/edm/AbstractEdmEntityContainer.java | 11 +-
.../edm/EdmNavigationPropertyBindingImpl.java | 43 +++
.../core/edm/EdmReferentialConstraintImpl.java | 42 ++
.../core/edm/provider/EdmBindingTargetImpl.java | 24 ++
.../edm/provider/EdmEntityContainerImpl.java | 5 +-
.../edm/provider/EdmNavigationPropertyImpl.java | 18 +
.../core/serializer/ODataXmlSerializerImpl.java | 6 +-
.../xml/MetadataDocumentXmlSerializer.java | 323 +++++++++++-----
.../serializer/xml/MetadataDocumentTest.java | 6 +-
.../core/testutil/EdmTechTestProvider.java | 4 +-
.../testutil/techprovider/ActionProvider.java | 64 ++--
.../techprovider/ComplexTypeProvider.java | 26 +-
.../techprovider/ContainerProvider.java | 2 +-
.../testutil/techprovider/EdmTechProvider.java | 12 +
.../techprovider/EntityTypeProvider.java | 153 ++++----
.../testutil/techprovider/EnumTypeProvider.java | 3 +
.../testutil/techprovider/FunctionProvider.java | 380 +++++++++++--------
.../testutil/techprovider/PropertyProvider.java | 302 ++++++++++++++-
.../testutil/techprovider/SchemaProvider.java | 23 +-
.../techprovider/TypeDefinitionProvider.java | 2 +-
.../core/uri/antlr/TestUriParserImpl.java | 4 +-
31 files changed, 1210 insertions(+), 428 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6a3a4a1d/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmBindingTargetImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmBindingTargetImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmBindingTargetImpl.java
index 6f1990e..452c880 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmBindingTargetImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmBindingTargetImpl.java
@@ -1,23 +1,24 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
+ * or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
+ * 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
- *
+ * 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
+ * KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.olingo.client.core.edm;
+import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -27,16 +28,19 @@ 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.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.core.edm.AbstractEdmBindingTarget;
+import org.apache.olingo.commons.core.edm.EdmNavigationPropertyBindingImpl;
public abstract class EdmBindingTargetImpl extends AbstractEdmBindingTarget {
private final BindingTarget target;
+ private List<EdmNavigationPropertyBinding> navigationPropertyBindings;
public EdmBindingTargetImpl(final Edm edm, final EdmEntityContainer container,
- final String name, final FullQualifiedName type, final BindingTarget target) {
+ final String name, final FullQualifiedName type, final BindingTarget target) {
super(edm, container, name, type);
this.target = target;
@@ -48,8 +52,9 @@ public abstract class EdmBindingTargetImpl extends AbstractEdmBindingTarget {
final List<? extends NavigationPropertyBinding> navigationPropertyBindings = target.getNavigationPropertyBindings();
boolean found = false;
- for (final Iterator<? extends NavigationPropertyBinding> itor = navigationPropertyBindings.iterator();
- itor.hasNext() && !found;) {
+ for (final Iterator<? extends NavigationPropertyBinding> itor = navigationPropertyBindings.iterator(); itor
+ .hasNext()
+ && !found;) {
final NavigationPropertyBinding binding = itor.next();
if (binding.getPath().equals(path)) {
@@ -76,4 +81,18 @@ public abstract class EdmBindingTargetImpl extends AbstractEdmBindingTarget {
return bindingTarget;
}
+ @Override
+ public List<EdmNavigationPropertyBinding> getNavigationPropertyBindings() {
+ if (navigationPropertyBindings == null) {
+ List<? extends 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;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6a3a4a1d/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmEntityContainerImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmEntityContainerImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmEntityContainerImpl.java
index 169aaf9..6a962e3 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmEntityContainerImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmEntityContainerImpl.java
@@ -49,12 +49,19 @@ public class EdmEntityContainerImpl extends AbstractEdmEntityContainer {
public EdmEntityContainerImpl(final Edm edm, final FullQualifiedName entityContainerName,
final EntityContainer xmlEntityContainer, final XMLMetadata xmlMetadata) {
- super(edm, entityContainerName);
+ super(edm, entityContainerName, getFullQualifiedName(xmlEntityContainer.getExtends()));
this.xmlEntityContainer = xmlEntityContainer;
this.xmlMetadata = xmlMetadata;
}
+ private static FullQualifiedName getFullQualifiedName(String parent) {
+ if (parent != null) {
+ return new FullQualifiedName(parent);
+ }
+ return null;
+ }
+
@Override
protected EdmSingleton createSingleton(final String singletonName) {
if (!(xmlEntityContainer instanceof org.apache.olingo.client.api.edm.xml.v4.EntityContainer)) {
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6a3a4a1d/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmNavigationPropertyImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmNavigationPropertyImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmNavigationPropertyImpl.java
index 19df620..953da5b 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmNavigationPropertyImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmNavigationPropertyImpl.java
@@ -1,36 +1,40 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
+ * or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
+ * 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
- *
+ * 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
+ * KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.olingo.client.core.edm;
+import java.util.ArrayList;
import java.util.List;
import org.apache.olingo.client.api.edm.xml.v4.NavigationProperty;
import org.apache.olingo.client.api.edm.xml.v4.ReferentialConstraint;
import org.apache.olingo.commons.api.edm.Edm;
+import org.apache.olingo.commons.api.edm.EdmReferentialConstraint;
import org.apache.olingo.commons.api.edm.FullQualifiedName;
import org.apache.olingo.commons.core.edm.AbstractEdmNavigationProperty;
+import org.apache.olingo.commons.core.edm.EdmReferentialConstraintImpl;
public class EdmNavigationPropertyImpl extends AbstractEdmNavigationProperty {
private final NavigationProperty navigationProperty;
private final EdmTypeInfo edmTypeInfo;
+ private List<EdmReferentialConstraint> referentialConstraints;
public EdmNavigationPropertyImpl(final Edm edm, final NavigationProperty navigationProperty) {
super(edm, navigationProperty.getName());
@@ -71,4 +75,19 @@ public class EdmNavigationPropertyImpl extends AbstractEdmNavigationProperty {
return null;
}
+ @Override
+ public List<EdmReferentialConstraint> getReferentialConstraints() {
+ if (referentialConstraints == null) {
+ final List<ReferentialConstraint> providerConstraints = navigationProperty.getReferentialConstraints();
+ referentialConstraints = new ArrayList<EdmReferentialConstraint>();
+ if (providerConstraints != null) {
+ for (ReferentialConstraint constraint : providerConstraints) {
+ referentialConstraints.add(new EdmReferentialConstraintImpl(constraint.getProperty(), constraint
+ .getReferencedProperty()));
+ }
+ }
+ }
+ return referentialConstraints;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6a3a4a1d/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmOperationImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmOperationImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmOperationImpl.java
index f54d6c1..a38602a 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmOperationImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmOperationImpl.java
@@ -85,6 +85,6 @@ public abstract class EdmOperationImpl extends AbstractEdmOperation {
if (bindingParam != null) {
result = bindingParam.isCollection();
}
- return null;
+ return result;
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6a3a4a1d/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmEntitySetProxy.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmEntitySetProxy.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmEntitySetProxy.java
index 0cc0ff8..2624860 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmEntitySetProxy.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmEntitySetProxy.java
@@ -33,6 +33,7 @@ import org.apache.olingo.commons.api.edm.EdmBindingTarget;
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.EdmNavigationPropertyBinding;
import org.apache.olingo.commons.api.edm.FullQualifiedName;
import org.apache.olingo.commons.core.edm.AbstractEdmBindingTarget;
@@ -105,4 +106,10 @@ public class EdmEntitySetProxy extends AbstractEdmBindingTarget implements EdmEn
return true;
}
+ @Override
+ public List<EdmNavigationPropertyBinding> getNavigationPropertyBindings() {
+ //There are no navigation property bindings in V3 so we will deliver an empty list
+ return new ArrayList<EdmNavigationPropertyBinding>();
+ }
+
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6a3a4a1d/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmBindingTarget.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmBindingTarget.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmBindingTarget.java
index 87c9d34..1c66b80 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmBindingTarget.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmBindingTarget.java
@@ -18,6 +18,8 @@
*/
package org.apache.olingo.commons.api.edm;
+import java.util.List;
+
/**
* Entity Sets or Singletons can be bound to each other using a navigation property binding so an
* {@link EdmBindingTarget} can either be an {@link EdmEntitySet} or an {@link EdmSingleton}.
@@ -33,6 +35,11 @@ public interface EdmBindingTarget extends EdmNamed {
EdmBindingTarget getRelatedBindingTarget(String path);
/**
+ * @return all navigation property bindings
+ */
+ List<EdmNavigationPropertyBinding> getNavigationPropertyBindings();
+
+ /**
* Returns the entity container this target is contained in.
*
* @return {@link EdmEntityContainer}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6a3a4a1d/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmEntityContainer.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmEntityContainer.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmEntityContainer.java
index 00afbc8..84dfea4 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmEntityContainer.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmEntityContainer.java
@@ -89,4 +89,9 @@ public interface EdmEntityContainer extends EdmNamed {
*/
List<EdmActionImport> getActionImports();
+ /**
+ * @return the {@link FullQualifiedName} of the parentContainer or null if no parent is specified
+ */
+ FullQualifiedName getParentContainerName();
+
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6a3a4a1d/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmNavigationProperty.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmNavigationProperty.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmNavigationProperty.java
index 52c645f..5f54154 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmNavigationProperty.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmNavigationProperty.java
@@ -1,23 +1,25 @@
-/*
+/*
* Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
+ * or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
+ * 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
- *
+ * 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
+ * KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.olingo.commons.api.edm;
+import java.util.List;
+
/**
* A CSDL NavigationProperty element
* <br/>
@@ -35,6 +37,15 @@ public interface EdmNavigationProperty extends EdmElement {
*/
EdmNavigationProperty getPartner();
+ /**
+ * @param referencedPropertyName
+ * @return propertyName for this referenced property
+ */
String getReferencingPropertyName(String referencedPropertyName);
+ /**
+ * @return all referential constraints for this navigation property.
+ */
+ List<EdmReferentialConstraint> getReferentialConstraints();
+
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6a3a4a1d/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmNavigationPropertyBinding.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmNavigationPropertyBinding.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmNavigationPropertyBinding.java
new file mode 100644
index 0000000..2ebcf2b
--- /dev/null
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmNavigationPropertyBinding.java
@@ -0,0 +1,28 @@
+/*
+ * 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.api.edm;
+
+//TODO: JavaDoc
+public interface EdmNavigationPropertyBinding {
+
+ String getPath();
+
+ String getTarget();
+
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6a3a4a1d/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmReferentialConstraint.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmReferentialConstraint.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmReferentialConstraint.java
new file mode 100644
index 0000000..e479efb
--- /dev/null
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmReferentialConstraint.java
@@ -0,0 +1,28 @@
+/*
+ * 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.api.edm;
+
+//TODO: Document
+public interface EdmReferentialConstraint {
+
+ String getPropertyName();
+
+ String getReferencedPropertyName();
+
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6a3a4a1d/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmEntityContainer.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmEntityContainer.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmEntityContainer.java
index aba62ba..853d21f 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmEntityContainer.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmEntityContainer.java
@@ -47,9 +47,13 @@ public abstract class AbstractEdmEntityContainer extends EdmNamedImpl implements
protected final Map<String, EdmFunctionImport> functionImports = new HashMap<String, EdmFunctionImport>();
private boolean allFunctionImportsLoaded = false;
- public AbstractEdmEntityContainer(final Edm edm, final FullQualifiedName entityContainerName) {
+ private final FullQualifiedName parentContainerName;
+
+ public AbstractEdmEntityContainer(final Edm edm, final FullQualifiedName entityContainerName,
+ final FullQualifiedName parentContainerName) {
super(edm, entityContainerName.getName());
this.entityContainerName = entityContainerName;
+ this.parentContainerName = parentContainerName;
}
@Override
@@ -148,4 +152,9 @@ public abstract class AbstractEdmEntityContainer extends EdmNamedImpl implements
}
protected abstract void loadAllActionImports();
+
+ @Override
+ public FullQualifiedName getParentContainerName() {
+ return parentContainerName;
+ }
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6a3a4a1d/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmNavigationPropertyBindingImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmNavigationPropertyBindingImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmNavigationPropertyBindingImpl.java
new file mode 100644
index 0000000..233e5d2
--- /dev/null
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmNavigationPropertyBindingImpl.java
@@ -0,0 +1,43 @@
+/*
+ * 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;
+
+import org.apache.olingo.commons.api.edm.EdmNavigationPropertyBinding;
+
+public class EdmNavigationPropertyBindingImpl implements EdmNavigationPropertyBinding {
+
+ private final String path;
+ private final String target;
+
+ public EdmNavigationPropertyBindingImpl(String path, String target){
+ this.path = path;
+ this.target = target;
+ }
+
+ @Override
+ public String getPath() {
+ return path;
+ }
+
+ @Override
+ public String getTarget() {
+ return target;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6a3a4a1d/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmReferentialConstraintImpl.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmReferentialConstraintImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmReferentialConstraintImpl.java
new file mode 100644
index 0000000..93e1519
--- /dev/null
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmReferentialConstraintImpl.java
@@ -0,0 +1,42 @@
+/*
+ * 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;
+
+import org.apache.olingo.commons.api.edm.EdmReferentialConstraint;
+
+public class EdmReferentialConstraintImpl implements EdmReferentialConstraint {
+
+ private final String property;
+ private final String referencedProperty;
+
+ public EdmReferentialConstraintImpl(String property, String referencedProperty) {
+ this.property = property;
+ this.referencedProperty = referencedProperty;
+ }
+
+ @Override
+ public String getPropertyName() {
+ return property;
+ }
+
+ @Override
+ public String getReferencedPropertyName() {
+ return referencedProperty;
+ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6a3a4a1d/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmBindingTargetImpl.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmBindingTargetImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmBindingTargetImpl.java
index c1aacb1..78651bc 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmBindingTargetImpl.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmBindingTargetImpl.java
@@ -18,6 +18,7 @@
*/
package org.apache.olingo.server.core.edm.provider;
+import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -25,14 +26,17 @@ 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.EdmException;
+import org.apache.olingo.commons.api.edm.EdmNavigationPropertyBinding;
import org.apache.olingo.commons.api.edm.Target;
import org.apache.olingo.commons.core.edm.AbstractEdmBindingTarget;
+import org.apache.olingo.commons.core.edm.EdmNavigationPropertyBindingImpl;
import org.apache.olingo.server.api.edm.provider.BindingTarget;
import org.apache.olingo.server.api.edm.provider.NavigationPropertyBinding;
public abstract class EdmBindingTargetImpl extends AbstractEdmBindingTarget {
private final BindingTarget target;
+ private List<EdmNavigationPropertyBinding> navigationPropertyBindings;
public EdmBindingTargetImpl(final Edm edm, final EdmEntityContainer container, final BindingTarget target) {
super(edm, container, target.getName(), target.getType());
@@ -74,4 +78,24 @@ public abstract class EdmBindingTargetImpl extends AbstractEdmBindingTarget {
return bindingTarget;
}
+
+ @Override
+ public List<EdmNavigationPropertyBinding> getNavigationPropertyBindings() {
+ if (navigationPropertyBindings == null) {
+ List<NavigationPropertyBinding> providerBindings = target.getNavigationPropertyBindings();
+ navigationPropertyBindings = new ArrayList<EdmNavigationPropertyBinding>();
+ if (providerBindings != null) {
+ for (NavigationPropertyBinding binding : providerBindings) {
+ Target providerTarget = binding.getTarget();
+ String targetString = "";
+ if (providerTarget.getEntityContainer() != null) {
+ targetString = targetString + providerTarget.getEntityContainer().getFullQualifiedNameAsString() + "/";
+ }
+ targetString = targetString + providerTarget.getTargetName();
+ navigationPropertyBindings.add(new EdmNavigationPropertyBindingImpl(binding.getPath(), targetString));
+ }
+ }
+ }
+ return navigationPropertyBindings;
+ }
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6a3a4a1d/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntityContainerImpl.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntityContainerImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntityContainerImpl.java
index 7c81980..1a1012a 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntityContainerImpl.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntityContainerImpl.java
@@ -44,14 +44,13 @@ public class EdmEntityContainerImpl extends AbstractEdmEntityContainer {
public EdmEntityContainerImpl(final Edm edm, final EdmProvider provider,
final EntityContainerInfo entityContainerInfo) {
-
- super(edm, entityContainerInfo.getContainerName());
+ super(edm, entityContainerInfo.getContainerName(), entityContainerInfo.getExtendsContainer());
this.provider = provider;
}
public EdmEntityContainerImpl(final Edm edm, final EdmProvider provider, final FullQualifiedName containerFQN,
final EntityContainer entityContainer) {
- super(edm, containerFQN);
+ super(edm, containerFQN, entityContainer.getExtendsContainer());
this.provider = provider;
container = entityContainer;
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6a3a4a1d/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmNavigationPropertyImpl.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmNavigationPropertyImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmNavigationPropertyImpl.java
index 7f570da..4c7e0cb 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmNavigationPropertyImpl.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmNavigationPropertyImpl.java
@@ -18,17 +18,21 @@
*/
package org.apache.olingo.server.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.EdmReferentialConstraint;
import org.apache.olingo.commons.api.edm.FullQualifiedName;
import org.apache.olingo.commons.core.edm.AbstractEdmNavigationProperty;
+import org.apache.olingo.commons.core.edm.EdmReferentialConstraintImpl;
import org.apache.olingo.server.api.edm.provider.NavigationProperty;
import org.apache.olingo.server.api.edm.provider.ReferentialConstraint;
public class EdmNavigationPropertyImpl extends AbstractEdmNavigationProperty {
private final NavigationProperty navigationProperty;
+ private List<EdmReferentialConstraint> referentialConstraints;
public EdmNavigationPropertyImpl(final Edm edm, final NavigationProperty navigationProperty) {
super(edm, navigationProperty.getName());
@@ -68,4 +72,18 @@ public class EdmNavigationPropertyImpl extends AbstractEdmNavigationProperty {
return null;
}
+ @Override
+ public List<EdmReferentialConstraint> getReferentialConstraints() {
+ if (referentialConstraints == null) {
+ final List<ReferentialConstraint> providerConstraints = navigationProperty.getReferentialConstraints();
+ referentialConstraints = new ArrayList<EdmReferentialConstraint>();
+ if (providerConstraints != null) {
+ for (ReferentialConstraint constraint : providerConstraints) {
+ referentialConstraints.add(new EdmReferentialConstraintImpl(constraint.getProperty(), constraint
+ .getReferencedProperty()));
+ }
+ }
+ }
+ return referentialConstraints;
+ }
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6a3a4a1d/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/ODataXmlSerializerImpl.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/ODataXmlSerializerImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/ODataXmlSerializerImpl.java
index 4790446..49f8831 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/ODataXmlSerializerImpl.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/ODataXmlSerializerImpl.java
@@ -18,9 +18,7 @@
*/
package org.apache.olingo.server.core.serializer;
-import java.io.BufferedWriter;
import java.io.InputStream;
-import java.io.OutputStreamWriter;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
@@ -46,14 +44,12 @@ public class ODataXmlSerializerImpl implements ODataSerializer {
@Override
public InputStream metadataDocument(final Edm edm) {
CircleStreamBuffer buffer;
- BufferedWriter writer;
XMLStreamWriter xmlStreamWriter = null;
// TODO: move stream initialization into separate method
try {
buffer = new CircleStreamBuffer();
- writer = new BufferedWriter(new OutputStreamWriter(buffer.getOutputStream(), DEFAULT_CHARSET));
- xmlStreamWriter = XMLOutputFactory.newInstance().createXMLStreamWriter(writer);
+ xmlStreamWriter = XMLOutputFactory.newInstance().createXMLStreamWriter(buffer.getOutputStream(), DEFAULT_CHARSET);
MetadataDocumentXmlSerializer serializer = new MetadataDocumentXmlSerializer(edm);
serializer.writeMetadataDocument(xmlStreamWriter);
xmlStreamWriter.close();
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6a3a4a1d/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentXmlSerializer.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentXmlSerializer.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentXmlSerializer.java
index b7f6015..2313a3a 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentXmlSerializer.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentXmlSerializer.java
@@ -26,6 +26,7 @@ import javax.xml.stream.XMLStreamWriter;
import org.apache.olingo.commons.api.edm.Edm;
import org.apache.olingo.commons.api.edm.EdmAction;
import org.apache.olingo.commons.api.edm.EdmActionImport;
+import org.apache.olingo.commons.api.edm.EdmBindingTarget;
import org.apache.olingo.commons.api.edm.EdmComplexType;
import org.apache.olingo.commons.api.edm.EdmEntityContainer;
import org.apache.olingo.commons.api.edm.EdmEntitySet;
@@ -35,16 +36,64 @@ import org.apache.olingo.commons.api.edm.EdmFunction;
import org.apache.olingo.commons.api.edm.EdmFunctionImport;
import org.apache.olingo.commons.api.edm.EdmKeyPropertyRef;
import org.apache.olingo.commons.api.edm.EdmNavigationProperty;
+import org.apache.olingo.commons.api.edm.EdmNavigationPropertyBinding;
+import org.apache.olingo.commons.api.edm.EdmOperation;
import org.apache.olingo.commons.api.edm.EdmParameter;
import org.apache.olingo.commons.api.edm.EdmProperty;
+import org.apache.olingo.commons.api.edm.EdmReferentialConstraint;
import org.apache.olingo.commons.api.edm.EdmReturnType;
import org.apache.olingo.commons.api.edm.EdmSchema;
import org.apache.olingo.commons.api.edm.EdmSingleton;
import org.apache.olingo.commons.api.edm.EdmStructuredType;
import org.apache.olingo.commons.api.edm.EdmType;
+import org.apache.olingo.commons.api.edm.EdmTypeDefinition;
+import org.apache.olingo.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.server.api.serializer.ODataSerializer;
public class MetadataDocumentXmlSerializer {
+ private static final String XML_EXTENDS = "Extends";
+ private static final String XML_TARGET = "Target";
+ private static final String XML_PATH = "Path";
+ private static final String XML_NAVIGATION_PROPERTY_BINDING = "NavigationPropertyBinding";
+ private static final String XML_VALUE = "Value";
+ private static final String XML_MEMBER = "Member";
+ private static final String XML_UNDERLYING_TYPE = "UnderlyingType";
+ private static final String XML_IS_FLAGS = "IsFlags";
+ private static final String XML_ENUM_TYPE = "EnumType";
+ private static final String XML_PROPERTY_REF = "PropertyRef";
+ private static final String XML_KEY = "Key";
+ private static final String XML_SCALE = "Scale";
+ private static final String XML_PRECISION = "Precision";
+ private static final String XML_MAX_LENGTH = "MaxLength";
+ private static final String XML_DEFAULT_VALUE = "DefaultValue";
+ private static final String XML_UNICODE = "Unicode";
+ private static final String XML_PROPERTY = "Property";
+ private static final String XML_PARTNER = "Partner";
+ private static final String XML_NULLABLE = "Nullable";
+ private static final String XML_NAVIGATION_PROPERTY = "NavigationProperty";
+ private static final String XML_HAS_STREAM = "HasStream";
+ private static final String XML_BASE_TYPE = "BaseType";
+ private static final String XML_COMPLEX_TYPE = "ComplexType";
+ private static final String XML_RETURN_TYPE = "ReturnType";
+ private static final String XML_TYPE = "Type";
+ private static final String XML_PARAMETER = "Parameter";
+ private static final String XML_IS_COMPOSABLE = "IsComposable";
+ private static final String XML_IS_BOUND = "IsBound";
+ private static final String XML_ENTITY_TYPE = "EntityType";
+ private static final String XML_SINGLETON = "Singleton";
+ private static final String XML_ACTION = "Action";
+ private static final String XML_ACTION_IMPORT = "ActionImport";
+ private static final String XML_INCLUDE_IN_SERVICE_DOCUMENT = "IncludeInServiceDocument";
+ private static final String XML_ENTITY_SET = "EntitySet";
+ private static final String XML_FUNCTION = "Function";
+ private static final String XML_FUNCTION_IMPORT = "FunctionImport";
+ private static final String XML_NAME = "Name";
+ private static final String XML_ENTITY_CONTAINER = "EntityContainer";
+ private static final String XML_ALIAS = "Alias";
+ private static final String XML_NAMESPACE = "Namespace";
+ private static final String XML_TYPE_DEFINITION = "TypeDefinition";
+
private final Edm edm;
private final static String EDMX = "Edmx";
@@ -58,7 +107,7 @@ public class MetadataDocumentXmlSerializer {
}
public void writeMetadataDocument(final XMLStreamWriter writer) throws XMLStreamException {
- writer.writeStartDocument();
+ writer.writeStartDocument(ODataSerializer.DEFAULT_CHARSET, "1.0");
writer.setPrefix(PREFIX_EDMX, NS_EDMX);
writer.setDefaultNamespace(NS_EDMX);
writer.writeStartElement(PREFIX_EDMX, EDMX, NS_EDMX);
@@ -74,7 +123,6 @@ public class MetadataDocumentXmlSerializer {
private void appendDataServices(final XMLStreamWriter writer) throws XMLStreamException {
writer.setDefaultNamespace(NS_EDM);
-// writer.writeStartElement(PREFIX_EDM, "DataServices", NS_EDMX);
writer.writeStartElement(NS_EDMX, "DataServices");
for (EdmSchema schema : edm.getSchemas()) {
appendSchema(writer, schema);
@@ -85,8 +133,8 @@ public class MetadataDocumentXmlSerializer {
private void appendSchema(final XMLStreamWriter writer, final EdmSchema schema) throws XMLStreamException {
writer.writeStartElement(NS_EDM, "Schema");
writer.writeDefaultNamespace(NS_EDM);
- writer.writeAttribute("Namespace", schema.getNamespace());
- writer.writeAttribute("Alias", schema.getAlias());
+ writer.writeAttribute(XML_NAMESPACE, schema.getNamespace());
+ writer.writeAttribute(XML_ALIAS, schema.getAlias());
// EnumTypes
appendEnumTypes(writer, schema.getEnumTypes());
@@ -98,7 +146,7 @@ public class MetadataDocumentXmlSerializer {
appendComplexTypes(writer, schema.getComplexTypes());
// TypeDefinitions
- // TODO: TypeDefinitions
+ appendTypeDefinitions(writer, schema.getTypeDefinitions());
// Actions
appendActions(writer, schema.getActions());
@@ -112,13 +160,38 @@ public class MetadataDocumentXmlSerializer {
writer.writeEndElement();
}
+ private void appendTypeDefinitions(XMLStreamWriter writer, List<EdmTypeDefinition> typeDefinitions)
+ throws XMLStreamException {
+ for (EdmTypeDefinition definition : typeDefinitions) {
+ writer.writeEmptyElement(XML_TYPE_DEFINITION);
+ writer.writeAttribute(XML_NAME, definition.getName());
+ writer.writeAttribute(XML_TYPE, getFullQualifiedName(definition.getUnderlyingType(), false));
+
+ // Facets
+ if (definition.getMaxLength() != null) {
+ writer.writeAttribute(XML_MAX_LENGTH, "" + definition.getMaxLength());
+ }
+
+ if (definition.getPrecision() != null) {
+ writer.writeAttribute(XML_PRECISION, "" + definition.getPrecision());
+ }
+
+ if (definition.getScale() != null) {
+ writer.writeAttribute(XML_SCALE, "" + definition.getScale());
+ }
+ }
+ }
+
private void appendEntityContainer(final XMLStreamWriter writer, final EdmEntityContainer container)
throws XMLStreamException {
if (container != null) {
- writer.writeStartElement("EntityContainer");
+ writer.writeStartElement(XML_ENTITY_CONTAINER);
- writer.writeAttribute("Name", container.getName());
- // TODO: extends attribute
+ writer.writeAttribute(XML_NAME, container.getName());
+ FullQualifiedName parentContainerName = container.getParentContainerName();
+ if (parentContainerName != null) {
+ writer.writeAttribute(XML_EXTENDS, parentContainerName.getFullQualifiedNameAsString());
+ }
// EntitySets
appendEntitySets(writer, container.getEntitySets());
@@ -139,14 +212,14 @@ public class MetadataDocumentXmlSerializer {
private void appendFunctionImports(final XMLStreamWriter writer, final List<EdmFunctionImport> functionImports,
final String containerNamespace) throws XMLStreamException {
for (EdmFunctionImport functionImport : functionImports) {
- writer.writeStartElement("FunctionImport");
- writer.writeAttribute("Name", functionImport.getName());
- writer.writeAttribute("Function", functionImport.getFunctionFqn().getFullQualifiedNameAsString());
+ writer.writeStartElement(XML_FUNCTION_IMPORT);
+ writer.writeAttribute(XML_NAME, functionImport.getName());
+ writer.writeAttribute(XML_FUNCTION, functionImport.getFunctionFqn().getFullQualifiedNameAsString());
EdmEntitySet returnedEntitySet = functionImport.getReturnedEntitySet();
if (returnedEntitySet != null) {
- writer.writeAttribute("EntitySet", containerNamespace + "." + returnedEntitySet.getName());
+ writer.writeAttribute(XML_ENTITY_SET, containerNamespace + "." + returnedEntitySet.getName());
}
- writer.writeAttribute("IncludeInServiceDocument", "" + functionImport.isIncludeInServiceDocument());
+ writer.writeAttribute(XML_INCLUDE_IN_SERVICE_DOCUMENT, "" + functionImport.isIncludeInServiceDocument());
// TODO: Annotations
writer.writeEndElement();
@@ -156,9 +229,9 @@ public class MetadataDocumentXmlSerializer {
private void appendActionImports(final XMLStreamWriter writer, final List<EdmActionImport> actionImports)
throws XMLStreamException {
for (EdmActionImport actionImport : actionImports) {
- writer.writeStartElement("ActionImport");
- writer.writeAttribute("Name", actionImport.getName());
- writer.writeAttribute("Action", getFullQualifiedName(actionImport.getAction(), false));
+ writer.writeStartElement(XML_ACTION_IMPORT);
+ writer.writeAttribute(XML_NAME, actionImport.getName());
+ writer.writeAttribute(XML_ACTION, getFullQualifiedName(actionImport.getAction(), false));
// TODO: Annotations
writer.writeEndElement();
}
@@ -166,29 +239,37 @@ public class MetadataDocumentXmlSerializer {
private void appendSingletons(final XMLStreamWriter writer, final List<EdmSingleton> singletons)
throws XMLStreamException {
- // TODO: Merge with entity set method
for (EdmSingleton singleton : singletons) {
- writer.writeStartElement("Singleton");
- writer.writeAttribute("Name", singleton.getName());
- writer.writeAttribute("EntityType", getFullQualifiedName(singleton.getEntityType(), false));
-
- // TODO: NavigationProperty Bindigs at edm api level
+ writer.writeStartElement(XML_SINGLETON);
+ writer.writeAttribute(XML_NAME, singleton.getName());
+ writer.writeAttribute(XML_ENTITY_TYPE, getFullQualifiedName(singleton.getEntityType(), false));
+ appendNavigationPropertyBindings(writer, singleton);
// TODO: Annotations
writer.writeEndElement();
}
}
+ private void appendNavigationPropertyBindings(final XMLStreamWriter writer, EdmBindingTarget bindingTarget)
+ throws XMLStreamException {
+ if (bindingTarget.getNavigationPropertyBindings() != null) {
+ for (EdmNavigationPropertyBinding binding : bindingTarget.getNavigationPropertyBindings()) {
+ writer.writeEmptyElement(XML_NAVIGATION_PROPERTY_BINDING);
+ writer.writeAttribute(XML_PATH, binding.getPath());
+ writer.writeAttribute(XML_TARGET, binding.getTarget());
+ }
+ }
+ }
+
private void appendEntitySets(final XMLStreamWriter writer, final List<EdmEntitySet> entitySets)
throws XMLStreamException {
for (EdmEntitySet entitySet : entitySets) {
- writer.writeStartElement("EntitySet");
- writer.writeAttribute("Name", entitySet.getName());
- writer.writeAttribute("EntityType", getFullQualifiedName(entitySet.getEntityType(), false));
-
- // TODO: NavigationProperty Bindigs at edm api level
+ writer.writeStartElement(XML_ENTITY_SET);
+ writer.writeAttribute(XML_NAME, entitySet.getName());
+ writer.writeAttribute(XML_ENTITY_TYPE, getFullQualifiedName(entitySet.getEntityType(), false));
+ appendNavigationPropertyBindings(writer, entitySet);
// TODO: Annotations
writer.writeEndElement();
}
@@ -197,64 +278,95 @@ public class MetadataDocumentXmlSerializer {
private void appendFunctions(final XMLStreamWriter writer, final List<EdmFunction> functions)
throws XMLStreamException {
for (EdmFunction function : functions) {
- writer.writeStartElement("Function");
- writer.writeAttribute("Name", function.getName());
- writer.writeAttribute("IsBound", "" + function.isBound());
- writer.writeAttribute("IsComposable", "" + function.isComposable());
-
- // TODO: move to separate method like for actions
- for (String parameterName : function.getParameterNames()) {
- EdmParameter parameter = function.getParameter(parameterName);
- writer.writeEmptyElement("Parameter");
- writer.writeAttribute("Name", parameterName);
- writer.writeAttribute("Type", getFullQualifiedName(parameter.getType(), parameter.isCollection()));
- // TODO: Parameter facets
- }
+ writer.writeStartElement(XML_FUNCTION);
+ writer.writeAttribute(XML_NAME, function.getName());
+ // TODO: EntitySetPath
+ writer.writeAttribute(XML_IS_BOUND, "" + function.isBound());
+ writer.writeAttribute(XML_IS_COMPOSABLE, "" + function.isComposable());
- EdmReturnType returnType = function.getReturnType();
- if (returnType != null) {
- writer.writeEmptyElement("ReturnType");
- writer.writeAttribute("Type", getFullQualifiedName(returnType.getType(), returnType.isCollection()));
- // TODO: Return type facets
- }
+ appendOperationParameters(writer, function);
+
+ appendOperationReturnType(writer, function);
writer.writeEndElement();
}
}
+ private void appendOperationReturnType(final XMLStreamWriter writer, EdmOperation operation)
+ throws XMLStreamException {
+ EdmReturnType returnType = operation.getReturnType();
+ if (returnType != null) {
+ writer.writeEmptyElement(XML_RETURN_TYPE);
+ writer.writeAttribute(XML_TYPE, getFullQualifiedName(returnType.getType(), returnType.isCollection()));
+
+ appendReturnTypeFacets(writer, returnType);
+ }
+ }
+
+ private void appendOperationParameters(final XMLStreamWriter writer, EdmOperation operation)
+ throws XMLStreamException {
+ for (String parameterName : operation.getParameterNames()) {
+ EdmParameter parameter = operation.getParameter(parameterName);
+ writer.writeEmptyElement(XML_PARAMETER);
+ writer.writeAttribute(XML_NAME, parameterName);
+ writer.writeAttribute(XML_TYPE, getFullQualifiedName(parameter.getType(), parameter.isCollection()));
+
+ appendParameterFacets(writer, parameter);
+ }
+ }
+
private void appendActions(final XMLStreamWriter writer, final List<EdmAction> actions) throws XMLStreamException {
for (EdmAction action : actions) {
- writer.writeStartElement("Action");
- writer.writeAttribute("Name", action.getName());
- writer.writeAttribute("IsBound", "" + action.isBound());
-
- for (String parameterName : action.getParameterNames()) {
- EdmParameter parameter = action.getParameter(parameterName);
- writer.writeEmptyElement("Parameter");
- writer.writeAttribute("Name", parameterName);
- writer.writeAttribute("Type", getFullQualifiedName(parameter.getType(), parameter.isCollection()));
- // TODO: Parameter facets
- }
+ writer.writeStartElement(XML_ACTION);
+ writer.writeAttribute(XML_NAME, action.getName());
+ writer.writeAttribute(XML_IS_BOUND, "" + action.isBound());
- EdmReturnType returnType = action.getReturnType();
- if (returnType != null) {
- writer.writeEmptyElement("ReturnType");
- writer.writeAttribute("Type", getFullQualifiedName(returnType.getType(), returnType.isCollection()));
- // TODO: Return type facets
- }
+ appendOperationParameters(writer, action);
+
+ appendOperationReturnType(writer, action);
writer.writeEndElement();
}
}
+ private void appendReturnTypeFacets(XMLStreamWriter writer, EdmReturnType returnType) throws XMLStreamException {
+ if (returnType.isNullable() != null) {
+ writer.writeAttribute(XML_NULLABLE, "" + returnType.isNullable());
+ }
+ if (returnType.getMaxLength() != null) {
+ writer.writeAttribute(XML_MAX_LENGTH, "" + returnType.getMaxLength());
+ }
+ if (returnType.getPrecision() != null) {
+ writer.writeAttribute(XML_PRECISION, "" + returnType.getPrecision());
+ }
+ if (returnType.getScale() != null) {
+ writer.writeAttribute(XML_SCALE, "" + returnType.getScale());
+ }
+ }
+
+ private void appendParameterFacets(XMLStreamWriter writer, EdmParameter parameter) throws XMLStreamException {
+ if (parameter.isNullable() != null) {
+ writer.writeAttribute(XML_NULLABLE, "" + parameter.isNullable());
+ }
+ if (parameter.getMaxLength() != null) {
+ writer.writeAttribute(XML_MAX_LENGTH, "" + parameter.getMaxLength());
+ }
+ if (parameter.getPrecision() != null) {
+ writer.writeAttribute(XML_PRECISION, "" + parameter.getPrecision());
+ }
+ if (parameter.getScale() != null) {
+ writer.writeAttribute(XML_SCALE, "" + parameter.getScale());
+ }
+ }
+
private void appendComplexTypes(final XMLStreamWriter writer, final List<EdmComplexType> complexTypes)
throws XMLStreamException {
for (EdmComplexType complexType : complexTypes) {
- writer.writeStartElement("ComplexType");
- writer.writeAttribute("Name", complexType.getName());
+ writer.writeStartElement(XML_COMPLEX_TYPE);
+ writer.writeAttribute(XML_NAME, complexType.getName());
if (complexType.getBaseType() != null) {
- writer.writeAttribute("BaseType", getFullQualifiedName(complexType.getBaseType(), false));
+ writer.writeAttribute(XML_BASE_TYPE, getFullQualifiedName(complexType.getBaseType(), false));
}
appendProperties(writer, complexType);
@@ -268,15 +380,15 @@ public class MetadataDocumentXmlSerializer {
private void appendEntityTypes(final XMLStreamWriter writer, final List<EdmEntityType> entityTypes)
throws XMLStreamException {
for (EdmEntityType entityType : entityTypes) {
- writer.writeStartElement("EntityType");
- writer.writeAttribute("Name", entityType.getName());
+ writer.writeStartElement(XML_ENTITY_TYPE);
+ writer.writeAttribute(XML_NAME, entityType.getName());
if (entityType.hasStream()) {
- writer.writeAttribute("HasStream", "" + entityType.hasStream());
+ writer.writeAttribute(XML_HAS_STREAM, "" + entityType.hasStream());
}
if (entityType.getBaseType() != null) {
- writer.writeAttribute("BaseType", getFullQualifiedName(entityType.getBaseType(), false));
+ writer.writeAttribute(XML_BASE_TYPE, getFullQualifiedName(entityType.getBaseType(), false));
}
appendKey(writer, entityType);
@@ -298,18 +410,28 @@ public class MetadataDocumentXmlSerializer {
for (String navigationPropertyName : navigationPropertyNames) {
EdmNavigationProperty navigationProperty = type.getNavigationProperty(navigationPropertyName);
- writer.writeEmptyElement("NavigationProperty");
- writer.writeAttribute("Name", navigationPropertyName);
- writer.writeAttribute("Type", getFullQualifiedName(navigationProperty.getType(), navigationProperty
+ writer.writeStartElement(XML_NAVIGATION_PROPERTY);
+ writer.writeAttribute(XML_NAME, navigationPropertyName);
+ writer.writeAttribute(XML_TYPE, getFullQualifiedName(navigationProperty.getType(), navigationProperty
.isCollection()));
if (navigationProperty.isNullable() != null) {
- writer.writeAttribute("Nullable", "" + navigationProperty.isNullable());
+ writer.writeAttribute(XML_NULLABLE, "" + navigationProperty.isNullable());
}
if (navigationProperty.getPartner() != null) {
EdmNavigationProperty partner = navigationProperty.getPartner();
- writer.writeAttribute("Partner", partner.getName());
+ writer.writeAttribute(XML_PARTNER, partner.getName());
+ }
+
+ if (navigationProperty.getReferentialConstraints() != null) {
+ for (EdmReferentialConstraint constraint : navigationProperty.getReferentialConstraints()) {
+ writer.writeEmptyElement("ReferentialConstraint");
+ writer.writeAttribute(XML_PROPERTY, constraint.getPropertyName());
+ writer.writeAttribute("ReferencedProperty", constraint.getReferencedPropertyName());
+ }
}
+
+ writer.writeEndElement();
}
}
@@ -320,33 +442,33 @@ public class MetadataDocumentXmlSerializer {
}
for (String propertyName : propertyNames) {
EdmProperty property = type.getStructuralProperty(propertyName);
- writer.writeEmptyElement("Property");
- writer.writeAttribute("Name", propertyName);
- writer.writeAttribute("Type", getFullQualifiedName(property.getType(), property.isCollection()));
+ writer.writeEmptyElement(XML_PROPERTY);
+ writer.writeAttribute(XML_NAME, propertyName);
+ writer.writeAttribute(XML_TYPE, getFullQualifiedName(property.getType(), property.isCollection()));
// Facets
if (property.isNullable() != null) {
- writer.writeAttribute("Nullable", "" + property.isNullable());
+ writer.writeAttribute(XML_NULLABLE, "" + property.isNullable());
}
if (property.isUnicode() != null) {
- writer.writeAttribute("Unicode", "" + property.isUnicode());
+ writer.writeAttribute(XML_UNICODE, "" + property.isUnicode());
}
if (property.getDefaultValue() != null) {
- writer.writeAttribute("DefaultValue", property.getDefaultValue());
+ writer.writeAttribute(XML_DEFAULT_VALUE, property.getDefaultValue());
}
if (property.getMaxLength() != null) {
- writer.writeAttribute("MaxLength", "" + property.getMaxLength());
+ writer.writeAttribute(XML_MAX_LENGTH, "" + property.getMaxLength());
}
if (property.getPrecision() != null) {
- writer.writeAttribute("Precision", "" + property.getPrecision());
+ writer.writeAttribute(XML_PRECISION, "" + property.getPrecision());
}
if (property.getScale() != null) {
- writer.writeAttribute("Scale", "" + property.getScale());
+ writer.writeAttribute(XML_SCALE, "" + property.getScale());
}
}
}
@@ -354,19 +476,25 @@ public class MetadataDocumentXmlSerializer {
private void appendKey(final XMLStreamWriter writer, final EdmEntityType entityType) throws XMLStreamException {
List<EdmKeyPropertyRef> keyPropertyRefs = entityType.getKeyPropertyRefs();
if (keyPropertyRefs != null && !keyPropertyRefs.isEmpty()) {
- writer.writeStartElement("Key");
+ // Resolve Base Type key as it is shown in derived type
+ EdmEntityType baseType = entityType.getBaseType();
+ if (baseType != null && baseType.getKeyPropertyRefs() != null && !(baseType.getKeyPropertyRefs().isEmpty())) {
+ return;
+ }
+
+ writer.writeStartElement(XML_KEY);
for (EdmKeyPropertyRef keyRef : keyPropertyRefs) {
- writer.writeEmptyElement("PropertyRef");
+ writer.writeEmptyElement(XML_PROPERTY_REF);
String keyName = null;
if (keyRef.getPath() != null) {
keyName = keyRef.getPath() + "/" + keyRef.getKeyPropertyName();
} else {
keyName = keyRef.getKeyPropertyName();
}
- writer.writeAttribute("Name", keyName);
+ writer.writeAttribute(XML_NAME, keyName);
if (keyRef.getAlias() != null) {
- writer.writeAttribute("Alias", keyRef.getAlias());
+ writer.writeAttribute(XML_ALIAS, keyRef.getAlias());
}
}
writer.writeEndElement();
@@ -376,15 +504,15 @@ public class MetadataDocumentXmlSerializer {
private void appendEnumTypes(final XMLStreamWriter writer, final List<EdmEnumType> enumTypes)
throws XMLStreamException {
for (EdmEnumType enumType : enumTypes) {
- writer.writeStartElement("EnumType");
- writer.writeAttribute("Name", enumType.getName());
- writer.writeAttribute("isFlags", "" + enumType.isFlags());
- writer.writeAttribute("UnderlyingType", getFullQualifiedName(enumType.getUnderlyingType(), false));
+ writer.writeStartElement(XML_ENUM_TYPE);
+ writer.writeAttribute(XML_NAME, enumType.getName());
+ writer.writeAttribute(XML_IS_FLAGS, "" + enumType.isFlags());
+ writer.writeAttribute(XML_UNDERLYING_TYPE, getFullQualifiedName(enumType.getUnderlyingType(), false));
for (String memberName : enumType.getMemberNames()) {
- writer.writeEmptyElement("Member");
- writer.writeAttribute("Name", memberName);
- writer.writeAttribute("Value", enumType.getMember(memberName).getValue());
+ writer.writeEmptyElement(XML_MEMBER);
+ writer.writeAttribute(XML_NAME, memberName);
+ writer.writeAttribute(XML_VALUE, enumType.getMember(memberName).getValue());
}
writer.writeEndElement();
@@ -405,10 +533,9 @@ public class MetadataDocumentXmlSerializer {
writer.writeAttribute("Uri", "http://docs.oasis-open.org/odata/odata/v4.0/cs02/vocabularies/Org.OData.Core.V1.xml");
writer.writeEmptyElement(NS_EDMX, "Include");
// TODO: Where is this value comming from?
- writer.writeAttribute("Namespace", "Org.OData.Core.V1");
+ writer.writeAttribute(XML_NAMESPACE, "Org.OData.Core.V1");
// TODO: Where is this value comming from?
- writer.writeAttribute("Alias", "Core");
+ writer.writeAttribute(XML_ALIAS, "Core");
writer.writeEndElement();
}
-
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6a3a4a1d/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentTest.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentTest.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentTest.java
index 40868df..88f84ec 100644
--- a/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentTest.java
+++ b/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentTest.java
@@ -41,7 +41,7 @@ public class MetadataDocumentTest {
}
@Test
- public void writeMetadataWithMockedEdm() {
+ public void writeMetadataWithEmptyMockedEdm() {
ODataSerializer serializer = ODataServer.newInstance().getSerializer(ODataFormat.XML);
Edm edm = mock(Edm.class);
serializer.metadataDocument(edm);
@@ -52,7 +52,7 @@ public class MetadataDocumentTest {
ODataSerializer serializer = ODataServer.newInstance().getSerializer(ODataFormat.XML);
EdmProviderImpl edm = new EdmProviderImpl(new EdmTechProvider());
InputStream metadata = serializer.metadataDocument(edm);
- System.out.println(StringUtils.inputStreamToString(metadata, true));
+ String metadataString = StringUtils.inputStreamToString(metadata, false);
+ //System.out.println(metadataString);
}
-
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6a3a4a1d/lib/server-core/src/test/java/org/apache/olingo/server/core/testutil/EdmTechTestProvider.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/testutil/EdmTechTestProvider.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/testutil/EdmTechTestProvider.java
index f3cc85c..8e6fc1f 100644
--- a/lib/server-core/src/test/java/org/apache/olingo/server/core/testutil/EdmTechTestProvider.java
+++ b/lib/server-core/src/test/java/org/apache/olingo/server/core/testutil/EdmTechTestProvider.java
@@ -42,7 +42,7 @@ public class EdmTechTestProvider extends EdmTechProvider {
private static final FullQualifiedName nameInt16 = EdmPrimitiveTypeKind.Int16.getFullQualifiedName();
public static final String nameSpace = "com.sap.odata.test1";
public static final FullQualifiedName nameContainer = new FullQualifiedName(nameSpace, "Container");
-
+
Property propertyAInt16 = new Property().setName("a").setType(nameInt16);
Property propertyBInt16 = new Property().setName("b").setType(nameInt16);
Property propertyCInt16 = new Property().setName("c").setType(nameInt16);
@@ -70,7 +70,7 @@ public class EdmTechTestProvider extends EdmTechProvider {
@Override
public EntitySet getEntitySet(final FullQualifiedName entityContainer, final String name) throws ODataException {
- if (entityContainer == nameContainer) {
+ if (nameContainer.equals(entityContainer)) {
if (name.equals("ESabc")) {
return new EntitySet()
.setName("ESabc")
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6a3a4a1d/lib/server-core/src/test/java/org/apache/olingo/server/core/testutil/techprovider/ActionProvider.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/testutil/techprovider/ActionProvider.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/testutil/techprovider/ActionProvider.java
index 3ddc6d9..ef3cb19 100644
--- a/lib/server-core/src/test/java/org/apache/olingo/server/core/testutil/techprovider/ActionProvider.java
+++ b/lib/server-core/src/test/java/org/apache/olingo/server/core/testutil/techprovider/ActionProvider.java
@@ -29,7 +29,7 @@ import org.apache.olingo.server.api.edm.provider.ReturnType;
public class ActionProvider {
- //Bound Actions
+ // Bound Actions
public static final FullQualifiedName nameBAESAllPrimRTETAllPrim =
new FullQualifiedName(SchemaProvider.nameSpace, "BAESAllPrimRTETAllPrim");
@@ -45,18 +45,22 @@ public class ActionProvider {
public static final FullQualifiedName nameBAETTwoKeyNavRTETTwoKeyNav =
new FullQualifiedName(SchemaProvider.nameSpace, "BAETTwoKeyNavRTETTwoKeyNav");
+ // Unbound Actions
+ public static final FullQualifiedName nameUARTCompCollParam = new FullQualifiedName(SchemaProvider.nameSpace,
+ "UARTCompCollParam");
+ public static final FullQualifiedName nameUARTCompParam = new FullQualifiedName(SchemaProvider.nameSpace,
+ "UARTCompParam");
+ public static final FullQualifiedName nameUARTESParam =
+ new FullQualifiedName(SchemaProvider.nameSpace, "UARTESParam");
+
+ public static final FullQualifiedName nameUARTETParam =
+ new FullQualifiedName(SchemaProvider.nameSpace, "UARTETParam");
- //Unbound Actions
- public static final FullQualifiedName nameUARTCompCollParam = new FullQualifiedName(SchemaProvider.nameSpace, "UARTCompCollParam");
- public static final FullQualifiedName nameUARTCompParam = new FullQualifiedName(SchemaProvider.nameSpace, "UARTCompParam");
- public static final FullQualifiedName nameUARTETCollAllPrimParam =
- new FullQualifiedName(SchemaProvider.nameSpace, "UARTETCollAllPrimParam");
-
- public static final FullQualifiedName nameUARTETParam = new FullQualifiedName(SchemaProvider.nameSpace, "UARTETParam");
- public static final FullQualifiedName nameUARTPrimParam = new FullQualifiedName(SchemaProvider.nameSpace, "UARTPrimParam");
- public static final FullQualifiedName nameUARTPrimCollParam = new FullQualifiedName(SchemaProvider.nameSpace, "UARTPrimCollParam");
-
-
+ public static final FullQualifiedName nameUARTPrimParam = new FullQualifiedName(SchemaProvider.nameSpace,
+ "UARTPrimParam");
+ public static final FullQualifiedName nameUARTPrimCollParam = new FullQualifiedName(SchemaProvider.nameSpace,
+ "UARTPrimCollParam");
+
public List<Action> getActions(final FullQualifiedName actionName) throws ODataException {
if (actionName.equals(nameUARTPrimParam)) {
return Arrays.asList(
@@ -99,35 +103,36 @@ public class ActionProvider {
} else if (actionName.equals(nameUARTETParam)) {
return Arrays.asList(
- new Action().setName("UARTCompCollParam")
+ new Action().setName("UARTETParam")
.setParameters(Arrays.asList(
new Parameter().setName("ParameterInt16").setType(PropertyProvider.nameInt16)))
.setReturnType(
new ReturnType().setType(EntityTypeProvider.nameETTwoKeyTwoPrim))
);
- } else if (actionName.equals(nameUARTETCollAllPrimParam)) {
+ } else if (actionName.equals(nameUARTESParam)) {
return Arrays.asList(
- new Action().setName("UARTETCollAllPrimParam")
+ new Action().setName("UARTESParam")
.setParameters(Arrays.asList(
new Parameter().setName("ParameterInt16").setType(PropertyProvider.nameInt16)))
-
.setReturnType(
- new ReturnType().setType(EntityTypeProvider.nameETCollAllPrim).setCollection(true))
+ new ReturnType().setType(EntityTypeProvider.nameETKeyNav).setCollection(true))
);
} else if (actionName.equals(nameBAETTwoKeyNavRTETTwoKeyNav)) {
return Arrays.asList(
new Action().setName("BAETTwoKeyNavRTETTwoKeyNav")
.setParameters(Arrays.asList(
- new Parameter().setName("ParameterETTwoKeyNav").setType(EntityTypeProvider.nameETTwoKeyNav)))
+ new Parameter().setName("ParameterETTwoKeyNav").setType(EntityTypeProvider.nameETTwoKeyNav)
+ .setNullable(false)))
.setBound(true)
.setReturnType(
new ReturnType().setType(EntityTypeProvider.nameETTwoKeyNav))
,
new Action().setName("BAETTwoKeyNavRTETTwoKeyNav")
.setParameters(Arrays.asList(
- new Parameter().setName("ParameterETKeyNav").setType(EntityTypeProvider.nameETKeyNav)))
+ new Parameter().setName("ParameterETKeyNav").setType(EntityTypeProvider.nameETKeyNav)
+ .setNullable(false)))
.setBound(true)
.setReturnType(
new ReturnType().setType(EntityTypeProvider.nameETTwoKeyNav))
@@ -136,8 +141,10 @@ public class ActionProvider {
} else if (actionName.equals(nameBAESAllPrimRTETAllPrim)) {
return Arrays.asList(
new Action().setName("BAESAllPrimRTETAllPrim")
- .setParameters(Arrays.asList(
- new Parameter().setName("ParameterESAllPrim").setType(EntityTypeProvider.nameETAllPrim).setCollection(true)))
+ .setParameters(
+ Arrays.asList(
+ new Parameter().setName("ParameterESAllPrim").setType(EntityTypeProvider.nameETAllPrim)
+ .setCollection(true).setNullable(false)))
.setBound(true)
.setReturnType(
new ReturnType().setType(EntityTypeProvider.nameETAllPrim))
@@ -146,8 +153,10 @@ public class ActionProvider {
} else if (actionName.equals(nameBAESTwoKeyNavRTESTwoKeyNav)) {
return Arrays.asList(
new Action().setName("BAESTwoKeyNavRTESTwoKeyNav")
- .setParameters(Arrays.asList(
- new Parameter().setName("ParameterETTwoKeyNav").setType(EntityTypeProvider.nameETTwoKeyNav).setCollection(true)))
+ .setParameters(
+ Arrays.asList(
+ new Parameter().setName("ParameterETTwoKeyNav").setType(EntityTypeProvider.nameETTwoKeyNav)
+ .setCollection(true).setNullable(false)))
.setBound(true)
.setReturnType(
new ReturnType().setType(EntityTypeProvider.nameETTwoKeyNav).setCollection(true))
@@ -157,7 +166,8 @@ public class ActionProvider {
return Arrays.asList(
new Action().setName("BAETBaseTwoKeyNavRTETBaseTwoKeyNav")
.setParameters(Arrays.asList(
- new Parameter().setName("ParameterETTwoKeyNav").setType(EntityTypeProvider.nameETBaseTwoKeyNav)))
+ new Parameter().setName("ParameterETTwoKeyNav").setType(EntityTypeProvider.nameETBaseTwoKeyNav)
+ .setNullable(false)))
.setBound(true)
.setReturnType(
new ReturnType().setType(EntityTypeProvider.nameETTwoKeyNav))
@@ -166,8 +176,10 @@ public class ActionProvider {
} else if (actionName.equals(nameBAETTwoBaseTwoKeyNavRTETBaseTwoKeyNav)) {
return Arrays.asList(
new Action().setName("BAETTwoBaseTwoKeyNavRTETBaseTwoKeyNav")
- .setParameters(Arrays.asList(
- new Parameter().setName("ParameterETTwoBaseTwoKeyNav").setType(EntityTypeProvider.nameETTwoBaseTwoKeyNav)))
+ .setParameters(
+ Arrays.asList(
+ new Parameter().setName("ParameterETTwoBaseTwoKeyNav").setType(
+ EntityTypeProvider.nameETTwoBaseTwoKeyNav).setNullable(false)))
.setBound(true)
.setReturnType(
new ReturnType().setType(EntityTypeProvider.nameETBaseTwoKeyNav))
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6a3a4a1d/lib/server-core/src/test/java/org/apache/olingo/server/core/testutil/techprovider/ComplexTypeProvider.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/testutil/techprovider/ComplexTypeProvider.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/testutil/techprovider/ComplexTypeProvider.java
index 3eaf86f..2fcbec2 100644
--- a/lib/server-core/src/test/java/org/apache/olingo/server/core/testutil/techprovider/ComplexTypeProvider.java
+++ b/lib/server-core/src/test/java/org/apache/olingo/server/core/testutil/techprovider/ComplexTypeProvider.java
@@ -30,14 +30,19 @@ public class ComplexTypeProvider {
public static final FullQualifiedName nameCTAllPrim = new FullQualifiedName(SchemaProvider.nameSpace, "CTAllPrim");
public static final FullQualifiedName nameCTBase = new FullQualifiedName(SchemaProvider.nameSpace, "CTBase");
- public static final FullQualifiedName nameCTBasePrimCompNav = new FullQualifiedName(SchemaProvider.nameSpace, "CTBasePrimCompNav");
- public static final FullQualifiedName nameCTCollAllPrim = new FullQualifiedName(SchemaProvider.nameSpace, "CTCollAllPrim");
- public static final FullQualifiedName nameCTCompCollComp = new FullQualifiedName(SchemaProvider.nameSpace, "CTCompCollComp");
+ public static final FullQualifiedName nameCTBasePrimCompNav = new FullQualifiedName(SchemaProvider.nameSpace,
+ "CTBasePrimCompNav");
+ public static final FullQualifiedName nameCTCollAllPrim = new FullQualifiedName(SchemaProvider.nameSpace,
+ "CTCollAllPrim");
+ public static final FullQualifiedName nameCTCompCollComp = new FullQualifiedName(SchemaProvider.nameSpace,
+ "CTCompCollComp");
public static final FullQualifiedName nameCTCompComp = new FullQualifiedName(SchemaProvider.nameSpace, "CTCompComp");
public static final FullQualifiedName nameCTCompNav = new FullQualifiedName(SchemaProvider.nameSpace, "CTCompNav");
- public static final FullQualifiedName nameCTMixPrimCollComp = new FullQualifiedName(SchemaProvider.nameSpace, "CTMixPrimCollComp");
- public static final FullQualifiedName nameCTNavFiveProp = new FullQualifiedName(SchemaProvider.nameSpace, "CTNavFiveProp");
+ public static final FullQualifiedName nameCTMixPrimCollComp = new FullQualifiedName(SchemaProvider.nameSpace,
+ "CTMixPrimCollComp");
+ public static final FullQualifiedName nameCTNavFiveProp = new FullQualifiedName(SchemaProvider.nameSpace,
+ "CTNavFiveProp");
public static final FullQualifiedName nameCTPrim = new FullQualifiedName(SchemaProvider.nameSpace, "CTPrim");
public static final FullQualifiedName nameCTPrimComp = new FullQualifiedName(SchemaProvider.nameSpace, "CTPrimComp");
public static final FullQualifiedName nameCTPrimEnum = new FullQualifiedName(SchemaProvider.nameSpace, "CTPrimEnum");
@@ -88,7 +93,8 @@ public class ComplexTypeProvider {
} else if (complexTypeName.equals(nameCTCompNav)) {
return new ComplexType()
.setName("CTCompNav")
- .setProperties(Arrays.asList(PropertyProvider.propertyInt16, PropertyProvider.propertyComplex_CTNavFiveProp));
+ .setProperties(Arrays.asList(PropertyProvider.propertyString,
+ PropertyProvider.propertyComplex_CTNavFiveProp));
} else if (complexTypeName.equals(nameCTMixPrimCollComp)) {
return new ComplexType()
@@ -112,7 +118,7 @@ public class ComplexTypeProvider {
.setBaseType(nameCTBase)
.setProperties(Arrays.asList(
new Property()
- .setName("AdditionalPropString")
+ .setName("AdditionalPropString2")
.setType(new FullQualifiedName("Edm", "String"))));
} else if (complexTypeName.equals(nameCTCompComp)) {
@@ -122,7 +128,7 @@ public class ComplexTypeProvider {
} else if (complexTypeName.equals(nameCTCompCollComp)) {
return new ComplexType()
- .setName("CTCompComp")
+ .setName("CTCompCollComp")
.setProperties(Arrays.asList(PropertyProvider.collPropertyComplex_CTTwoPrim));
} else if (complexTypeName.equals(nameCTPrimComp)) {
@@ -151,7 +157,9 @@ public class ComplexTypeProvider {
.setBaseType(nameCTPrimComp)
.setNavigationProperties(Arrays.asList(
PropertyProvider.collectionNavPropertyETTwoKeyNavMany_ETTwoKeyNav,
- PropertyProvider.collectionNavPropertyETTwoKeyNavOne_ETTwoKeyNav));
+ PropertyProvider.collectionNavPropertyETTwoKeyNavOne_ETTwoKeyNav,
+ PropertyProvider.navPropertyETKeyNavOne_ETKeyNav,
+ PropertyProvider.collectionNavPropertyETKeyNavMany_ETKeyNav));
} else if (complexTypeName.equals(nameCTPrimEnum)) {
return new ComplexType()
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6a3a4a1d/lib/server-core/src/test/java/org/apache/olingo/server/core/testutil/techprovider/ContainerProvider.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/testutil/techprovider/ContainerProvider.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/testutil/techprovider/ContainerProvider.java
index 62b11e2..5b92317 100644
--- a/lib/server-core/src/test/java/org/apache/olingo/server/core/testutil/techprovider/ContainerProvider.java
+++ b/lib/server-core/src/test/java/org/apache/olingo/server/core/testutil/techprovider/ContainerProvider.java
@@ -211,7 +211,7 @@ public class ContainerProvider {
} else if (name.equals("AIRTETCollAllPrimParam")) {
return new ActionImport()
.setName("AIRTETCollAllPrimParam")
- .setAction(ActionProvider.nameUARTETCollAllPrimParam);
+ .setAction(ActionProvider.nameUARTESParam);
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6a3a4a1d/lib/server-core/src/test/java/org/apache/olingo/server/core/testutil/techprovider/EdmTechProvider.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/testutil/techprovider/EdmTechProvider.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/testutil/techprovider/EdmTechProvider.java
index 45a35c8..93e9c9d 100644
--- a/lib/server-core/src/test/java/org/apache/olingo/server/core/testutil/techprovider/EdmTechProvider.java
+++ b/lib/server-core/src/test/java/org/apache/olingo/server/core/testutil/techprovider/EdmTechProvider.java
@@ -71,54 +71,66 @@ public class EdmTechProvider extends EdmProvider {
);
}
+ @Override
public EnumType getEnumType(final FullQualifiedName enumTypeName) throws ODataException {
return enumTypeProvider.getEnumType(enumTypeName);
}
+ @Override
public TypeDefinition getTypeDefinition(final FullQualifiedName typeDefinitionName) throws ODataException {
return typeDefinitionProvider.getTypeDefinition(typeDefinitionName);
}
+ @Override
public EntityType getEntityType(final FullQualifiedName entityTypeName) throws ODataException {
return entityTypeProvider.getEntityType(entityTypeName);
}
+ @Override
public ComplexType getComplexType(final FullQualifiedName complexTypeName) throws ODataException {
return complexTypeProvider.getComplexType(complexTypeName);
}
+ @Override
public List<Action> getActions(final FullQualifiedName actionName) throws ODataException {
return actionProvider.getActions(actionName);
}
+ @Override
public List<Function> getFunctions(final FullQualifiedName functionName) throws ODataException {
return functionProvider.getFunctions(functionName);
}
+ @Override
public Term getTerm(final FullQualifiedName termName) throws ODataException {
return null;
}
+ @Override
public EntitySet getEntitySet(final FullQualifiedName entityContainer, final String entitySetName)
throws ODataException {
return containerProvider.getEntitySet(entityContainer, entitySetName);
}
+ @Override
public Singleton getSingleton(final FullQualifiedName entityContainer, final String singletonName)
throws ODataException {
return containerProvider.getSingleton(entityContainer, singletonName);
}
+ @Override
public ActionImport getActionImport(final FullQualifiedName entityContainer, final String actionImportName)
throws ODataException {
return containerProvider.getActionImport(entityContainer, actionImportName);
}
+ @Override
public FunctionImport getFunctionImport(final FullQualifiedName entityContainer, final String functionImportName)
throws ODataException {
return containerProvider.getFunctionImport(entityContainer, functionImportName);
}
+ @Override
public List<Schema> getSchemas() throws ODataException {
return schemaProvider.getSchemas();
}