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/10/27 17:24:50 UTC
olingo-odata4 git commit: [OLINGO-587] Fix json title,
client and add tests
Repository: olingo-odata4
Updated Branches:
refs/heads/master fa084ac98 -> 2ceacd87f
[OLINGO-587] Fix json title, client and add tests
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/2ceacd87
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/2ceacd87
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/2ceacd87
Branch: refs/heads/master
Commit: 2ceacd87f7bf6f16d2cb882de11c382b3c26a684
Parents: fa084ac
Author: Christian Amend <ch...@sap.com>
Authored: Tue Oct 27 17:24:13 2015 +0100
Committer: Christian Amend <ch...@sap.com>
Committed: Tue Oct 27 17:24:13 2015 +0100
----------------------------------------------------------------------
.../client/api/data/ServiceDocumentItem.java | 2 +
.../data/JSONServiceDocumentDeserializer.java | 18 +++--
.../core/data/ServiceDocumentItemImpl.java | 79 ++++++++++++++------
.../data/XMLServiceDocumentDeserializer.java | 21 ++++--
.../apache/olingo/commons/api/Constants.java | 2 +
.../json/ServiceDocumentJsonSerializer.java | 2 +-
.../xml/ServiceDocumentXmlSerializer.java | 1 +
.../xml/ServiceDocumentXmlSerializerTest.java | 6 +-
.../tecsvc/provider/ContainerProvider.java | 3 +
.../serializer/json/ServiceDocumentTest.java | 3 +
10 files changed, 95 insertions(+), 42 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/2ceacd87/lib/client-api/src/main/java/org/apache/olingo/client/api/data/ServiceDocumentItem.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/data/ServiceDocumentItem.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/data/ServiceDocumentItem.java
index 31cca94..382d101 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/data/ServiceDocumentItem.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/data/ServiceDocumentItem.java
@@ -23,5 +23,7 @@ public interface ServiceDocumentItem {
String getName();
String getUrl();
+
+ String getTitle();
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/2ceacd87/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONServiceDocumentDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONServiceDocumentDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONServiceDocumentDeserializer.java
index 717639d..5883aa5 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONServiceDocumentDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONServiceDocumentDeserializer.java
@@ -1,18 +1,18 @@
/*
* 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.
*/
@@ -74,6 +74,10 @@ public class JSONServiceDocumentDeserializer extends JsonDeserializer {
final ServiceDocumentItemImpl item = new ServiceDocumentItemImpl();
item.setName(node.get("name").asText());
+ JsonNode titleNode = node.get("title");
+ if (titleNode != null) {
+ item.setTitle(titleNode.asText());
+ }
item.setUrl(node.get("url").asText());
final String kind = node.has("kind") ? node.get("kind").asText() : null;
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/2ceacd87/lib/client-core/src/main/java/org/apache/olingo/client/core/data/ServiceDocumentItemImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/ServiceDocumentItemImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/ServiceDocumentItemImpl.java
index fe6b59b..520e2cf 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/ServiceDocumentItemImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/ServiceDocumentItemImpl.java
@@ -1,18 +1,18 @@
/*
* 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.
*/
@@ -26,6 +26,8 @@ public final class ServiceDocumentItemImpl implements ServiceDocumentItem {
private String url;
+ private String title;
+
@Override
public String getName() {
return name;
@@ -45,35 +47,66 @@ public final class ServiceDocumentItemImpl implements ServiceDocumentItem {
}
@Override
- public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
- if (o == null || getClass() != o.getClass()) {
- return false;
- }
-
- ServiceDocumentItemImpl that = (ServiceDocumentItemImpl) o;
-
- if (name != null ? !name.equals(that.name) : that.name != null) {
- return false;
- }
- return !(url != null ? !url.equals(that.url) : that.url != null);
+ public String getTitle() {
+ return title;
+ }
+ public void setTitle(String title) {
+ this.title = title;
}
@Override
public int hashCode() {
- int result = name != null ? name.hashCode() : 0;
- result = 31 * result + (url != null ? url.hashCode() : 0);
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((name == null) ? 0 : name.hashCode());
+ result = prime * result + ((title == null) ? 0 : title.hashCode());
+ result = prime * result + ((url == null) ? 0 : url.hashCode());
return result;
}
@Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (!(obj instanceof ServiceDocumentItemImpl)) {
+ return false;
+ }
+ ServiceDocumentItemImpl other = (ServiceDocumentItemImpl) obj;
+ if (name == null) {
+ if (other.name != null) {
+ return false;
+ }
+ } else if (!name.equals(other.name)) {
+ return false;
+ }
+ if (title == null) {
+ if (other.title != null) {
+ return false;
+ }
+ } else if (!title.equals(other.title)) {
+ return false;
+ }
+ if (url == null) {
+ if (other.url != null) {
+ return false;
+ }
+ } else if (!url.equals(other.url)) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
public String toString() {
return "ServiceDocumentItemImpl{" +
"name='" + name + '\'' +
", url='" + url + '\'' +
+ ", title='" + title + '\'' +
'}';
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/2ceacd87/lib/client-core/src/main/java/org/apache/olingo/client/core/data/XMLServiceDocumentDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/XMLServiceDocumentDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/XMLServiceDocumentDeserializer.java
index 70f76a0..5bb3fe9 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/XMLServiceDocumentDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/XMLServiceDocumentDeserializer.java
@@ -1,18 +1,18 @@
/*
* 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.
*/
@@ -61,12 +61,17 @@ public class XMLServiceDocumentDeserializer extends JsonDeserializer {
if (token == JsonToken.FIELD_NAME) {
if ("href".equals(jp.getCurrentName())) {
element.setUrl(jp.nextTextValue());
+ } else if ("name".equals(jp.getCurrentName())) {
+ element.setName(jp.nextTextValue());
} else if ("title".equals(jp.getCurrentName())) {
- element.setName(getName(jp));
+ element.setTitle(getName(jp));
}
}
}
+ if (element.getName() == null) {
+ element.setName(element.getTitle());
+ }
return element;
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/2ceacd87/lib/commons-api/src/main/java/org/apache/olingo/commons/api/Constants.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/Constants.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/Constants.java
index beff60d..88b3d86 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/Constants.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/Constants.java
@@ -104,6 +104,8 @@ public interface Constants {
String ATTR_METADATA = "metadata";
String ATTR_HREF = "href";
+
+ String ATTR_NAME = "name";
String ATTR_REF = "ref";
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/2ceacd87/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/ServiceDocumentJsonSerializer.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/ServiceDocumentJsonSerializer.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/ServiceDocumentJsonSerializer.java
index a9793b9..9625a4c 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/ServiceDocumentJsonSerializer.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/ServiceDocumentJsonSerializer.java
@@ -81,7 +81,7 @@ public class ServiceDocumentJsonSerializer {
private void writeEntitySets(final JsonGenerator gen, final EdmEntityContainer container) throws IOException {
for (EdmEntitySet edmEntitySet : container.getEntitySets()) {
if (edmEntitySet.isIncludeInServiceDocument()) {
- writeElement(gen, null, edmEntitySet.getName(), edmEntitySet.getName(), edmEntitySet.getName());
+ writeElement(gen, null, edmEntitySet.getName(), edmEntitySet.getName(), edmEntitySet.getTitle());
}
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/2ceacd87/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/ServiceDocumentXmlSerializer.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/ServiceDocumentXmlSerializer.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/ServiceDocumentXmlSerializer.java
index a5490e6..19d132b 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/ServiceDocumentXmlSerializer.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/ServiceDocumentXmlSerializer.java
@@ -126,6 +126,7 @@ public class ServiceDocumentXmlSerializer {
writer.writeStartElement(METADATA, kind, NS_METADATA);
}
writer.writeAttribute(Constants.ATTR_HREF, name);
+ writer.writeAttribute(METADATA, NS_METADATA, Constants.ATTR_NAME , name);
writer.writeStartElement(ATOM, Constants.ATOM_ELEM_TITLE, NS_ATOM);
if (title != null) {
writer.writeCharacters(title);
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/2ceacd87/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/xml/ServiceDocumentXmlSerializerTest.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/xml/ServiceDocumentXmlSerializerTest.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/xml/ServiceDocumentXmlSerializerTest.java
index 1fdb256..846efc5 100644
--- a/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/xml/ServiceDocumentXmlSerializerTest.java
+++ b/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/xml/ServiceDocumentXmlSerializerTest.java
@@ -87,13 +87,13 @@ public class ServiceDocumentXmlSerializerTest {
+ "metadata:context=\"http://host/svc/$metadata\">"
+ "<app:workspace>"
+ "<atom:title>org.olingo.container</atom:title>"
- + "<app:collection href=\"ESAllPrim\">"
+ + "<app:collection href=\"ESAllPrim\" metadata:name=\"ESAllPrim\">"
+ "<atom:title>ESAllPrim</atom:title>"
+ "</app:collection>"
- + "<metadata:function-import href=\"FINRTInt16\">"
+ + "<metadata:function-import href=\"FINRTInt16\" metadata:name=\"FINRTInt16\">"
+ "<atom:title>FINRTInt16</atom:title>"
+ "</metadata:function-import>"
- + "<metadata:singleton href=\"SI\">"
+ + "<metadata:singleton href=\"SI\" metadata:name=\"SI\">"
+ "<atom:title>SI</atom:title>"
+ "</metadata:singleton>"
+ "</app:workspace>"
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/2ceacd87/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/ContainerProvider.java
----------------------------------------------------------------------
diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/ContainerProvider.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/ContainerProvider.java
index f5fb038..9f91763 100644
--- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/ContainerProvider.java
+++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/ContainerProvider.java
@@ -164,6 +164,7 @@ public class ContainerProvider {
return new CsdlEntitySet()
.setName("ESAllPrim")
.setType(EntityTypeProvider.nameETAllPrim)
+ .setTitle("All PropertyTypes EntitySet")
.setNavigationPropertyBindings(Arrays
.asList(new CsdlNavigationPropertyBinding().setPath("NavPropertyETTwoPrimOne").setTarget("ESTwoPrim"),
new CsdlNavigationPropertyBinding().setPath("NavPropertyETTwoPrimMany").setTarget("ESTwoPrim")))
@@ -658,6 +659,7 @@ public class ContainerProvider {
if (name.equals("FINRTInt16")) {
return new CsdlFunctionImport()
.setName(name)
+ .setTitle("Simple FunctionImport")
.setFunction(FunctionProvider.nameUFNRTInt16)
.setIncludeInServiceDocument(true);
@@ -804,6 +806,7 @@ public class ContainerProvider {
if (name.equals("SI")) {
return new CsdlSingleton()
.setName("SI")
+ .setTitle("Simple Singelton")
.setType(EntityTypeProvider.nameETTwoPrim);
} else if (name.equals("SINav")) {
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/2ceacd87/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ServiceDocumentTest.java
----------------------------------------------------------------------
diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ServiceDocumentTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ServiceDocumentTest.java
index 3b5f58f..2a46711 100644
--- a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ServiceDocumentTest.java
+++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ServiceDocumentTest.java
@@ -67,17 +67,20 @@ public class ServiceDocumentTest {
metadata.getServiceMetadataETagSupport().getMetadataETag().replace("\"", "\\\"")));
assertTrue(jsonString.contains("ESAllPrim"));
+ assertTrue(jsonString.contains("All PropertyTypes EntitySet"));
assertTrue(jsonString.contains("ESCollAllPrim"));
assertTrue(jsonString.contains("ESKeyNavCont"));
assertFalse(jsonString.contains("ESInvisible"));
assertTrue(jsonString.contains("FINRTInt16"));
+ assertTrue(jsonString.contains("Simple FunctionImport"));
assertTrue(jsonString.contains("FINRTCollETMixPrimCollCompTwoParam"));
assertTrue(jsonString.contains("FICRTCollESKeyNavContParam"));
assertFalse(jsonString.contains("FINInvisibleRTInt16"));
assertTrue(jsonString.contains("FunctionImport"));
assertTrue(jsonString.contains("SI"));
+ assertTrue(jsonString.contains("Simple Singelton"));
assertTrue(jsonString.contains("SINav"));
assertTrue(jsonString.contains("SIMedia"));
assertTrue(jsonString.contains("Singleton"));