Return-Path: X-Original-To: apmail-olingo-commits-archive@minotaur.apache.org Delivered-To: apmail-olingo-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id BAD7B11E8B for ; Thu, 22 May 2014 10:35:44 +0000 (UTC) Received: (qmail 97967 invoked by uid 500); 22 May 2014 10:35:44 -0000 Delivered-To: apmail-olingo-commits-archive@olingo.apache.org Received: (qmail 97929 invoked by uid 500); 22 May 2014 10:35:44 -0000 Mailing-List: contact commits-help@olingo.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@olingo.apache.org Delivered-To: mailing list commits@olingo.apache.org Received: (qmail 97912 invoked by uid 99); 22 May 2014 10:35:44 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 22 May 2014 10:35:44 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 6201099D6E8; Thu, 22 May 2014 10:35:44 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: sklevenz@apache.org To: commits@olingo.apache.org Date: Thu, 22 May 2014 10:35:44 -0000 Message-Id: <7a2ab47a50334afd8799538287db363e@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [01/19] git commit: [OLINGO-260] missed open complex type support on the proxy Repository: olingo-odata4 Updated Branches: refs/heads/olingo-266-tecsvc a9ed46551 -> 92a4404dd [OLINGO-260] missed open complex type support on the proxy Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/62dad250 Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/62dad250 Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/62dad250 Branch: refs/heads/olingo-266-tecsvc Commit: 62dad250955daf382c55df83ab4e1bdee20804cb Parents: 5fb2b80 Author: fmartelli Authored: Tue May 20 13:16:39 2014 +0200 Committer: fmartelli Committed: Tue May 20 13:16:39 2014 +0200 ---------------------------------------------------------------------- .../AbstractStructuredInvocationHandler.java | 20 ++--- .../proxy/commons/ComplexInvocationHandler.java | 30 ++++--- .../proxy/commons/EntityInvocationHandler.java | 16 ++-- .../olingo/ext/proxy/context/EntityContext.java | 3 +- .../src/main/resources/complexType.vm | 1 + .../src/main/resources/v40/complexType.vm | 2 +- fit/src/main/resources/V40/openTypeMetadata.xml | 4 + .../olingo/fit/proxy/v4/OpenTypeTestITCase.java | 11 +++ .../opentypesservicev4/DefaultContainer.java | 6 +- .../odata/services/opentypesservicev4/Row.java | 1 - .../services/opentypesservicev4/RowIndex.java | 1 - .../opentypesservicev4/types/AccountInfo.java | 90 ++++++++++++++++++++ .../types/ContactDetails.java | 25 +++--- .../opentypesservicev4/types/IndexedRow.java | 5 +- .../types/IndexedRowCollection.java | 5 ++ .../services/opentypesservicev4/types/Row.java | 5 +- .../opentypesservicev4/types/RowCollection.java | 5 ++ .../opentypesservicev4/types/RowIndex.java | 13 +-- .../types/RowIndexCollection.java | 5 ++ .../org.apache.olingo.ext.proxy.complex | 1 + 20 files changed, 189 insertions(+), 60 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/62dad250/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/AbstractStructuredInvocationHandler.java ---------------------------------------------------------------------- diff --git a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/AbstractStructuredInvocationHandler.java b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/AbstractStructuredInvocationHandler.java index 3a85895..6f44c64 100644 --- a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/AbstractStructuredInvocationHandler.java +++ b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/AbstractStructuredInvocationHandler.java @@ -269,18 +269,6 @@ public abstract class AbstractStructuredInvocationHandler extends AbstractInvoca return navPropValue; } - protected abstract Object getPropertyValue(final String name, final Type type); - - public void addAdditionalProperty(final String name, final Object value) { - addPropertyChanges(name, value); - attach(AttachedEntityStatus.CHANGED); - } - - public void removeAdditionalProperty(final String name) { - removePropertyChanges(name); - attach(AttachedEntityStatus.CHANGED); - } - public Object getAdditionalProperty(final String name) { return getPropertyValue(name, null); } @@ -318,11 +306,13 @@ public abstract class AbstractStructuredInvocationHandler extends AbstractInvoca protected abstract void setPropertyValue(final Property property, final Object value); - protected abstract void addPropertyChanges(final String name, final Object value); + protected abstract void addLinkChanges(final NavigationProperty navProp, final Object value); - protected abstract void removePropertyChanges(final String name); + protected abstract Object getPropertyValue(final String name, final Type type); - protected abstract void addLinkChanges(final NavigationProperty navProp, final Object value); + public abstract void addAdditionalProperty(final String name, final Object value); + + public abstract void removeAdditionalProperty(final String name); public abstract boolean isChanged(); } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/62dad250/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/ComplexInvocationHandler.java ---------------------------------------------------------------------- diff --git a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/ComplexInvocationHandler.java b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/ComplexInvocationHandler.java index e3743fe..a207e68 100644 --- a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/ComplexInvocationHandler.java +++ b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/ComplexInvocationHandler.java @@ -131,13 +131,21 @@ public class ComplexInvocationHandler extends AbstractStructuredInvocationHandle } @Override - @SuppressWarnings("unchecked") protected void setPropertyValue(final Property property, final Object value) { final FullQualifiedName fqn = new FullQualifiedName(ClassUtils.getNamespace(typeRef), typeRef.getAnnotation(ComplexType.class).name()); final EdmElement edmProperty = client.getCachedEdm().getComplexType(fqn).getProperty(property.name()); + final EdmTypeInfo type = new EdmTypeInfo.Builder().setEdm(client.getCachedEdm()).setTypeExpression( + edmProperty.isCollection() ? "Collection(" + property.type() + ")" : property.type()).build(); + + setPropertyValue(property.name(), type, value); + } + + @SuppressWarnings("unchecked") + private void setPropertyValue(final String name, final EdmTypeInfo type, final Object value) { + final Object toBeAdded; if (value == null) { @@ -145,7 +153,7 @@ public class ComplexInvocationHandler extends AbstractStructuredInvocationHandle } else if (Collection.class.isAssignableFrom(value.getClass())) { toBeAdded = new ArrayList(); for (Object obj : (Collection) value) { - ((Collection) toBeAdded).add(obj instanceof Proxy ? Proxy.getInvocationHandler(obj) : obj); + Collection.class.cast(toBeAdded).add(obj instanceof Proxy ? Proxy.getInvocationHandler(obj) : obj); } } else if (value instanceof Proxy) { toBeAdded = Proxy.getInvocationHandler(value); @@ -153,10 +161,7 @@ public class ComplexInvocationHandler extends AbstractStructuredInvocationHandle toBeAdded = value; } - final EdmTypeInfo type = new EdmTypeInfo.Builder().setEdm(client.getCachedEdm()).setTypeExpression( - edmProperty.isCollection() ? "Collection(" + property.type() + ")" : property.type()).build(); - - client.getBinder().add(getComplex(), CoreUtils.getODataProperty(client, property.name(), type, toBeAdded)); + client.getBinder().add(getComplex(), CoreUtils.getODataProperty(client, name, type, toBeAdded)); if (getEntityHandler() != null && !entityContext.isAttached(getEntityHandler())) { entityContext.attach(getEntityHandler(), AttachedEntityStatus.CHANGED); @@ -173,13 +178,18 @@ public class ComplexInvocationHandler extends AbstractStructuredInvocationHandle } @Override - protected void addPropertyChanges(final String name, final Object value) { - // do nothing .... + public void addAdditionalProperty(final String name, final Object value) { + setPropertyValue(name, null, value); + attach(AttachedEntityStatus.CHANGED); } @Override - protected void removePropertyChanges(final String name) { - // do nothing .... + public void removeAdditionalProperty(final String name) { + final CommonODataProperty property = getComplex().get(name); + if(property !=null && !property.hasNullValue()){ + setPropertyValue(name, null, null); + attach(AttachedEntityStatus.CHANGED); + } } @Override http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/62dad250/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/EntityInvocationHandler.java ---------------------------------------------------------------------- diff --git a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/EntityInvocationHandler.java b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/EntityInvocationHandler.java index 529c5eb..924d155 100644 --- a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/EntityInvocationHandler.java +++ b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/EntityInvocationHandler.java @@ -180,6 +180,12 @@ public class EntityInvocationHandler extends AbstractStructuredInvocationHandler return propertyChanges; } + @Override + public void addAdditionalProperty(final String name, final Object value) { + propertyChanges.put(name, value); + attach(AttachedEntityStatus.CHANGED); + } + public Map getLinkChanges() { return linkChanges; } @@ -257,7 +263,7 @@ public class EntityInvocationHandler extends AbstractStructuredInvocationHandler if (EdmPrimitiveTypeKind.Stream.getFullQualifiedName().toString().equalsIgnoreCase(property.type())) { setStreamedProperty(property, (InputStream) value); } else { - addPropertyChanges(property.name(), value); + propertyChanges.put(property.name(), value); if (value != null) { Collection coll; @@ -374,13 +380,9 @@ public class EntityInvocationHandler extends AbstractStructuredInvocationHandler } @Override - protected void addPropertyChanges(final String name, final Object value) { - propertyChanges.put(name, value); - } - - @Override - protected void removePropertyChanges(final String name) { + public void removeAdditionalProperty(final String name) { propertyChanges.remove(name); + attach(AttachedEntityStatus.CHANGED); } protected void cacheProperty(final String name, final Object value) { http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/62dad250/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/context/EntityContext.java ---------------------------------------------------------------------- diff --git a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/context/EntityContext.java b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/context/EntityContext.java index 2b42cd1..560b185 100644 --- a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/context/EntityContext.java +++ b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/context/EntityContext.java @@ -178,7 +178,8 @@ public class EntityContext implements Iterable { * @return true if is attached; false otherwise. */ public boolean isAttached(final EntityInvocationHandler entity) { - return allAttachedEntities.containsKey(entity) + return entity == null // avoid attach for null entities (coming from complexes created from container ...) + || allAttachedEntities.containsKey(entity) || (entity.getUUID().getKey() != null && searchableEntities.containsKey(entity.getUUID())); } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/62dad250/ext/pojogen-maven-plugin/src/main/resources/complexType.vm ---------------------------------------------------------------------- diff --git a/ext/pojogen-maven-plugin/src/main/resources/complexType.vm b/ext/pojogen-maven-plugin/src/main/resources/complexType.vm index ba03282..f5881f6 100644 --- a/ext/pojogen-maven-plugin/src/main/resources/complexType.vm +++ b/ext/pojogen-maven-plugin/src/main/resources/complexType.vm @@ -22,6 +22,7 @@ import org.apache.olingo.ext.proxy.api.annotations.Namespace; import org.apache.olingo.ext.proxy.api.annotations.ComplexType; import org.apache.olingo.ext.proxy.api.annotations.Property; import org.apache.olingo.ext.proxy.api.annotations.NavigationProperty; +import org.apache.olingo.ext.proxy.api.AbstractOpenType; #foreach($ns in $namespaces) import ${basePackage}.${ns}.*; import ${basePackage}.${ns}.types.*; http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/62dad250/ext/pojogen-maven-plugin/src/main/resources/v40/complexType.vm ---------------------------------------------------------------------- diff --git a/ext/pojogen-maven-plugin/src/main/resources/v40/complexType.vm b/ext/pojogen-maven-plugin/src/main/resources/v40/complexType.vm index b76717f..5ee61e7 100644 --- a/ext/pojogen-maven-plugin/src/main/resources/v40/complexType.vm +++ b/ext/pojogen-maven-plugin/src/main/resources/v40/complexType.vm @@ -22,7 +22,7 @@ isAbstract = $complexType.Abstract#if($complexType.getBaseType()), baseType = "$complexType.getBaseType().getFullQualifiedName().toString()"#end) public interface $utility.capitalize($complexType.Name) - extends #if($complexType.getBaseType())$utility.getJavaType($complexType.getBaseType().getFullQualifiedName().toString())#{else}Serializable#end { + extends #if($complexType.getBaseType())$utility.getJavaType($complexType.getBaseType().getFullQualifiedName().toString()),#{end}#if( $complexType.isOpenType() )AbstractOpenType,#{end}Serializable { #set( $complexProps = [] ) #foreach($propertyName in $complexType.PropertyNames) http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/62dad250/fit/src/main/resources/V40/openTypeMetadata.xml ---------------------------------------------------------------------- diff --git a/fit/src/main/resources/V40/openTypeMetadata.xml b/fit/src/main/resources/V40/openTypeMetadata.xml index 3cca590..62b2f77 100644 --- a/fit/src/main/resources/V40/openTypeMetadata.xml +++ b/fit/src/main/resources/V40/openTypeMetadata.xml @@ -41,6 +41,10 @@ + + + + http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/62dad250/fit/src/test/java/org/apache/olingo/fit/proxy/v4/OpenTypeTestITCase.java ---------------------------------------------------------------------- diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/OpenTypeTestITCase.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/OpenTypeTestITCase.java index 11f7d07..e337521 100644 --- a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/OpenTypeTestITCase.java +++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/OpenTypeTestITCase.java @@ -33,6 +33,7 @@ import org.apache.olingo.commons.api.format.ContentType; import org.apache.olingo.ext.proxy.EntityContainerFactory; import org.apache.olingo.ext.proxy.api.annotations.EntityType; import org.apache.olingo.fit.proxy.v4.opentype.microsoft.test.odata.services.opentypesservicev4.DefaultContainer; +import org.apache.olingo.fit.proxy.v4.opentype.microsoft.test.odata.services.opentypesservicev4.types.AccountInfo; import org.apache.olingo.fit.proxy.v4.opentype.microsoft.test.odata.services.opentypesservicev4.types.Color; import org.apache.olingo.fit.proxy.v4.opentype.microsoft.test.odata.services.opentypesservicev4.types.ContactDetails; import org.apache.olingo.fit.proxy.v4.opentype.microsoft.test.odata.services.opentypesservicev4.types.Row; @@ -115,6 +116,12 @@ public class OpenTypeTestITCase extends AbstractTestITCase { rowIndex.addAdditionalProperty("aContact", contact); rowIndex.addAdditionalProperty("aColor", Color.Green); + final AccountInfo ai = otcontainer.complexFactory().newAccountInfo(); + ai.setFirstName("Fabio"); + ai.setLastName("Martelli"); + ai.addAdditionalProperty("email", "fabio.martelli@tirasa.net"); + rowIndex.addAdditionalProperty("info", ai); + otcontainer.flush(); rowIndex = otcontainer.getRowIndex().get(id); @@ -127,6 +134,10 @@ public class OpenTypeTestITCase extends AbstractTestITCase { assertEquals(ContactDetails.class, rowIndex.getAdditionalProperty("aContact").getClass().getInterfaces()[0]); assertEquals(Color.class, rowIndex.getAdditionalProperty("aColor").getClass()); assertEquals(Color.Green, rowIndex.getAdditionalProperty("aColor")); + assertEquals("Fabio", AccountInfo.class.cast(rowIndex.getAdditionalProperty("info")).getFirstName()); + assertEquals("Martelli", AccountInfo.class.cast(rowIndex.getAdditionalProperty("info")).getLastName()); + assertEquals("fabio.martelli@tirasa.net", AccountInfo.class.cast(rowIndex.getAdditionalProperty("info")). + getAdditionalProperty("email")); entityContext.detachAll(); http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/62dad250/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/DefaultContainer.java ---------------------------------------------------------------------- diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/DefaultContainer.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/DefaultContainer.java index 18df189..f146c6b 100644 --- a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/DefaultContainer.java +++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/DefaultContainer.java @@ -53,12 +53,10 @@ import javax.xml.datatype.Duration; public interface DefaultContainer extends Container { Row getRow(); - RowIndex getRowIndex(); - Operations operations(); public interface Operations { @@ -72,5 +70,9 @@ public interface DefaultContainer extends Container { type = "Microsoft.Test.OData.Services.OpenTypesServiceV4.ContactDetails") org.apache.olingo.fit.proxy.v4.opentype.microsoft.test.odata.services.opentypesservicev4.types.ContactDetails newContactDetails(); + @Property(name = "AccountInfo", + type = "Microsoft.Test.OData.Services.OpenTypesServiceV4.AccountInfo") + org.apache.olingo.fit.proxy.v4.opentype.microsoft.test.odata.services.opentypesservicev4.types.AccountInfo newAccountInfo(); + } } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/62dad250/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/Row.java ---------------------------------------------------------------------- diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/Row.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/Row.java index 5c970ac..80a73a9 100644 --- a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/Row.java +++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/Row.java @@ -43,7 +43,6 @@ import java.util.Calendar; import javax.xml.datatype.Duration; - @EntitySet(name = "Row") public interface Row extends AbstractEntitySet { http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/62dad250/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/RowIndex.java ---------------------------------------------------------------------- diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/RowIndex.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/RowIndex.java index 22dee42..97ee5f9 100644 --- a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/RowIndex.java +++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/RowIndex.java @@ -43,7 +43,6 @@ import java.util.Calendar; import javax.xml.datatype.Duration; - @EntitySet(name = "RowIndex") public interface RowIndex extends AbstractEntitySet { http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/62dad250/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/AccountInfo.java ---------------------------------------------------------------------- diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/AccountInfo.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/AccountInfo.java new file mode 100644 index 0000000..651a65a --- /dev/null +++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/AccountInfo.java @@ -0,0 +1,90 @@ +/* + * 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.fit.proxy.v4.opentype.microsoft.test.odata.services.opentypesservicev4.types; + +import org.apache.olingo.ext.proxy.api.annotations.Namespace; +import org.apache.olingo.ext.proxy.api.annotations.ComplexType; +import org.apache.olingo.ext.proxy.api.annotations.Property; +import org.apache.olingo.ext.proxy.api.annotations.NavigationProperty; +import org.apache.olingo.ext.proxy.api.AbstractOpenType; +import org.apache.olingo.fit.proxy.v4.opentype.microsoft.test.odata.services.opentypesservicev4.*; +import org.apache.olingo.fit.proxy.v4.opentype.microsoft.test.odata.services.opentypesservicev4.types.*; + +import org.apache.olingo.commons.api.edm.geo.Geospatial; +import org.apache.olingo.commons.api.edm.geo.GeospatialCollection; +import org.apache.olingo.commons.api.edm.geo.LineString; +import org.apache.olingo.commons.api.edm.geo.MultiLineString; +import org.apache.olingo.commons.api.edm.geo.MultiPoint; +import org.apache.olingo.commons.api.edm.geo.MultiPolygon; +import org.apache.olingo.commons.api.edm.geo.Point; +import org.apache.olingo.commons.api.edm.geo.Polygon; +import java.math.BigDecimal; +import java.net.URI; +import java.util.UUID; +import java.io.Serializable; +import java.util.Collection; +import java.util.Calendar; +import javax.xml.datatype.Duration; + + +@Namespace("Microsoft.Test.OData.Services.OpenTypesServiceV4") +@ComplexType(name = "AccountInfo", + isOpenType = true, + isAbstract = false) +public interface AccountInfo + extends AbstractOpenType,Serializable { + + + @Property(name = "FirstName", + type = "Edm.String", + nullable = false, + defaultValue = "", + maxLenght = Integer.MAX_VALUE, + fixedLenght = false, + precision = 0, + scale = 0, + unicode = true, + collation = "", + srid = "") + String getFirstName(); + + void setFirstName(String _firstName); + + + + @Property(name = "LastName", + type = "Edm.String", + nullable = false, + defaultValue = "", + maxLenght = Integer.MAX_VALUE, + fixedLenght = false, + precision = 0, + scale = 0, + unicode = true, + collation = "", + srid = "") + String getLastName(); + + void setLastName(String _lastName); + + + + +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/62dad250/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/ContactDetails.java ---------------------------------------------------------------------- diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/ContactDetails.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/ContactDetails.java index d96c838..4eae254 100644 --- a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/ContactDetails.java +++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/ContactDetails.java @@ -23,6 +23,7 @@ import org.apache.olingo.ext.proxy.api.annotations.Namespace; import org.apache.olingo.ext.proxy.api.annotations.ComplexType; import org.apache.olingo.ext.proxy.api.annotations.Property; import org.apache.olingo.ext.proxy.api.annotations.NavigationProperty; +import org.apache.olingo.ext.proxy.api.AbstractOpenType; import org.apache.olingo.fit.proxy.v4.opentype.microsoft.test.odata.services.opentypesservicev4.*; import org.apache.olingo.fit.proxy.v4.opentype.microsoft.test.odata.services.opentypesservicev4.types.*; @@ -64,7 +65,7 @@ public interface ContactDetails srid = "") byte[] getFirstContacted(); - void setFirstContacted(final byte[] _firstContacted); + void setFirstContacted(byte[] _firstContacted); @@ -81,7 +82,7 @@ public interface ContactDetails srid = "") Calendar getLastContacted(); - void setLastContacted(final Calendar _lastContacted); + void setLastContacted(Calendar _lastContacted); @@ -98,7 +99,7 @@ public interface ContactDetails srid = "") Calendar getContacted(); - void setContacted(final Calendar _contacted); + void setContacted(Calendar _contacted); @@ -115,7 +116,7 @@ public interface ContactDetails srid = "") UUID getGUID(); - void setGUID(final UUID _gUID); + void setGUID(UUID _gUID); @@ -132,7 +133,7 @@ public interface ContactDetails srid = "") Calendar getPreferedContactTime(); - void setPreferedContactTime(final Calendar _preferedContactTime); + void setPreferedContactTime(Calendar _preferedContactTime); @@ -149,7 +150,7 @@ public interface ContactDetails srid = "") Short getByte(); - void setByte(final Short _byte); + void setByte(Short _byte); @@ -166,7 +167,7 @@ public interface ContactDetails srid = "") Byte getSignedByte(); - void setSignedByte(final Byte _signedByte); + void setSignedByte(Byte _signedByte); @@ -183,7 +184,7 @@ public interface ContactDetails srid = "") Double getDouble(); - void setDouble(final Double _double); + void setDouble(Double _double); @@ -200,7 +201,7 @@ public interface ContactDetails srid = "") Float getSingle(); - void setSingle(final Float _single); + void setSingle(Float _single); @@ -217,7 +218,7 @@ public interface ContactDetails srid = "") Short getShort(); - void setShort(final Short _short); + void setShort(Short _short); @@ -234,7 +235,7 @@ public interface ContactDetails srid = "") Integer getInt(); - void setInt(final Integer _int); + void setInt(Integer _int); @@ -251,7 +252,7 @@ public interface ContactDetails srid = "") Long getLong(); - void setLong(final Long _long); + void setLong(Long _long); http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/62dad250/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/IndexedRow.java ---------------------------------------------------------------------- diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/IndexedRow.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/IndexedRow.java index 0ce9626..18ed704 100644 --- a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/IndexedRow.java +++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/IndexedRow.java @@ -28,6 +28,7 @@ import org.apache.olingo.ext.proxy.api.annotations.NavigationProperty; import org.apache.olingo.ext.proxy.api.annotations.Property; import org.apache.olingo.ext.proxy.api.annotations.Operation; import org.apache.olingo.ext.proxy.api.annotations.Parameter; +import org.apache.olingo.ext.proxy.api.AbstractAnnotatable; import org.apache.olingo.ext.proxy.api.AbstractOpenType; import org.apache.olingo.ext.proxy.api.OperationType; import org.apache.olingo.commons.api.edm.constants.EdmContentKind; @@ -59,7 +60,7 @@ import javax.xml.datatype.Duration; isAbstract = false, baseType = "Microsoft.Test.OData.Services.OpenTypesServiceV4.Row") public interface IndexedRow - extends org.apache.olingo.fit.proxy.v4.opentype.microsoft.test.odata.services.opentypesservicev4.types.Row { + extends AbstractAnnotatable,org.apache.olingo.fit.proxy.v4.opentype.microsoft.test.odata.services.opentypesservicev4.types.Row { @Key @@ -83,7 +84,7 @@ public interface IndexedRow fcKeepInContent = false) UUID getId(); - void setId(final UUID _id); + void setId(UUID _id); http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/62dad250/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/IndexedRowCollection.java ---------------------------------------------------------------------- diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/IndexedRowCollection.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/IndexedRowCollection.java index 40e8638..a4496e5 100644 --- a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/IndexedRowCollection.java +++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/IndexedRowCollection.java @@ -21,6 +21,7 @@ package org.apache.olingo.fit.proxy.v4.opentype.microsoft.test.odata.services.op import org.apache.olingo.client.api.http.HttpMethod; import org.apache.olingo.ext.proxy.api.AbstractEntityCollection; +import org.apache.olingo.ext.proxy.api.AbstractTerm; import org.apache.olingo.ext.proxy.api.OperationType; import org.apache.olingo.ext.proxy.api.annotations.Operation; import org.apache.olingo.ext.proxy.api.annotations.Parameter; @@ -44,4 +45,8 @@ import java.util.Calendar; import javax.xml.datatype.Duration; public interface IndexedRowCollection extends AbstractEntityCollection { + + Object getAnnotation(Class term); + + Collection> getAnnotationTerms(); } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/62dad250/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/Row.java ---------------------------------------------------------------------- diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/Row.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/Row.java index 45e33a9..b9b1ff8 100644 --- a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/Row.java +++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/Row.java @@ -28,6 +28,7 @@ import org.apache.olingo.ext.proxy.api.annotations.NavigationProperty; import org.apache.olingo.ext.proxy.api.annotations.Property; import org.apache.olingo.ext.proxy.api.annotations.Operation; import org.apache.olingo.ext.proxy.api.annotations.Parameter; +import org.apache.olingo.ext.proxy.api.AbstractAnnotatable; import org.apache.olingo.ext.proxy.api.AbstractOpenType; import org.apache.olingo.ext.proxy.api.OperationType; import org.apache.olingo.commons.api.edm.constants.EdmContentKind; @@ -58,7 +59,7 @@ import javax.xml.datatype.Duration; hasStream = false, isAbstract = false) public interface Row - extends AbstractOpenType { + extends AbstractAnnotatable,AbstractOpenType { @Key @@ -82,7 +83,7 @@ public interface Row fcKeepInContent = false) UUID getId(); - void setId(final UUID _id); + void setId(UUID _id); http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/62dad250/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/RowCollection.java ---------------------------------------------------------------------- diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/RowCollection.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/RowCollection.java index 25099bd..0872073 100644 --- a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/RowCollection.java +++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/RowCollection.java @@ -21,6 +21,7 @@ package org.apache.olingo.fit.proxy.v4.opentype.microsoft.test.odata.services.op import org.apache.olingo.client.api.http.HttpMethod; import org.apache.olingo.ext.proxy.api.AbstractEntityCollection; +import org.apache.olingo.ext.proxy.api.AbstractTerm; import org.apache.olingo.ext.proxy.api.OperationType; import org.apache.olingo.ext.proxy.api.annotations.Operation; import org.apache.olingo.ext.proxy.api.annotations.Parameter; @@ -44,4 +45,8 @@ import java.util.Calendar; import javax.xml.datatype.Duration; public interface RowCollection extends AbstractEntityCollection { + + Object getAnnotation(Class term); + + Collection> getAnnotationTerms(); } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/62dad250/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/RowIndex.java ---------------------------------------------------------------------- diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/RowIndex.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/RowIndex.java index 9758eab..0397a65 100644 --- a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/RowIndex.java +++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/RowIndex.java @@ -28,6 +28,7 @@ import org.apache.olingo.ext.proxy.api.annotations.NavigationProperty; import org.apache.olingo.ext.proxy.api.annotations.Property; import org.apache.olingo.ext.proxy.api.annotations.Operation; import org.apache.olingo.ext.proxy.api.annotations.Parameter; +import org.apache.olingo.ext.proxy.api.AbstractAnnotatable; import org.apache.olingo.ext.proxy.api.AbstractOpenType; import org.apache.olingo.ext.proxy.api.OperationType; import org.apache.olingo.commons.api.edm.constants.EdmContentKind; @@ -58,7 +59,7 @@ import javax.xml.datatype.Duration; hasStream = false, isAbstract = false) public interface RowIndex - extends AbstractOpenType { + extends AbstractAnnotatable,AbstractOpenType { @Key @@ -82,7 +83,7 @@ public interface RowIndex fcKeepInContent = false) Integer getId(); - void setId(final Integer _id); + void setId(Integer _id); @@ -90,12 +91,12 @@ public interface RowIndex type = "Microsoft.Test.OData.Services.OpenTypesServiceV4.Row", targetSchema = "Microsoft.Test.OData.Services.OpenTypesServiceV4", targetContainer = "DefaultContainer", - targetEntitySet = "Row") + targetEntitySet = "Row", + containsTarget = false) org.apache.olingo.fit.proxy.v4.opentype.microsoft.test.odata.services.opentypesservicev4.types.Row getRows(); - void setRows(final org.apache.olingo.fit.proxy.v4.opentype.microsoft.test.odata.services.opentypesservicev4.types.Row _rows); - - + void setRows(org.apache.olingo.fit.proxy.v4.opentype.microsoft.test.odata.services.opentypesservicev4.types.Row _rows); + } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/62dad250/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/RowIndexCollection.java ---------------------------------------------------------------------- diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/RowIndexCollection.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/RowIndexCollection.java index 3b20d0e..eeeb329 100644 --- a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/RowIndexCollection.java +++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/types/RowIndexCollection.java @@ -21,6 +21,7 @@ package org.apache.olingo.fit.proxy.v4.opentype.microsoft.test.odata.services.op import org.apache.olingo.client.api.http.HttpMethod; import org.apache.olingo.ext.proxy.api.AbstractEntityCollection; +import org.apache.olingo.ext.proxy.api.AbstractTerm; import org.apache.olingo.ext.proxy.api.OperationType; import org.apache.olingo.ext.proxy.api.annotations.Operation; import org.apache.olingo.ext.proxy.api.annotations.Parameter; @@ -44,4 +45,8 @@ import java.util.Calendar; import javax.xml.datatype.Duration; public interface RowIndexCollection extends AbstractEntityCollection { + + Object getAnnotation(Class term); + + Collection> getAnnotationTerms(); } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/62dad250/fit/src/test/resources/META-INF/org.apache.olingo.ext.proxy.complex ---------------------------------------------------------------------- diff --git a/fit/src/test/resources/META-INF/org.apache.olingo.ext.proxy.complex b/fit/src/test/resources/META-INF/org.apache.olingo.ext.proxy.complex index 3c43cdf..066bbc1 100644 --- a/fit/src/test/resources/META-INF/org.apache.olingo.ext.proxy.complex +++ b/fit/src/test/resources/META-INF/org.apache.olingo.ext.proxy.complex @@ -19,3 +19,4 @@ org.apache.olingo.fit.proxy.v4.staticservice.microsoft.test.odata.services.odata org.apache.olingo.fit.proxy.v4.staticservice.microsoft.test.odata.services.odatawcfservice.types.CompanyAddress org.apache.olingo.fit.proxy.v4.staticservice.microsoft.test.odata.services.odatawcfservice.types.AccountInfo org.apache.olingo.fit.proxy.v4.opentype.microsoft.test.odata.services.opentypesservicev4.types.ContactDetails +org.apache.olingo.fit.proxy.v4.opentype.microsoft.test.odata.services.opentypesservicev4.types.AccountInfo