You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by mi...@apache.org on 2013/09/24 14:42:45 UTC
[18/51] [partial] Refactored project structure
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/57599da6/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/AtomEntityProvider.java
----------------------------------------------------------------------
diff --git a/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/AtomEntityProvider.java b/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/AtomEntityProvider.java
deleted file mode 100644
index a8b24fb..0000000
--- a/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/AtomEntityProvider.java
+++ /dev/null
@@ -1,397 +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.odata2.core.ep;
-
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import javax.xml.stream.XMLOutputFactory;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
-
-import org.apache.olingo.odata2.api.ODataServiceVersion;
-import org.apache.olingo.odata2.api.commons.HttpStatusCodes;
-import org.apache.olingo.odata2.api.commons.ODataHttpHeaders;
-import org.apache.olingo.odata2.api.edm.Edm;
-import org.apache.olingo.odata2.api.edm.EdmEntitySet;
-import org.apache.olingo.odata2.api.edm.EdmException;
-import org.apache.olingo.odata2.api.edm.EdmFunctionImport;
-import org.apache.olingo.odata2.api.edm.EdmMultiplicity;
-import org.apache.olingo.odata2.api.edm.EdmProperty;
-import org.apache.olingo.odata2.api.edm.EdmType;
-import org.apache.olingo.odata2.api.edm.EdmTypeKind;
-import org.apache.olingo.odata2.api.ep.EntityProviderException;
-import org.apache.olingo.odata2.api.ep.EntityProviderReadProperties;
-import org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties;
-import org.apache.olingo.odata2.api.ep.entry.ODataEntry;
-import org.apache.olingo.odata2.api.ep.feed.ODataFeed;
-import org.apache.olingo.odata2.api.processor.ODataResponse;
-import org.apache.olingo.odata2.api.processor.ODataResponse.ODataResponseBuilder;
-import org.apache.olingo.odata2.api.servicedocument.ServiceDocument;
-import org.apache.olingo.odata2.core.commons.ContentType;
-import org.apache.olingo.odata2.core.commons.ContentType.ODataFormat;
-import org.apache.olingo.odata2.core.ep.aggregator.EntityInfoAggregator;
-import org.apache.olingo.odata2.core.ep.aggregator.EntityPropertyInfo;
-import org.apache.olingo.odata2.core.ep.consumer.AtomServiceDocumentConsumer;
-import org.apache.olingo.odata2.core.ep.consumer.XmlEntityConsumer;
-import org.apache.olingo.odata2.core.ep.producer.AtomEntryEntityProducer;
-import org.apache.olingo.odata2.core.ep.producer.AtomFeedProducer;
-import org.apache.olingo.odata2.core.ep.producer.AtomServiceDocumentProducer;
-import org.apache.olingo.odata2.core.ep.producer.XmlCollectionEntityProducer;
-import org.apache.olingo.odata2.core.ep.producer.XmlErrorDocumentProducer;
-import org.apache.olingo.odata2.core.ep.producer.XmlLinkEntityProducer;
-import org.apache.olingo.odata2.core.ep.producer.XmlLinksEntityProducer;
-import org.apache.olingo.odata2.core.ep.producer.XmlPropertyEntityProducer;
-import org.apache.olingo.odata2.core.ep.util.CircleStreamBuffer;
-import org.apache.olingo.odata2.core.exception.ODataRuntimeException;
-
-/**
- *
- */
-public class AtomEntityProvider implements ContentTypeBasedEntityProvider {
-
- /** Default used charset for writer and response content header */
- private static final String DEFAULT_CHARSET = ContentType.CHARSET_UTF_8;
- private static final String XML_VERSION = "1.0";
-
- public AtomEntityProvider() throws EntityProviderException {
- this(ODataFormat.ATOM);
- }
-
- public AtomEntityProvider(final ContentType contentType) throws EntityProviderException {
- this(contentType.getODataFormat());
- }
-
- public AtomEntityProvider(final ODataFormat odataFormat) throws EntityProviderException {
- if (odataFormat != ODataFormat.ATOM && odataFormat != ODataFormat.XML) {
- throw new EntityProviderException(EntityProviderException.ILLEGAL_ARGUMENT
- .addContent("Got unsupported ODataFormat '" + odataFormat + "'."));
- }
- }
-
- /**
- * <p>Serializes an error message according to the OData standard.</p>
- * <p>In case an error occurs, it is logged.
- * An exception is not thrown because this method is used in exception handling.</p>
- * @param status the {@link HttpStatusCodes} associated with this error
- * @param errorCode a String that serves as a substatus to the HTTP response code
- * @param message a human-readable message describing the error
- * @param locale the {@link Locale} that should be used to format the error message
- * @param innerError the inner error for this message. If it is null or an empty String no inner error tag is shown
- * inside the response xml
- * @return an {@link ODataResponse} containing the serialized error message
- */
- @Override
- public ODataResponse writeErrorDocument(final HttpStatusCodes status, final String errorCode, final String message,
- final Locale locale, final String innerError) {
- CircleStreamBuffer csb = new CircleStreamBuffer();
-
- try {
- OutputStream outStream = csb.getOutputStream();
- XMLStreamWriter writer = XMLOutputFactory.newInstance().createXMLStreamWriter(outStream, DEFAULT_CHARSET);
-
- XmlErrorDocumentProducer producer = new XmlErrorDocumentProducer();
- producer.writeErrorDocument(writer, errorCode, message, locale, innerError);
-
- writer.flush();
- csb.closeWrite();
-
- ODataResponseBuilder response = ODataResponse.entity(csb.getInputStream())
- .header(ODataHttpHeaders.DATASERVICEVERSION, ODataServiceVersion.V10)
- .status(status);
- return response.build();
- } catch (Exception e) {
- csb.close();
- throw new ODataRuntimeException(e);
- }
- }
-
- /**
- * Write service document based on given {@link Edm} and <code>service root</code> as
- * <code>AtomPub Service Document/code> with charset encoding {@value #DEFAULT_CHARSET}.
- *
- * @param edm the Entity Data Model
- * @param serviceRoot the root URI of the service
- * @return resulting {@link ODataResponse} with written service document
- * @throws EntityProviderException
- */
- @Override
- public ODataResponse writeServiceDocument(final Edm edm, final String serviceRoot) throws EntityProviderException {
- CircleStreamBuffer csb = new CircleStreamBuffer();
-
- try {
- OutputStreamWriter writer = new OutputStreamWriter(csb.getOutputStream(), DEFAULT_CHARSET);
- AtomServiceDocumentProducer as = new AtomServiceDocumentProducer(edm, serviceRoot);
- as.writeServiceDocument(writer);
- csb.closeWrite();
-
- return ODataResponse.entity(csb.getInputStream()).build();
- } catch (EntityProviderException e) {
- csb.close();
- throw e;
- } catch (Exception e) {
- csb.close();
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
- .getSimpleName()), e);
- }
- }
-
- @Override
- public ODataResponse writeEntry(final EdmEntitySet entitySet, final Map<String, Object> data,
- final EntityProviderWriteProperties properties) throws EntityProviderException {
- CircleStreamBuffer csb = new CircleStreamBuffer();
-
- try {
- OutputStream outStream = csb.getOutputStream();
- XMLStreamWriter writer = XMLOutputFactory.newInstance().createXMLStreamWriter(outStream, DEFAULT_CHARSET);
- writer.writeStartDocument(DEFAULT_CHARSET, XML_VERSION);
-
- AtomEntryEntityProducer as = new AtomEntryEntityProducer(properties);
- EntityInfoAggregator eia = EntityInfoAggregator.create(entitySet, properties.getExpandSelectTree());
- as.append(writer, eia, data, true, false);
-
- writer.flush();
- csb.closeWrite();
-
- ODataResponseBuilder response = ODataResponse.entity(csb.getInputStream())
- .eTag(as.getETag())
- .idLiteral(as.getLocation());
- return response.build();
- } catch (EntityProviderException e) {
- csb.close();
- throw e;
- } catch (Exception e) {
- csb.close();
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
- .getSimpleName()), e);
- }
- }
-
- @Override
- public ODataResponse writeProperty(final EdmProperty edmProperty, final Object value) throws EntityProviderException {
- EntityPropertyInfo propertyInfo = EntityInfoAggregator.create(edmProperty);
- return writeSingleTypedElement(propertyInfo, value);
- }
-
- private ODataResponse writeSingleTypedElement(final EntityPropertyInfo propertyInfo, final Object value)
- throws EntityProviderException {
- CircleStreamBuffer csb = new CircleStreamBuffer();
-
- try {
- OutputStream outStream = csb.getOutputStream();
- XMLStreamWriter writer = XMLOutputFactory.newInstance().createXMLStreamWriter(outStream, DEFAULT_CHARSET);
- writer.writeStartDocument(DEFAULT_CHARSET, XML_VERSION);
-
- XmlPropertyEntityProducer ps = new XmlPropertyEntityProducer();
- ps.append(writer, propertyInfo, value);
-
- writer.flush();
- csb.closeWrite();
-
- return ODataResponse.entity(csb.getInputStream()).build();
- } catch (EntityProviderException e) {
- csb.close();
- throw e;
- } catch (Exception e) {
- csb.close();
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
- .getSimpleName()), e);
- }
- }
-
- @Override
- public ODataResponse writeFeed(final EdmEntitySet entitySet, final List<Map<String, Object>> data,
- final EntityProviderWriteProperties properties) throws EntityProviderException {
- CircleStreamBuffer csb = new CircleStreamBuffer();
-
- try {
- OutputStream outStream = csb.getOutputStream();
- XMLStreamWriter writer = XMLOutputFactory.newInstance().createXMLStreamWriter(outStream, DEFAULT_CHARSET);
- writer.writeStartDocument(DEFAULT_CHARSET, XML_VERSION);
-
- AtomFeedProducer atomFeedProvider = new AtomFeedProducer(properties);
- EntityInfoAggregator eia = EntityInfoAggregator.create(entitySet, properties.getExpandSelectTree());
- atomFeedProvider.append(writer, eia, data, false);
-
- writer.flush();
- csb.closeWrite();
-
- ODataResponse response = ODataResponse.entity(csb.getInputStream()).build();
- return response;
- } catch (EntityProviderException e) {
- csb.close();
- throw e;
- } catch (XMLStreamException e) {
- csb.close();
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
- .getSimpleName()), e);
- }
- }
-
- @Override
- public ODataResponse writeLink(final EdmEntitySet entitySet, final Map<String, Object> data,
- final EntityProviderWriteProperties properties) throws EntityProviderException {
- CircleStreamBuffer csb = new CircleStreamBuffer();
-
- try {
- OutputStream outStream = csb.getOutputStream();
- XMLStreamWriter writer = XMLOutputFactory.newInstance().createXMLStreamWriter(outStream, DEFAULT_CHARSET);
- writer.writeStartDocument(DEFAULT_CHARSET, XML_VERSION);
-
- XmlLinkEntityProducer entity = new XmlLinkEntityProducer(properties);
- final EntityInfoAggregator entityInfo = EntityInfoAggregator.create(entitySet, properties.getExpandSelectTree());
- entity.append(writer, entityInfo, data, true);
-
- writer.flush();
- csb.closeWrite();
-
- return ODataResponse.entity(csb.getInputStream()).build();
- } catch (EntityProviderException e) {
- csb.close();
- throw e;
- } catch (Exception e) {
- csb.close();
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
- .getSimpleName()), e);
- }
-
- }
-
- @Override
- public ODataResponse writeLinks(final EdmEntitySet entitySet, final List<Map<String, Object>> data,
- final EntityProviderWriteProperties properties) throws EntityProviderException {
- CircleStreamBuffer csb = new CircleStreamBuffer();
-
- try {
- OutputStream outStream = csb.getOutputStream();
- XMLStreamWriter writer = XMLOutputFactory.newInstance().createXMLStreamWriter(outStream, DEFAULT_CHARSET);
- writer.writeStartDocument(DEFAULT_CHARSET, XML_VERSION);
-
- XmlLinksEntityProducer entity = new XmlLinksEntityProducer(properties);
- final EntityInfoAggregator entityInfo = EntityInfoAggregator.create(entitySet, properties.getExpandSelectTree());
- entity.append(writer, entityInfo, data);
-
- writer.flush();
- csb.closeWrite();
-
- return ODataResponse.entity(csb.getInputStream()).build();
- } catch (EntityProviderException e) {
- csb.close();
- throw e;
- } catch (Exception e) {
- csb.close();
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
- .getSimpleName()), e);
- }
- }
-
- private ODataResponse writeCollection(final EntityPropertyInfo propertyInfo, final List<?> data)
- throws EntityProviderException {
- CircleStreamBuffer csb = new CircleStreamBuffer();
-
- try {
- OutputStream outStream = csb.getOutputStream();
- XMLStreamWriter writer = XMLOutputFactory.newInstance().createXMLStreamWriter(outStream, DEFAULT_CHARSET);
- writer.writeStartDocument(DEFAULT_CHARSET, XML_VERSION);
-
- XmlCollectionEntityProducer.append(writer, propertyInfo, data);
-
- writer.flush();
- csb.closeWrite();
-
- return ODataResponse.entity(csb.getInputStream()).build();
- } catch (EntityProviderException e) {
- csb.close();
- throw e;
- } catch (Exception e) {
- csb.close();
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
- .getSimpleName()), e);
- }
- }
-
- @Override
- public ODataResponse writeFunctionImport(final EdmFunctionImport functionImport, final Object data,
- final EntityProviderWriteProperties properties) throws EntityProviderException {
- try {
- final EdmType type = functionImport.getReturnType().getType();
- final boolean isCollection = functionImport.getReturnType().getMultiplicity() == EdmMultiplicity.MANY;
-
- if (type.getKind() == EdmTypeKind.ENTITY) {
- @SuppressWarnings("unchecked")
- Map<String, Object> map = (Map<String, Object>) data;
- return writeEntry(functionImport.getEntitySet(), map, properties);
- }
-
- final EntityPropertyInfo info = EntityInfoAggregator.create(functionImport);
- if (isCollection) {
- return writeCollection(info, (List<?>) data);
- } else {
- return writeSingleTypedElement(info, data);
- }
- } catch (EdmException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
- .getSimpleName()), e);
- }
- }
-
- @Override
- public ODataFeed readFeed(final EdmEntitySet entitySet, final InputStream content,
- final EntityProviderReadProperties properties) throws EntityProviderException {
- XmlEntityConsumer xec = new XmlEntityConsumer();
- return xec.readFeed(entitySet, content, properties);
- }
-
- @Override
- public ODataEntry readEntry(final EdmEntitySet entitySet, final InputStream content,
- final EntityProviderReadProperties properties) throws EntityProviderException {
- XmlEntityConsumer xec = new XmlEntityConsumer();
- return xec.readEntry(entitySet, content, properties);
- }
-
- @Override
- public Map<String, Object> readProperty(final EdmProperty edmProperty, final InputStream content,
- final EntityProviderReadProperties properties) throws EntityProviderException {
- XmlEntityConsumer xec = new XmlEntityConsumer();
- return xec.readProperty(edmProperty, content, properties);
- }
-
- @Override
- public String readLink(final EdmEntitySet entitySet, final InputStream content) throws EntityProviderException {
- XmlEntityConsumer xec = new XmlEntityConsumer();
- return xec.readLink(entitySet, content);
- }
-
- @Override
- public List<String> readLinks(final EdmEntitySet entitySet, final InputStream content)
- throws EntityProviderException {
- XmlEntityConsumer xec = new XmlEntityConsumer();
- return xec.readLinks(entitySet, content);
- }
-
- @Override
- public ServiceDocument readServiceDocument(final InputStream serviceDocument) throws EntityProviderException {
- AtomServiceDocumentConsumer serviceDocConsumer = new AtomServiceDocumentConsumer();
- return serviceDocConsumer.parseXml(serviceDocument);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/57599da6/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/BasicEntityProvider.java
----------------------------------------------------------------------
diff --git a/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/BasicEntityProvider.java b/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/BasicEntityProvider.java
deleted file mode 100644
index a32b916..0000000
--- a/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/BasicEntityProvider.java
+++ /dev/null
@@ -1,309 +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.odata2.core.ep;
-
-import java.io.BufferedReader;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-import java.io.UnsupportedEncodingException;
-import java.nio.charset.Charset;
-import java.util.List;
-import java.util.Map;
-
-import javax.xml.stream.FactoryConfigurationError;
-import javax.xml.stream.XMLOutputFactory;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
-
-import org.apache.olingo.odata2.api.ODataServiceVersion;
-import org.apache.olingo.odata2.api.commons.HttpContentType;
-import org.apache.olingo.odata2.api.commons.HttpStatusCodes;
-import org.apache.olingo.odata2.api.commons.ODataHttpHeaders;
-import org.apache.olingo.odata2.api.edm.EdmException;
-import org.apache.olingo.odata2.api.edm.EdmLiteralKind;
-import org.apache.olingo.odata2.api.edm.EdmProperty;
-import org.apache.olingo.odata2.api.edm.EdmSimpleType;
-import org.apache.olingo.odata2.api.edm.EdmSimpleTypeKind;
-import org.apache.olingo.odata2.api.edm.provider.DataServices;
-import org.apache.olingo.odata2.api.edm.provider.EntityType;
-import org.apache.olingo.odata2.api.edm.provider.Property;
-import org.apache.olingo.odata2.api.edm.provider.Schema;
-import org.apache.olingo.odata2.api.ep.EntityProviderException;
-import org.apache.olingo.odata2.api.processor.ODataResponse;
-import org.apache.olingo.odata2.api.processor.ODataResponse.ODataResponseBuilder;
-import org.apache.olingo.odata2.core.ep.producer.XmlMetadataProducer;
-import org.apache.olingo.odata2.core.ep.util.CircleStreamBuffer;
-
-/**
- * Provider for all basic (content type independent) entity provider methods.
- *
- *
- */
-public class BasicEntityProvider {
-
- /** Default used charset for writer and response content header */
- private static final String DEFAULT_CHARSET = "utf-8";
-
- /**
- * Reads binary data from an input stream.
- * @param content the content input stream
- * @return the binary data
- * @throws EntityProviderException
- */
- public byte[] readBinary(final InputStream content) throws EntityProviderException {
- ByteArrayOutputStream buffer = new ByteArrayOutputStream();
- byte[] value = new byte[Short.MAX_VALUE];
- int count;
- try {
- while ((count = content.read(value)) > 0) {
- buffer.write(value, 0, count);
- }
- content.close();
- buffer.flush();
- return buffer.toByteArray();
- } catch (IOException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
- .getSimpleName()), e);
- }
- }
-
- /**
- * Reads text from an input stream.
- * @param content the content input stream
- * @return text as string from <code>InputStream</code>
- * @throws EntityProviderException
- */
- public String readText(final InputStream content) throws EntityProviderException {
- BufferedReader bufferedReader =
- new BufferedReader(new InputStreamReader(content, Charset.forName(DEFAULT_CHARSET)));
- StringBuilder stringBuilder = new StringBuilder();
- try {
- String line = null;
- while ((line = bufferedReader.readLine()) != null) {
- stringBuilder.append(line);
- }
- bufferedReader.close();
- } catch (IOException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
- .getSimpleName()), e);
- }
- return stringBuilder.toString();
- }
-
- /**
- * Reads an unformatted value of an EDM property as binary or as content type <code>text/plain</code>.
- * @param edmProperty the EDM property
- * @param content the content input stream
- * @param typeMapping
- * @return the value as the proper system data type
- * @throws EntityProviderException
- */
- public Object readPropertyValue(final EdmProperty edmProperty, final InputStream content, final Class<?> typeMapping)
- throws EntityProviderException {
- EdmSimpleType type;
- try {
- type = (EdmSimpleType) edmProperty.getType();
- } catch (EdmException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
- .getSimpleName()), e);
- }
-
- if (type == EdmSimpleTypeKind.Binary.getEdmSimpleTypeInstance()) {
- return readBinary(content);
- } else {
- try {
- if (typeMapping == null) {
- return type.valueOfString(readText(content), EdmLiteralKind.DEFAULT, edmProperty.getFacets(), type
- .getDefaultType());
- } else {
- return type.valueOfString(readText(content), EdmLiteralKind.DEFAULT, edmProperty.getFacets(), typeMapping);
- }
- } catch (EdmException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
- .getSimpleName()), e);
- }
- }
- }
-
- /**
- * Write property as binary or as content type <code>text/plain</code>.
- * @param edmProperty the EDM property
- * @param value its value
- * @return resulting {@link ODataResponse} with written content
- * @throws EntityProviderException
- */
- public ODataResponse writePropertyValue(final EdmProperty edmProperty, final Object value)
- throws EntityProviderException {
- try {
- final EdmSimpleType type = (EdmSimpleType) edmProperty.getType();
-
- if (type == EdmSimpleTypeKind.Binary.getEdmSimpleTypeInstance()) {
- String contentType = HttpContentType.APPLICATION_OCTET_STREAM;
- Object binary = value;
- if (edmProperty.getMimeType() != null) {
- contentType = edmProperty.getMimeType();
- } else {
- if (edmProperty.getMapping() != null && edmProperty.getMapping().getMimeType() != null) {
- String mimeTypeMapping = edmProperty.getMapping().getMimeType();
- if (value instanceof Map) {
- final Map<?, ?> mappedData = (Map<?, ?>) value;
- binary = mappedData.get(edmProperty.getName());
- contentType = (String) mappedData.get(mimeTypeMapping);
- } else {
- throw new EntityProviderException(EntityProviderException.COMMON);
- }
- }
- }
- return writeBinary(contentType, (byte[]) binary);
-
- } else {
- return writeText(type.valueToString(value, EdmLiteralKind.DEFAULT, edmProperty.getFacets()));
- }
-
- } catch (EdmException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
- .getSimpleName()), e);
- }
- }
-
- /**
- * Write text value as content type <code>text/plain</code> with charset parameter set to {@value #DEFAULT_CHARSET}.
- * @param value the string that is written to {@link ODataResponse}
- * @return resulting {@link ODataResponse} with written text content
- * @throws EntityProviderException
- */
- public ODataResponse writeText(final String value) throws EntityProviderException {
- ODataResponseBuilder builder = ODataResponse.newBuilder();
- if (value != null) {
- ByteArrayInputStream stream;
- try {
- stream = new ByteArrayInputStream(value.getBytes(DEFAULT_CHARSET));
- } catch (UnsupportedEncodingException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
- .getSimpleName()), e);
- }
- builder.entity(stream);
- }
-
- return builder.build();
- }
-
- /**
- * Write binary content with content type header set to given <code>mime type</code> parameter.
- * @param mimeType MIME type which is written and used as content type header information
- * @param data data is written to {@link ODataResponse}
- * @return resulting {@link ODataResponse} with written binary content
- * @throws EntityProviderException
- */
- public ODataResponse writeBinary(final String mimeType, final byte[] data) throws EntityProviderException {
- ODataResponseBuilder builder = ODataResponse.newBuilder();
- if (data != null) {
- ByteArrayInputStream bais = new ByteArrayInputStream(data);
- builder.contentHeader(mimeType);
- builder.entity(bais);
- } else {
- builder.status(HttpStatusCodes.NO_CONTENT);
- }
- return builder.build();
- }
-
- /**
- * Writes the metadata in XML format. Predefined namespaces is of type Map{@literal <}prefix,namespace{@literal >} and
- * may be null or an empty Map.
- * @param schemas
- * @param predefinedNamespaces
- * @return resulting {@link ODataResponse} with written metadata content
- * @throws EntityProviderException
- */
- public ODataResponse writeMetadata(final List<Schema> schemas, final Map<String, String> predefinedNamespaces)
- throws EntityProviderException {
- ODataResponseBuilder builder = ODataResponse.newBuilder();
- String dataServiceVersion = ODataServiceVersion.V10;
- if (schemas != null) {
- dataServiceVersion = calculateDataServiceVersion(schemas);
- }
- DataServices metadata = new DataServices().setSchemas(schemas).setDataServiceVersion(dataServiceVersion);
- OutputStreamWriter writer = null;
- CircleStreamBuffer csb = new CircleStreamBuffer();
- try {
- writer = new OutputStreamWriter(csb.getOutputStream(), DEFAULT_CHARSET);
- XMLStreamWriter xmlStreamWriter = XMLOutputFactory.newInstance().createXMLStreamWriter(writer);
- XmlMetadataProducer.writeMetadata(metadata, xmlStreamWriter, predefinedNamespaces);
- } catch (UnsupportedEncodingException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
- .getSimpleName()), e);
- } catch (XMLStreamException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
- .getSimpleName()), e);
- } catch (FactoryConfigurationError e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
- .getSimpleName()), e);
- }
- builder.entity(csb.getInputStream());
- builder.header(ODataHttpHeaders.DATASERVICEVERSION, dataServiceVersion);
- return builder.build();
- }
-
- /**
- * Calculates the necessary data service version for the metadata serialization
- * @param schemas
- * @return DataServiceversion as String
- */
- private String calculateDataServiceVersion(final List<Schema> schemas) {
-
- String dataServiceVersion = ODataServiceVersion.V10;
-
- if (schemas != null) {
- for (Schema schema : schemas) {
- List<EntityType> entityTypes = schema.getEntityTypes();
- if (entityTypes != null) {
- for (EntityType entityType : entityTypes) {
- List<Property> properties = entityType.getProperties();
- if (properties != null) {
- for (Property property : properties) {
- if (property.getCustomizableFeedMappings() != null) {
- if (property.getCustomizableFeedMappings().getFcKeepInContent() != null) {
- if (!property.getCustomizableFeedMappings().getFcKeepInContent()) {
- dataServiceVersion = ODataServiceVersion.V20;
- return dataServiceVersion;
- }
- }
- }
- }
- if (entityType.getCustomizableFeedMappings() != null) {
- if (entityType.getCustomizableFeedMappings().getFcKeepInContent() != null) {
- if (entityType.getCustomizableFeedMappings().getFcKeepInContent()) {
- dataServiceVersion = ODataServiceVersion.V20;
- return dataServiceVersion;
- }
- }
- }
- }
- }
- }
- }
- }
-
- return dataServiceVersion;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/57599da6/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/ContentTypeBasedEntityProvider.java
----------------------------------------------------------------------
diff --git a/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/ContentTypeBasedEntityProvider.java b/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/ContentTypeBasedEntityProvider.java
deleted file mode 100644
index 3ae1958..0000000
--- a/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/ContentTypeBasedEntityProvider.java
+++ /dev/null
@@ -1,83 +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.odata2.core.ep;
-
-import java.io.InputStream;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import org.apache.olingo.odata2.api.commons.HttpStatusCodes;
-import org.apache.olingo.odata2.api.edm.Edm;
-import org.apache.olingo.odata2.api.edm.EdmEntitySet;
-import org.apache.olingo.odata2.api.edm.EdmFunctionImport;
-import org.apache.olingo.odata2.api.edm.EdmProperty;
-import org.apache.olingo.odata2.api.ep.EntityProviderException;
-import org.apache.olingo.odata2.api.ep.EntityProviderReadProperties;
-import org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties;
-import org.apache.olingo.odata2.api.ep.entry.ODataEntry;
-import org.apache.olingo.odata2.api.ep.feed.ODataFeed;
-import org.apache.olingo.odata2.api.processor.ODataResponse;
-import org.apache.olingo.odata2.api.servicedocument.ServiceDocument;
-
-/**
- * Interface for all none basic (content type <b>dependent</b>) provider methods.
- *
- *
- */
-public interface ContentTypeBasedEntityProvider {
-
- ODataFeed readFeed(EdmEntitySet entitySet, InputStream content, EntityProviderReadProperties properties)
- throws EntityProviderException;
-
- ODataEntry readEntry(EdmEntitySet entitySet, InputStream content, EntityProviderReadProperties properties)
- throws EntityProviderException;
-
- Map<String, Object>
- readProperty(EdmProperty edmProperty, InputStream content, EntityProviderReadProperties properties)
- throws EntityProviderException;
-
- String readLink(EdmEntitySet entitySet, InputStream content) throws EntityProviderException;
-
- List<String> readLinks(EdmEntitySet entitySet, InputStream content) throws EntityProviderException;
-
- ODataResponse writeServiceDocument(Edm edm, String serviceRoot) throws EntityProviderException;
-
- ODataResponse writeFeed(EdmEntitySet entitySet, List<Map<String, Object>> data,
- EntityProviderWriteProperties properties) throws EntityProviderException;
-
- ODataResponse writeEntry(EdmEntitySet entitySet, Map<String, Object> data, EntityProviderWriteProperties properties)
- throws EntityProviderException;
-
- ODataResponse writeProperty(EdmProperty edmProperty, Object value) throws EntityProviderException;
-
- ODataResponse writeLink(EdmEntitySet entitySet, Map<String, Object> data, EntityProviderWriteProperties properties)
- throws EntityProviderException;
-
- ODataResponse writeLinks(EdmEntitySet entitySet, List<Map<String, Object>> data,
- EntityProviderWriteProperties properties) throws EntityProviderException;
-
- ODataResponse writeFunctionImport(EdmFunctionImport functionImport, Object data,
- EntityProviderWriteProperties properties) throws EntityProviderException;
-
- ODataResponse writeErrorDocument(HttpStatusCodes status, String errorCode, String message, Locale locale,
- String innerError);
-
- ServiceDocument readServiceDocument(InputStream serviceDocument) throws EntityProviderException;
-}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/57599da6/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/JsonEntityProvider.java
----------------------------------------------------------------------
diff --git a/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/JsonEntityProvider.java b/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/JsonEntityProvider.java
deleted file mode 100644
index 1937c7f..0000000
--- a/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/JsonEntityProvider.java
+++ /dev/null
@@ -1,337 +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.odata2.core.ep;
-
-import java.io.BufferedWriter;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import org.apache.olingo.odata2.api.ODataServiceVersion;
-import org.apache.olingo.odata2.api.commons.HttpStatusCodes;
-import org.apache.olingo.odata2.api.commons.InlineCount;
-import org.apache.olingo.odata2.api.commons.ODataHttpHeaders;
-import org.apache.olingo.odata2.api.edm.Edm;
-import org.apache.olingo.odata2.api.edm.EdmEntitySet;
-import org.apache.olingo.odata2.api.edm.EdmException;
-import org.apache.olingo.odata2.api.edm.EdmFunctionImport;
-import org.apache.olingo.odata2.api.edm.EdmMultiplicity;
-import org.apache.olingo.odata2.api.edm.EdmProperty;
-import org.apache.olingo.odata2.api.edm.EdmTypeKind;
-import org.apache.olingo.odata2.api.ep.EntityProviderException;
-import org.apache.olingo.odata2.api.ep.EntityProviderReadProperties;
-import org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties;
-import org.apache.olingo.odata2.api.ep.entry.ODataEntry;
-import org.apache.olingo.odata2.api.ep.feed.ODataFeed;
-import org.apache.olingo.odata2.api.processor.ODataResponse;
-import org.apache.olingo.odata2.api.processor.ODataResponse.ODataResponseBuilder;
-import org.apache.olingo.odata2.api.servicedocument.ServiceDocument;
-import org.apache.olingo.odata2.core.ep.aggregator.EntityInfoAggregator;
-import org.apache.olingo.odata2.core.ep.aggregator.EntityPropertyInfo;
-import org.apache.olingo.odata2.core.ep.consumer.JsonEntityConsumer;
-import org.apache.olingo.odata2.core.ep.consumer.JsonServiceDocumentConsumer;
-import org.apache.olingo.odata2.core.ep.producer.JsonCollectionEntityProducer;
-import org.apache.olingo.odata2.core.ep.producer.JsonEntryEntityProducer;
-import org.apache.olingo.odata2.core.ep.producer.JsonErrorDocumentProducer;
-import org.apache.olingo.odata2.core.ep.producer.JsonFeedEntityProducer;
-import org.apache.olingo.odata2.core.ep.producer.JsonLinkEntityProducer;
-import org.apache.olingo.odata2.core.ep.producer.JsonLinksEntityProducer;
-import org.apache.olingo.odata2.core.ep.producer.JsonPropertyEntityProducer;
-import org.apache.olingo.odata2.core.ep.producer.JsonServiceDocumentProducer;
-import org.apache.olingo.odata2.core.ep.util.CircleStreamBuffer;
-import org.apache.olingo.odata2.core.exception.ODataRuntimeException;
-
-/**
- *
- */
-public class JsonEntityProvider implements ContentTypeBasedEntityProvider {
-
- private static final String DEFAULT_CHARSET = "UTF-8";
-
- /**
- * <p>Serializes an error message according to the OData standard.</p>
- * <p>In case an error occurs, it is logged.
- * An exception is not thrown because this method is used in exception handling.</p>
- * @param status the {@link HttpStatusCodes status code} associated with this error
- * @param errorCode a String that serves as a substatus to the HTTP response code
- * @param message a human-readable message describing the error
- * @param locale the {@link Locale} that should be used to format the error message
- * @param innerError the inner error for this message; if it is null or an empty String
- * no inner error tag is shown inside the response structure
- * @return an {@link ODataResponse} containing the serialized error message
- */
- @Override
- public ODataResponse writeErrorDocument(final HttpStatusCodes status, final String errorCode, final String message,
- final Locale locale, final String innerError) {
- CircleStreamBuffer buffer = new CircleStreamBuffer();
-
- try {
- BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(buffer.getOutputStream(), DEFAULT_CHARSET));
- new JsonErrorDocumentProducer().writeErrorDocument(writer, errorCode, message, locale, innerError);
- writer.flush();
- buffer.closeWrite();
-
- return ODataResponse.status(status)
- .entity(buffer.getInputStream())
- .header(ODataHttpHeaders.DATASERVICEVERSION, ODataServiceVersion.V10)
- .build();
- } catch (Exception e) {
- buffer.close();
- throw new ODataRuntimeException(e);
- }
- }
-
- /**
- * Writes service document based on given {@link Edm} and <code>service root</code>.
- * @param edm the Entity Data Model
- * @param serviceRoot the root URI of the service
- * @return resulting {@link ODataResponse} with written service document
- * @throws EntityProviderException
- */
- @Override
- public ODataResponse writeServiceDocument(final Edm edm, final String serviceRoot) throws EntityProviderException {
- CircleStreamBuffer buffer = new CircleStreamBuffer();
-
- try {
- BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(buffer.getOutputStream(), DEFAULT_CHARSET));
- JsonServiceDocumentProducer.writeServiceDocument(writer, edm);
- writer.flush();
- buffer.closeWrite();
-
- return ODataResponse.entity(buffer.getInputStream())
- .header(ODataHttpHeaders.DATASERVICEVERSION, ODataServiceVersion.V10)
- .build();
- } catch (Exception e) {
- buffer.close();
- throw new ODataRuntimeException(e);
- }
- }
-
- @Override
- public ODataResponse writeEntry(final EdmEntitySet entitySet, final Map<String, Object> data,
- final EntityProviderWriteProperties properties) throws EntityProviderException {
- final EntityInfoAggregator entityInfo = EntityInfoAggregator.create(entitySet, properties.getExpandSelectTree());
- CircleStreamBuffer buffer = new CircleStreamBuffer();
-
- try {
- BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(buffer.getOutputStream(), DEFAULT_CHARSET));
- JsonEntryEntityProducer producer = new JsonEntryEntityProducer(properties);
- producer.append(writer, entityInfo, data, true);
- writer.flush();
- buffer.closeWrite();
-
- return ODataResponse.entity(buffer.getInputStream())
- .eTag(producer.getETag())
- .idLiteral(producer.getLocation())
- .build();
- } catch (EntityProviderException e) {
- buffer.close();
- throw e;
- } catch (Exception e) {
- buffer.close();
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
- .getSimpleName()), e);
- }
- }
-
- @Override
- public ODataResponse writeProperty(final EdmProperty edmProperty, final Object value) throws EntityProviderException {
- return writeSingleTypedElement(EntityInfoAggregator.create(edmProperty), value);
- }
-
- private ODataResponse writeSingleTypedElement(final EntityPropertyInfo propertyInfo, final Object value)
- throws EntityProviderException {
- CircleStreamBuffer buffer = new CircleStreamBuffer();
-
- try {
- OutputStream outStream = buffer.getOutputStream();
- BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outStream, DEFAULT_CHARSET));
- new JsonPropertyEntityProducer().append(writer, propertyInfo, value);
- writer.flush();
- buffer.closeWrite();
-
- return ODataResponse.entity(buffer.getInputStream())
- .header(ODataHttpHeaders.DATASERVICEVERSION, ODataServiceVersion.V10)
- .build();
- } catch (EntityProviderException e) {
- buffer.close();
- throw e;
- } catch (Exception e) {
- buffer.close();
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
- .getSimpleName()), e);
- }
- }
-
- @Override
- public ODataResponse writeFeed(final EdmEntitySet entitySet, final List<Map<String, Object>> data,
- final EntityProviderWriteProperties properties) throws EntityProviderException {
- final EntityInfoAggregator entityInfo = EntityInfoAggregator.create(entitySet, properties.getExpandSelectTree());
- CircleStreamBuffer buffer = new CircleStreamBuffer();
-
- try {
- BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(buffer.getOutputStream(), DEFAULT_CHARSET));
- new JsonFeedEntityProducer(properties).append(writer, entityInfo, data, true);
- writer.flush();
- buffer.closeWrite();
-
- return ODataResponse.entity(buffer.getInputStream()).build();
- } catch (EntityProviderException e) {
- buffer.close();
- throw e;
- } catch (Exception e) {
- buffer.close();
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
- .getSimpleName()), e);
- }
- }
-
- @Override
- public ODataResponse writeLink(final EdmEntitySet entitySet, final Map<String, Object> data,
- final EntityProviderWriteProperties properties) throws EntityProviderException {
- final EntityInfoAggregator entityInfo = EntityInfoAggregator.create(entitySet, properties.getExpandSelectTree());
- CircleStreamBuffer buffer = new CircleStreamBuffer();
-
- try {
- BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(buffer.getOutputStream(), DEFAULT_CHARSET));
- new JsonLinkEntityProducer(properties).append(writer, entityInfo, data);
- writer.flush();
- buffer.closeWrite();
-
- return ODataResponse.entity(buffer.getInputStream())
- .header(ODataHttpHeaders.DATASERVICEVERSION, ODataServiceVersion.V10)
- .build();
- } catch (EntityProviderException e) {
- buffer.close();
- throw e;
- } catch (Exception e) {
- buffer.close();
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
- .getSimpleName()), e);
- }
- }
-
- @Override
- public ODataResponse writeLinks(final EdmEntitySet entitySet, final List<Map<String, Object>> data,
- final EntityProviderWriteProperties properties) throws EntityProviderException {
- final EntityInfoAggregator entityInfo = EntityInfoAggregator.create(entitySet, properties.getExpandSelectTree());
- CircleStreamBuffer buffer = new CircleStreamBuffer();
-
- try {
- BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(buffer.getOutputStream(), DEFAULT_CHARSET));
- new JsonLinksEntityProducer(properties).append(writer, entityInfo, data);
- writer.flush();
- buffer.closeWrite();
-
- ODataResponseBuilder response = ODataResponse.entity(buffer.getInputStream());
- if (properties.getInlineCountType() != InlineCount.ALLPAGES) {
- response = response.header(ODataHttpHeaders.DATASERVICEVERSION, ODataServiceVersion.V10);
- }
- return response.build();
- } catch (EntityProviderException e) {
- buffer.close();
- throw e;
- } catch (Exception e) {
- buffer.close();
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
- .getSimpleName()), e);
- }
- }
-
- private ODataResponse writeCollection(final EntityPropertyInfo propertyInfo, final List<?> data)
- throws EntityProviderException {
- CircleStreamBuffer buffer = new CircleStreamBuffer();
-
- try {
- BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(buffer.getOutputStream(), DEFAULT_CHARSET));
- new JsonCollectionEntityProducer().append(writer, propertyInfo, data);
- writer.flush();
- buffer.closeWrite();
-
- return ODataResponse.entity(buffer.getInputStream()).build();
- } catch (EntityProviderException e) {
- buffer.close();
- throw e;
- } catch (Exception e) {
- buffer.close();
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
- .getSimpleName()), e);
- }
- }
-
- @Override
- public ODataResponse writeFunctionImport(final EdmFunctionImport functionImport, final Object data,
- final EntityProviderWriteProperties properties) throws EntityProviderException {
- try {
- if (functionImport.getReturnType().getType().getKind() == EdmTypeKind.ENTITY) {
- @SuppressWarnings("unchecked")
- Map<String, Object> map = (Map<String, Object>) data;
- return writeEntry(functionImport.getEntitySet(), map, properties);
- }
-
- final EntityPropertyInfo info = EntityInfoAggregator.create(functionImport);
- if (functionImport.getReturnType().getMultiplicity() == EdmMultiplicity.MANY) {
- return writeCollection(info, (List<?>) data);
- } else {
- return writeSingleTypedElement(info, data);
- }
- } catch (final EdmException e) {
- throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
- .getSimpleName()), e);
- }
- }
-
- @Override
- public ODataFeed readFeed(final EdmEntitySet entitySet, final InputStream content,
- final EntityProviderReadProperties properties) throws EntityProviderException {
- return new JsonEntityConsumer().readFeed(entitySet, content, properties);
- }
-
- @Override
- public ODataEntry readEntry(final EdmEntitySet entitySet, final InputStream content,
- final EntityProviderReadProperties properties) throws EntityProviderException {
- return new JsonEntityConsumer().readEntry(entitySet, content, properties);
- }
-
- @Override
- public Map<String, Object> readProperty(final EdmProperty edmProperty, final InputStream content,
- final EntityProviderReadProperties properties) throws EntityProviderException {
- return new JsonEntityConsumer().readProperty(edmProperty, content, properties);
- }
-
- @Override
- public String readLink(final EdmEntitySet entitySet, final InputStream content) throws EntityProviderException {
- return new JsonEntityConsumer().readLink(entitySet, content);
- }
-
- @Override
- public List<String> readLinks(final EdmEntitySet entitySet, final InputStream content)
- throws EntityProviderException {
- return new JsonEntityConsumer().readLinks(entitySet, content);
- }
-
- @Override
- public ServiceDocument readServiceDocument(final InputStream serviceDocument) throws EntityProviderException {
- return new JsonServiceDocumentConsumer().parseJson(serviceDocument);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/57599da6/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/ProviderFacadeImpl.java
----------------------------------------------------------------------
diff --git a/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/ProviderFacadeImpl.java b/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/ProviderFacadeImpl.java
deleted file mode 100644
index 9793115..0000000
--- a/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/ProviderFacadeImpl.java
+++ /dev/null
@@ -1,241 +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.odata2.core.ep;
-
-import java.io.InputStream;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.olingo.odata2.api.batch.BatchException;
-import org.apache.olingo.odata2.api.batch.BatchRequestPart;
-import org.apache.olingo.odata2.api.batch.BatchResponsePart;
-import org.apache.olingo.odata2.api.client.batch.BatchPart;
-import org.apache.olingo.odata2.api.client.batch.BatchSingleResponse;
-import org.apache.olingo.odata2.api.edm.Edm;
-import org.apache.olingo.odata2.api.edm.EdmEntitySet;
-import org.apache.olingo.odata2.api.edm.EdmFunctionImport;
-import org.apache.olingo.odata2.api.edm.EdmProperty;
-import org.apache.olingo.odata2.api.edm.provider.EdmProvider;
-import org.apache.olingo.odata2.api.edm.provider.Schema;
-import org.apache.olingo.odata2.api.ep.EntityProvider.EntityProviderInterface;
-import org.apache.olingo.odata2.api.ep.EntityProviderBatchProperties;
-import org.apache.olingo.odata2.api.ep.EntityProviderException;
-import org.apache.olingo.odata2.api.ep.EntityProviderReadProperties;
-import org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties;
-import org.apache.olingo.odata2.api.ep.entry.ODataEntry;
-import org.apache.olingo.odata2.api.ep.feed.ODataFeed;
-import org.apache.olingo.odata2.api.exception.ODataNotAcceptableException;
-import org.apache.olingo.odata2.api.processor.ODataErrorContext;
-import org.apache.olingo.odata2.api.processor.ODataResponse;
-import org.apache.olingo.odata2.api.servicedocument.ServiceDocument;
-import org.apache.olingo.odata2.core.batch.BatchRequestParser;
-import org.apache.olingo.odata2.core.batch.BatchRequestWriter;
-import org.apache.olingo.odata2.core.batch.BatchResponseParser;
-import org.apache.olingo.odata2.core.batch.BatchResponseWriter;
-import org.apache.olingo.odata2.core.commons.ContentType;
-import org.apache.olingo.odata2.core.edm.provider.EdmImplProv;
-import org.apache.olingo.odata2.core.edm.provider.EdmxProvider;
-import org.apache.olingo.odata2.core.exception.ODataRuntimeException;
-
-/**
- *
- */
-public class ProviderFacadeImpl implements EntityProviderInterface {
-
- private static BasicEntityProvider create() throws EntityProviderException {
- return new BasicEntityProvider();
- }
-
- private static ContentTypeBasedEntityProvider create(final String contentType) throws EntityProviderException {
- return create(ContentType.createAsCustom(contentType));
- }
-
- private static ContentTypeBasedEntityProvider create(final ContentType contentType) throws EntityProviderException {
- try {
- switch (contentType.getODataFormat()) {
- case ATOM:
- case XML:
- return new AtomEntityProvider(contentType.getODataFormat());
- case JSON:
- return new JsonEntityProvider();
- default:
- throw new ODataNotAcceptableException(ODataNotAcceptableException.NOT_SUPPORTED_CONTENT_TYPE
- .addContent(contentType));
- }
- } catch (final ODataNotAcceptableException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
- }
- }
-
- @Override
- public ODataResponse writeErrorDocument(final ODataErrorContext context) {
- try {
- return create(context.getContentType()).writeErrorDocument(context.getHttpStatus(), context.getErrorCode(),
- context.getMessage(), context.getLocale(), context.getInnerError());
- } catch (EntityProviderException e) {
- throw new ODataRuntimeException(e);
- }
- }
-
- @Override
- public ODataResponse writeServiceDocument(final String contentType, final Edm edm, final String serviceRoot)
- throws EntityProviderException {
- return create(contentType).writeServiceDocument(edm, serviceRoot);
- }
-
- @Override
- public ODataResponse writePropertyValue(final EdmProperty edmProperty, final Object value)
- throws EntityProviderException {
- return create().writePropertyValue(edmProperty, value);
- }
-
- @Override
- public ODataResponse writeText(final String value) throws EntityProviderException {
- return create().writeText(value);
- }
-
- @Override
- public ODataResponse writeBinary(final String mimeType, final byte[] data) throws EntityProviderException {
- return create().writeBinary(mimeType, data);
- }
-
- @Override
- public ODataResponse writeFeed(final String contentType, final EdmEntitySet entitySet,
- final List<Map<String, Object>> data, final EntityProviderWriteProperties properties)
- throws EntityProviderException {
- return create(contentType).writeFeed(entitySet, data, properties);
- }
-
- @Override
- public ODataResponse writeEntry(final String contentType, final EdmEntitySet entitySet,
- final Map<String, Object> data, final EntityProviderWriteProperties properties) throws EntityProviderException {
- return create(contentType).writeEntry(entitySet, data, properties);
- }
-
- @Override
- public ODataResponse writeProperty(final String contentType, final EdmProperty edmProperty, final Object value)
- throws EntityProviderException {
- return create(contentType).writeProperty(edmProperty, value);
- }
-
- @Override
- public ODataResponse writeLink(final String contentType, final EdmEntitySet entitySet,
- final Map<String, Object> data, final EntityProviderWriteProperties properties) throws EntityProviderException {
- return create(contentType).writeLink(entitySet, data, properties);
- }
-
- @Override
- public ODataResponse writeLinks(final String contentType, final EdmEntitySet entitySet,
- final List<Map<String, Object>> data, final EntityProviderWriteProperties properties)
- throws EntityProviderException {
- return create(contentType).writeLinks(entitySet, data, properties);
- }
-
- @Override
- public ODataResponse writeFunctionImport(final String contentType, final EdmFunctionImport functionImport,
- final Object data, final EntityProviderWriteProperties properties) throws EntityProviderException {
- return create(contentType).writeFunctionImport(functionImport, data, properties);
- }
-
- @Override
- public ODataFeed readFeed(final String contentType, final EdmEntitySet entitySet, final InputStream content,
- final EntityProviderReadProperties properties) throws EntityProviderException {
- return create(contentType).readFeed(entitySet, content, properties);
- }
-
- @Override
- public ODataEntry readEntry(final String contentType, final EdmEntitySet entitySet, final InputStream content,
- final EntityProviderReadProperties properties) throws EntityProviderException {
- return create(contentType).readEntry(entitySet, content, properties);
- }
-
- @Override
- public Map<String, Object> readProperty(final String contentType, final EdmProperty edmProperty,
- final InputStream content, final EntityProviderReadProperties properties) throws EntityProviderException {
- return create(contentType).readProperty(edmProperty, content, properties);
- }
-
- @Override
- public Object readPropertyValue(final EdmProperty edmProperty, final InputStream content, final Class<?> typeMapping)
- throws EntityProviderException {
- return create().readPropertyValue(edmProperty, content, typeMapping);
- }
-
- @Override
- public List<String> readLinks(final String contentType, final EdmEntitySet entitySet, final InputStream content)
- throws EntityProviderException {
- return create(contentType).readLinks(entitySet, content);
- }
-
- @Override
- public String readLink(final String contentType, final EdmEntitySet entitySet, final InputStream content)
- throws EntityProviderException {
- return create(contentType).readLink(entitySet, content);
- }
-
- @Override
- public byte[] readBinary(final InputStream content) throws EntityProviderException {
- return create().readBinary(content);
- }
-
- @Override
- public ODataResponse writeMetadata(final List<Schema> schemas, final Map<String, String> predefinedNamespaces)
- throws EntityProviderException {
- return create().writeMetadata(schemas, predefinedNamespaces);
- }
-
- @Override
- public Edm readMetadata(final InputStream inputStream, final boolean validate) throws EntityProviderException {
- EdmProvider provider = new EdmxProvider().parse(inputStream, validate);
- return new EdmImplProv(provider);
- }
-
- @Override
- public ServiceDocument readServiceDocument(final InputStream serviceDocument, final String contentType)
- throws EntityProviderException {
- return create(contentType).readServiceDocument(serviceDocument);
- }
-
- @Override
- public List<BatchRequestPart> parseBatchRequest(final String contentType, final InputStream content,
- final EntityProviderBatchProperties properties) throws BatchException {
- List<BatchRequestPart> batchParts = new BatchRequestParser(contentType, properties).parse(content);
- return batchParts;
- }
-
- @Override
- public ODataResponse writeBatchResponse(final List<BatchResponsePart> batchResponseParts) throws BatchException {
- BatchResponseWriter batchWriter = new BatchResponseWriter();
- return batchWriter.writeResponse(batchResponseParts);
- }
-
- @Override
- public InputStream writeBatchRequest(final List<BatchPart> batchParts, final String boundary) {
- BatchRequestWriter batchWriter = new BatchRequestWriter();
- return batchWriter.writeBatchRequest(batchParts, boundary);
- }
-
- @Override
- public List<BatchSingleResponse> parseBatchResponse(final String contentType, final InputStream content)
- throws BatchException {
- List<BatchSingleResponse> responses = new BatchResponseParser(contentType).parse(content);
- return responses;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/57599da6/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/aggregator/EntityComplexPropertyInfo.java
----------------------------------------------------------------------
diff --git a/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/aggregator/EntityComplexPropertyInfo.java b/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/aggregator/EntityComplexPropertyInfo.java
deleted file mode 100644
index 01d78da..0000000
--- a/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/aggregator/EntityComplexPropertyInfo.java
+++ /dev/null
@@ -1,92 +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.odata2.core.ep.aggregator;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.olingo.odata2.api.edm.EdmCustomizableFeedMappings;
-import org.apache.olingo.odata2.api.edm.EdmException;
-import org.apache.olingo.odata2.api.edm.EdmFacets;
-import org.apache.olingo.odata2.api.edm.EdmProperty;
-import org.apache.olingo.odata2.api.edm.EdmType;
-
-/**
- *
- */
-public class EntityComplexPropertyInfo extends EntityPropertyInfo {
-
- protected List<EntityPropertyInfo> entityPropertyInfo;
-
- EntityComplexPropertyInfo(final String name, final EdmType type, final EdmFacets facets,
- final EdmCustomizableFeedMappings customizableFeedMapping, final List<EntityPropertyInfo> childEntityInfos) {
- super(name, type, facets, customizableFeedMapping, null, null);
- entityPropertyInfo = childEntityInfos;
- }
-
- static EntityComplexPropertyInfo create(final EdmProperty property, final List<String> propertyNames,
- final Map<String, EntityPropertyInfo> childEntityInfos) throws EdmException {
- List<EntityPropertyInfo> childEntityInfoList = new ArrayList<EntityPropertyInfo>(childEntityInfos.size());
- for (String name : propertyNames) {
- childEntityInfoList.add(childEntityInfos.get(name));
- }
-
- EntityComplexPropertyInfo info = new EntityComplexPropertyInfo(
- property.getName(),
- property.getType(),
- property.getFacets(),
- property.getCustomizableFeedMappings(),
- childEntityInfoList);
- return info;
- }
-
- @Override
- public boolean isComplex() {
- return true;
- }
-
- public List<EntityPropertyInfo> getPropertyInfos() {
- return Collections.unmodifiableList(entityPropertyInfo);
- }
-
- public EntityPropertyInfo getPropertyInfo(final String name) {
- for (EntityPropertyInfo info : entityPropertyInfo) {
- if (info.getName().equals(name)) {
- return info;
- }
- }
- return null;
- }
-
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- for (EntityPropertyInfo info : entityPropertyInfo) {
- if (sb.length() == 0) {
- sb.append(super.toString()).append("=>[").append(info.toString());
- } else {
- sb.append(", ").append(info.toString());
- }
- }
- sb.append("]");
- return sb.toString();
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/57599da6/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/aggregator/EntityInfoAggregator.java
----------------------------------------------------------------------
diff --git a/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/aggregator/EntityInfoAggregator.java b/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/aggregator/EntityInfoAggregator.java
deleted file mode 100644
index 9345c7e..0000000
--- a/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/aggregator/EntityInfoAggregator.java
+++ /dev/null
@@ -1,461 +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.odata2.core.ep.aggregator;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.olingo.odata2.api.edm.EdmComplexType;
-import org.apache.olingo.odata2.api.edm.EdmConcurrencyMode;
-import org.apache.olingo.odata2.api.edm.EdmCustomizableFeedMappings;
-import org.apache.olingo.odata2.api.edm.EdmEntitySet;
-import org.apache.olingo.odata2.api.edm.EdmEntityType;
-import org.apache.olingo.odata2.api.edm.EdmException;
-import org.apache.olingo.odata2.api.edm.EdmFunctionImport;
-import org.apache.olingo.odata2.api.edm.EdmNavigationProperty;
-import org.apache.olingo.odata2.api.edm.EdmProperty;
-import org.apache.olingo.odata2.api.edm.EdmSimpleType;
-import org.apache.olingo.odata2.api.edm.EdmStructuralType;
-import org.apache.olingo.odata2.api.edm.EdmTargetPath;
-import org.apache.olingo.odata2.api.edm.EdmType;
-import org.apache.olingo.odata2.api.edm.EdmTypeKind;
-import org.apache.olingo.odata2.api.ep.EntityProviderException;
-import org.apache.olingo.odata2.api.uri.ExpandSelectTreeNode;
-
-/**
- * Aggregator to get easy and fast access to all for serialization and de-serialization necessary {@link EdmEntitySet}
- * informations.
- *
- *
- */
-public class EntityInfoAggregator {
-
- private static final Set<String> SYN_TARGET_PATHS = new HashSet<String>(Arrays.asList(
- EdmTargetPath.SYNDICATION_AUTHORNAME,
- EdmTargetPath.SYNDICATION_AUTHOREMAIL,
- EdmTargetPath.SYNDICATION_AUTHORURI,
- EdmTargetPath.SYNDICATION_PUBLISHED,
- EdmTargetPath.SYNDICATION_RIGHTS,
- EdmTargetPath.SYNDICATION_TITLE,
- EdmTargetPath.SYNDICATION_UPDATED,
- EdmTargetPath.SYNDICATION_CONTRIBUTORNAME,
- EdmTargetPath.SYNDICATION_CONTRIBUTOREMAIL,
- EdmTargetPath.SYNDICATION_CONTRIBUTORURI,
- EdmTargetPath.SYNDICATION_SOURCE,
- EdmTargetPath.SYNDICATION_SUMMARY));
-
- private Map<String, EntityPropertyInfo> propertyInfo = new HashMap<String, EntityPropertyInfo>();
- private Map<String, NavigationPropertyInfo> navigationPropertyInfos = new HashMap<String, NavigationPropertyInfo>();
- private List<EntityPropertyInfo> keyPropertyInfos;
-
- /*
- * list with all property names in the order based on order in {@link EdmProperty} (normally [key, entity,
- * navigation])
- */
- private List<String> etagPropertyNames = new ArrayList<String>();
- private List<String> propertyNames;
- private List<String> navigationPropertyNames;
- private List<String> selectedPropertyNames;
- private List<String> selectedNavigationPropertyNames;
- private List<String> expandedNavigationPropertyNames;
-
- private Map<String, EntityPropertyInfo> targetPath2EntityPropertyInfo = new HashMap<String, EntityPropertyInfo>();
- private List<String> noneSyndicationTargetPaths = new ArrayList<String>();
-
- private boolean isDefaultEntityContainer;
- private String entitySetName;
- private String entityContainerName;
-
- private EdmEntityType entityType;
- private EdmEntitySet entitySet;
-
- /**
- * Constructor is private to force creation over {@link #create(EdmEntitySet)} method.
- */
- private EntityInfoAggregator() {}
-
- /**
- * Create an {@link EntityInfoAggregator} based on given {@link EdmEntitySet}
- *
- * @param entitySet
- * with which the {@link EntityInfoAggregator} is initialized.
- * @param expandSelectTree
- * @return created and initialized {@link EntityInfoAggregator}
- * @throws EntityProviderException
- * if during initialization of {@link EntityInfoAggregator} something goes wrong (e.g. exceptions during
- * access
- * of {@link EdmEntitySet}).
- */
- public static EntityInfoAggregator create(final EdmEntitySet entitySet, final ExpandSelectTreeNode expandSelectTree)
- throws EntityProviderException {
- EntityInfoAggregator eia = new EntityInfoAggregator();
- eia.initialize(entitySet, expandSelectTree);
- return eia;
- }
-
- /**
- * Create an {@link EntityInfoAggregator} based on given {@link EdmEntitySet}
- *
- * @param entitySet
- * with which the {@link EntityInfoAggregator} is initialized.
- * @return created and initialized {@link EntityInfoAggregator}
- * @throws EntityProviderException
- * if during initialization of {@link EntityInfoAggregator} something goes wrong (e.g. exceptions during
- * access
- * of {@link EdmEntitySet}).
- */
- public static EntityInfoAggregator create(final EdmEntitySet entitySet) throws EntityProviderException {
- EntityInfoAggregator eia = new EntityInfoAggregator();
- eia.initialize(entitySet, null);
- return eia;
- }
-
- /**
- * Create an {@link EntityPropertyInfo} based on given {@link EdmProperty}
- *
- * @param property
- * for which the {@link EntityPropertyInfo} is created.
- * @return created {@link EntityPropertyInfo}
- * @throws EntityProviderException
- * if create of {@link EntityPropertyInfo} something goes wrong (e.g. exceptions during
- * access of {@link EdmProperty}).
- */
- public static EntityPropertyInfo create(final EdmProperty property) throws EntityProviderException {
- try {
- EntityInfoAggregator eia = new EntityInfoAggregator();
- return eia.createEntityPropertyInfo(property);
- } catch (EdmException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
- }
- }
-
- /**
- * Create an map of <code>complex type property name</code> to {@link EntityPropertyInfo} based on given
- * {@link EdmComplexType}
- *
- * @param complexType
- * for which the {@link EntityPropertyInfo} is created.
- * @return created map of <code>complex type property name</code> to {@link EntityPropertyInfo}
- * @throws EntityProviderException
- * if create of {@link EntityPropertyInfo} something goes wrong (e.g. exceptions during
- * access of {@link EntityPropertyInfo}).
- */
- public static Map<String, EntityPropertyInfo> create(final EdmComplexType complexType)
- throws EntityProviderException {
- try {
- EntityInfoAggregator entityInfo = new EntityInfoAggregator();
- return entityInfo.createPropertyInfoObjects(complexType, complexType.getPropertyNames());
- } catch (EdmException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
- }
- }
-
- /**
- * Create an {@link EntityPropertyInfo} based on given {@link EdmFunctionImport}
- *
- * @param functionImport
- * for which the {@link EntityPropertyInfo} is created.
- * @return created {@link EntityPropertyInfo}
- * @throws EntityProviderException
- * if create of {@link EntityPropertyInfo} something goes wrong (e.g. exceptions during
- * access of {@link EdmFunctionImport}).
- */
- public static EntityPropertyInfo create(final EdmFunctionImport functionImport) throws EntityProviderException {
- try {
- EntityInfoAggregator eia = new EntityInfoAggregator();
- return eia.createEntityPropertyInfo(functionImport, functionImport.getReturnType().getType());
- } catch (EdmException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
- }
- }
-
- /**
- * @return the edm entity set which was used to build this entity info aggregator object
- */
- public EdmEntitySet getEntitySet() {
- return entitySet;
- }
-
- /**
- * @return entity set name.
- */
- public String getEntitySetName() {
- return entitySetName;
- }
-
- /**
- * @return <code>true</code> if the entity container of {@link EdmEntitySet} is the default container,
- * otherwise <code>false</code>.
- */
- public boolean isDefaultEntityContainer() {
- return isDefaultEntityContainer;
- }
-
- public EntityPropertyInfo getTargetPathInfo(final String targetPath) {
- return targetPath2EntityPropertyInfo.get(targetPath);
- }
-
- public EdmEntityType getEntityType() {
- return entityType;
- }
-
- public String getEntityContainerName() {
- return entityContainerName;
- }
-
- /**
- * @return unmodifiable set of all found target path names.
- */
- public Collection<String> getTargetPathNames() {
- return Collections.unmodifiableCollection(targetPath2EntityPropertyInfo.keySet());
- }
-
- /**
- * @return unmodifiable set of found <code>none syndication target path names</code> (all target path names which are
- * not pre-defined).
- */
- public List<String> getNoneSyndicationTargetPathNames() {
- return Collections.unmodifiableList(noneSyndicationTargetPaths);
- }
-
- /**
- * @return unmodifiable set of all found navigation property names.
- */
- public List<String> getNavigationPropertyNames() throws EntityProviderException {
- return Collections.unmodifiableList(navigationPropertyNames);
- }
-
- /**
- * @return unmodifiable set of all property names.
- */
- public List<String> getPropertyNames() throws EntityProviderException {
- return Collections.unmodifiableList(propertyNames);
- }
-
- /**
- * @return unmodifiable set of selected property names.
- */
- public List<String> getSelectedPropertyNames() throws EntityProviderException {
- return Collections.unmodifiableList(selectedPropertyNames);
- }
-
- /**
- * @return unmodifiable set of selected property names.
- */
- public List<String> getSelectedNavigationPropertyNames() throws EntityProviderException {
- return Collections.unmodifiableList(selectedNavigationPropertyNames);
- }
-
- public Collection<EntityPropertyInfo> getPropertyInfos() {
- return Collections.unmodifiableCollection(propertyInfo.values());
- }
-
- public EntityPropertyInfo getPropertyInfo(final String name) {
- return propertyInfo.get(name);
- }
-
- public Collection<EntityPropertyInfo> getETagPropertyInfos() {
- List<EntityPropertyInfo> keyProperties = new ArrayList<EntityPropertyInfo>();
- for (String etagPropertyName : etagPropertyNames) {
- EntityPropertyInfo e = propertyInfo.get(etagPropertyName);
- keyProperties.add(e);
- }
- return keyProperties;
- }
-
- /**
- * @return list of all key property infos
- * @throws EntityProviderException
- */
- public List<EntityPropertyInfo> getKeyPropertyInfos() throws EntityProviderException {
-
- if (keyPropertyInfos == null) {
- try {
- keyPropertyInfos = new ArrayList<EntityPropertyInfo>();
- for (String keyPropertyName : entityType.getKeyPropertyNames()) {
- keyPropertyInfos.add(propertyInfo.get(keyPropertyName));
- }
- } catch (EdmException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
- }
- }
- return keyPropertyInfos;
- }
-
- public NavigationPropertyInfo getNavigationPropertyInfo(final String name) {
- return navigationPropertyInfos.get(name);
- }
-
- private void initialize(final EdmEntitySet entitySet, final ExpandSelectTreeNode expandSelectTree)
- throws EntityProviderException {
- try {
- this.entitySet = entitySet;
- entityType = entitySet.getEntityType();
- entitySetName = entitySet.getName();
- isDefaultEntityContainer = entitySet.getEntityContainer().isDefaultEntityContainer();
- entityContainerName = entitySet.getEntityContainer().getName();
-
- propertyNames = entityType.getPropertyNames();
- navigationPropertyNames = entityType.getNavigationPropertyNames();
-
- propertyInfo = createPropertyInfoObjects(entityType, propertyNames);
- navigationPropertyInfos = createNavigationInfoObjects(entityType, navigationPropertyNames);
-
- selectedPropertyNames = propertyNames;
- selectedNavigationPropertyNames = navigationPropertyNames;
- expandedNavigationPropertyNames = new ArrayList<String>();
-
- if (expandSelectTree != null && !expandSelectTree.isAll()) {
- selectedPropertyNames = new ArrayList<String>();
- selectedNavigationPropertyNames = new ArrayList<String>();
- for (EdmProperty property : expandSelectTree.getProperties()) {
- selectedPropertyNames.add(property.getName());
- }
- for (String property : expandSelectTree.getLinks().keySet()) {
- selectedNavigationPropertyNames.add(property);
- if (expandSelectTree.getLinks().get(property) != null) {
- expandedNavigationPropertyNames.add(property);
- }
- }
- } else if (expandSelectTree != null) {
- for (String property : expandSelectTree.getLinks().keySet()) {
- if (expandSelectTree.getLinks().get(property) != null) {
- expandedNavigationPropertyNames.add(property);
- }
- }
- }
-
- } catch (EdmException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
- }
- }
-
- private Map<String, EntityPropertyInfo> createPropertyInfoObjects(final EdmStructuralType type,
- final List<String> propertyNames) throws EntityProviderException {
- try {
- Map<String, EntityPropertyInfo> infos = new HashMap<String, EntityPropertyInfo>();
-
- for (String propertyName : propertyNames) {
- EdmProperty property = (EdmProperty) type.getProperty(propertyName);
-
- checkETagRelevant(property);
-
- EntityPropertyInfo info = createEntityPropertyInfo(property);
- infos.put(info.getName(), info);
- checkTargetPathInfo(property, info);
- }
-
- return infos;
- } catch (EdmException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
- }
- }
-
- private Map<String, NavigationPropertyInfo> createNavigationInfoObjects(final EdmStructuralType type,
- final List<String> propertyNames) throws EntityProviderException {
- try {
- Map<String, NavigationPropertyInfo> infos = new HashMap<String, NavigationPropertyInfo>();
-
- for (String propertyName : propertyNames) {
- EdmNavigationProperty navProperty = (EdmNavigationProperty) type.getProperty(propertyName);
- NavigationPropertyInfo info = NavigationPropertyInfo.create(navProperty);
- infos.put(propertyName, info);
- }
-
- return infos;
- } catch (EdmException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
- }
- }
-
- private EntityPropertyInfo createEntityPropertyInfo(final EdmProperty property) throws EdmException,
- EntityProviderException {
- EdmType type = property.getType();
- if (type instanceof EdmSimpleType) {
- return EntityPropertyInfo.create(property);
- } else if (type instanceof EdmComplexType) {
- EdmComplexType complex = (EdmComplexType) type;
- Map<String, EntityPropertyInfo> recursiveInfos = createPropertyInfoObjects(complex, complex.getPropertyNames());
- return EntityComplexPropertyInfo.create(property, complex.getPropertyNames(), recursiveInfos);
- } else {
- throw new EntityProviderException(EntityProviderException.UNSUPPORTED_PROPERTY_TYPE);
- }
- }
-
- private EntityPropertyInfo createEntityPropertyInfo(final EdmFunctionImport functionImport, final EdmType type)
- throws EdmException, EntityProviderException {
- EntityPropertyInfo epi;
-
- if (type.getKind() == EdmTypeKind.COMPLEX) {
- EdmComplexType complex = (EdmComplexType) type;
- Map<String, EntityPropertyInfo> eia = EntityInfoAggregator.create(complex);
-
- List<EntityPropertyInfo> childEntityInfoList = new ArrayList<EntityPropertyInfo>();
- for (String propertyName : complex.getPropertyNames()) {
- childEntityInfoList.add(eia.get(propertyName));
- }
- epi = new EntityComplexPropertyInfo(functionImport.getName(), type, null, null, childEntityInfoList);
-
- } else if (type.getKind() == EdmTypeKind.SIMPLE) {
-
- epi = new EntityPropertyInfo(functionImport.getName(), type, null, null, null, null);
- } else {
- throw new EntityProviderException(EntityProviderException.UNSUPPORTED_PROPERTY_TYPE.addContent(type.getKind()));
- }
-
- return epi;
- }
-
- private void checkETagRelevant(final EdmProperty edmProperty) throws EntityProviderException {
- try {
- if (edmProperty.getFacets() != null && edmProperty.getFacets().getConcurrencyMode() == EdmConcurrencyMode.Fixed) {
- etagPropertyNames.add(edmProperty.getName());
- }
- } catch (EdmException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
- }
- }
-
- private void checkTargetPathInfo(final EdmProperty property, final EntityPropertyInfo propertyInfo)
- throws EntityProviderException {
- try {
- EdmCustomizableFeedMappings customizableFeedMappings = property.getCustomizableFeedMappings();
- if (customizableFeedMappings != null) {
- String targetPath = customizableFeedMappings.getFcTargetPath();
- targetPath2EntityPropertyInfo.put(targetPath, propertyInfo);
- if (!SYN_TARGET_PATHS.contains(targetPath)) {
- noneSyndicationTargetPaths.add(targetPath);
- }
- }
- } catch (EdmException e) {
- throw new EntityProviderException(EntityProviderException.COMMON, e);
- }
- }
-
- public List<String> getExpandedNavigationPropertyNames() {
- return expandedNavigationPropertyNames;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/57599da6/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/aggregator/EntityPropertyInfo.java
----------------------------------------------------------------------
diff --git a/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/aggregator/EntityPropertyInfo.java b/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/aggregator/EntityPropertyInfo.java
deleted file mode 100644
index 931034e..0000000
--- a/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/aggregator/EntityPropertyInfo.java
+++ /dev/null
@@ -1,96 +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.odata2.core.ep.aggregator;
-
-import org.apache.olingo.odata2.api.edm.EdmCustomizableFeedMappings;
-import org.apache.olingo.odata2.api.edm.EdmException;
-import org.apache.olingo.odata2.api.edm.EdmFacets;
-import org.apache.olingo.odata2.api.edm.EdmMapping;
-import org.apache.olingo.odata2.api.edm.EdmProperty;
-import org.apache.olingo.odata2.api.edm.EdmType;
-
-/**
- * Collects informations about a property of an entity.
- *
- */
-public class EntityPropertyInfo {
- private final String name;
- private final EdmType type;
- private final EdmFacets facets;
- private final EdmCustomizableFeedMappings customMapping;
- private final String mimeType;
- private final EdmMapping mapping;
-
- EntityPropertyInfo(final String name, final EdmType type, final EdmFacets facets,
- final EdmCustomizableFeedMappings customizableFeedMapping, final String mimeType, final EdmMapping mapping) {
- this.name = name;
- this.type = type;
- this.facets = facets;
- customMapping = customizableFeedMapping;
- this.mimeType = mimeType;
- this.mapping = mapping;
- }
-
- static EntityPropertyInfo create(final EdmProperty property) throws EdmException {
- return new EntityPropertyInfo(
- property.getName(),
- property.getType(),
- property.getFacets(),
- property.getCustomizableFeedMappings(),
- property.getMimeType(),
- property.getMapping());
- }
-
- public boolean isMandatory() {
- return !(facets == null || facets.isNullable() == null || facets.isNullable());
- }
-
- public boolean isComplex() {
- return false;
- }
-
- public String getName() {
- return name;
- }
-
- public EdmType getType() {
- return type;
- }
-
- public EdmFacets getFacets() {
- return facets;
- }
-
- public EdmCustomizableFeedMappings getCustomMapping() {
- return customMapping;
- }
-
- public String getMimeType() {
- return mimeType;
- }
-
- public EdmMapping getMapping() {
- return mapping;
- }
-
- @Override
- public String toString() {
- return name;
- }
-}