http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/70afb2ac/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/DeletedEntityImpl.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/DeletedEntityImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/DeletedEntityImpl.java index 67ab03b..1e2930f 100644 --- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/DeletedEntityImpl.java +++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/DeletedEntityImpl.java @@ -23,10 +23,7 @@ import org.apache.olingo.commons.api.data.DeletedEntity; public class DeletedEntityImpl extends AbstractAnnotatedObject implements DeletedEntity { - private static final long serialVersionUID = 2075093398299488510L; - private URI id; - private Reason reason; @Override
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/70afb2ac/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/DeltaLinkImpl.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/DeltaLinkImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/DeltaLinkImpl.java index 0834b55..7ed1de6 100644 --- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/DeltaLinkImpl.java +++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/DeltaLinkImpl.java @@ -23,12 +23,8 @@ import org.apache.olingo.commons.api.data.DeltaLink; public class DeltaLinkImpl extends AbstractAnnotatedObject implements DeltaLink { - private static final long serialVersionUID = 581329273399308799L; - private URI source; - private String relationship; - private URI target; @Override http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/70afb2ac/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/EntityImpl.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/EntityImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/EntityImpl.java index 28451a9..003c72d 100755 --- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/EntityImpl.java +++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/EntityImpl.java @@ -31,20 +31,15 @@ import org.apache.olingo.commons.api.domain.ODataOperation; */ public class EntityImpl extends AbstractODataObject implements Entity { - private static final long serialVersionUID = 2127764552600969783L; - private String eTag; private String type; private Link readLink; - private Link editLink; private final List<Link> associationLinks = new ArrayList<Link>(); - private final List<Link> navigationLinks = new ArrayList<Link>(); - private final List<Link> mediaEditLinks = new ArrayList<Link>(); private final List<ODataOperation> operations = new ArrayList<ODataOperation>(); @@ -52,9 +47,7 @@ public class EntityImpl extends AbstractODataObject implements Entity { private final List<Property> properties = new ArrayList<Property>(); private URI mediaContentSource; - private String mediaContentType; - private String mediaETag; @Override http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/70afb2ac/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/EntitySetImpl.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/EntitySetImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/EntitySetImpl.java index 1920809..3a985b4 100755 --- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/EntitySetImpl.java +++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/EntitySetImpl.java @@ -26,8 +26,6 @@ import org.apache.olingo.commons.api.data.EntitySet; public class EntitySetImpl extends AbstractODataObject implements EntitySet { - private static final long serialVersionUID = -9159884750819150969L; - private Integer count; private final List<Entity> entities = new ArrayList<Entity>(); http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/70afb2ac/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONLinkCollectionDeserializer.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONLinkCollectionDeserializer.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONLinkCollectionDeserializer.java new file mode 100755 index 0000000..1876b9c --- /dev/null +++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONLinkCollectionDeserializer.java @@ -0,0 +1,80 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.olingo.commons.core.data; + +import java.io.IOException; +import java.io.InputStream; +import java.net.URI; + +import org.apache.olingo.commons.api.Constants; +import org.apache.olingo.commons.api.data.ResWrap; +import org.apache.olingo.commons.api.data.v3.LinkCollection; +import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion; +import org.apache.olingo.commons.api.op.ODataDeserializerException; +import org.apache.olingo.commons.core.data.v3.LinkCollectionImpl; + +import com.fasterxml.jackson.core.JsonFactory; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; + +public class JSONLinkCollectionDeserializer extends JsonDeserializer { + + public JSONLinkCollectionDeserializer(final ODataServiceVersion version, final boolean serverMode) { + super(version, serverMode); + } + + protected ResWrap<LinkCollection> doDeserialize(final JsonParser parser) throws IOException { + + final ObjectNode tree = parser.getCodec().readTree(parser); + + final LinkCollectionImpl links = new LinkCollectionImpl(); + + if (tree.hasNonNull("odata.metadata")) { + links.setMetadata(URI.create(tree.get("odata.metadata").textValue())); + } + + if (tree.hasNonNull(Constants.JSON_URL)) { + links.getLinks().add(URI.create(tree.get(Constants.JSON_URL).textValue())); + } + + if (tree.hasNonNull(Constants.VALUE)) { + for (final JsonNode item : tree.get(Constants.VALUE)) { + final URI uri = URI.create(item.get(Constants.JSON_URL).textValue()); + links.getLinks().add(uri); + } + } + + if (tree.hasNonNull(jsonNextLink)) { + links.setNext(URI.create(tree.get(jsonNextLink).textValue())); + } + + return new ResWrap<LinkCollection>((URI) null, null, links); + } + + public ResWrap<LinkCollection> toLinkCollection(InputStream input) throws ODataDeserializerException { + try { + JsonParser parser = new JsonFactory(new ObjectMapper()).createParser(input); + return doDeserialize(parser); + } catch (final IOException e) { + throw new ODataDeserializerException(e); + } + } +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/70afb2ac/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JsonSerializer.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JsonSerializer.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JsonSerializer.java index e067d88..bf1c19e 100755 --- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JsonSerializer.java +++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JsonSerializer.java @@ -102,7 +102,7 @@ public class JsonSerializer implements ODataSerializer { } else if (obj instanceof Entity) { new JSONEntitySerializer(version, serverMode).doContainerSerialize((ResWrap<Entity>) container, json); } else if (obj instanceof Property) { - new JSONPropertySerializer(version, serverMode).doSerialize((Property) obj, json); + new JSONPropertySerializer(version, serverMode).doContainerSerialize((ResWrap<Property>) container, json); } else if (obj instanceof Link) { link((Link) obj, json); } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/70afb2ac/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/LinkImpl.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/LinkImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/LinkImpl.java index 85acc8f..72e09cf 100644 --- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/LinkImpl.java +++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/LinkImpl.java @@ -24,20 +24,12 @@ import org.apache.olingo.commons.api.data.Link; public class LinkImpl extends AbstractAnnotatedObject implements Link { - private static final long serialVersionUID = -3449344217160035501L; - private String title; - private String rel; - private String href; - private String type; - private String mediaETag; - private Entity entity; - private EntitySet entitySet; @Override http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/70afb2ac/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/PropertyImpl.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/PropertyImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/PropertyImpl.java index 9d9f35c..f98e854 100755 --- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/PropertyImpl.java +++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/PropertyImpl.java @@ -23,12 +23,8 @@ import org.apache.olingo.commons.api.data.Value; public class PropertyImpl extends AbstractAnnotatedObject implements Property { - private static final long serialVersionUID = -7175704800169997060L; - private String name; - private String type; - private Value value; @Override http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/70afb2ac/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/v3/JSONLinkCollectionImpl.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/v3/JSONLinkCollectionImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/v3/JSONLinkCollectionImpl.java deleted file mode 100644 index edf871b..0000000 --- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/v3/JSONLinkCollectionImpl.java +++ /dev/null @@ -1,118 +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.commons.core.data.v3; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.net.URI; -import java.util.ArrayList; -import java.util.List; -import org.apache.olingo.commons.api.data.v3.LinkCollection; -import org.apache.olingo.commons.core.data.AbstractPayloadObject; - -/** - * Link from an entity, represented via JSON. - */ -public class JSONLinkCollectionImpl extends AbstractPayloadObject implements LinkCollection { - - private static final long serialVersionUID = -5006368367235783907L; - - /** - * JSON link URL representation. - */ - static class JSONLinkURL extends AbstractPayloadObject { - - private static final long serialVersionUID = 5365055617973271468L; - - private URI url; - - public URI getUrl() { - return url; - } - - public void setUrl(final URI url) { - this.url = url; - } - } - - @JsonProperty(value = "odata.metadata", required = false) - private URI metadata; - - @JsonProperty(required = false) - private URI url; - - @JsonProperty(value = "value", required = false) - private final List<JSONLinkURL> links = new ArrayList<JSONLinkURL>(); - - @JsonProperty(value = "odata.nextLink", required = false) - private String next; - - /** - * Gets the metadata URI. - */ - public URI getMetadata() { - return metadata; - } - - /** - * Sets the metadata URI. - * - * @param metadata metadata URI. - */ - public void setMetadata(final URI metadata) { - this.metadata = metadata; - } - - /** - * {@inheritDoc } - */ - @JsonIgnore - @Override - public List<URI> getLinks() { - final List<URI> result = new ArrayList<URI>(); - - if (this.url == null) { - for (JSONLinkURL link : links) { - result.add(link.getUrl()); - } - } else { - result.add(this.url); - } - - return result; - } - - /** - * {@inheritDoc } - */ - @JsonIgnore - @Override - public void setNext(final URI next) { - this.next = next == null ? null : next.toASCIIString(); - } - - /** - * {@inheritDoc } - */ - @JsonIgnore - @Override - public URI getNext() { - return next == null ? null : URI.create(next); - } -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/70afb2ac/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/v3/LinkCollectionImpl.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/v3/LinkCollectionImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/v3/LinkCollectionImpl.java index 3310723..f62b423 100755 --- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/v3/LinkCollectionImpl.java +++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/v3/LinkCollectionImpl.java @@ -21,9 +21,11 @@ package org.apache.olingo.commons.core.data.v3; import java.net.URI; import java.util.ArrayList; import java.util.List; + import org.apache.olingo.commons.api.data.v3.LinkCollection; +import org.apache.olingo.commons.core.data.AbstractAnnotatedObject; -public class LinkCollectionImpl implements LinkCollection { +public class LinkCollectionImpl extends AbstractAnnotatedObject implements LinkCollection { private final List<URI> links = new ArrayList<URI>(); private URI next; http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/70afb2ac/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/v4/DeltaImpl.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/v4/DeltaImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/v4/DeltaImpl.java index 021a77d..d507ebe 100755 --- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/v4/DeltaImpl.java +++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/v4/DeltaImpl.java @@ -27,12 +27,8 @@ import org.apache.olingo.commons.core.data.EntitySetImpl; public class DeltaImpl extends EntitySetImpl implements Delta { - private static final long serialVersionUID = 4576771708961553195L; - private final List<DeletedEntity> deletedEntities = new ArrayList<DeletedEntity>(); - private final List<DeltaLink> addedLinks = new ArrayList<DeltaLink>(); - private final List<DeltaLink> deletedLinks = new ArrayList<DeltaLink>(); @Override http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/70afb2ac/lib/commons-core/src/main/java/org/apache/olingo/commons/core/op/AbstractODataDeserializer.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/op/AbstractODataDeserializer.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/op/AbstractODataDeserializer.java index a2ef134..548d79d 100644 --- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/op/AbstractODataDeserializer.java +++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/op/AbstractODataDeserializer.java @@ -51,12 +51,12 @@ public abstract class AbstractODataDeserializer { protected final ODataServiceVersion version; protected final ODataDeserializer deserializer; - public AbstractODataDeserializer(final ODataServiceVersion version, final Format format) { + public AbstractODataDeserializer(final ODataServiceVersion version, final boolean serverMode, final Format format) { this.version = version; if (format == ODataFormat.XML || format == ODataPubFormat.ATOM) { deserializer = new AtomDeserializer(version); } else { - deserializer = new JsonDeserializer(version, false); + deserializer = new JsonDeserializer(version, serverMode); } } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/70afb2ac/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHandler.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHandler.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHandler.java index cf9f3f3..acea9f5 100644 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHandler.java +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHandler.java @@ -18,52 +18,26 @@ */ package org.apache.olingo.server.core; -import java.io.IOException; -import java.net.URI; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; - import org.apache.olingo.commons.api.ODataRuntimeException; -import org.apache.olingo.commons.api.data.ContextURL; -import org.apache.olingo.commons.api.data.Entity; -import org.apache.olingo.commons.api.data.EntitySet; -import org.apache.olingo.commons.api.data.Property; -import org.apache.olingo.commons.api.data.ResWrap; import org.apache.olingo.commons.api.edm.Edm; -import org.apache.olingo.commons.api.edm.FullQualifiedName; import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion; -import org.apache.olingo.commons.api.format.ContentType; import org.apache.olingo.commons.api.http.HttpContentType; -import org.apache.olingo.commons.api.http.HttpMethod; import org.apache.olingo.commons.api.http.HttpHeader; -import org.apache.olingo.commons.core.data.EntityImpl; -import org.apache.olingo.commons.core.data.EntitySetImpl; -import org.apache.olingo.commons.core.data.PrimitiveValueImpl; -import org.apache.olingo.commons.core.data.PropertyImpl; -import org.apache.olingo.commons.core.op.InjectableSerializerProvider; +import org.apache.olingo.commons.api.http.HttpMethod; import org.apache.olingo.server.api.OData; import org.apache.olingo.server.api.ODataRequest; import org.apache.olingo.server.api.ODataResponse; -import org.apache.olingo.server.api.processor.DefaultProcessor; -import org.apache.olingo.server.api.processor.EntityProcessor; -import org.apache.olingo.server.api.processor.EntitySetProcessor; -import org.apache.olingo.server.api.processor.MetadataProcessor; -import org.apache.olingo.server.api.processor.Processor; -import org.apache.olingo.server.api.processor.ServiceDocumentProcessor; -import org.apache.olingo.server.api.serializer.ODataSerializer; +import org.apache.olingo.server.api.processor.*; import org.apache.olingo.server.api.uri.UriInfo; import org.apache.olingo.server.api.uri.UriResource; import org.apache.olingo.server.api.uri.UriResourceNavigation; import org.apache.olingo.server.api.uri.UriResourcePartTyped; -import org.apache.olingo.server.core.serializer.utils.CircleStreamBuffer; import org.apache.olingo.server.core.uri.parser.Parser; import org.apache.olingo.server.core.uri.validator.UriValidator; -import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.databind.InjectableValues; -import com.fasterxml.jackson.databind.ObjectMapper; +import java.util.HashMap; +import java.util.List; +import java.util.Map; public class ODataHandler { @@ -134,39 +108,6 @@ public class ODataHandler { UriResource lastPathSegment = uriInfo.getUriResourceParts().get(lastPathSegmentIndex); switch (lastPathSegment.getKind()) { case entitySet: - long time = System.nanoTime(); - ResWrap<EntitySet> wrap = new ResWrap<EntitySet>( - ContextURL.getInstance(URI.create("dummyContextURL")), "dummyMetadataETag", - createEntitySet()); - System.out.println((System.nanoTime() - time) / 1000 + " microseconds"); - time = System.nanoTime(); - CircleStreamBuffer buffer = new CircleStreamBuffer(); - if (false) { - ObjectMapper mapper = new ObjectMapper().setSerializationInclusion(Include.NON_NULL); - mapper.setInjectableValues(new InjectableValues.Std() - .addValue(ODataServiceVersion.class, ODataServiceVersion.V40) - .addValue(Boolean.class, Boolean.TRUE)); - mapper.setSerializerProvider(new InjectableSerializerProvider(mapper.getSerializerProvider(), - mapper.getSerializationConfig() - .withAttribute(ODataServiceVersion.class, ODataServiceVersion.V40) - .withAttribute(Boolean.class, Boolean.TRUE), - mapper.getSerializerFactory())); - try { - mapper.writeValue(buffer.getOutputStream(), wrap); - } catch (final IOException e) {} - response.setContent(buffer.getInputStream()); - } else { - ODataSerializer serializer = odata.createSerializer(org.apache.olingo.server.api.serializer.ODataFormat.JSON); - response.setContent(serializer.entitySet( - edm.getEntityContainer(new FullQualifiedName("com.sap.odata.test1", "Container")) - .getEntitySet("ESAllPrim"), - wrap.getPayload(), - ContextURL.getInstance(URI.create("dummyContextURL")))); - } - System.out.println((System.nanoTime() - time) / 1000 + " microseconds"); - response.setStatusCode(200); - response.setHeader("Content-Type", ContentType.APPLICATION_JSON); - if (((UriResourcePartTyped) lastPathSegment).isCollection()) { if (request.getMethod().equals(HttpMethod.GET)) { EntitySetProcessor esp = selectProcessor(EntitySetProcessor.class); @@ -240,34 +181,4 @@ public class ODataHandler { } } } - - protected Entity createEntity() { - Entity entity = new EntityImpl(); - Property property = new PropertyImpl(); - property.setName("PropertyString"); - property.setType("String"); //"dummyType"); - property.setValue(new PrimitiveValueImpl("dummyValue")); - entity.getProperties().add(property); - Property propertyInt = new PropertyImpl(); - propertyInt.setName("PropertyInt16"); - // propertyInt.setType("Edm.Int32"); - propertyInt.setValue(new PrimitiveValueImpl("042")); - entity.getProperties().add(propertyInt); - Property propertyGuid = new PropertyImpl(); - propertyGuid.setName("PropertyGuid"); - propertyGuid.setType("Edm.Guid"); - propertyGuid.setValue(new PrimitiveValueImpl(UUID.randomUUID().toString())); - entity.getProperties().add(propertyGuid); - return entity; - } - - protected EntitySet createEntitySet() { - EntitySet entitySet = new EntitySetImpl(); - entitySet.setCount(4242); - entitySet.setNext(URI.create("nextLinkURI")); - for (int i = 0; i < 1000; i++) { - entitySet.getEntities().add(createEntity()); - } - return entitySet; - } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/70afb2ac/lib/server-tecsvc/pom.xml ---------------------------------------------------------------------- diff --git a/lib/server-tecsvc/pom.xml b/lib/server-tecsvc/pom.xml index 1371a00..3925fbd 100644 --- a/lib/server-tecsvc/pom.xml +++ b/lib/server-tecsvc/pom.xml @@ -122,6 +122,17 @@ </dependency> <dependency> + <groupId>org.apache.olingo</groupId> + <artifactId>olingo-commons-api</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.olingo</groupId> + <artifactId>olingo-commons-core</artifactId> + <version>${project.version}</version> + </dependency> + + <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <scope>runtime</scope> @@ -140,6 +151,11 @@ <artifactId>commons-io</artifactId> <scope>test</scope> </dependency> + <dependency> + <groupId>org.apache.olingo</groupId> + <artifactId>core</artifactId> + <version>0.1.0-SNAPSHOT</version> + </dependency> </dependencies> </project> http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/70afb2ac/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/TechnicalServlet.java ---------------------------------------------------------------------- diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/TechnicalServlet.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/TechnicalServlet.java index ec8a061..9841dd8 100644 --- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/TechnicalServlet.java +++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/TechnicalServlet.java @@ -29,6 +29,7 @@ import org.apache.olingo.commons.api.edm.Edm; import org.apache.olingo.server.api.ODataHttpHandler; import org.apache.olingo.server.api.OData; import org.apache.olingo.server.tecsvc.data.DataProvider; +import org.apache.olingo.server.tecsvc.processor.SampleJsonProcessor; import org.apache.olingo.server.tecsvc.processor.TechnicalProcessor; import org.apache.olingo.server.tecsvc.provider.EdmTechProvider; import org.slf4j.Logger; @@ -56,8 +57,9 @@ public class TechnicalServlet extends HttpServlet { ODataHttpHandler handler = odata.createHandler(edm); - handler.register(new TechnicalProcessor(dataProvider)); - +// handler.register(new TechnicalProcessor(dataProvider)); + handler.register(new SampleJsonProcessor()); + handler.process(req, resp); } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/70afb2ac/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/SampleJsonProcessor.java ---------------------------------------------------------------------- diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/SampleJsonProcessor.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/SampleJsonProcessor.java new file mode 100644 index 0000000..66e863b --- /dev/null +++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/SampleJsonProcessor.java @@ -0,0 +1,126 @@ +/* + * 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.server.tecsvc.processor; + +import org.apache.olingo.commons.api.data.ContextURL; +import org.apache.olingo.commons.api.data.Entity; +import org.apache.olingo.commons.api.data.EntitySet; +import org.apache.olingo.commons.api.data.Property; +import org.apache.olingo.commons.api.edm.Edm; +import org.apache.olingo.commons.api.edm.FullQualifiedName; +import org.apache.olingo.commons.api.format.ContentType; +import org.apache.olingo.commons.core.data.EntityImpl; +import org.apache.olingo.commons.core.data.EntitySetImpl; +import org.apache.olingo.commons.core.data.PrimitiveValueImpl; +import org.apache.olingo.commons.core.data.PropertyImpl; +import org.apache.olingo.server.api.OData; +import org.apache.olingo.server.api.ODataRequest; +import org.apache.olingo.server.api.ODataResponse; +import org.apache.olingo.server.api.processor.EntityProcessor; +import org.apache.olingo.server.api.processor.EntitySetProcessor; +import org.apache.olingo.server.api.serializer.ODataFormat; +import org.apache.olingo.server.api.serializer.ODataSerializer; +import org.apache.olingo.server.api.uri.UriInfo; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.net.URI; +import java.util.UUID; + +public class SampleJsonProcessor implements EntitySetProcessor, EntityProcessor { + private static final Logger LOG = LoggerFactory.getLogger(SampleJsonProcessor.class); + + private OData odata; + private Edm edm; + + @Override + public void init(OData odata, Edm edm) { + this.odata = odata; + this.edm = edm; + } + + @Override + public void readEntitySet(ODataRequest request, ODataResponse response, UriInfo uriInfo, String format) { + long time = System.nanoTime(); + + EntitySet entitySet = createEntitySet(); + + LOG.info((System.nanoTime() - time) / 1000 + " microseconds"); + time = System.nanoTime(); + ODataSerializer serializer = odata.createSerializer(ODataFormat.JSON); + response.setContent(serializer.entitySet( + edm.getEntityContainer(new FullQualifiedName("com.sap.odata.test1", "Container")) + .getEntitySet("ESAllPrim"), + entitySet, + ContextURL.getInstance(URI.create("dummyContextURL")))); + LOG.info("Finished in " + (System.nanoTime() - time) / 1000 + " microseconds"); + + response.setStatusCode(200); + response.setHeader("Content-Type", ContentType.APPLICATION_JSON); + } + + @Override + public void readEntity(ODataRequest request, ODataResponse response, UriInfo uriInfo, String format) { + long time = System.nanoTime(); + Entity entity = createEntity(); + + LOG.info((System.nanoTime() - time) / 1000 + " microseconds"); + time = System.nanoTime(); + ODataSerializer serializer = odata.createSerializer(ODataFormat.JSON); + response.setContent(serializer.entity( + edm.getEntityContainer(new FullQualifiedName("com.sap.odata.test1", "Container")) + .getEntitySet("ESAllPrim").getEntityType(), + entity, + ContextURL.getInstance(URI.create("dummyContextURL")))); + LOG.info("Finished in " + (System.nanoTime() - time) / 1000 + " microseconds"); + + response.setStatusCode(200); + response.setHeader("Content-Type", ContentType.APPLICATION_JSON); + } + + protected Entity createEntity() { + Entity entity = new EntityImpl(); + Property property = new PropertyImpl(); + property.setName("PropertyString"); + property.setType("String"); //"dummyType"); + property.setValue(new PrimitiveValueImpl("dummyValue")); + entity.getProperties().add(property); + Property propertyInt = new PropertyImpl(); + propertyInt.setName("PropertyInt16"); + // propertyInt.setType("Edm.Int32"); + propertyInt.setValue(new PrimitiveValueImpl("42")); + entity.getProperties().add(propertyInt); + Property propertyGuid = new PropertyImpl(); + propertyGuid.setName("PropertyGuid"); + propertyGuid.setType("Edm.Guid"); + propertyGuid.setValue(new PrimitiveValueImpl(UUID.randomUUID().toString())); + entity.getProperties().add(propertyGuid); + return entity; + } + + protected EntitySet createEntitySet() { + EntitySet entitySet = new EntitySetImpl(); + entitySet.setCount(4242); + entitySet.setNext(URI.create("nextLinkURI")); + for (int i = 0; i < 1000; i++) { + entitySet.getEntities().add(createEntity()); + } + return entitySet; + } + }
