You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by sk...@apache.org on 2014/04/01 11:00:54 UTC
[42/52] [abbrv] [OLINGO-205,
OLINGO-200] provided atom v4 deserialization for entity type/set +
entity set request
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/ODataBasicRequest.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/ODataBasicRequest.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/ODataBasicRequest.java
index f64b233..7ba38f8 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/ODataBasicRequest.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/ODataBasicRequest.java
@@ -20,6 +20,7 @@ package org.apache.olingo.client.api.communication.request;
import java.util.concurrent.Future;
import org.apache.olingo.client.api.communication.response.ODataResponse;
+import org.apache.olingo.client.api.format.Format;
/**
* Basic OData request.
@@ -27,7 +28,7 @@ import org.apache.olingo.client.api.communication.response.ODataResponse;
* @param <V> OData response type corresponding to the request implementation.
* @param <T> Accepted content-type formats by the request in object.
*/
-public interface ODataBasicRequest<V extends ODataResponse, T extends Enum<T>> extends ODataRequest {
+public interface ODataBasicRequest<V extends ODataResponse, T extends Format> extends ODataRequest {
/**
* Request execute.
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/retrieve/ODataRetrieveRequest.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/retrieve/ODataRetrieveRequest.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/retrieve/ODataRetrieveRequest.java
index edabb96..14f907e 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/retrieve/ODataRetrieveRequest.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/retrieve/ODataRetrieveRequest.java
@@ -20,9 +20,10 @@ package org.apache.olingo.client.api.communication.request.retrieve;
import org.apache.olingo.client.api.communication.request.ODataBasicRequest;
import org.apache.olingo.client.api.communication.response.ODataRetrieveResponse;
+import org.apache.olingo.client.api.format.Format;
/**
* This is an abstract representation of an OData retrieve query request returning one or more result item.
*/
-public interface ODataRetrieveRequest<V, T extends Enum<T>> extends ODataBasicRequest<ODataRetrieveResponse<V>, T> {
+public interface ODataRetrieveRequest<V, T extends Format> extends ODataBasicRequest<ODataRetrieveResponse<V>, T> {
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataLinkType.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataLinkType.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataLinkType.java
index 6702c00..179f9cc 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataLinkType.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataLinkType.java
@@ -20,7 +20,6 @@ package org.apache.olingo.client.api.domain;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.entity.ContentType;
-import org.apache.olingo.client.api.format.ODataPubFormat;
import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
/**
@@ -31,11 +30,11 @@ public enum ODataLinkType {
/**
* Entity navigation link.
*/
- ENTITY_NAVIGATION(ODataPubFormat.ATOM + ";type=entry"),
+ ENTITY_NAVIGATION(ContentType.APPLICATION_ATOM_XML.getMimeType() + ";type=entry"),
/**
* Entity set navigation link.
*/
- ENTITY_SET_NAVIGATION(ODataPubFormat.ATOM + ";type=feed"),
+ ENTITY_SET_NAVIGATION(ContentType.APPLICATION_ATOM_XML.getMimeType() + ";type=feed"),
/**
* Association link.
*/
@@ -57,7 +56,8 @@ public enum ODataLinkType {
}
/**
- * Gets <code>LinkType</code> instance from the given rel and type.
+ * Gets
+ * <code>LinkType</code> instance from the given rel and type.
*
* @param client OData client.
* @param rel rel.
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/lib/client-api/src/main/java/org/apache/olingo/client/api/format/Format.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/format/Format.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/format/Format.java
new file mode 100644
index 0000000..1d52664
--- /dev/null
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/format/Format.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.client.api.format;
+
+import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
+
+public interface Format {
+
+ String toString(ODataServiceVersion version);
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/lib/client-api/src/main/java/org/apache/olingo/client/api/format/ODataFormat.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/format/ODataFormat.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/format/ODataFormat.java
index 2ee704b..8f52ea3 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/format/ODataFormat.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/format/ODataFormat.java
@@ -19,11 +19,12 @@
package org.apache.olingo.client.api.format;
import org.apache.http.entity.ContentType;
+import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
/**
* Available formats to be used in various contexts.
*/
-public enum ODataFormat {
+public enum ODataFormat implements Format{
/**
* JSON format with no metadata.
@@ -94,4 +95,9 @@ public enum ODataFormat {
return result;
}
+
+ @Override
+ public String toString(final ODataServiceVersion version) {
+ return this.toString();
+ }
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/lib/client-api/src/main/java/org/apache/olingo/client/api/format/ODataMediaFormat.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/format/ODataMediaFormat.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/format/ODataMediaFormat.java
index 353edc4..5d49ddb 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/format/ODataMediaFormat.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/format/ODataMediaFormat.java
@@ -19,11 +19,12 @@
package org.apache.olingo.client.api.format;
import org.apache.http.entity.ContentType;
+import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
/**
* Available formats for media.
*/
-public enum ODataMediaFormat {
+public enum ODataMediaFormat implements Format{
CHARSET_PARAMETER("charset"),
MEDIA_TYPE_WILDCARD("*"),
@@ -68,4 +69,9 @@ public enum ODataMediaFormat {
return result;
}
+
+ @Override
+ public String toString(final ODataServiceVersion version) {
+ return this.toString();
+ }
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/lib/client-api/src/main/java/org/apache/olingo/client/api/format/ODataPubFormat.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/format/ODataPubFormat.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/format/ODataPubFormat.java
index 62e5322..aea294f 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/format/ODataPubFormat.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/format/ODataPubFormat.java
@@ -18,34 +18,49 @@
*/
package org.apache.olingo.client.api.format;
+import java.util.EnumMap;
import org.apache.http.entity.ContentType;
+import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
/**
* Available formats for AtomPub exchange.
*/
-public enum ODataPubFormat {
+public enum ODataPubFormat implements Format {
/**
* JSON format with no metadata.
*/
- JSON_NO_METADATA(ContentType.APPLICATION_JSON.getMimeType() + ";odata=nometadata"),
+ JSON_NO_METADATA(),
/**
* JSON format with minimal metadata (default).
*/
- JSON(ContentType.APPLICATION_JSON.getMimeType() + ";odata=minimalmetadata"),
+ JSON(),
/**
* JSON format with no metadata.
*/
- JSON_FULL_METADATA(ContentType.APPLICATION_JSON.getMimeType() + ";odata=fullmetadata"),
+ JSON_FULL_METADATA(),
/**
* Atom format.
*/
- ATOM(ContentType.APPLICATION_ATOM_XML.getMimeType());
+ ATOM();
- private final String format;
+ final static EnumMap<ODataServiceVersion, EnumMap<ODataPubFormat, String>> formatPerVersion =
+ new EnumMap<ODataServiceVersion, EnumMap<ODataPubFormat, String>>(ODataServiceVersion.class);
- ODataPubFormat(final String format) {
- this.format = format;
+ static {
+ final EnumMap<ODataPubFormat, String> v3 = new EnumMap<ODataPubFormat, String>(ODataPubFormat.class);
+ v3.put(JSON_NO_METADATA, ContentType.APPLICATION_JSON.getMimeType() + ";odata=nometadata");
+ v3.put(JSON, ContentType.APPLICATION_JSON.getMimeType() + ";odata=minimalmetadata");
+ v3.put(JSON_FULL_METADATA, ContentType.APPLICATION_JSON.getMimeType() + ";odata=fullmetadata");
+ v3.put(ATOM, ContentType.APPLICATION_ATOM_XML.getMimeType());
+ formatPerVersion.put(ODataServiceVersion.V30, v3);
+
+ final EnumMap<ODataPubFormat, String> v4 = new EnumMap<ODataPubFormat, String>(ODataPubFormat.class);
+ v4.put(JSON_NO_METADATA, ContentType.APPLICATION_JSON.getMimeType() + ";odata.metadata=none");
+ v4.put(JSON, ContentType.APPLICATION_JSON.getMimeType() + ";odata.metadata=minimal");
+ v4.put(JSON_FULL_METADATA, ContentType.APPLICATION_JSON.getMimeType() + ";odata.metadata=full");
+ v4.put(ATOM, ContentType.APPLICATION_ATOM_XML.getMimeType());
+ formatPerVersion.put(ODataServiceVersion.V40, v4);
}
/**
@@ -54,8 +69,17 @@ public enum ODataPubFormat {
* @return format as a string.
*/
@Override
+ public String toString(final ODataServiceVersion version) {
+ if (version.ordinal() < ODataServiceVersion.V30.ordinal()) {
+ throw new IllegalArgumentException("Unsupported version " + version);
+ }
+
+ return ODataPubFormat.formatPerVersion.get(version).get(this);
+ }
+
+ @Override
public String toString() {
- return format;
+ throw new UnsupportedOperationException();
}
/**
@@ -72,7 +96,7 @@ public enum ODataPubFormat {
final String[] parts = format.split(";");
_format.append(parts[0].trim());
if (ContentType.APPLICATION_JSON.getMimeType().equals(parts[0].trim())) {
- if (parts.length > 1 && parts[1].startsWith("odata=")) {
+ if (parts.length > 1 && parts[1].startsWith("odata")) {
_format.append(';').append(parts[1].trim());
} else {
result = ODataPubFormat.JSON;
@@ -82,7 +106,8 @@ public enum ODataPubFormat {
if (result == null) {
final String candidate = _format.toString();
for (ODataPubFormat value : values()) {
- if (candidate.equals(value.toString())) {
+ if (candidate.equals(value.toString(ODataServiceVersion.V30))
+ || candidate.equals(value.toString(ODataServiceVersion.V40))) {
result = value;
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/lib/client-api/src/main/java/org/apache/olingo/client/api/format/ODataValueFormat.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/format/ODataValueFormat.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/format/ODataValueFormat.java
index b04ce7d..818b104 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/format/ODataValueFormat.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/format/ODataValueFormat.java
@@ -19,11 +19,12 @@
package org.apache.olingo.client.api.format;
import org.apache.http.entity.ContentType;
+import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
/**
* Available formats for property values.
*/
-public enum ODataValueFormat {
+public enum ODataValueFormat implements Format{
/**
* Application octet stream.
@@ -73,4 +74,9 @@ public enum ODataValueFormat {
return result;
}
+
+ @Override
+ public String toString(final ODataServiceVersion version) {
+ return this.toString();
+ }
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AbstractODataBasicRequest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AbstractODataBasicRequest.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AbstractODataBasicRequest.java
index 307cdc9..8cd5819 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AbstractODataBasicRequest.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AbstractODataBasicRequest.java
@@ -31,6 +31,7 @@ import org.apache.olingo.client.api.communication.request.ODataBasicRequest;
import org.apache.olingo.client.api.communication.request.ODataStreamer;
import org.apache.olingo.client.api.communication.request.batch.ODataBatchRequest;
import org.apache.olingo.client.api.communication.response.ODataResponse;
+import org.apache.olingo.client.api.format.Format;
import org.apache.olingo.client.api.http.HttpMethod;
/**
@@ -39,88 +40,87 @@ import org.apache.olingo.client.api.http.HttpMethod;
* @param <V> OData response type corresponding to the request implementation.
* @param <T> OData format being used.
*/
-public abstract class AbstractODataBasicRequest<V extends ODataResponse, T extends Enum<T>>
+public abstract class AbstractODataBasicRequest<V extends ODataResponse, T extends Format>
extends ODataRequestImpl<T>
implements ODataBasicRequest<V, T> {
- /**
- * Constructor.
- *
- * @param odataClient client instance getting this request
- * @param formatRef reference class for the format being used
- * @param method request method.
- * @param uri OData request URI.
- */
- public AbstractODataBasicRequest(final CommonODataClient odataClient,
- final Class<T> formatRef, final HttpMethod method, final URI uri) {
+ /**
+ * Constructor.
+ *
+ * @param odataClient client instance getting this request
+ * @param formatRef reference class for the format being used
+ * @param method request method.
+ * @param uri OData request URI.
+ */
+ public AbstractODataBasicRequest(final CommonODataClient odataClient,
+ final Class<T> formatRef, final HttpMethod method, final URI uri) {
- super(odataClient, formatRef, method, uri);
- }
+ super(odataClient, formatRef, method, uri);
+ }
- /**
- * {@inheritDoc}
- */
- @Override
- public void setFormat(final T format) {
- if (format != null) {
- setAccept(format.toString());
- setContentType(format.toString());
- }
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void setFormat(final T format) {
+ if (format != null) {
+ setAccept(format.toString(odataClient.getServiceVersion()));
+ setContentType(format.toString(odataClient.getServiceVersion()));
}
+ }
- /**
- * {@inheritDoc}
- */
- @Override
- public final Future<V> asyncExecute() {
- return odataClient.getConfiguration().getExecutor().submit(new Callable<V>() {
-
- @Override
- public V call() throws Exception {
- return execute();
- }
- });
- }
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public final Future<V> asyncExecute() {
+ return odataClient.getConfiguration().getExecutor().submit(new Callable<V>() {
+ @Override
+ public V call() throws Exception {
+ return execute();
+ }
+ });
+ }
- /**
- * Gets payload as an InputStream.
- *
- * @return InputStream for entire payload.
- */
- protected abstract InputStream getPayload();
+ /**
+ * Gets payload as an InputStream.
+ *
+ * @return InputStream for entire payload.
+ */
+ protected abstract InputStream getPayload();
- /**
- * Serializes the full request into the given batch request.
- *
- * @param req destination batch request.
- */
- public void batch(final ODataBatchRequest req) {
- batch(req, null);
- }
+ /**
+ * Serializes the full request into the given batch request.
+ *
+ * @param req destination batch request.
+ */
+ public void batch(final ODataBatchRequest req) {
+ batch(req, null);
+ }
- /**
- * Serializes the full request into the given batch request.
- * <p>
- * This method have to be used to serialize a changeset item with the specified contentId.
- *
- * @param req destination batch request.
- * @param contentId contentId of the changeset item.
- */
- public void batch(final ODataBatchRequest req, final String contentId) {
- try {
- req.rawAppend(toByteArray());
- if (StringUtils.isNotBlank(contentId)) {
- req.rawAppend((ODataBatchConstants.CHANGESET_CONTENT_ID_NAME + ": " + contentId).getBytes());
- req.rawAppend(ODataStreamer.CRLF);
- }
- req.rawAppend(ODataStreamer.CRLF);
+ /**
+ * Serializes the full request into the given batch request.
+ * <p>
+ * This method have to be used to serialize a changeset item with the specified contentId.
+ *
+ * @param req destination batch request.
+ * @param contentId contentId of the changeset item.
+ */
+ public void batch(final ODataBatchRequest req, final String contentId) {
+ try {
+ req.rawAppend(toByteArray());
+ if (StringUtils.isNotBlank(contentId)) {
+ req.rawAppend((ODataBatchConstants.CHANGESET_CONTENT_ID_NAME + ": " + contentId).getBytes());
+ req.rawAppend(ODataStreamer.CRLF);
+ }
+ req.rawAppend(ODataStreamer.CRLF);
- final InputStream payload = getPayload();
- if (payload != null) {
- req.rawAppend(IOUtils.toByteArray(getPayload()));
- }
- } catch (IOException e) {
- throw new IllegalStateException(e);
- }
+ final InputStream payload = getPayload();
+ if (payload != null) {
+ req.rawAppend(IOUtils.toByteArray(getPayload()));
+ }
+ } catch (IOException e) {
+ throw new IllegalStateException(e);
}
+ }
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/ODataRequestImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/ODataRequestImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/ODataRequestImpl.java
index d088e97..2e60a7d 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/ODataRequestImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/ODataRequestImpl.java
@@ -42,6 +42,10 @@ import org.apache.olingo.client.api.communication.header.ODataHeaderValues;
import org.apache.olingo.client.api.communication.header.ODataHeaders;
import org.apache.olingo.client.api.communication.request.ODataRequest;
import org.apache.olingo.client.api.communication.request.ODataStreamer;
+import org.apache.olingo.client.api.communication.request.batch.v3.BatchRequestFactory;
+import org.apache.olingo.client.api.communication.request.cud.v3.CUDRequestFactory;
+import org.apache.olingo.client.api.communication.request.invoke.v3.InvokeRequestFactory;
+import org.apache.olingo.client.api.communication.request.streamed.v3.StreamedRequestFactory;
import org.apache.olingo.client.api.communication.response.ODataResponse;
import org.apache.olingo.client.api.format.ODataMediaFormat;
import org.apache.olingo.client.api.format.ODataPubFormat;
@@ -51,6 +55,7 @@ import org.apache.olingo.client.api.http.HttpMethod;
import org.apache.olingo.client.core.data.JSONErrorImpl;
import org.apache.olingo.client.core.data.XMLErrorImpl;
import org.apache.olingo.client.api.data.ODataError;
+import org.apache.olingo.client.api.format.Format;
import org.apache.olingo.client.core.communication.header.ODataHeadersImpl;
import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
import org.slf4j.Logger;
@@ -66,7 +71,7 @@ import org.slf4j.LoggerFactory;
* @see InvokeRequestFactory
* @see StreamedRequestFactory
*/
-public class ODataRequestImpl<T extends Enum<T>> implements ODataRequest {
+public class ODataRequestImpl<T extends Format> implements ODataRequest {
/**
* Logger.
@@ -251,7 +256,7 @@ public class ODataRequestImpl<T extends Enum<T>> implements ODataRequest {
@Override
public String getAccept() {
final String acceptHead = odataHeaders.getHeader(HeaderName.accept);
- return StringUtils.isBlank(acceptHead) ? getDefaultFormat().toString() : acceptHead;
+ return StringUtils.isBlank(acceptHead) ? getDefaultFormat().toString(odataClient.getServiceVersion()) : acceptHead;
}
/**
@@ -284,7 +289,8 @@ public class ODataRequestImpl<T extends Enum<T>> implements ODataRequest {
@Override
public String getContentType() {
final String contentTypeHead = odataHeaders.getHeader(HeaderName.contentType);
- return StringUtils.isBlank(contentTypeHead) ? getDefaultFormat().toString() : contentTypeHead;
+ return StringUtils.isBlank(contentTypeHead)
+ ? getDefaultFormat().toString(odataClient.getServiceVersion()) : contentTypeHead;
}
/**
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/ODataInvokeRequestImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/ODataInvokeRequestImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/ODataInvokeRequestImpl.java
index c6355e4..abef76c 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/ODataInvokeRequestImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/ODataInvokeRequestImpl.java
@@ -100,7 +100,7 @@ public class ODataInvokeRequestImpl<T extends ODataInvokeResult>
public void setFormat(final ODataPubFormat format) {
final String _format = (reference.isAssignableFrom(ODataProperty.class) && format == ODataPubFormat.ATOM)
? ODataFormat.XML.toString()
- : format.toString();
+ : format.toString(odataClient.getServiceVersion());
setAccept(_format);
setContentType(_format);
}
@@ -163,7 +163,7 @@ public class ODataInvokeRequestImpl<T extends ODataInvokeResult>
} else if (this.method == HttpMethod.POST) {
((HttpPost) request).setEntity(URIUtils.buildInputStreamEntity(odataClient, input));
- setContentType(ODataPubFormat.JSON.toString());
+ setContentType(ODataPubFormat.JSON.toString(odataClient.getServiceVersion()));
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/AbstractODataRetrieveRequest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/AbstractODataRetrieveRequest.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/AbstractODataRetrieveRequest.java
index fe51722..628e836 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/AbstractODataRetrieveRequest.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/AbstractODataRetrieveRequest.java
@@ -26,6 +26,7 @@ import org.apache.olingo.client.api.CommonODataClient;
import org.apache.olingo.client.api.communication.request.ODataBatchableRequest;
import org.apache.olingo.client.api.communication.request.retrieve.ODataRetrieveRequest;
import org.apache.olingo.client.api.communication.response.ODataRetrieveResponse;
+import org.apache.olingo.client.api.format.Format;
import org.apache.olingo.client.api.http.HttpMethod;
import org.apache.olingo.client.core.communication.request.AbstractODataBasicRequest;
import org.apache.olingo.client.core.communication.response.AbstractODataResponse;
@@ -33,7 +34,7 @@ import org.apache.olingo.client.core.communication.response.AbstractODataRespons
/**
* This is an abstract representation of an OData retrieve query request returning one or more result item.
*/
-public abstract class AbstractODataRetrieveRequest<V, T extends Enum<T>>
+public abstract class AbstractODataRetrieveRequest<V, T extends Format>
extends AbstractODataBasicRequest<ODataRetrieveResponse<V>, T>
implements ODataRetrieveRequest<V, T>, ODataBatchableRequest {
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataRawRequestImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataRawRequestImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataRawRequestImpl.java
index 4226cc2..777d86a 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataRawRequestImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataRawRequestImpl.java
@@ -92,7 +92,7 @@ public class ODataRawRequestImpl extends ODataRequestImpl<ODataPubFormat>
this.close();
}
}
-
+
return odataClient.getReader().read(new ByteArrayInputStream(obj), getContentType(), reference);
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/streamed/AbstractODataStreamedEntityRequest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/streamed/AbstractODataStreamedEntityRequest.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/streamed/AbstractODataStreamedEntityRequest.java
index d19d0d5..c7f7c52 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/streamed/AbstractODataStreamedEntityRequest.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/streamed/AbstractODataStreamedEntityRequest.java
@@ -48,7 +48,7 @@ public abstract class AbstractODataStreamedEntityRequest<V extends ODataResponse
public AbstractODataStreamedEntityRequest(final CommonODataClient odataClient, final HttpMethod method,
URI uri) {
super(odataClient, method, uri);
- setAccept(getFormat().toString());
+ setAccept(getFormat().toString(odataClient.getServiceVersion()));
}
/**
@@ -65,6 +65,6 @@ public abstract class AbstractODataStreamedEntityRequest<V extends ODataResponse
@Override
public final void setFormat(final ODataPubFormat format) {
this.format = format;
- setAccept(format.toString());
+ setAccept(format.toString(odataClient.getServiceVersion()));
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractJsonDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractJsonDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractJsonDeserializer.java
index 74b29fb..3aca585 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractJsonDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractJsonDeserializer.java
@@ -57,7 +57,7 @@ abstract class AbstractJsonDeserializer<T> extends ODataJacksonDeserializer<T> {
}
private ODataPropertyType guessPropertyType(final JsonNode node) {
- ODataPropertyType type = null;
+ final ODataPropertyType type;
if (node.isValueNode() || node.isNull()) {
type = ODataPropertyType.PRIMITIVE;
@@ -73,7 +73,7 @@ abstract class AbstractJsonDeserializer<T> extends ODataJacksonDeserializer<T> {
}
private Value fromPrimitive(final JsonNode node, final EdmTypeInfo typeInfo) {
- Value value = null;
+ final Value value;
if (node.isNull()) {
value = new NullValueImpl();
@@ -172,5 +172,4 @@ abstract class AbstractJsonDeserializer<T> extends ODataJacksonDeserializer<T> {
property.setValue(new PrimitiveValueImpl(StringUtils.EMPTY));
}
}
-
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomDeserializer.java
index 8893b91..835d174 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomDeserializer.java
@@ -153,7 +153,6 @@ public class AtomDeserializer extends AbstractAtomDealer {
private void properties(final XMLEventReader reader, final StartElement start, final AtomEntryImpl entry)
throws XMLStreamException {
-
boolean foundEndProperties = false;
while (reader.hasNext() && !foundEndProperties) {
final XMLEvent event = reader.nextEvent();
@@ -316,7 +315,6 @@ public class AtomDeserializer extends AbstractAtomDealer {
boolean foundEndFeed = false;
while (reader.hasNext() && !foundEndFeed) {
final XMLEvent event = reader.nextEvent();
-
if (event.isStartElement()) {
if (countQName.equals(event.asStartElement().getName())) {
count(reader, event.asStartElement(), feed);
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomPropertyDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomPropertyDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomPropertyDeserializer.java
index 884d815..42d2504 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomPropertyDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomPropertyDeserializer.java
@@ -139,7 +139,7 @@ class AtomPropertyDeserializer extends AbstractAtomDealer {
}
}
- ODataPropertyType type = null;
+ final ODataPropertyType type;
if (child == null) {
type = ODataPropertyType.PRIMITIVE;
} else {
@@ -168,16 +168,19 @@ class AtomPropertyDeserializer extends AbstractAtomDealer {
property.setName(start.getName().getLocalPart());
final Attribute typeAttr = start.getAttributeByName(this.typeQName);
- if (typeAttr != null) {
- property.setType(typeAttr.getValue());
- }
Value value;
final Attribute nullAttr = start.getAttributeByName(this.nullQName);
+ final String typeAttrValue = typeAttr == null ? null : typeAttr.getValue();
+
if (nullAttr == null) {
- final EdmTypeInfo typeInfo = StringUtils.isBlank(property.getType())
+ final EdmTypeInfo typeInfo = StringUtils.isBlank(typeAttrValue)
? null
- : new EdmTypeInfo.Builder().setTypeExpression(property.getType()).build();
+ : new EdmTypeInfo.Builder().setTypeExpression(typeAttrValue).build();
+
+ if (typeInfo != null) {
+ property.setType(typeInfo.getTypeExpression());
+ }
final ODataPropertyType propType = typeInfo == null
? guessPropertyType(reader)
@@ -207,6 +210,7 @@ class AtomPropertyDeserializer extends AbstractAtomDealer {
} else {
value = new NullValueImpl();
}
+
property.setValue(value);
return property;
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONGeoValueDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONGeoValueDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONGeoValueDeserializer.java
index eebfef3..c77369a 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONGeoValueDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONGeoValueDeserializer.java
@@ -60,7 +60,7 @@ class JSONGeoValueDeserializer {
private MultiPoint multipoint(final Iterator<JsonNode> itor, final EdmPrimitiveTypeKind type,
final String crs) {
- MultiPoint multiPoint = null;
+ final MultiPoint multiPoint;
if (itor.hasNext()) {
final List<Point> points = new ArrayList<Point>();
@@ -79,7 +79,7 @@ class JSONGeoValueDeserializer {
private LineString lineString(final Iterator<JsonNode> itor, final EdmPrimitiveTypeKind type,
final String crs) {
- LineString lineString = null;
+ final LineString lineString;
if (itor.hasNext()) {
final List<Point> points = new ArrayList<Point>();
@@ -98,7 +98,7 @@ class JSONGeoValueDeserializer {
private MultiLineString multiLineString(final Iterator<JsonNode> itor, final EdmPrimitiveTypeKind type,
final String crs) {
- MultiLineString multiLineString = null;
+ final MultiLineString multiLineString;
if (itor.hasNext()) {
final List<LineString> lineStrings = new ArrayList<LineString>();
@@ -147,7 +147,7 @@ class JSONGeoValueDeserializer {
private MultiPolygon multiPolygon(final Iterator<JsonNode> itor, final EdmPrimitiveTypeKind type,
final String crs) {
- MultiPolygon multiPolygon = null;
+ final MultiPolygon multiPolygon;
if (itor.hasNext()) {
final List<Polygon> polygons = new ArrayList<Polygon>();
@@ -166,7 +166,7 @@ class JSONGeoValueDeserializer {
private GeospatialCollection collection(final Iterator<JsonNode> itor, final EdmPrimitiveTypeKind type,
final String crs) {
- GeospatialCollection collection = null;
+ final GeospatialCollection collection;
if (itor.hasNext()) {
final List<Geospatial> geospatials = new ArrayList<Geospatial>();
@@ -262,5 +262,4 @@ class JSONGeoValueDeserializer {
return value;
}
-
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmActionImportImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmActionImportImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmActionImportImpl.java
index 3827418..bf047af 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmActionImportImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmActionImportImpl.java
@@ -19,7 +19,6 @@
package org.apache.olingo.client.core.edm;
import org.apache.olingo.client.api.edm.xml.v4.ActionImport;
-import org.apache.olingo.client.core.edm.EdmTypeInfo;
import org.apache.olingo.commons.api.edm.Edm;
import org.apache.olingo.commons.api.edm.EdmAction;
import org.apache.olingo.commons.api.edm.EdmActionImport;
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/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..da29a68 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
@@ -70,12 +70,12 @@ public abstract class EdmOperationImpl extends AbstractEdmOperation {
@Override
public FullQualifiedName getBindingParameterTypeFqn() {
- FullQualifiedName fqn = null;
+ FullQualifiedName bpfqn = null;
final EdmParameter bindingParam = getBindingParameter();
if (bindingParam != null) {
- fqn = new FullQualifiedName(bindingParam.getType().getNamespace(), bindingParam.getType().getName());
+ bpfqn = new FullQualifiedName(bindingParam.getType().getNamespace(), bindingParam.getType().getName());
}
- return fqn;
+ return bpfqn;
}
@Override
@@ -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/9aefb959/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmTypeInfo.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmTypeInfo.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmTypeInfo.java
index 461e829..abf1a54 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmTypeInfo.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmTypeInfo.java
@@ -23,6 +23,7 @@ import org.apache.olingo.commons.api.edm.Edm;
import org.apache.olingo.commons.api.edm.EdmComplexType;
import org.apache.olingo.commons.api.edm.EdmEntityType;
import org.apache.olingo.commons.api.edm.EdmEnumType;
+import org.apache.olingo.commons.api.edm.EdmPrimitiveType;
import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
import org.apache.olingo.commons.api.edm.FullQualifiedName;
import org.slf4j.Logger;
@@ -56,12 +57,11 @@ public class EdmTypeInfo {
}
public EdmTypeInfo build() {
- return new EdmTypeInfo(edm, typeExpression.indexOf('.') == -1
+ return new EdmTypeInfo(edm, typeExpression.indexOf('.') == -1 && StringUtils.isNotBlank(defaultNamespace)
? defaultNamespace + "." + typeExpression
: typeExpression);
}
}
-
private final Edm edm;
private final String typeExpression;
@@ -80,7 +80,6 @@ public class EdmTypeInfo {
private EdmTypeInfo(final Edm edm, final String typeExpression) {
this.edm = edm;
- this.typeExpression = typeExpression;
String baseType;
final int collStartIdx = typeExpression.indexOf("Collection(");
@@ -97,16 +96,30 @@ public class EdmTypeInfo {
baseType = typeExpression.substring(collStartIdx + 11, collEndIdx);
}
+
+ baseType = baseType.replaceAll("^#", "");
+
+ final String typeName;
+ final String namespace;
+
final int lastDotIdx = baseType.lastIndexOf('.');
if (lastDotIdx == -1) {
- throw new IllegalArgumentException("Cannot find namespace or alias in " + typeExpression);
+ namespace = EdmPrimitiveType.EDM_NAMESPACE;
+ typeName = baseType;
+ baseType = new FullQualifiedName(EdmPrimitiveType.EDM_NAMESPACE, baseType).toString();
+ } else {
+ namespace = baseType.substring(0, lastDotIdx);
+ typeName = baseType.substring(lastDotIdx + 1);
}
- final String namespace = baseType.substring(0, lastDotIdx);
- final String typeName = baseType.substring(lastDotIdx + 1);
+
if (StringUtils.isBlank(typeName)) {
throw new IllegalArgumentException("Null or empty type name in " + typeExpression);
}
+ final StringBuilder exp = new StringBuilder();
+ exp.append(baseType);
+
+ this.typeExpression = (this.collection ? exp.insert(0, "Collection(").append(")") : exp).toString();
this.fullQualifiedName = new FullQualifiedName(namespace, typeName);
try {
@@ -168,5 +181,4 @@ public class EdmTypeInfo {
public EdmEntityType getEntityType() {
return entityType;
}
-
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataBinder.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataBinder.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataBinder.java
index 2c2cdea..09c39ef 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataBinder.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataBinder.java
@@ -268,7 +268,7 @@ public abstract class AbstractODataBinder implements CommonODataBinder {
}
final URI base = defaultBaseURI == null ? resource.getBaseURI() : defaultBaseURI;
-
+
final URI next = resource.getNext();
final ODataEntitySet entitySet = next == null
@@ -282,7 +282,7 @@ public abstract class AbstractODataBinder implements CommonODataBinder {
for (Entry entryResource : resource.getEntries()) {
entitySet.addEntity(getODataEntity(entryResource));
}
-
+
return entitySet;
}
@@ -310,11 +310,11 @@ public abstract class AbstractODataBinder implements CommonODataBinder {
if (StringUtils.isNotBlank(resource.getETag())) {
entity.setETag(resource.getETag());
}
-
+
if (resource.getEditLink() != null) {
entity.setEditLink(URIUtils.getURI(base, resource.getEditLink().getHref()));
}
-
+
for (Link link : resource.getAssociationLinks()) {
entity.addLink(client.getObjectFactory().newAssociationLink(link.getTitle(), base, link.getHref()));
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataDeserializer.java
index 67acc09..103f81d 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataDeserializer.java
@@ -103,5 +103,4 @@ public abstract class AbstractODataDeserializer extends AbstractJacksonTool impl
throw new IllegalArgumentException("While deserializing " + reference.getName(), e);
}
}
-
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/EntityRetrieveTestITCase.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/EntityRetrieveTestITCase.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/EntityRetrieveTestITCase.java
index 6637346..c69b469 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/EntityRetrieveTestITCase.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/EntityRetrieveTestITCase.java
@@ -148,7 +148,7 @@ public class EntityRetrieveTestITCase extends AbstractTestITCase {
appendEntitySetSegment("Car").appendKeySegment(16);
final ODataRawRequest req = client.getRetrieveRequestFactory().getRawRequest(uriBuilder.build());
- req.setFormat(format.toString());
+ req.setFormat(format.toString(client.getServiceVersion()));
final ODataRawResponse res = req.execute();
assertNotNull(res);
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/EntitySetTestITCase.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/EntitySetTestITCase.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/EntitySetTestITCase.java
index 35cc3d6..3e69aff 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/EntitySetTestITCase.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/EntitySetTestITCase.java
@@ -138,7 +138,7 @@ public class EntitySetTestITCase extends AbstractTestITCase {
uriBuilder.appendEntitySetSegment("Car");
final ODataRawRequest req = client.getRetrieveRequestFactory().getRawRequest(uriBuilder.build());
- req.setFormat(format.toString());
+ req.setFormat(format.toString(client.getServiceVersion()));
final ODataRawResponse res = req.execute();
assertNotNull(res);
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/QueryOptionsTestITCase.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/QueryOptionsTestITCase.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/QueryOptionsTestITCase.java
index 3501482..21cf9ae 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/QueryOptionsTestITCase.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/QueryOptionsTestITCase.java
@@ -107,7 +107,8 @@ public class QueryOptionsTestITCase extends AbstractTestITCase {
final ODataRetrieveResponse<ODataEntity> res = req.execute();
assertNotNull(res);
- assertTrue(res.getContentType().replaceAll(" ", "").startsWith(ODataPubFormat.JSON.toString()));
+ assertTrue(res.getContentType().replaceAll(" ", "").
+ startsWith(ODataPubFormat.JSON.toString(client.getServiceVersion())));
}
/**
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/AbstractTestITCase.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/AbstractTestITCase.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/AbstractTestITCase.java
index 46a59bd..a745380 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/AbstractTestITCase.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/AbstractTestITCase.java
@@ -35,8 +35,8 @@ public abstract class AbstractTestITCase extends org.apache.olingo.client.core.i
@BeforeClass
public static void setUpODataServiceRoot() throws IOException {
- testStaticServiceRootURL = "http://localhost:9080/StaticService/V30/Static.svc";
- testLargeModelServiceRootURL = "http://localhost:9080/StaticService/V30/Static.svc/large";
+ testStaticServiceRootURL = "http://localhost:9080/StaticService/V40/Static.svc";
+ testLargeModelServiceRootURL = "http://localhost:9080/StaticService/V40/Static.svc/large";
testAuthServiceRootURL = "http://localhost:9080/DefaultService.svc";
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/EntitySetTestITCase.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/EntitySetTestITCase.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/EntitySetTestITCase.java
new file mode 100644
index 0000000..9e2527a
--- /dev/null
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v4/EntitySetTestITCase.java
@@ -0,0 +1,152 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.client.core.it.v4;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.IOException;
+import org.apache.olingo.client.api.communication.request.retrieve.ODataEntitySetIteratorRequest;
+import org.apache.olingo.client.api.communication.request.retrieve.ODataEntitySetRequest;
+import org.apache.olingo.client.api.communication.request.retrieve.ODataRawRequest;
+import org.apache.olingo.client.api.communication.response.ODataRawResponse;
+import org.apache.olingo.client.api.communication.response.ODataRetrieveResponse;
+import org.apache.olingo.client.api.domain.ODataEntitySet;
+import org.apache.olingo.client.api.domain.ODataEntitySetIterator;
+import org.apache.olingo.client.api.format.ODataPubFormat;
+import org.apache.olingo.client.api.uri.CommonURIBuilder;
+import org.apache.olingo.client.core.op.impl.ResourceFactory;
+import static org.junit.Assert.assertNotNull;
+import org.junit.Ignore;
+import org.junit.Test;
+
+/**
+ * This is the unit test class to check basic feed operations.
+ */
+public class EntitySetTestITCase extends AbstractTestITCase {
+
+ protected String getServiceRoot() {
+ return testStaticServiceRootURL;
+ }
+
+ @Test
+ public void rawRequestAsAtom() throws IOException {
+ rawRequest(ODataPubFormat.ATOM);
+ }
+
+ @Test
+ @Ignore
+ public void rawRequestAsJSON() throws IOException {
+ rawRequest(ODataPubFormat.JSON);
+ }
+
+ @Test
+ public void readODataEntitySetIteratorFromAtom() {
+ readODataEntitySetIterator(ODataPubFormat.ATOM);
+ }
+
+ @Test
+ @Ignore
+ public void readODataEntitySetIteratorFromJSON() {
+ readODataEntitySetIterator(ODataPubFormat.JSON);
+ }
+
+ @Test
+ @Ignore
+ public void readODataEntitySetIteratorFromJSONFullMeta() {
+ readODataEntitySetIterator(ODataPubFormat.JSON_FULL_METADATA);
+ }
+
+ @Test
+ @Ignore
+ public void readODataEntitySetIteratorFromJSONNoMeta() {
+ readODataEntitySetIterator(ODataPubFormat.JSON_NO_METADATA);
+ }
+
+ @Test
+ public void readODataEntitySetWithNextFromAtom() {
+ readEntitySetWithNextLink(ODataPubFormat.ATOM);
+ }
+
+ @Test
+ @Ignore
+ public void readODataEntitySetWithNextFromJSON() {
+ readEntitySetWithNextLink(ODataPubFormat.JSON_FULL_METADATA);
+ }
+
+ private void readEntitySetWithNextLink(final ODataPubFormat format) {
+ final CommonURIBuilder<?> uriBuilder = client.getURIBuilder(getServiceRoot());
+ uriBuilder.appendEntitySetSegment("People");
+
+ final ODataEntitySetRequest req = client.getRetrieveRequestFactory().getEntitySetRequest(uriBuilder.build());
+ req.setFormat(format);
+
+ final ODataRetrieveResponse<ODataEntitySet> res = req.execute();
+ final ODataEntitySet feed = res.getBody();
+
+ assertNotNull(feed);
+
+ debugFeed(client.getBinder().getFeed(feed, ResourceFactory.feedClassForFormat(
+ ODataPubFormat.ATOM == format)), "Just retrieved feed");
+
+ assertEquals(5, feed.getEntities().size());
+// assertNotNull(feed.getNext());
+
+// final URI expected = URI.create(getServiceRoot() + "/Customer?$skiptoken=-9");
+// final URI found = URIUtils.getURI(getServiceRoot(), feed.getNext().toASCIIString());
+
+// assertEquals(expected, found);
+ }
+
+ private void readODataEntitySetIterator(final ODataPubFormat format) {
+ final CommonURIBuilder<?> uriBuilder = client.getURIBuilder(getServiceRoot());
+ uriBuilder.appendEntitySetSegment("People");
+
+ final ODataEntitySetIteratorRequest req =
+ client.getRetrieveRequestFactory().getEntitySetIteratorRequest(uriBuilder.build());
+ req.setFormat(format);
+
+ final ODataRetrieveResponse<ODataEntitySetIterator> res = req.execute();
+ final ODataEntitySetIterator feedIterator = res.getBody();
+
+ assertNotNull(feedIterator);
+
+ int count = 0;
+
+ while (feedIterator.hasNext()) {
+ assertNotNull(feedIterator.next());
+ count++;
+ }
+ assertEquals(5, count);
+// assertTrue(feedIterator.getNext().toASCIIString().endsWith("Customer?$skiptoken=-9"));
+ }
+
+ private void rawRequest(final ODataPubFormat format) {
+ final CommonURIBuilder<?> uriBuilder = client.getURIBuilder(getServiceRoot());
+ uriBuilder.appendEntitySetSegment("People");
+
+ final ODataRawRequest req = client.getRetrieveRequestFactory().getRawRequest(uriBuilder.build());
+ req.setFormat(format.toString(client.getServiceVersion()));
+
+ final ODataRawResponse res = req.execute();
+ assertNotNull(res);
+
+ final ODataEntitySet entitySet = res.getBodyAs(ODataEntitySet.class);
+ assertNotNull(entitySet);
+ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/Edm.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/Edm.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/Edm.java
index c7aeff0..32e6fc8 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/Edm.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/Edm.java
@@ -26,92 +26,93 @@ import java.util.List;
* Interface representing a Entity Data Model as described in the Conceptual Schema Definition.
*/
public interface Edm {
-
- /**
- * This method DOES NOT support lazy loading. All schemas are loaded completely!
- * @return all schemas defined for this EDM
- */
- List<EdmSchema> getSchemas();
- /**
- * Get entity container by full qualified name.
- * <br/>
- * See {@link EdmEntityContainer} for more information.
- *
- * @param name
- * @return {@link EdmEntityContainer}
- */
- EdmEntityContainer getEntityContainer(FullQualifiedName name);
+ /**
+ * This method DOES NOT support lazy loading. All schemas are loaded completely!
+ *
+ * @return all schemas defined for this EDM
+ */
+ List<EdmSchema> getSchemas();
- /**
- * Get enum type by full qualified name.
- * <br/>
- * See {@link EdmEnumType} for more information
- *
- * @param name
- * @return {@link EdmEnumType}
- */
- EdmEnumType getEnumType(FullQualifiedName name);
+ /**
+ * Get entity container by full qualified name.
+ * <br/>
+ * See {@link EdmEntityContainer} for more information.
+ *
+ * @param name
+ * @return {@link EdmEntityContainer}
+ */
+ EdmEntityContainer getEntityContainer(FullQualifiedName name);
- /**
- * Get a type definition by full qualified name.
- * <br/>
- * See {@link EdmTypeDefinition} for more information
- *
- * @param name
- * @return {@link EdmTypeDefinition}
- */
- EdmTypeDefinition getTypeDefinition(FullQualifiedName name);
+ /**
+ * Get enum type by full qualified name.
+ * <br/>
+ * See {@link EdmEnumType} for more information
+ *
+ * @param name
+ * @return {@link EdmEnumType}
+ */
+ EdmEnumType getEnumType(FullQualifiedName name);
- /**
- * Get entity type by full qualified name.
- * <br/>
- * See {@link EdmEntityType} for more information.
- *
- * @param name
- * @return {@link EdmEntityType}
- */
- EdmEntityType getEntityType(FullQualifiedName name);
+ /**
+ * Get a type definition by full qualified name.
+ * <br/>
+ * See {@link EdmTypeDefinition} for more information
+ *
+ * @param name
+ * @return {@link EdmTypeDefinition}
+ */
+ EdmTypeDefinition getTypeDefinition(FullQualifiedName name);
- /**
- * Get complex type by full qualified name..
- * <br/>
- * See {@link EdmComplexType} for more information.
- *
- * @param name
- * @return {@link EdmComplexType}
- */
- EdmComplexType getComplexType(FullQualifiedName name);
+ /**
+ * Get entity type by full qualified name.
+ * <br/>
+ * See {@link EdmEntityType} for more information.
+ *
+ * @param name
+ * @return {@link EdmEntityType}
+ */
+ EdmEntityType getEntityType(FullQualifiedName name);
- /**
- * Get Action by full qualified name and binding parameter type.
- *
- * @param actionName must not be null
- * @param bindingParameterTypeName may be null if it is an unbound action
- * @param isBindingParameterCollection may be null if it is an unbound action
- * @return {@link EdmAction}
- */
- EdmAction getAction(FullQualifiedName actionName, FullQualifiedName bindingParameterTypeName,
- Boolean isBindingParameterCollection);
+ /**
+ * Get complex type by full qualified name..
+ * <br/>
+ * See {@link EdmComplexType} for more information.
+ *
+ * @param name
+ * @return {@link EdmComplexType}
+ */
+ EdmComplexType getComplexType(FullQualifiedName name);
- /**
- * Get Function by full qualified name and binding parameter type and binding parameter names.
- *
- * @param functionName
- * @param bindingParameterTypeName may be null if it is an unbound function
- * @param isBindingParameterCollection may be null if it is an unbound function
- * @param parameterNames may be null if it is an unbound function
- * @return {@link EdmFunction}
- */
- EdmFunction getFunction(FullQualifiedName functionName, FullQualifiedName bindingParameterTypeName,
- Boolean isBindingParameterCollection, List<String> parameterNames);
+ /**
+ * Get Action by full qualified name and binding parameter type.
+ *
+ * @param actionName must not be null
+ * @param bindingParameterTypeName may be null if it is an unbound action
+ * @param isBindingParameterCollection may be null if it is an unbound action
+ * @return {@link EdmAction}
+ */
+ EdmAction getAction(FullQualifiedName actionName, FullQualifiedName bindingParameterTypeName,
+ Boolean isBindingParameterCollection);
- /**
- * Get service metadata.
- * <br/>
- * See {@link EdmServiceMetadata} for more information.
- *
- * @return {@link EdmServiceMetadata}
- */
- EdmServiceMetadata getServiceMetadata();
+ /**
+ * Get Function by full qualified name and binding parameter type and binding parameter names.
+ *
+ * @param functionName
+ * @param bindingParameterTypeName may be null if it is an unbound function
+ * @param isBindingParameterCollection may be null if it is an unbound function
+ * @param parameterNames may be null if it is an unbound function
+ * @return {@link EdmFunction}
+ */
+ EdmFunction getFunction(FullQualifiedName functionName, FullQualifiedName bindingParameterTypeName,
+ Boolean isBindingParameterCollection, List<String> parameterNames);
+
+ /**
+ * Get service metadata.
+ * <br/>
+ * See {@link EdmServiceMetadata} for more information.
+ *
+ * @return {@link EdmServiceMetadata}
+ */
+ EdmServiceMetadata getServiceMetadata();
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmActionImport.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmActionImport.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmActionImport.java
index 428fbdf..a302b9e 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmActionImport.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmActionImport.java
@@ -23,5 +23,5 @@ package org.apache.olingo.commons.api.edm;
*/
public interface EdmActionImport extends EdmOperationImport {
- EdmAction getAction();
+ EdmAction getAction();
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/constants/ODataServiceVersion.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/constants/ODataServiceVersion.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/constants/ODataServiceVersion.java
index f50d400..d637814 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/constants/ODataServiceVersion.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/constants/ODataServiceVersion.java
@@ -40,8 +40,6 @@ public enum ODataServiceVersion {
public static final String NS_METADATA = "metadata";
- public static final String NS_DATA = "data";
-
public static final String NS_SCHEME = "scheme";
public static final String NAVIGATION_LINK_REL = "navigationLinkRel";
@@ -70,8 +68,11 @@ public enum ODataServiceVersion {
{
put(NS_METADATA, "http://docs.oasis-open.org/odata/ns/metadata");
- put(NS_DATA, "http://docs.oasis-open.org/odata/ns/data");
+ put(NS_DATASERVICES, "http://docs.oasis-open.org/odata/ns/data");
put(NS_SCHEME, "http://docs.oasis-open.org/odata/ns/scheme");
+ put(NAVIGATION_LINK_REL, "http://docs.oasis-open.org/odata/ns/related/");
+ put(ASSOCIATION_LINK_REL, "http://docs.oasis-open.org/odata/ns/relatedlinks/");
+ put(MEDIA_EDIT_LINK_REL, "http://docs.oasis-open.org/odata/ns/edit-media/");
}
});
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmComplexType.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmComplexType.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmComplexType.java
index 346eb2e..732f29f 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmComplexType.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmComplexType.java
@@ -27,24 +27,29 @@ import org.apache.olingo.commons.api.edm.constants.EdmTypeKind;
public abstract class AbstractEdmComplexType extends AbstractEdmStructuredType implements EdmComplexType {
- public AbstractEdmComplexType(final Edm edm, final FullQualifiedName fqn, final FullQualifiedName baseTypeName) {
- super(edm, fqn, EdmTypeKind.COMPLEX, baseTypeName);
- }
+ public AbstractEdmComplexType(
+ final Edm edm,
+ final FullQualifiedName fqn,
+ final FullQualifiedName baseTypeName) {
+ super(edm, fqn, EdmTypeKind.COMPLEX, baseTypeName);
+ }
- @Override
- protected EdmStructuredType buildBaseType(final FullQualifiedName baseTypeName) {
- EdmComplexType baseType = null;
- if (baseTypeName != null) {
- baseType = edm.getComplexType(baseTypeName);
- if (baseType == null) {
- throw new EdmException("Can't find base type with name: " + baseTypeName + " for complex type: " + getName());
- }
+ @Override
+ protected EdmStructuredType buildBaseType(final FullQualifiedName baseTypeName) {
+ // TODO: check for comment
+ EdmComplexType baseType = null;
+ if (baseTypeName != null) {
+ baseType = edm.getComplexType(baseTypeName);
+ if (baseType == null) {
+ throw new EdmException("Can't find base type with name: " + baseTypeName + " for complex type: "
+ + getName());
+ }
+ }
+ return baseType;
}
- return baseType;
- }
- @Override
- public EdmComplexType getBaseType() {
- return (EdmComplexType) baseType;
- }
+ @Override
+ public EdmComplexType getBaseType() {
+ return (EdmComplexType) baseType;
+ }
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/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..41eb368 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
@@ -33,119 +33,123 @@ import org.apache.olingo.commons.api.edm.FullQualifiedName;
public abstract class AbstractEdmEntityContainer extends EdmNamedImpl implements EdmEntityContainer {
- protected final FullQualifiedName entityContainerName;
+ protected final FullQualifiedName entityContainerName;
- protected final Map<String, EdmSingleton> singletons = new HashMap<String, EdmSingleton>();
- private boolean allSingletonsLoaded = false;
+ protected final Map<String, EdmSingleton> singletons = new HashMap<String, EdmSingleton>();
- protected final Map<String, EdmEntitySet> entitySets = new HashMap<String, EdmEntitySet>();
- private boolean allEntitySetsLoaded = false;
+ private boolean allSingletonsLoaded = false;
- protected final Map<String, EdmActionImport> actionImports = new HashMap<String, EdmActionImport>();
- private boolean allActionImportsLoaded = false;
+ protected final Map<String, EdmEntitySet> entitySets = new HashMap<String, EdmEntitySet>();
- protected final Map<String, EdmFunctionImport> functionImports = new HashMap<String, EdmFunctionImport>();
- private boolean allFunctionImportsLoaded = false;
+ private boolean allEntitySetsLoaded = false;
- public AbstractEdmEntityContainer(final Edm edm, final FullQualifiedName entityContainerName) {
- super(edm, entityContainerName.getName());
- this.entityContainerName = entityContainerName;
- }
+ protected final Map<String, EdmActionImport> actionImports = new HashMap<String, EdmActionImport>();
- @Override
- public String getNamespace() {
- return entityContainerName.getNamespace();
- }
+ private boolean allActionImportsLoaded = false;
- protected abstract EdmSingleton createSingleton(String singletonName);
+ protected final Map<String, EdmFunctionImport> functionImports = new HashMap<String, EdmFunctionImport>();
- @Override
- public EdmSingleton getSingleton(final String singletonName) {
- EdmSingleton singleton = singletons.get(singletonName);
- if (singleton == null) {
- singleton = createSingleton(singletonName);
- singletons.put(singletonName, singleton);
+ private boolean allFunctionImportsLoaded = false;
+
+ public AbstractEdmEntityContainer(final Edm edm, final FullQualifiedName entityContainerName) {
+ super(edm, entityContainerName.getName());
+ this.entityContainerName = entityContainerName;
+ }
+
+ @Override
+ public String getNamespace() {
+ return entityContainerName.getNamespace();
}
- return singleton;
- }
- protected abstract EdmEntitySet createEntitySet(String entitySetName);
+ protected abstract EdmSingleton createSingleton(String singletonName);
- @Override
- public EdmEntitySet getEntitySet(final String entitySetName) {
- EdmEntitySet entitySet = entitySets.get(entitySetName);
- if (entitySet == null) {
- entitySet = createEntitySet(entitySetName);
- entitySets.put(entitySetName, entitySet);
+ @Override
+ public EdmSingleton getSingleton(final String singletonName) {
+ EdmSingleton singleton = singletons.get(singletonName);
+ if (singleton == null) {
+ singleton = createSingleton(singletonName);
+ singletons.put(singletonName, singleton);
+ }
+ return singleton;
}
- return entitySet;
- }
- protected abstract EdmActionImport createActionImport(String actionImportName);
+ protected abstract EdmEntitySet createEntitySet(String entitySetName);
- @Override
- public EdmActionImport getActionImport(final String actionImportName) {
- EdmActionImport actionImport = actionImports.get(actionImportName);
- if (actionImport == null) {
- actionImport = createActionImport(actionImportName);
- actionImports.put(actionImportName, actionImport);
+ @Override
+ public EdmEntitySet getEntitySet(final String entitySetName) {
+ EdmEntitySet entitySet = entitySets.get(entitySetName);
+ if (entitySet == null) {
+ entitySet = createEntitySet(entitySetName);
+ entitySets.put(entitySetName, entitySet);
+ }
+ return entitySet;
}
- return actionImport;
- }
- protected abstract EdmFunctionImport createFunctionImport(String functionImportName);
+ protected abstract EdmActionImport createActionImport(String actionImportName);
- @Override
- public EdmFunctionImport getFunctionImport(final String functionImportName) {
- EdmFunctionImport functionImport = functionImports.get(functionImportName);
- if (functionImport == null) {
- functionImport = createFunctionImport(functionImportName);
- functionImports.put(functionImportName, functionImport);
+ @Override
+ public EdmActionImport getActionImport(final String actionImportName) {
+ EdmActionImport actionImport = actionImports.get(actionImportName);
+ if (actionImport == null) {
+ actionImport = createActionImport(actionImportName);
+ actionImports.put(actionImportName, actionImport);
+ }
+ return actionImport;
}
- return functionImport;
- }
-
- @Override
- public List<EdmEntitySet> getEntitySets() {
- if (!allEntitySetsLoaded) {
- loadAllEntitySets();
- allEntitySetsLoaded = true;
+
+ protected abstract EdmFunctionImport createFunctionImport(String functionImportName);
+
+ @Override
+ public EdmFunctionImport getFunctionImport(final String functionImportName) {
+ EdmFunctionImport functionImport = functionImports.get(functionImportName);
+ if (functionImport == null) {
+ functionImport = createFunctionImport(functionImportName);
+ functionImports.put(functionImportName, functionImport);
+ }
+ return functionImport;
+ }
+
+ @Override
+ public List<EdmEntitySet> getEntitySets() {
+ if (!allEntitySetsLoaded) {
+ loadAllEntitySets();
+ allEntitySetsLoaded = true;
+ }
+ return new ArrayList<EdmEntitySet>(entitySets.values());
}
- return new ArrayList<EdmEntitySet>(entitySets.values());
- }
- protected abstract void loadAllEntitySets();
+ protected abstract void loadAllEntitySets();
- @Override
- public List<EdmFunctionImport> getFunctionImports() {
- if (!allFunctionImportsLoaded) {
- loadAllFunctionImports();
- allFunctionImportsLoaded = true;
+ @Override
+ public List<EdmFunctionImport> getFunctionImports() {
+ if (!allFunctionImportsLoaded) {
+ loadAllFunctionImports();
+ allFunctionImportsLoaded = true;
+ }
+ return new ArrayList<EdmFunctionImport>(functionImports.values());
}
- return new ArrayList<EdmFunctionImport>(functionImports.values());
- }
- protected abstract void loadAllFunctionImports();
+ protected abstract void loadAllFunctionImports();
- @Override
- public List<EdmSingleton> getSingletons() {
- if (!allSingletonsLoaded) {
- loadAllSingletons();
- allSingletonsLoaded = true;
+ @Override
+ public List<EdmSingleton> getSingletons() {
+ if (!allSingletonsLoaded) {
+ loadAllSingletons();
+ allSingletonsLoaded = true;
+ }
+ return new ArrayList<EdmSingleton>(singletons.values());
}
- return new ArrayList<EdmSingleton>(singletons.values());
- }
- protected abstract void loadAllSingletons();
+ protected abstract void loadAllSingletons();
- @Override
- public List<EdmActionImport> getActionImports() {
- if (!allActionImportsLoaded) {
- loadAllActionImports();
- allActionImportsLoaded = true;
+ @Override
+ public List<EdmActionImport> getActionImports() {
+ if (!allActionImportsLoaded) {
+ loadAllActionImports();
+ allActionImportsLoaded = true;
+ }
+ return new ArrayList<EdmActionImport>(actionImports.values());
}
- return new ArrayList<EdmActionImport>(actionImports.values());
- }
- protected abstract void loadAllActionImports();
+ protected abstract void loadAllActionImports();
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmOperation.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmOperation.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmOperation.java
index b848540..3c2f894 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmOperation.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmOperation.java
@@ -35,80 +35,83 @@ import org.apache.olingo.commons.api.edm.constants.EdmTypeKind;
public abstract class AbstractEdmOperation extends EdmTypeImpl implements EdmOperation {
- private final Map<String, EdmParameter> parameters = new LinkedHashMap<String, EdmParameter>();
+ private final Map<String, EdmParameter> parameters = new LinkedHashMap<String, EdmParameter>();
- private String entitySetPath;
+ private String entitySetPath;
- private boolean isBound;
+ private boolean isBound;
- private EdmReturnType returnType;
+ private EdmReturnType returnType;
- private List<String> parameterNames;
+ private List<String> parameterNames;
- protected AbstractEdmOperation(final Edm edm, final FullQualifiedName fqn, final EdmTypeKind kind) {
- super(edm, fqn, kind);
- }
+ protected AbstractEdmOperation(
+ final Edm edm,
+ final FullQualifiedName fqn,
+ final EdmTypeKind kind) {
+ super(edm, fqn, kind);
+ }
+
+ protected void setParameters(final List<EdmParameter> _parameters) {
+ for (EdmParameter parameter : _parameters) {
+ parameters.put(parameter.getName(), parameter);
+ }
+ }
+
+ protected void setEntitySetPath(final String entitySetPath) {
+ this.entitySetPath = entitySetPath;
+ }
+
+ protected void setIsBound(final boolean isBound) {
+ this.isBound = isBound;
+ }
- protected void setParameters(final List<EdmParameter> _parameters) {
- for (EdmParameter parameter : _parameters) {
- parameters.put(parameter.getName(), parameter);
+ protected void setReturnType(final EdmReturnType returnType) {
+ this.returnType = returnType;
}
- }
-
- protected void setEntitySetPath(final String entitySetPath) {
- this.entitySetPath = entitySetPath;
- }
-
- protected void setIsBound(final boolean isBound) {
- this.isBound = isBound;
- }
-
- protected void setReturnType(final EdmReturnType returnType) {
- this.returnType = returnType;
- }
-
- @Override
- public EdmParameter getParameter(final String name) {
- return parameters.get(name);
- }
-
- @Override
- public List<String> getParameterNames() {
- if (parameterNames == null) {
- parameterNames = new ArrayList<String>(parameters.size());
- for (String parameterName : parameters.keySet()) {
- parameterNames.add(parameterName);
- }
+
+ @Override
+ public EdmParameter getParameter(final String name) {
+ return parameters.get(name);
}
- return parameterNames;
- }
-
- @Override
- public EdmEntitySet getReturnedEntitySet(final EdmEntitySet bindingParameterEntitySet) {
- EdmEntitySet returnedEntitySet = null;
- if (bindingParameterEntitySet != null && entitySetPath != null) {
- final EdmBindingTarget relatedBindingTarget = bindingParameterEntitySet.
- getRelatedBindingTarget(entitySetPath);
- if (relatedBindingTarget == null) {
- throw new EdmException("Cannot find entity set with path: " + entitySetPath);
- }
- if (relatedBindingTarget instanceof EdmEntitySet) {
- returnedEntitySet = (EdmEntitySet) relatedBindingTarget;
- } else {
- throw new EdmException("BindingTarget with name: " + relatedBindingTarget.getName() + " must be an entity set");
- }
+
+ @Override
+ public List<String> getParameterNames() {
+ if (parameterNames == null) {
+ parameterNames = new ArrayList<String>(parameters.size());
+ for (String parameterName : parameters.keySet()) {
+ parameterNames.add(parameterName);
+ }
+ }
+ return parameterNames;
}
- return returnedEntitySet;
- }
- @Override
- public EdmReturnType getReturnType() {
- return returnType;
- }
+ @Override
+ public EdmEntitySet getReturnedEntitySet(final EdmEntitySet bindingParameterEntitySet) {
+ EdmEntitySet returnedEntitySet = null;
+ if (bindingParameterEntitySet != null && entitySetPath != null) {
+ final EdmBindingTarget relatedBindingTarget = bindingParameterEntitySet.
+ getRelatedBindingTarget(entitySetPath);
+ if (relatedBindingTarget == null) {
+ throw new EdmException("Cannot find entity set with path: " + entitySetPath);
+ }
+ if (relatedBindingTarget instanceof EdmEntitySet) {
+ returnedEntitySet = (EdmEntitySet) relatedBindingTarget;
+ } else {
+ throw new EdmException("BindingTarget with name: " + relatedBindingTarget.getName()
+ + " must be an entity set");
+ }
+ }
+ return returnedEntitySet;
+ }
- @Override
- public boolean isBound() {
- return isBound;
- }
+ @Override
+ public EdmReturnType getReturnType() {
+ return returnType;
+ }
+ @Override
+ public boolean isBound() {
+ return isBound;
+ }
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9aefb959/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmOperationImport.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmOperationImport.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmOperationImport.java
index 96aa49f..fe81533 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmOperationImport.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmOperationImport.java
@@ -27,37 +27,40 @@ import org.apache.olingo.commons.api.edm.Target;
public abstract class AbstractEdmOperationImport extends EdmNamedImpl implements EdmOperationImport {
- protected final EdmEntityContainer container;
-
- private final Target entitySet;
-
- private EdmEntitySet returnedEntitySet;
-
- public AbstractEdmOperationImport(final Edm edm, final EdmEntityContainer container, final String name,
- final Target entitySet) {
-
- super(edm, name);
- this.container = container;
- this.entitySet = entitySet;
- }
-
- @Override
- public EdmEntitySet getReturnedEntitySet() {
- if (entitySet != null && returnedEntitySet == null) {
- EdmEntityContainer entityContainer = edm.getEntityContainer(entitySet.getEntityContainer());
- if (entityContainer == null) {
- throw new EdmException("Can´t find entity container with name: " + entitySet.getEntityContainer());
- }
- returnedEntitySet = entityContainer.getEntitySet(entitySet.getTargetName());
- if (returnedEntitySet == null) {
- throw new EdmException("Can´t find entity set with name: " + entitySet.getTargetName());
- }
+ protected final EdmEntityContainer container;
+
+ private final Target entitySet;
+
+ private EdmEntitySet returnedEntitySet;
+
+ public AbstractEdmOperationImport(
+ final Edm edm,
+ final EdmEntityContainer container,
+ final String name,
+ final Target entitySet) {
+
+ super(edm, name);
+ this.container = container;
+ this.entitySet = entitySet;
}
- return returnedEntitySet;
- }
- @Override
- public EdmEntityContainer getEntityContainer() {
- return container;
- }
+ @Override
+ public EdmEntitySet getReturnedEntitySet() {
+ if (entitySet != null && returnedEntitySet == null) {
+ EdmEntityContainer entityContainer = edm.getEntityContainer(entitySet.getEntityContainer());
+ if (entityContainer == null) {
+ throw new EdmException("Can´t find entity container with name: " + entitySet.getEntityContainer());
+ }
+ returnedEntitySet = entityContainer.getEntitySet(entitySet.getTargetName());
+ if (returnedEntitySet == null) {
+ throw new EdmException("Can´t find entity set with name: " + entitySet.getTargetName());
+ }
+ }
+ return returnedEntitySet;
+ }
+
+ @Override
+ public EdmEntityContainer getEntityContainer() {
+ return container;
+ }
}