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/02/18 17:29:21 UTC
[10/17] olingo-odata4 git commit: [OLINGO-575] Move v4 package
content one package up
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/SearchFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/SearchFactory.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/SearchFactory.java
new file mode 100644
index 0000000..aefd1f4
--- /dev/null
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/SearchFactory.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.client.api.uri;
+
+public interface SearchFactory {
+
+ URISearch literal(String value);
+
+ URISearch and(URISearch left, URISearch right);
+
+ URISearch or(URISearch left, URISearch right);
+
+ URISearch not(URISearch filter);
+
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/URIBuilder.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/URIBuilder.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/URIBuilder.java
new file mode 100644
index 0000000..efedbfe
--- /dev/null
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/URIBuilder.java
@@ -0,0 +1,143 @@
+/*
+ * 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.uri;
+
+import java.util.Map;
+
+import org.apache.commons.lang3.tuple.Pair;
+import org.apache.olingo.commons.api.edm.EdmEnumType;
+
+public interface URIBuilder extends CommonURIBuilder<URIBuilder> {
+
+ /**
+ * Appends enum key segment to the URI.
+ *
+ * @param enumType enum type
+ * @param memberName enum member name
+ * @return current URIBuilder instance
+ */
+ URIBuilder appendKeySegment(EdmEnumType enumType, String memberName);
+
+ /**
+ * Appends key segment to the URI, for multiple keys.
+ *
+ * @param enumValues enum segment values.
+ * @param segmentValues segment values.
+ * @return current URIBuilder instance
+ */
+ URIBuilder appendKeySegment(Map<String, Pair<EdmEnumType, String>> enumValues, Map<String, Object> segmentValues);
+
+ /**
+ * Appends Singleton segment to the URI.
+ *
+ * @param segmentValue segment value.
+ * @return current URIBuilder instance
+ */
+ URIBuilder appendSingletonSegment(String segmentValue);
+
+ /**
+ * Appends entity-id segment to the URI.
+ *
+ * @param segmentValue segment value
+ * @return current URIBuilder instance
+ */
+ URIBuilder appendEntityIdSegment(String segmentValue);
+
+ /**
+ * Appends ref segment to the URI.
+ *
+ * @return current URIBuilder instance
+ */
+ URIBuilder appendRefSegment();
+
+ /**
+ * Appends cross join segment to the URI.
+ *
+ * @param segmentValues segment values.
+ * @return current URIBuilder instance
+ */
+ URIBuilder appendCrossjoinSegment(String... segmentValues);
+
+ /**
+ * Appends all segment to the URI.
+ *
+ * @return current URIBuilder instance
+ */
+ URIBuilder appendAllSegment();
+
+ /**
+ * Adds id query option.
+ *
+ * @param idValue opaque token.
+ * @return current URIBuilder instance
+ * @see org.apache.olingo.client.api.uri.QueryOption#ID
+ */
+ URIBuilder id(String idValue);
+
+ /**
+ * Appends count query option.
+ *
+ * @param value true or false
+ * @return current URIBuilder instance
+ * @see org.apache.olingo.client.api.uri.QueryOption#COUNT
+ */
+ URIBuilder count(boolean value);
+
+ /**
+ * Appends search query option.
+ *
+ * @param search search expression
+ * @return current URIBuilder instance
+ * @see org.apache.olingo.client.api.uri.QueryOption#SEARCH
+ */
+ URIBuilder search(URISearch search);
+
+ /**
+ * Appends search query option.
+ *
+ * @param expression search expression
+ * @return current URIBuilder instance
+ * @see org.apache.olingo.client.api.uri.QueryOption#SEARCH
+ */
+ URIBuilder search(String expression);
+
+ /**
+ * The set of expanded entities can be refined through the application of expand options, expressed as a
+ * semicolon-separated list of system query options, enclosed in parentheses, see [OData-URL].
+ *
+ * @param expandItem item to be expanded.
+ * @param options System query options. Allowed query options are: $filter, $select, $orderby, $skip, $top, $count,
+ * $search, $expand, and $levels.
+ * @return current URIBuilder instance.
+ * @see org.apache.olingo.client.api.uri.QueryOption#EXPAND
+ */
+ URIBuilder expandWithOptions(String expandItem, Map<QueryOption, Object> options);
+
+ /**
+ * Properties of related entities can be specified by including the $select query option within the $expand.
+ * <br />
+ * <tt>http://host/service/Products?$expand=Category($select=Name)</tt>
+ * @param expandItem related entity name.
+ * @param selectItems properties to be selected.
+ * @return current URIBuilder instance.
+ * @see org.apache.olingo.client.api.uri.QueryOption#EXPAND
+ * @see org.apache.olingo.client.api.uri.QueryOption#SELECT
+ */
+ URIBuilder expandWithSelect(String expandItem, String... selectItems);
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/URISearch.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/URISearch.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/URISearch.java
new file mode 100644
index 0000000..0d6af3e
--- /dev/null
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/URISearch.java
@@ -0,0 +1,32 @@
+/*
+ * 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.uri;
+
+/**
+ * Interface for <tt>$search</tt>; obtain instances via <tt>SearchFactory</tt>.
+ *
+ * @see SearchFactory
+ */
+public interface URISearch {
+
+ /**
+ * @return String representation of this search.
+ */
+ String build();
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/v4/FilterArgFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/v4/FilterArgFactory.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/v4/FilterArgFactory.java
deleted file mode 100644
index 456507c..0000000
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/v4/FilterArgFactory.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.client.api.uri.v4;
-
-import org.apache.olingo.client.api.uri.CommonFilterArgFactory;
-import org.apache.olingo.client.api.uri.FilterArg;
-import org.apache.olingo.client.api.uri.URIFilter;
-
-public interface FilterArgFactory extends CommonFilterArgFactory {
-
- FilterArg contains(FilterArg first, FilterArg second);
-
- FilterArg fractionalseconds(FilterArg param);
-
- FilterArg date(FilterArg param);
-
- FilterArg time(FilterArg param);
-
- FilterArg totaloffsetminutes(FilterArg param);
-
- FilterArg now();
-
- FilterArg mindatetime();
-
- FilterArg maxdatetime();
-
- FilterArg totalseconds(FilterArg param);
-
- FilterArg cast(FilterArg type);
-
- FilterArg cast(FilterArg expression, FilterArg type);
-
- FilterArg geoDistance(FilterArg first, FilterArg second);
-
- FilterArg geoIntersects(FilterArg first, FilterArg second);
-
- FilterArg geoLength(FilterArg first, FilterArg second);
-
- FilterArg any(FilterArg collection, URIFilter expression);
-
- FilterArg all(FilterArg collection, URIFilter expression);
-
-}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/v4/FilterFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/v4/FilterFactory.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/v4/FilterFactory.java
deleted file mode 100644
index c66b0c5..0000000
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/v4/FilterFactory.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.client.api.uri.v4;
-
-import org.apache.olingo.client.api.uri.CommonFilterFactory;
-import org.apache.olingo.client.api.uri.FilterArg;
-import org.apache.olingo.client.api.uri.URIFilter;
-import org.apache.olingo.commons.api.edm.EdmEnumType;
-
-public interface FilterFactory extends CommonFilterFactory {
-
- @Override
- FilterArgFactory getArgFactory();
-
- URIFilter has(String key, EdmEnumType enumType, String memberName);
-
- URIFilter has(FilterArg left, EdmEnumType enumType, String memberName);
-
-}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/v4/SearchFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/v4/SearchFactory.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/v4/SearchFactory.java
deleted file mode 100644
index 61689e1..0000000
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/v4/SearchFactory.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.client.api.uri.v4;
-
-public interface SearchFactory {
-
- URISearch literal(String value);
-
- URISearch and(URISearch left, URISearch right);
-
- URISearch or(URISearch left, URISearch right);
-
- URISearch not(URISearch filter);
-
-}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/v4/URIBuilder.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/v4/URIBuilder.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/v4/URIBuilder.java
deleted file mode 100644
index 0271f44..0000000
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/v4/URIBuilder.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.client.api.uri.v4;
-
-import java.util.Map;
-
-import org.apache.commons.lang3.tuple.Pair;
-import org.apache.olingo.client.api.uri.CommonURIBuilder;
-import org.apache.olingo.client.api.uri.QueryOption;
-import org.apache.olingo.commons.api.edm.EdmEnumType;
-
-public interface URIBuilder extends CommonURIBuilder<URIBuilder> {
-
- /**
- * Appends enum key segment to the URI.
- *
- * @param enumType enum type
- * @param memberName enum member name
- * @return current URIBuilder instance
- */
- URIBuilder appendKeySegment(EdmEnumType enumType, String memberName);
-
- /**
- * Appends key segment to the URI, for multiple keys.
- *
- * @param enumValues enum segment values.
- * @param segmentValues segment values.
- * @return current URIBuilder instance
- */
- URIBuilder appendKeySegment(Map<String, Pair<EdmEnumType, String>> enumValues, Map<String, Object> segmentValues);
-
- /**
- * Appends Singleton segment to the URI.
- *
- * @param segmentValue segment value.
- * @return current URIBuilder instance
- */
- URIBuilder appendSingletonSegment(String segmentValue);
-
- /**
- * Appends entity-id segment to the URI.
- *
- * @param segmentValue segment value
- * @return current URIBuilder instance
- */
- URIBuilder appendEntityIdSegment(String segmentValue);
-
- /**
- * Appends ref segment to the URI.
- *
- * @return current URIBuilder instance
- */
- URIBuilder appendRefSegment();
-
- /**
- * Appends cross join segment to the URI.
- *
- * @param segmentValues segment values.
- * @return current URIBuilder instance
- */
- URIBuilder appendCrossjoinSegment(String... segmentValues);
-
- /**
- * Appends all segment to the URI.
- *
- * @return current URIBuilder instance
- */
- URIBuilder appendAllSegment();
-
- /**
- * Adds id query option.
- *
- * @param idValue opaque token.
- * @return current URIBuilder instance
- * @see org.apache.olingo.client.api.uri.QueryOption#ID
- */
- URIBuilder id(String idValue);
-
- /**
- * Appends count query option.
- *
- * @param value true or false
- * @return current URIBuilder instance
- * @see org.apache.olingo.client.api.uri.QueryOption#COUNT
- */
- URIBuilder count(boolean value);
-
- /**
- * Appends search query option.
- *
- * @param search search expression
- * @return current URIBuilder instance
- * @see org.apache.olingo.client.api.uri.QueryOption#SEARCH
- */
- URIBuilder search(URISearch search);
-
- /**
- * Appends search query option.
- *
- * @param expression search expression
- * @return current URIBuilder instance
- * @see org.apache.olingo.client.api.uri.QueryOption#SEARCH
- */
- URIBuilder search(String expression);
-
- /**
- * The set of expanded entities can be refined through the application of expand options, expressed as a
- * semicolon-separated list of system query options, enclosed in parentheses, see [OData-URL].
- *
- * @param expandItem item to be expanded.
- * @param options System query options. Allowed query options are: $filter, $select, $orderby, $skip, $top, $count,
- * $search, $expand, and $levels.
- * @return current URIBuilder instance.
- * @see org.apache.olingo.client.api.uri.QueryOption#EXPAND
- */
- URIBuilder expandWithOptions(String expandItem, Map<QueryOption, Object> options);
-
- /**
- * Properties of related entities can be specified by including the $select query option within the $expand.
- * <br />
- * <tt>http://host/service/Products?$expand=Category($select=Name)</tt>
- * @param expandItem related entity name.
- * @param selectItems properties to be selected.
- * @return current URIBuilder instance.
- * @see org.apache.olingo.client.api.uri.QueryOption#EXPAND
- * @see org.apache.olingo.client.api.uri.QueryOption#SELECT
- */
- URIBuilder expandWithSelect(String expandItem, String... selectItems);
-}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/v4/URISearch.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/v4/URISearch.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/v4/URISearch.java
deleted file mode 100644
index 2249498..0000000
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/v4/URISearch.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.client.api.uri.v4;
-
-/**
- * Interface for <tt>$search</tt>; obtain instances via <tt>SearchFactory</tt>.
- *
- * @see SearchFactory
- */
-public interface URISearch {
-
- /**
- * @return String representation of this search.
- */
- String build();
-}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-api/src/main/java/org/apache/olingo/client/api/v4/EdmEnabledODataClient.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/v4/EdmEnabledODataClient.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/v4/EdmEnabledODataClient.java
deleted file mode 100644
index 2e9e8c2..0000000
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/v4/EdmEnabledODataClient.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.client.api.v4;
-
-import org.apache.olingo.client.api.CommonEdmEnabledODataClient;
-import org.apache.olingo.client.api.communication.request.cud.v4.UpdateType;
-import org.apache.olingo.client.api.communication.request.invoke.EdmEnabledInvokeRequestFactory;
-import org.apache.olingo.client.api.uri.v4.URIBuilder;
-
-public interface EdmEnabledODataClient extends CommonEdmEnabledODataClient<UpdateType>, ODataClient {
-
- @Override
- URIBuilder newURIBuilder();
-
- @Override
- EdmEnabledInvokeRequestFactory getInvokeRequestFactory();
-}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-api/src/main/java/org/apache/olingo/client/api/v4/ODataClient.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/v4/ODataClient.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/v4/ODataClient.java
deleted file mode 100644
index eff5ad9..0000000
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/v4/ODataClient.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.client.api.v4;
-
-import org.apache.olingo.client.api.CommonODataClient;
-import org.apache.olingo.client.api.communication.request.batch.v4.BatchRequestFactory;
-import org.apache.olingo.client.api.communication.request.cud.v4.CUDRequestFactory;
-import org.apache.olingo.client.api.communication.request.cud.v4.UpdateType;
-import org.apache.olingo.client.api.communication.request.retrieve.v4.RetrieveRequestFactory;
-import org.apache.olingo.client.api.communication.request.v4.AsyncRequestFactory;
-import org.apache.olingo.client.api.serialization.v4.ODataBinder;
-import org.apache.olingo.client.api.serialization.v4.ODataDeserializer;
-import org.apache.olingo.client.api.serialization.v4.ODataReader;
-import org.apache.olingo.client.api.uri.v4.FilterFactory;
-import org.apache.olingo.client.api.uri.v4.SearchFactory;
-import org.apache.olingo.client.api.uri.v4.URIBuilder;
-import org.apache.olingo.commons.api.domain.v4.ODataObjectFactory;
-import org.apache.olingo.commons.api.format.ODataFormat;
-
-public interface ODataClient extends CommonODataClient<UpdateType> {
-
- @Override
- ODataDeserializer getDeserializer(ODataFormat format);
-
- @Override
- ODataReader getReader();
-
- @Override
- ODataBinder getBinder();
-
- @Override
- URIBuilder newURIBuilder(String serviceRoot);
-
- @Override
- FilterFactory getFilterFactory();
-
- SearchFactory getSearchFactory();
-
- @Override
- ODataObjectFactory getObjectFactory();
-
- AsyncRequestFactory getAsyncRequestFactory();
-
- @Override
- RetrieveRequestFactory getRetrieveRequestFactory();
-
- @Override
- CUDRequestFactory getCUDRequestFactory();
-
- @Override
- BatchRequestFactory getBatchRequestFactory();
-}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/AndSearch.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/AndSearch.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/AndSearch.java
new file mode 100644
index 0000000..fc9f476
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/AndSearch.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.client.core;
+
+import org.apache.olingo.client.api.uri.URISearch;
+
+public class AndSearch implements URISearch {
+
+ private final URISearch left;
+
+ private final URISearch right;
+
+ AndSearch(final URISearch left, final URISearch right) {
+ this.left = left;
+ this.right = right;
+ }
+
+ @Override
+ public String build() {
+ return new StringBuilder().
+ append('(').append(left.build()).
+ append(" AND ").
+ append(right.build()).append(')').
+ toString();
+ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/EdmEnabledODataClientImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/EdmEnabledODataClientImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/EdmEnabledODataClientImpl.java
new file mode 100644
index 0000000..b254473
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/EdmEnabledODataClientImpl.java
@@ -0,0 +1,86 @@
+/*
+ * 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;
+
+import org.apache.olingo.client.api.EdmEnabledODataClient;
+import org.apache.olingo.client.api.communication.request.invoke.EdmEnabledInvokeRequestFactory;
+import org.apache.olingo.client.api.communication.request.retrieve.EdmMetadataRequest;
+import org.apache.olingo.client.api.communication.response.ODataRetrieveResponse;
+import org.apache.olingo.client.api.uri.URIBuilder;
+import org.apache.olingo.client.core.communication.request.invoke.EdmEnabledInvokeRequestFactoryImpl;
+import org.apache.olingo.client.core.uri.URIBuilderImpl;
+import org.apache.olingo.commons.api.edm.Edm;
+
+public class EdmEnabledODataClientImpl extends ODataClientImpl implements EdmEnabledODataClient {
+
+ private final String serviceRoot;
+
+ private Edm edm;
+
+ private String metadataETag;
+
+ private EdmEnabledInvokeRequestFactory edmEnabledInvokeRequestFactory;
+
+ public EdmEnabledODataClientImpl(final String serviceRoot, final Edm edm, final String metadataETag) {
+ super();
+
+ this.serviceRoot = serviceRoot;
+ this.edm = edm;
+ this.metadataETag = metadataETag;
+ }
+
+ @Override
+ public String getServiceRoot() {
+ return serviceRoot;
+ }
+
+ @Override
+ public Edm getEdm(final String metadataETag) {
+ synchronized (this) {
+ if (this.edm == null || (metadataETag != null && !metadataETag.equals(this.metadataETag))) {
+ final EdmMetadataRequest metadataReq = getRetrieveRequestFactory().getMetadataRequest(serviceRoot);
+ final ODataRetrieveResponse<Edm> metadataRes = metadataReq.execute();
+ this.metadataETag = metadataRes.getETag();
+ this.edm = metadataRes.getBody();
+ }
+ }
+ return this.edm;
+ }
+
+ @Override
+ public Edm getCachedEdm() {
+ if (this.edm == null) {
+ getEdm(null);
+ }
+ return this.edm;
+ }
+
+ @Override
+ public URIBuilder newURIBuilder() {
+ return new URIBuilderImpl(getServiceVersion(), configuration, serviceRoot);
+ }
+
+ @Override
+ public EdmEnabledInvokeRequestFactory getInvokeRequestFactory() {
+ if (edmEnabledInvokeRequestFactory == null) {
+ edmEnabledInvokeRequestFactory = new EdmEnabledInvokeRequestFactoryImpl(this);
+ }
+ return edmEnabledInvokeRequestFactory;
+ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/LiteralSearch.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/LiteralSearch.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/LiteralSearch.java
new file mode 100644
index 0000000..3d64d6f
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/LiteralSearch.java
@@ -0,0 +1,35 @@
+/*
+ * 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;
+
+import org.apache.olingo.client.api.uri.URISearch;
+
+public class LiteralSearch implements URISearch {
+
+ private final String value;
+
+ LiteralSearch(final String value) {
+ this.value = value;
+ }
+
+ @Override
+ public String build() {
+ return value;
+ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/NotSearch.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/NotSearch.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/NotSearch.java
new file mode 100644
index 0000000..07f4b0c
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/NotSearch.java
@@ -0,0 +1,35 @@
+/*
+ * 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;
+
+import org.apache.olingo.client.api.uri.URISearch;
+
+public class NotSearch implements URISearch {
+
+ private final URISearch filter;
+
+ NotSearch(final URISearch left) {
+ this.filter = left;
+ }
+
+ @Override
+ public String build() {
+ return new StringBuilder("NOT (").append(filter.build()).append(')').toString();
+ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/ODataClientFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/ODataClientFactory.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/ODataClientFactory.java
index 804466a..e4cf2e7 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/ODataClientFactory.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/ODataClientFactory.java
@@ -18,16 +18,15 @@
*/
package org.apache.olingo.client.core;
-import org.apache.olingo.client.api.v4.EdmEnabledODataClient;
-import org.apache.olingo.client.api.v4.ODataClient;
-import org.apache.olingo.client.core.v4.EdmEnabledODataClientImpl;
+import org.apache.olingo.client.api.EdmEnabledODataClient;
+import org.apache.olingo.client.api.ODataClient;
import org.apache.olingo.commons.api.edm.Edm;
import org.apache.olingo.commons.api.format.ODataFormat;
public final class ODataClientFactory {
public static ODataClient getV4() {
- return new org.apache.olingo.client.core.v4.ODataClientImpl();
+ return new org.apache.olingo.client.core.ODataClientImpl();
}
public static EdmEnabledODataClient getEdmEnabledV4(final String serviceRoot) {
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/ODataClientImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/ODataClientImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/ODataClientImpl.java
new file mode 100644
index 0000000..7db4856
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/ODataClientImpl.java
@@ -0,0 +1,156 @@
+/*
+ * 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;
+
+import org.apache.olingo.client.api.ODataClient;
+import org.apache.olingo.client.api.communication.header.HeaderName;
+import org.apache.olingo.client.api.communication.header.ODataHeaders;
+import org.apache.olingo.client.api.communication.request.AsyncRequestFactory;
+import org.apache.olingo.client.api.communication.request.batch.BatchRequestFactory;
+import org.apache.olingo.client.api.communication.request.cud.CUDRequestFactory;
+import org.apache.olingo.client.api.communication.request.cud.UpdateType;
+import org.apache.olingo.client.api.communication.request.invoke.InvokeRequestFactory;
+import org.apache.olingo.client.api.communication.request.retrieve.RetrieveRequestFactory;
+import org.apache.olingo.client.api.serialization.ODataBinder;
+import org.apache.olingo.client.api.serialization.ODataDeserializer;
+import org.apache.olingo.client.api.serialization.ODataReader;
+import org.apache.olingo.client.api.uri.FilterFactory;
+import org.apache.olingo.client.api.uri.SearchFactory;
+import org.apache.olingo.client.api.uri.URIBuilder;
+import org.apache.olingo.client.core.communication.header.ODataHeadersImpl;
+import org.apache.olingo.client.core.communication.request.AsyncRequestFactoryImpl;
+import org.apache.olingo.client.core.communication.request.batch.BatchRequestFactoryImpl;
+import org.apache.olingo.client.core.communication.request.cud.CUDRequestFactoryImpl;
+import org.apache.olingo.client.core.communication.request.invoke.InvokeRequestFactoryImpl;
+import org.apache.olingo.client.core.communication.request.retrieve.RetrieveRequestFactoryImpl;
+import org.apache.olingo.client.core.serialization.ODataBinderImpl;
+import org.apache.olingo.client.core.serialization.ODataDeserializerImpl;
+import org.apache.olingo.client.core.serialization.ODataReaderImpl;
+import org.apache.olingo.client.core.uri.FilterFactoryImpl;
+import org.apache.olingo.client.core.uri.URIBuilderImpl;
+import org.apache.olingo.commons.api.domain.v4.ODataObjectFactory;
+import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
+import org.apache.olingo.commons.api.format.ODataFormat;
+import org.apache.olingo.commons.api.serialization.ODataSerializer;
+import org.apache.olingo.commons.core.domain.v4.ODataObjectFactoryImpl;
+import org.apache.olingo.commons.core.serialization.AtomSerializer;
+import org.apache.olingo.commons.core.serialization.JsonSerializer;
+
+public class ODataClientImpl extends AbstractODataClient<UpdateType> implements ODataClient {
+
+ private final FilterFactory filterFactory = new FilterFactoryImpl(getServiceVersion());
+
+ private final SearchFactory searchFactory = new SearchFactoryImpl();
+
+ private final ODataReader reader = new ODataReaderImpl(this);
+
+ private final ODataBinder binder = new ODataBinderImpl(this);
+
+ private final ODataObjectFactory objectFactory = new ODataObjectFactoryImpl(getServiceVersion());
+
+ private final AsyncRequestFactory asyncReqFact = new AsyncRequestFactoryImpl(this);
+
+ private final RetrieveRequestFactory retrieveReqFact = new RetrieveRequestFactoryImpl(this);
+
+ private final CUDRequestFactory cudReqFact = new CUDRequestFactoryImpl(this);
+
+ private final InvokeRequestFactory invokeReqFact = new InvokeRequestFactoryImpl(this);
+
+ private final BatchRequestFactory batchReqFact = new BatchRequestFactoryImpl(this);
+
+ @Override
+ public ODataServiceVersion getServiceVersion() {
+ return ODataServiceVersion.V40;
+ }
+
+ @Override
+ public ODataHeaders newVersionHeaders() {
+ final ODataHeadersImpl odataHeaders = new ODataHeadersImpl();
+ odataHeaders.setHeader(HeaderName.odataMaxVersion, ODataServiceVersion.V40.toString());
+ odataHeaders.setHeader(HeaderName.odataVersion, ODataServiceVersion.V40.toString());
+ return odataHeaders;
+ }
+
+ @Override
+ public URIBuilder newURIBuilder(final String serviceRoot) {
+ return new URIBuilderImpl(getServiceVersion(), getConfiguration(), serviceRoot);
+ }
+
+ @Override
+ public FilterFactory getFilterFactory() {
+ return filterFactory;
+ }
+
+ @Override
+ public SearchFactory getSearchFactory() {
+ return searchFactory;
+ }
+
+ @Override
+ public ODataDeserializer getDeserializer(final ODataFormat format) {
+ return new ODataDeserializerImpl(getServiceVersion(), false, format);
+ }
+
+ @Override
+ public ODataSerializer getSerializer(final ODataFormat format) {
+ return format == ODataFormat.ATOM || format == ODataFormat.XML ?
+ new AtomSerializer(getServiceVersion()) :
+ new JsonSerializer(getServiceVersion(), false, format);
+ }
+
+ @Override
+ public ODataReader getReader() {
+ return reader;
+ }
+
+ @Override
+ public ODataBinder getBinder() {
+ return binder;
+ }
+
+ @Override
+ public ODataObjectFactory getObjectFactory() {
+ return objectFactory;
+ }
+
+ @Override
+ public AsyncRequestFactory getAsyncRequestFactory() {
+ return asyncReqFact;
+ }
+
+ @Override
+ public RetrieveRequestFactory getRetrieveRequestFactory() {
+ return retrieveReqFact;
+ }
+
+ @Override
+ public CUDRequestFactory getCUDRequestFactory() {
+ return cudReqFact;
+ }
+
+ @Override
+ public InvokeRequestFactory getInvokeRequestFactory() {
+ return invokeReqFact;
+ }
+
+ @Override
+ public BatchRequestFactory getBatchRequestFactory() {
+ return batchReqFact;
+ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/OrSearch.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/OrSearch.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/OrSearch.java
new file mode 100644
index 0000000..f876a37
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/OrSearch.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.client.core;
+
+import org.apache.olingo.client.api.uri.URISearch;
+
+public class OrSearch implements URISearch {
+
+ private final URISearch left;
+
+ private final URISearch right;
+
+ OrSearch(final URISearch left, final URISearch right) {
+ this.left = left;
+ this.right = right;
+ }
+
+ @Override
+ public String build() {
+ return new StringBuilder().
+ append('(').append(left.build()).
+ append(" OR ").
+ append(right.build()).append(')').
+ toString();
+ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/SearchFactoryImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/SearchFactoryImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/SearchFactoryImpl.java
new file mode 100644
index 0000000..1f0895d
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/SearchFactoryImpl.java
@@ -0,0 +1,46 @@
+/*
+ * 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;
+
+import org.apache.olingo.client.api.uri.SearchFactory;
+import org.apache.olingo.client.api.uri.URISearch;
+
+public class SearchFactoryImpl implements SearchFactory {
+
+ @Override
+ public URISearch literal(final String value) {
+ return new LiteralSearch(value);
+ }
+
+ @Override
+ public URISearch and(final URISearch left, final URISearch right) {
+ return new AndSearch(left, right);
+ }
+
+ @Override
+ public URISearch or(final URISearch left, final URISearch right) {
+ return new OrSearch(left, right);
+ }
+
+ @Override
+ public URISearch not(final URISearch filter) {
+ return new NotSearch(filter);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AbstractODataRequest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AbstractODataRequest.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AbstractODataRequest.java
index 9f02870..a5b267c 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AbstractODataRequest.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AbstractODataRequest.java
@@ -48,9 +48,9 @@ import org.apache.olingo.commons.api.http.HttpMethod;
* Abstract representation of an OData request. Get instance by using factories.
*
* @see org.apache.olingo.client.api.communication.request.cud.v3.CUDRequestFactory
- * @see org.apache.olingo.client.api.communication.request.cud.v4.CUDRequestFactory
+ * @see org.apache.olingo.client.api.communication.request.cud.CUDRequestFactory
* @see org.apache.olingo.client.api.communication.request.batch.v3.BatchRequestFactory
- * @see org.apache.olingo.client.api.communication.request.batch.v4.BatchRequestFactory
+ * @see org.apache.olingo.client.api.communication.request.batch.BatchRequestFactory
* @see org.apache.olingo.client.api.communication.request.invoke.InvokeRequestFactory
*/
public abstract class AbstractODataRequest extends AbstractRequest implements ODataRequest {
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AsyncBatchRequestWrapperImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AsyncBatchRequestWrapperImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AsyncBatchRequestWrapperImpl.java
new file mode 100644
index 0000000..71174a4
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AsyncBatchRequestWrapperImpl.java
@@ -0,0 +1,119 @@
+/*
+ * 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.communication.request;
+
+import java.net.URI;
+import java.util.Collection;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.olingo.client.api.ODataClient;
+import org.apache.olingo.client.api.communication.header.HeaderName;
+import org.apache.olingo.client.api.communication.header.ODataPreferences;
+import org.apache.olingo.client.api.communication.request.AsyncBatchRequestWrapper;
+import org.apache.olingo.client.api.communication.request.ODataBatchableRequest;
+import org.apache.olingo.client.api.communication.request.batch.BatchManager;
+import org.apache.olingo.client.api.communication.request.batch.ODataBatchRequest;
+import org.apache.olingo.client.api.communication.request.batch.ODataChangeset;
+import org.apache.olingo.client.api.communication.response.AsyncResponseWrapper;
+import org.apache.olingo.client.api.communication.response.ODataBatchResponse;
+import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
+
+public class AsyncBatchRequestWrapperImpl extends AsyncRequestWrapperImpl<ODataBatchResponse>
+ implements AsyncBatchRequestWrapper {
+
+ private BatchManager batchManager;
+
+ protected AsyncBatchRequestWrapperImpl(final ODataClient odataClient, final ODataBatchRequest odataRequest) {
+ super(odataClient, odataRequest);
+ batchManager = odataRequest.payloadManager();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public ODataChangeset addChangeset() {
+ return batchManager.addChangeset();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void addRetrieve(final ODataBatchableRequest request) {
+ batchManager.addRequest(request);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void addOutsideUpdate(final ODataBatchableRequest request) {
+ batchManager.addRequest(request);
+ }
+
+ @Override
+ public AsyncResponseWrapper<ODataBatchResponse> execute() {
+ return new AsyncResponseWrapperImpl(batchManager.getResponse());
+ }
+
+ public class AsyncResponseWrapperImpl
+ extends AsyncRequestWrapperImpl<ODataBatchResponse>.AsyncResponseWrapperImpl {
+
+ /**
+ * Constructor.
+ *
+ * @param res OData batch response.
+ */
+ public AsyncResponseWrapperImpl(final ODataBatchResponse res) {
+ super();
+
+ if (res.getStatusCode() == 202) {
+ retrieveMonitorDetails(res);
+ } else {
+ response = res;
+ }
+ }
+
+ private void retrieveMonitorDetails(final ODataBatchResponse res) {
+ Collection<String> headers = res.getHeader(HeaderName.location.toString());
+ if (headers == null || headers.isEmpty()) {
+ throw new AsyncRequestException("Invalid async request response. Monitor URL not found");
+ } else {
+ this.location = URI.create(headers.iterator().next());
+ }
+
+ headers = res.getHeader(HeaderName.retryAfter.toString());
+ if (headers != null && !headers.isEmpty()) {
+ this.retryAfter = Integer.parseInt(headers.iterator().next());
+ }
+
+ headers = res.getHeader(HeaderName.preferenceApplied.toString());
+ if (headers != null && !headers.isEmpty()) {
+ for (String header : headers) {
+ if (header.equalsIgnoreCase(new ODataPreferences(ODataServiceVersion.V40).respondAsync())) {
+ preferenceApplied = true;
+ }
+ }
+ }
+
+ IOUtils.closeQuietly(res.getRawResponse());
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AsyncRequestException.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AsyncRequestException.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AsyncRequestException.java
new file mode 100644
index 0000000..a039c94
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AsyncRequestException.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.client.core.communication.request;
+
+public class AsyncRequestException extends RuntimeException {
+
+ private static final long serialVersionUID = -6080844898544654406L;
+
+ public AsyncRequestException(final String message) {
+ super(message);
+ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AsyncRequestFactoryImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AsyncRequestFactoryImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AsyncRequestFactoryImpl.java
new file mode 100644
index 0000000..14e1e2a
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AsyncRequestFactoryImpl.java
@@ -0,0 +1,46 @@
+/*
+ * 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.communication.request;
+
+import org.apache.olingo.client.api.ODataClient;
+import org.apache.olingo.client.api.communication.request.AsyncBatchRequestWrapper;
+import org.apache.olingo.client.api.communication.request.AsyncRequestFactory;
+import org.apache.olingo.client.api.communication.request.AsyncRequestWrapper;
+import org.apache.olingo.client.api.communication.request.ODataRequest;
+import org.apache.olingo.client.api.communication.request.batch.ODataBatchRequest;
+import org.apache.olingo.client.api.communication.response.ODataResponse;
+
+public class AsyncRequestFactoryImpl implements AsyncRequestFactory {
+
+ private final ODataClient client;
+
+ public AsyncRequestFactoryImpl(final ODataClient client) {
+ this.client = client;
+ }
+
+ @Override
+ public <R extends ODataResponse> AsyncRequestWrapper<R> getAsyncRequestWrapper(final ODataRequest odataRequest) {
+ return new AsyncRequestWrapperImpl<R>(client, odataRequest);
+ }
+
+ @Override
+ public AsyncBatchRequestWrapper getAsyncBatchRequestWrapper(final ODataBatchRequest odataRequest) {
+ return new AsyncBatchRequestWrapperImpl(client, odataRequest);
+ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AsyncRequestWrapperImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AsyncRequestWrapperImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AsyncRequestWrapperImpl.java
new file mode 100644
index 0000000..f02d9e4
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AsyncRequestWrapperImpl.java
@@ -0,0 +1,314 @@
+/*
+ * 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.communication.request;
+
+import java.io.IOException;
+import java.net.URI;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.http.Header;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpUriRequest;
+import org.apache.http.impl.client.DecompressingHttpClient;
+import org.apache.http.util.EntityUtils;
+import org.apache.olingo.client.api.ODataClient;
+import org.apache.olingo.client.api.communication.ODataClientErrorException;
+import org.apache.olingo.client.api.communication.header.HeaderName;
+import org.apache.olingo.client.api.communication.header.ODataPreferences;
+import org.apache.olingo.client.api.communication.request.AsyncRequestWrapper;
+import org.apache.olingo.client.api.communication.request.ODataRequest;
+import org.apache.olingo.client.api.communication.request.cud.ODataDeleteRequest;
+import org.apache.olingo.client.api.communication.response.AsyncResponseWrapper;
+import org.apache.olingo.client.api.communication.response.ODataDeleteResponse;
+import org.apache.olingo.client.api.communication.response.ODataResponse;
+import org.apache.olingo.client.api.http.HttpClientException;
+import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
+import org.apache.olingo.commons.api.http.HttpMethod;
+
+public class AsyncRequestWrapperImpl<R extends ODataResponse> extends AbstractRequest
+ implements AsyncRequestWrapper<R> {
+
+ protected static final int MAX_RETRY = 5;
+
+ protected final ODataClient odataClient;
+
+ /**
+ * Request to be wrapped.
+ */
+ protected final ODataRequest odataRequest;
+
+ /**
+ * HTTP client.
+ */
+ protected final HttpClient httpClient;
+
+ /**
+ * HTTP request.
+ */
+ protected final HttpUriRequest request;
+
+ /**
+ * Target URI.
+ */
+ protected final URI uri;
+
+ protected AsyncRequestWrapperImpl(final ODataClient odataClient, final ODataRequest odataRequest) {
+ this.odataRequest = odataRequest;
+ this.odataRequest.setAccept(this.odataRequest.getAccept());
+ this.odataRequest.setContentType(this.odataRequest.getContentType());
+
+ extendHeader(HeaderName.prefer.toString(), new ODataPreferences(ODataServiceVersion.V40).respondAsync());
+
+ this.odataClient = odataClient;
+ final HttpMethod method = odataRequest.getMethod();
+
+ // target uri
+ this.uri = odataRequest.getURI();
+
+ HttpClient _httpClient = odataClient.getConfiguration().getHttpClientFactory().create(method, this.uri);
+ if (odataClient.getConfiguration().isGzipCompression()) {
+ _httpClient = new DecompressingHttpClient(_httpClient);
+ }
+ this.httpClient = _httpClient;
+
+ this.request = odataClient.getConfiguration().getHttpUriRequestFactory().create(method, this.uri);
+ }
+
+ @Override
+ public final AsyncRequestWrapper<R> wait(final int waitInSeconds) {
+ extendHeader(HeaderName.prefer.toString(), new ODataPreferences(ODataServiceVersion.V40).wait(waitInSeconds));
+ return this;
+ }
+
+ @Override
+ public final AsyncRequestWrapper<R> callback(URI url) {
+ extendHeader(HeaderName.prefer.toString(),
+ new ODataPreferences(ODataServiceVersion.V40).callback(url.toASCIIString()));
+ return this;
+ }
+
+ protected final void extendHeader(final String headerName, final String headerValue) {
+ final StringBuilder extended = new StringBuilder();
+ if (this.odataRequest.getHeaderNames().contains(headerName)) {
+ extended.append(this.odataRequest.getHeader(headerName)).append(", ");
+ }
+
+ this.odataRequest.addCustomHeader(headerName, extended.append(headerValue).toString());
+ }
+
+ @Override
+ public AsyncResponseWrapper<R> execute() {
+ return new AsyncResponseWrapperImpl(doExecute());
+ }
+
+ protected HttpResponse doExecute() {
+ // Add all available headers
+ for (String key : odataRequest.getHeaderNames()) {
+ final String value = odataRequest.getHeader(key);
+ this.request.addHeader(key, value);
+ LOG.debug("HTTP header being sent {}: {}", key, value);
+ }
+
+ return executeHttpRequest(httpClient, this.request);
+ }
+
+ public class AsyncResponseWrapperImpl implements AsyncResponseWrapper<R> {
+
+ protected URI location = null;
+
+ protected R response = null;
+
+ protected int retryAfter = 5;
+
+ protected boolean preferenceApplied = false;
+
+ public AsyncResponseWrapperImpl() {
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param res HTTP response.
+ */
+ @SuppressWarnings("unchecked")
+ public AsyncResponseWrapperImpl(final HttpResponse res) {
+ if (res.getStatusLine().getStatusCode() == 202) {
+ retrieveMonitorDetails(res);
+ } else {
+ response = (R) ((AbstractODataRequest) odataRequest).getResponseTemplate().initFromHttpResponse(res);
+ }
+ }
+
+ @Override
+ public boolean isPreferenceApplied() {
+ return preferenceApplied;
+ }
+
+ @Override
+ public boolean isDone() {
+ if (response == null) {
+ // check to the monitor URL
+ final HttpResponse res = checkMonitor(location);
+
+ if (res.getStatusLine().getStatusCode() == 202) {
+ retrieveMonitorDetails(res);
+ } else {
+ response = instantiateResponse(res);
+ }
+ }
+
+ return response != null;
+ }
+
+ @Override
+ public R getODataResponse() {
+ HttpResponse res = null;
+ for (int i = 0; response == null && i < MAX_RETRY; i++) {
+ res = checkMonitor(location);
+
+ if (res.getStatusLine().getStatusCode() == 202) {
+
+ final Header[] headers = res.getHeaders(HeaderName.retryAfter.toString());
+ if (ArrayUtils.isNotEmpty(headers)) {
+ this.retryAfter = Integer.parseInt(headers[0].getValue());
+ }
+
+ try {
+ // wait for retry-after
+ Thread.sleep(retryAfter * 1000);
+ } catch (InterruptedException ignore) {
+ // ignore
+ }
+
+ } else {
+ location = null;
+ return instantiateResponse(res);
+ }
+ }
+
+ if (response == null) {
+ throw new ODataClientErrorException(res == null ? null : res.getStatusLine());
+ }
+
+ return response;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public ODataDeleteResponse delete() {
+ final ODataDeleteRequest deleteRequest = odataClient.getCUDRequestFactory().getDeleteRequest(location);
+ return deleteRequest.execute();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public AsyncResponseWrapper<ODataDeleteResponse> asyncDelete() {
+ return odataClient.getAsyncRequestFactory().<ODataDeleteResponse>getAsyncRequestWrapper(
+ odataClient.getCUDRequestFactory().getDeleteRequest(location)).execute();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public AsyncResponseWrapper<R> forceNextMonitorCheck(final URI uri) {
+ this.location = uri;
+ this.response = null;
+ return this;
+ }
+
+ @SuppressWarnings("unchecked")
+ private R instantiateResponse(final HttpResponse res) {
+ R odataResponse;
+ try {
+ odataResponse = (R) ((AbstractODataRequest) odataRequest).getResponseTemplate().
+ initFromEnclosedPart(res.getEntity().getContent());
+
+ } catch (Exception e) {
+ LOG.error("Error instantiating odata response", e);
+ odataResponse = null;
+ }
+
+ return odataResponse;
+ }
+
+ private void retrieveMonitorDetails(final HttpResponse res) {
+ Header[] headers = res.getHeaders(HeaderName.location.toString());
+ if (ArrayUtils.isNotEmpty(headers)) {
+ this.location = URI.create(headers[0].getValue());
+ } else {
+ throw new AsyncRequestException(
+ "Invalid async request response. Monitor URL '" + headers[0].getValue() + "'");
+ }
+
+ headers = res.getHeaders(HeaderName.retryAfter.toString());
+ if (ArrayUtils.isNotEmpty(headers)) {
+ this.retryAfter = Integer.parseInt(headers[0].getValue());
+ }
+
+ headers = res.getHeaders(HeaderName.preferenceApplied.toString());
+ if (ArrayUtils.isNotEmpty(headers)) {
+ for (Header header : headers) {
+ if (header.getValue().equalsIgnoreCase(new ODataPreferences(ODataServiceVersion.V40).respondAsync())) {
+ preferenceApplied = true;
+ }
+ }
+ }
+ try {
+ EntityUtils.consume(res.getEntity());
+ } catch (IOException ex) {
+ Logger.getLogger(AsyncRequestWrapperImpl.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ }
+ }
+
+ protected final HttpResponse checkMonitor(final URI location) {
+ if (location == null) {
+ throw new AsyncRequestException("Invalid async request response. Missing monitor URL");
+ }
+
+ final HttpUriRequest monitor = odataClient.getConfiguration().getHttpUriRequestFactory().
+ create(HttpMethod.GET, location);
+
+ return executeHttpRequest(httpClient, monitor);
+ }
+
+ protected final HttpResponse executeHttpRequest(final HttpClient client, final HttpUriRequest req) {
+ final HttpResponse response;
+ try {
+ response = client.execute(req);
+ } catch (IOException e) {
+ throw new HttpClientException(e);
+ } catch (RuntimeException e) {
+ req.abort();
+ throw new HttpClientException(e);
+ }
+
+ checkResponse(odataClient, response, odataRequest.getAccept());
+
+ return response;
+ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/batch/BatchRequestFactoryImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/batch/BatchRequestFactoryImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/batch/BatchRequestFactoryImpl.java
new file mode 100644
index 0000000..e29a01d
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/batch/BatchRequestFactoryImpl.java
@@ -0,0 +1,37 @@
+/*
+ * 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.communication.request.batch;
+
+import org.apache.olingo.client.api.ODataClient;
+import org.apache.olingo.client.api.communication.request.batch.BatchRequestFactory;
+import org.apache.olingo.client.api.communication.request.batch.ODataBatchRequest;
+
+public class BatchRequestFactoryImpl extends AbstractBatchRequestFactory
+ implements BatchRequestFactory {
+
+ public BatchRequestFactoryImpl(final ODataClient client) {
+ super(client);
+ }
+
+ @Override
+ public ODataBatchRequest getBatchRequest(final String serviceRoot) {
+ return new ODataBatchRequestImpl(
+ (ODataClient) client, client.newURIBuilder(serviceRoot).appendBatchSegment().build());
+ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/batch/ODataBatchRequestImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/batch/ODataBatchRequestImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/batch/ODataBatchRequestImpl.java
new file mode 100644
index 0000000..220e495
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/batch/ODataBatchRequestImpl.java
@@ -0,0 +1,120 @@
+/*
+ * 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.communication.request.batch;
+
+import java.io.IOException;
+import java.net.URI;
+import java.util.Iterator;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.http.HttpResponse;
+import org.apache.http.client.HttpClient;
+import org.apache.olingo.client.api.CommonODataClient;
+import org.apache.olingo.client.api.ODataClient;
+import org.apache.olingo.client.api.communication.header.HeaderName;
+import org.apache.olingo.client.api.communication.header.ODataPreferences;
+import org.apache.olingo.client.api.communication.request.ODataBatchableRequest;
+import org.apache.olingo.client.api.communication.request.batch.BatchManager;
+import org.apache.olingo.client.api.communication.request.batch.ODataBatchRequest;
+import org.apache.olingo.client.api.communication.request.batch.ODataBatchResponseItem;
+import org.apache.olingo.client.api.communication.response.ODataBatchResponse;
+import org.apache.olingo.client.core.communication.response.AbstractODataResponse;
+import org.apache.olingo.client.core.communication.response.batch.ODataBatchResponseManager;
+
+public class ODataBatchRequestImpl
+ extends AbstractODataBatchRequest<ODataBatchResponse, BatchManager>
+ implements ODataBatchRequest {
+
+ public ODataBatchRequestImpl(final ODataClient odataClient, final URI uri) {
+ super(odataClient, uri);
+ setAccept(odataClient.getConfiguration().getDefaultBatchAcceptFormat().toContentTypeString());
+ }
+
+ @Override
+ protected BatchManager getPayloadManager() {
+ if (payloadManager == null) {
+ payloadManager = new BatchManagerImpl(this);
+ }
+ return (BatchManager) payloadManager;
+ }
+
+ @Override
+ public ODataBatchRequest rawAppend(final byte[] toBeStreamed) throws IOException {
+ getPayloadManager().getBodyStreamWriter().write(toBeStreamed);
+ return this;
+ }
+
+ @Override
+ public ODataBatchRequest rawAppend(final byte[] toBeStreamed, int off, int len) throws IOException {
+ getPayloadManager().getBodyStreamWriter().write(toBeStreamed, off, len);
+ return this;
+ }
+
+ @Override
+ protected HttpResponse doExecute() {
+ if (odataClient.getConfiguration().isContinueOnError()) {
+ addCustomHeader(HeaderName.prefer, new ODataPreferences(odataClient.getServiceVersion()).continueOnError());
+ }
+
+ return super.doExecute();
+ }
+
+ /**
+ * Batch request payload management.
+ */
+ public class BatchManagerImpl extends AbstractBatchManager implements BatchManager {
+
+ public BatchManagerImpl(final ODataBatchRequest req) {
+ super(req, ODataBatchRequestImpl.this.futureWrapper,
+ ODataBatchRequestImpl.this.odataClient.getConfiguration().isContinueOnError());
+ }
+
+ @Override
+ protected ODataBatchResponse getResponseInstance(final long timeout, final TimeUnit unit) {
+ return new ODataBatchResponseImpl(odataClient, httpClient, getHttpResponse(timeout, unit));
+ }
+
+ @Override
+ protected void validateSingleRequest(final ODataBatchableRequest request) {
+ }
+ }
+
+ protected class ODataBatchResponseImpl extends AbstractODataResponse implements ODataBatchResponse {
+
+ protected ODataBatchResponseImpl(
+ final CommonODataClient<?> odataClient, final HttpClient httpClient, final HttpResponse res) {
+
+ super(odataClient, httpClient, res);
+ }
+
+ @Override
+ public Iterator<ODataBatchResponseItem> getBody() {
+ return new ODataBatchResponseManager(this, expectedResItems, odataClient.getConfiguration().isContinueOnError());
+ }
+
+ @Override
+ public void close() {
+ for (ODataBatchResponseItem resItem : expectedResItems) {
+ resItem.close();
+ }
+ super.close();
+ }
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/batch/ODataChangesetResponseItem.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/batch/ODataChangesetResponseItem.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/batch/ODataChangesetResponseItem.java
index bdc859c..cbeb5a4 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/batch/ODataChangesetResponseItem.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/batch/ODataChangesetResponseItem.java
@@ -24,8 +24,8 @@ import java.util.NoSuchElementException;
import org.apache.olingo.client.api.ODataBatchConstants;
import org.apache.olingo.client.api.communication.response.ODataResponse;
+import org.apache.olingo.client.core.communication.response.AsyncResponseImpl;
import org.apache.olingo.client.core.communication.response.batch.ODataBatchErrorResponse;
-import org.apache.olingo.client.core.communication.response.v4.AsyncResponseImpl;
/**
* Changeset wrapper for the corresponding batch item.
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/batch/ODataSingleResponseItem.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/batch/ODataSingleResponseItem.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/batch/ODataSingleResponseItem.java
index 35e30d2..e7e6546 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/batch/ODataSingleResponseItem.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/batch/ODataSingleResponseItem.java
@@ -23,8 +23,8 @@ import java.util.Map;
import java.util.NoSuchElementException;
import org.apache.olingo.client.api.communication.response.ODataResponse;
+import org.apache.olingo.client.core.communication.response.AsyncResponseImpl;
import org.apache.olingo.client.core.communication.response.batch.ODataBatchErrorResponse;
-import org.apache.olingo.client.core.communication.response.v4.AsyncResponseImpl;
/**
* Retrieve response wrapper for the corresponding batch item.
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/batch/v4/BatchRequestFactoryImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/batch/v4/BatchRequestFactoryImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/batch/v4/BatchRequestFactoryImpl.java
deleted file mode 100644
index 9d93ad4..0000000
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/batch/v4/BatchRequestFactoryImpl.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.client.core.communication.request.batch.v4;
-
-import org.apache.olingo.client.api.communication.request.batch.v4.BatchRequestFactory;
-import org.apache.olingo.client.api.communication.request.batch.v4.ODataBatchRequest;
-import org.apache.olingo.client.api.v4.ODataClient;
-import org.apache.olingo.client.core.communication.request.batch.AbstractBatchRequestFactory;
-
-public class BatchRequestFactoryImpl extends AbstractBatchRequestFactory
- implements BatchRequestFactory {
-
- public BatchRequestFactoryImpl(final ODataClient client) {
- super(client);
- }
-
- @Override
- public ODataBatchRequest getBatchRequest(final String serviceRoot) {
- return new ODataBatchRequestImpl(
- (ODataClient) client, client.newURIBuilder(serviceRoot).appendBatchSegment().build());
- }
-}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/batch/v4/ODataBatchRequestImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/batch/v4/ODataBatchRequestImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/batch/v4/ODataBatchRequestImpl.java
deleted file mode 100644
index 55a3ee7..0000000
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/batch/v4/ODataBatchRequestImpl.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.client.core.communication.request.batch.v4;
-
-import java.io.IOException;
-import java.net.URI;
-import java.util.Iterator;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.http.HttpResponse;
-import org.apache.http.client.HttpClient;
-import org.apache.olingo.client.api.CommonODataClient;
-import org.apache.olingo.client.api.communication.header.HeaderName;
-import org.apache.olingo.client.api.communication.header.ODataPreferences;
-import org.apache.olingo.client.api.communication.request.ODataBatchableRequest;
-import org.apache.olingo.client.api.communication.request.batch.BatchManager;
-import org.apache.olingo.client.api.communication.request.batch.ODataBatchResponseItem;
-import org.apache.olingo.client.api.communication.request.batch.v4.ODataBatchRequest;
-import org.apache.olingo.client.api.communication.response.ODataBatchResponse;
-import org.apache.olingo.client.api.v4.ODataClient;
-import org.apache.olingo.client.core.communication.request.batch.AbstractBatchManager;
-import org.apache.olingo.client.core.communication.request.batch.AbstractODataBatchRequest;
-import org.apache.olingo.client.core.communication.response.AbstractODataResponse;
-import org.apache.olingo.client.core.communication.response.batch.ODataBatchResponseManager;
-
-public class ODataBatchRequestImpl
- extends AbstractODataBatchRequest<ODataBatchResponse, BatchManager>
- implements ODataBatchRequest {
-
- public ODataBatchRequestImpl(final ODataClient odataClient, final URI uri) {
- super(odataClient, uri);
- setAccept(odataClient.getConfiguration().getDefaultBatchAcceptFormat().toContentTypeString());
- }
-
- @Override
- protected BatchManager getPayloadManager() {
- if (payloadManager == null) {
- payloadManager = new BatchManagerImpl(this);
- }
- return (BatchManager) payloadManager;
- }
-
- @Override
- public ODataBatchRequest rawAppend(final byte[] toBeStreamed) throws IOException {
- getPayloadManager().getBodyStreamWriter().write(toBeStreamed);
- return this;
- }
-
- @Override
- public ODataBatchRequest rawAppend(final byte[] toBeStreamed, int off, int len) throws IOException {
- getPayloadManager().getBodyStreamWriter().write(toBeStreamed, off, len);
- return this;
- }
-
- @Override
- protected HttpResponse doExecute() {
- if (odataClient.getConfiguration().isContinueOnError()) {
- addCustomHeader(HeaderName.prefer, new ODataPreferences(odataClient.getServiceVersion()).continueOnError());
- }
-
- return super.doExecute();
- }
-
- /**
- * Batch request payload management.
- */
- public class BatchManagerImpl extends AbstractBatchManager implements BatchManager {
-
- public BatchManagerImpl(final ODataBatchRequest req) {
- super(req, ODataBatchRequestImpl.this.futureWrapper,
- ODataBatchRequestImpl.this.odataClient.getConfiguration().isContinueOnError());
- }
-
- @Override
- protected ODataBatchResponse getResponseInstance(final long timeout, final TimeUnit unit) {
- return new ODataBatchResponseImpl(odataClient, httpClient, getHttpResponse(timeout, unit));
- }
-
- @Override
- protected void validateSingleRequest(final ODataBatchableRequest request) {
- }
- }
-
- protected class ODataBatchResponseImpl extends AbstractODataResponse implements ODataBatchResponse {
-
- protected ODataBatchResponseImpl(
- final CommonODataClient<?> odataClient, final HttpClient httpClient, final HttpResponse res) {
-
- super(odataClient, httpClient, res);
- }
-
- @Override
- public Iterator<ODataBatchResponseItem> getBody() {
- return new ODataBatchResponseManager(this, expectedResItems, odataClient.getConfiguration().isContinueOnError());
- }
-
- @Override
- public void close() {
- for (ODataBatchResponseItem resItem : expectedResItems) {
- resItem.close();
- }
- super.close();
- }
-
- }
-}