Repository: olingo-odata4 Updated Branches: refs/heads/OLINGO-423_EdmxReferenceHandling [created] 188574f5c
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/188574f5/lib/server-core/src/main/java/org/apache/olingo/server/core/edmx/EdmxReferenceImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edmx/EdmxReferenceImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edmx/EdmxReferenceImpl.java new file mode 100644 index 0000000..31f64d2 --- /dev/null +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/edmx/EdmxReferenceImpl.java @@ -0,0 +1,65 @@ +/* + * 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.core.edmx; + + +import org.apache.olingo.server.api.edmx.EdmxReference; +import org.apache.olingo.server.api.edmx.EdmxReferenceInclude; +import org.apache.olingo.server.api.edmx.EdmxReferenceIncludeAnnotation; + +import java.net.URI; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + + +public class EdmxReferenceImpl implements EdmxReference { + private final URI uri; + private final List<EdmxReferenceInclude> edmxIncludes; + private final List<EdmxReferenceIncludeAnnotation> edmxIncludeAnnotations; + + public EdmxReferenceImpl(URI uri) { + this.uri = uri; + edmxIncludes = new ArrayList<EdmxReferenceInclude>(); + edmxIncludeAnnotations = new ArrayList<EdmxReferenceIncludeAnnotation>(); + } + + @Override + public URI getUri() { + return uri; + } + + @Override + public List<EdmxReferenceInclude> getIncludes() { + return Collections.unmodifiableList(edmxIncludes); + } + + public void addInclude(EdmxReferenceInclude include) { + edmxIncludes.add(include); + } + + @Override + public List<EdmxReferenceIncludeAnnotation> getIncludeAnnotations() { + return Collections.unmodifiableList(edmxIncludeAnnotations); + } + + public void addIncludeAnnotation(EdmxReferenceIncludeAnnotation includeAnnotation) { + edmxIncludeAnnotations.add(includeAnnotation); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/188574f5/lib/server-core/src/main/java/org/apache/olingo/server/core/edmx/EdmxReferenceIncludeAnnotationImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edmx/EdmxReferenceIncludeAnnotationImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edmx/EdmxReferenceIncludeAnnotationImpl.java new file mode 100644 index 0000000..1a4d7b4 --- /dev/null +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/edmx/EdmxReferenceIncludeAnnotationImpl.java @@ -0,0 +1,51 @@ +/* + * 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.core.edmx; + +import org.apache.olingo.server.api.edmx.EdmxReferenceIncludeAnnotation; + +/** + */ +public class EdmxReferenceIncludeAnnotationImpl implements EdmxReferenceIncludeAnnotation { + + private final String termNamespace; + private final String qualifier; + private final String targetNamespace; + + public EdmxReferenceIncludeAnnotationImpl(String termNamespace, String qualifier, String targetNamespace) { + this.termNamespace = termNamespace; + this.qualifier = qualifier; + this.targetNamespace = targetNamespace; + } + + @Override + public String getTermNamespace() { + return termNamespace; + } + + @Override + public String getQualifier() { + return qualifier; + } + + @Override + public String getTargetNamespace() { + return targetNamespace; + } +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/188574f5/lib/server-core/src/main/java/org/apache/olingo/server/core/edmx/EdmxReferenceIncludeImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edmx/EdmxReferenceIncludeImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edmx/EdmxReferenceIncludeImpl.java new file mode 100644 index 0000000..0da95df --- /dev/null +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/edmx/EdmxReferenceIncludeImpl.java @@ -0,0 +1,43 @@ +/* + * 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.core.edmx; + +import org.apache.olingo.server.api.edmx.EdmxReferenceInclude; + +/** + */ +public class EdmxReferenceIncludeImpl implements EdmxReferenceInclude { + private final String namespace; + private final String alias; + + public EdmxReferenceIncludeImpl(String namespace, String alias) { + this.namespace = namespace; + this.alias = alias; + } + + @Override + public String getNamespace() { + return namespace; + } + + @Override + public String getAlias() { + return alias; + } +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/188574f5/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/ODataXmlSerializerImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/ODataXmlSerializerImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/ODataXmlSerializerImpl.java index 0b13381..8956a6d 100644 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/ODataXmlSerializerImpl.java +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/ODataXmlSerializerImpl.java @@ -31,6 +31,7 @@ import org.apache.olingo.commons.api.edm.Edm; import org.apache.olingo.commons.api.edm.EdmEntitySet; import org.apache.olingo.commons.api.edm.EdmProperty; import org.apache.olingo.server.api.ODataServerError; +import org.apache.olingo.server.api.ServiceMetadata; import org.apache.olingo.server.api.serializer.ODataSerializer; import org.apache.olingo.server.api.serializer.SerializerException; import org.apache.olingo.server.api.serializer.ODataSerializerOptions; @@ -53,7 +54,7 @@ public class ODataXmlSerializerImpl implements ODataSerializer { } @Override - public InputStream metadataDocument(final Edm edm) throws SerializerException { + public InputStream metadataDocument(final ServiceMetadata serviceMetadata) throws SerializerException { CircleStreamBuffer buffer; XMLStreamWriter xmlStreamWriter = null; @@ -61,7 +62,7 @@ public class ODataXmlSerializerImpl implements ODataSerializer { try { buffer = new CircleStreamBuffer(); xmlStreamWriter = XMLOutputFactory.newInstance().createXMLStreamWriter(buffer.getOutputStream(), DEFAULT_CHARSET); - MetadataDocumentXmlSerializer serializer = new MetadataDocumentXmlSerializer(edm); + MetadataDocumentXmlSerializer serializer = new MetadataDocumentXmlSerializer(serviceMetadata); serializer.writeMetadataDocument(xmlStreamWriter); xmlStreamWriter.flush(); xmlStreamWriter.close(); http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/188574f5/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializer.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializer.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializer.java index 0066f73..324c5aa 100644 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializer.java +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializer.java @@ -42,6 +42,7 @@ import org.apache.olingo.commons.api.edm.EdmProperty; import org.apache.olingo.commons.api.format.ODataFormat; import org.apache.olingo.commons.core.edm.primitivetype.EdmPrimitiveTypeFactory; import org.apache.olingo.server.api.ODataServerError; +import org.apache.olingo.server.api.ServiceMetadata; import org.apache.olingo.server.api.serializer.ODataSerializer; import org.apache.olingo.server.api.serializer.SerializerException; import org.apache.olingo.server.api.serializer.ODataSerializerOptions; @@ -107,7 +108,7 @@ public class ODataJsonSerializer implements ODataSerializer { } @Override - public InputStream metadataDocument(final Edm edm) throws SerializerException { + public InputStream metadataDocument(final ServiceMetadata serviceMetadata) throws SerializerException { throw new SerializerException("Metadata in JSON format not supported!", SerializerException.MessageKeys.JSON_METADATA); } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/188574f5/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentXmlSerializer.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentXmlSerializer.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentXmlSerializer.java index d07360c..ec3dd5f 100644 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentXmlSerializer.java +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentXmlSerializer.java @@ -18,31 +18,9 @@ */ package org.apache.olingo.server.core.serializer.xml; -import org.apache.olingo.commons.api.edm.Edm; -import org.apache.olingo.commons.api.edm.EdmAction; -import org.apache.olingo.commons.api.edm.EdmActionImport; -import org.apache.olingo.commons.api.edm.EdmBindingTarget; -import org.apache.olingo.commons.api.edm.EdmComplexType; -import org.apache.olingo.commons.api.edm.EdmEntityContainer; -import org.apache.olingo.commons.api.edm.EdmEntitySet; -import org.apache.olingo.commons.api.edm.EdmEntityType; -import org.apache.olingo.commons.api.edm.EdmEnumType; -import org.apache.olingo.commons.api.edm.EdmFunction; -import org.apache.olingo.commons.api.edm.EdmFunctionImport; -import org.apache.olingo.commons.api.edm.EdmKeyPropertyRef; -import org.apache.olingo.commons.api.edm.EdmNavigationProperty; -import org.apache.olingo.commons.api.edm.EdmNavigationPropertyBinding; -import org.apache.olingo.commons.api.edm.EdmOperation; -import org.apache.olingo.commons.api.edm.EdmParameter; -import org.apache.olingo.commons.api.edm.EdmProperty; -import org.apache.olingo.commons.api.edm.EdmReferentialConstraint; -import org.apache.olingo.commons.api.edm.EdmReturnType; -import org.apache.olingo.commons.api.edm.EdmSchema; -import org.apache.olingo.commons.api.edm.EdmSingleton; -import org.apache.olingo.commons.api.edm.EdmStructuredType; -import org.apache.olingo.commons.api.edm.EdmType; -import org.apache.olingo.commons.api.edm.EdmTypeDefinition; -import org.apache.olingo.commons.api.edm.FullQualifiedName; +import org.apache.olingo.commons.api.edm.*; +import org.apache.olingo.server.api.edmx.EdmxReference; +import org.apache.olingo.server.api.ServiceMetadata; import org.apache.olingo.server.api.serializer.ODataSerializer; import javax.xml.stream.XMLStreamException; @@ -93,7 +71,7 @@ public class MetadataDocumentXmlSerializer { private static final String XML_NAMESPACE = "Namespace"; private static final String XML_TYPE_DEFINITION = "TypeDefinition"; - private final Edm edm; + private final ServiceMetadata serviceMetadata; private final static String EDMX = "Edmx"; private final static String PREFIX_EDMX = "edmx"; @@ -101,8 +79,8 @@ public class MetadataDocumentXmlSerializer { private final static String NS_EDM = "http://docs.oasis-open.org/odata/ns/edm"; - public MetadataDocumentXmlSerializer(final Edm edm) { - this.edm = edm; + public MetadataDocumentXmlSerializer(final ServiceMetadata edm) { + this.serviceMetadata = edm; } public void writeMetadataDocument(final XMLStreamWriter writer) throws XMLStreamException { @@ -122,7 +100,7 @@ public class MetadataDocumentXmlSerializer { private void appendDataServices(final XMLStreamWriter writer) throws XMLStreamException { writer.setDefaultNamespace(NS_EDM); writer.writeStartElement(NS_EDMX, "DataServices"); - for (EdmSchema schema : edm.getSchemas()) { + for (EdmSchema schema : serviceMetadata.getEdm().getSchemas()) { appendSchema(writer, schema); } writer.writeEndElement(); @@ -531,15 +509,17 @@ public class MetadataDocumentXmlSerializer { * and mentioned in its Common Schema Definition Language (CSDL) document. */ private void appendReference(final XMLStreamWriter writer) throws XMLStreamException { - writer.writeStartElement(NS_EDMX, "Reference"); - // TODO: Which value can we use here? - // <http://docs.oasis-open.org/odata/odata/v4.0/cs02/vocabularies/Org.OData.Core.V1.xml> - // is an external site we don't want to query each time an EDM-enabled client is used. - writer.writeAttribute("Uri", - "http://localhost:9080/odata-server-tecsvc/v4.0/cs02/vocabularies/Org.OData.Core.V1.xml"); - writer.writeEmptyElement(NS_EDMX, "Include"); - writer.writeAttribute(XML_NAMESPACE, "Org.OData.Core.V1"); - writer.writeAttribute(XML_ALIAS, "Core"); - writer.writeEndElement(); + List<EdmxReference> references = serviceMetadata.getReferences(); + for (EdmxReference reference: references) { + writer.writeStartElement(NS_EDMX, "Reference"); + // TODO: Which value can we use here? + // <http://docs.oasis-open.org/odata/odata/v4.0/cs02/vocabularies/Org.OData.Core.V1.xml> + // is an external site we don't want to query each time an EDM-enabled client is used. + writer.writeAttribute("Uri", reference.getUri().toASCIIString()); + // writer.writeEmptyElement(NS_EDMX, "Include"); + // writer.writeAttribute(XML_NAMESPACE, reference.getIncludeNamespace()); + // writer.writeAttribute(XML_ALIAS, reference.getIncludeAlias()); + // writer.writeEndElement(); + } } } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/188574f5/lib/server-core/src/test/java/org/apache/olingo/server/core/ContentNegotiatorTest.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/ContentNegotiatorTest.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/ContentNegotiatorTest.java index 6230a9e..5462327 100644 --- a/lib/server-core/src/test/java/org/apache/olingo/server/core/ContentNegotiatorTest.java +++ b/lib/server-core/src/test/java/org/apache/olingo/server/core/ContentNegotiatorTest.java @@ -35,6 +35,7 @@ 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.ServiceMetadata; import org.apache.olingo.server.api.processor.CustomContentTypeSupport; import org.apache.olingo.server.api.processor.EntitySetProcessor; import org.apache.olingo.server.api.processor.MetadataProcessor; @@ -199,7 +200,7 @@ public class ContentNegotiatorTest { } @Override - public void init(final OData odata, final Edm edm) {} + public void init(final OData odata, final ServiceMetadata edm) {} @Override public List<ContentType> modifySupportedContentTypes(final List<ContentType> supportedContentTypes, http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/188574f5/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmMetadataImplTest.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmMetadataImplTest.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmMetadataImplTest.java new file mode 100644 index 0000000..7090f5b --- /dev/null +++ b/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmMetadataImplTest.java @@ -0,0 +1,182 @@ +/* + * 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.core.edm.provider; + +import org.apache.olingo.commons.api.ODataException; +import org.apache.olingo.commons.api.edm.EdmEntitySetInfo; +import org.apache.olingo.commons.api.edm.EdmException; +import org.apache.olingo.commons.api.edm.EdmFunctionImportInfo; +import org.apache.olingo.commons.api.edm.EdmMetadata; +import org.apache.olingo.commons.api.edm.EdmSingletonInfo; +import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion; +import org.apache.olingo.server.api.edm.provider.EdmProvider; +import org.apache.olingo.server.api.edm.provider.EntityContainer; +import org.apache.olingo.server.api.edm.provider.EntitySet; +import org.apache.olingo.server.api.edm.provider.FunctionImport; +import org.apache.olingo.server.api.edm.provider.Schema; +import org.apache.olingo.server.api.edm.provider.Singleton; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.List; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +public class EdmMetadataImplTest { + + @Test + public void allGettersMustDeliver() { + EdmMetadata serviceMetadata = new EdmMetadataImpl(new CustomProvider(true)); + List<EdmEntitySetInfo> entitySetInfos = serviceMetadata.getEntitySetInfos(); + assertNotNull(entitySetInfos); + assertEquals(2, entitySetInfos.size()); + + List<EdmSingletonInfo> singletonInfos = serviceMetadata.getSingletonInfos(); + assertNotNull(singletonInfos); + assertEquals(2, singletonInfos.size()); + + List<EdmFunctionImportInfo> functionImportInfos = serviceMetadata.getFunctionImportInfos(); + assertNotNull(functionImportInfos); + assertEquals(2, functionImportInfos.size()); + + // Cache test + assertTrue(entitySetInfos == serviceMetadata.getEntitySetInfos()); + assertTrue(singletonInfos == serviceMetadata.getSingletonInfos()); + assertTrue(functionImportInfos == serviceMetadata.getFunctionImportInfos()); + } + + @Test + public void initialProvider() { + EdmProvider provider = new EdmProvider() {}; + EdmMetadata serviceMetadata = new EdmMetadataImpl(provider); + assertEquals(ODataServiceVersion.V40, serviceMetadata.getDataServiceVersion()); + } + + @Test(expected = EdmException.class) + public void initialProviderEntitySetInfo() { + EdmProvider provider = new EdmProvider() {}; + EdmMetadata serviceMetadata = new EdmMetadataImpl(provider); + serviceMetadata.getEntitySetInfos(); + } + + @Test(expected = EdmException.class) + public void initialProviderSingletonInfo() { + EdmProvider provider = new EdmProvider() {}; + EdmMetadata serviceMetadata = new EdmMetadataImpl(provider); + serviceMetadata.getSingletonInfos(); + } + + @Test(expected = EdmException.class) + public void initialProviderFunctionImportInfo() { + EdmProvider provider = new EdmProvider() {}; + EdmMetadata serviceMetadata = new EdmMetadataImpl(provider); + serviceMetadata.getFunctionImportInfos(); + } + + @Test + public void emptySchemaMustNotResultInException() { + EdmMetadata serviceMetadata = new EdmMetadataImpl(new CustomProvider(false)); + assertNotNull(serviceMetadata.getEntitySetInfos()); + assertEquals(0, serviceMetadata.getEntitySetInfos().size()); + + assertNotNull(serviceMetadata.getSingletonInfos()); + assertEquals(0, serviceMetadata.getSingletonInfos().size()); + + assertNotNull(serviceMetadata.getFunctionImportInfos()); + assertEquals(0, serviceMetadata.getFunctionImportInfos().size()); + } + + @Test + public void oDataExceptionsGetCaughtAndTransformed() { + EdmProvider provider = new EdmProvider() { + @Override + public List<Schema> getSchemas() throws ODataException { + throw new ODataException("msg"); + } + }; + + EdmMetadata serviceMetadata = new EdmMetadataImpl(provider); + callGetEntitySetInfosAndExpectException(serviceMetadata); + callGetSingletonInfosAndExpectException(serviceMetadata); + callGetFunctionImportInfosAndExpectException(serviceMetadata); + } + + private void callGetFunctionImportInfosAndExpectException(final EdmMetadata svc) { + try { + svc.getFunctionImportInfos(); + } catch (EdmException e) { + assertEquals("org.apache.olingo.commons.api.ODataException: msg", e.getMessage()); + return; + } + fail("Expected EdmException was not thrown"); + + } + + private void callGetSingletonInfosAndExpectException(final EdmMetadata svc) { + try { + svc.getSingletonInfos(); + } catch (EdmException e) { + assertEquals("org.apache.olingo.commons.api.ODataException: msg", e.getMessage()); + return; + } + fail("Expected EdmException was not thrown"); + } + + private void callGetEntitySetInfosAndExpectException(final EdmMetadata svc) { + try { + svc.getEntitySetInfos(); + } catch (EdmException e) { + assertEquals("org.apache.olingo.commons.api.ODataException: msg", e.getMessage()); + return; + } + fail("Expected EdmException was not thrown"); + } + + private class CustomProvider extends EdmProvider { + private List<Schema> schemas; + + public CustomProvider(final boolean fillSchema) { + schemas = new ArrayList<Schema>(); + if (fillSchema) { + List<EntitySet> entitySets = new ArrayList<EntitySet>(); + entitySets.add(new EntitySet().setName("1")); + entitySets.add(new EntitySet().setName("2")); + List<Singleton> singletons = new ArrayList<Singleton>(); + singletons.add(new Singleton().setName("1")); + singletons.add(new Singleton().setName("2")); + List<FunctionImport> functionImports = new ArrayList<FunctionImport>(); + functionImports.add(new FunctionImport().setName("1")); + functionImports.add(new FunctionImport().setName("2")); + EntityContainer entityContainer = + new EntityContainer().setName("cont").setEntitySets(entitySets).setSingletons(singletons) + .setFunctionImports(functionImports); + Schema schema = new Schema().setEntityContainer(entityContainer); + schemas.add(schema); + } + } + + @Override + public List<Schema> getSchemas() throws ODataException { + return schemas; + } + } +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/188574f5/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmServiceMetadataImplTest.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmServiceMetadataImplTest.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmServiceMetadataImplTest.java deleted file mode 100644 index 3d08d35..0000000 --- a/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmServiceMetadataImplTest.java +++ /dev/null @@ -1,188 +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.server.core.edm.provider; - -import org.apache.olingo.commons.api.ODataException; -import org.apache.olingo.commons.api.edm.EdmEntitySetInfo; -import org.apache.olingo.commons.api.edm.EdmException; -import org.apache.olingo.commons.api.edm.EdmFunctionImportInfo; -import org.apache.olingo.commons.api.edm.EdmServiceMetadata; -import org.apache.olingo.commons.api.edm.EdmSingletonInfo; -import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion; -import org.apache.olingo.server.api.edm.provider.EdmProvider; -import org.apache.olingo.server.api.edm.provider.EntityContainer; -import org.apache.olingo.server.api.edm.provider.EntitySet; -import org.apache.olingo.server.api.edm.provider.FunctionImport; -import org.apache.olingo.server.api.edm.provider.Schema; -import org.apache.olingo.server.api.edm.provider.Singleton; -import org.junit.Test; - -import java.util.ArrayList; -import java.util.List; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - -public class EdmServiceMetadataImplTest { - - @Test - public void allGettersMustDeliver() { - EdmServiceMetadata serviceMetadata = new EdmServiceMetadataImpl(new CustomProvider(true)); - List<EdmEntitySetInfo> entitySetInfos = serviceMetadata.getEntitySetInfos(); - assertNotNull(entitySetInfos); - assertEquals(2, entitySetInfos.size()); - - List<EdmSingletonInfo> singletonInfos = serviceMetadata.getSingletonInfos(); - assertNotNull(singletonInfos); - assertEquals(2, singletonInfos.size()); - - List<EdmFunctionImportInfo> functionImportInfos = serviceMetadata.getFunctionImportInfos(); - assertNotNull(functionImportInfos); - assertEquals(2, functionImportInfos.size()); - - // Cache test - assertTrue(entitySetInfos == serviceMetadata.getEntitySetInfos()); - assertTrue(singletonInfos == serviceMetadata.getSingletonInfos()); - assertTrue(functionImportInfos == serviceMetadata.getFunctionImportInfos()); - } - - @Test(expected = RuntimeException.class) - public void getMetadataAsInputStreamIsNotImplemented() { - EdmServiceMetadata serviceMetadata = new EdmServiceMetadataImpl(new CustomProvider(true)); - serviceMetadata.getMetadata(); - } - - @Test - public void initialProvider() { - EdmProvider provider = new EdmProvider() {}; - EdmServiceMetadata serviceMetadata = new EdmServiceMetadataImpl(provider); - assertEquals(ODataServiceVersion.V40, serviceMetadata.getDataServiceVersion()); - } - - @Test(expected = EdmException.class) - public void initialProviderEntitySetInfo() { - EdmProvider provider = new EdmProvider() {}; - EdmServiceMetadata serviceMetadata = new EdmServiceMetadataImpl(provider); - serviceMetadata.getEntitySetInfos(); - } - - @Test(expected = EdmException.class) - public void initialProviderSingletonInfo() { - EdmProvider provider = new EdmProvider() {}; - EdmServiceMetadata serviceMetadata = new EdmServiceMetadataImpl(provider); - serviceMetadata.getSingletonInfos(); - } - - @Test(expected = EdmException.class) - public void initialProviderFunctionImportInfo() { - EdmProvider provider = new EdmProvider() {}; - EdmServiceMetadata serviceMetadata = new EdmServiceMetadataImpl(provider); - serviceMetadata.getFunctionImportInfos(); - } - - @Test - public void emptySchemaMustNotResultInException() { - EdmServiceMetadata serviceMetadata = new EdmServiceMetadataImpl(new CustomProvider(false)); - assertNotNull(serviceMetadata.getEntitySetInfos()); - assertEquals(0, serviceMetadata.getEntitySetInfos().size()); - - assertNotNull(serviceMetadata.getSingletonInfos()); - assertEquals(0, serviceMetadata.getSingletonInfos().size()); - - assertNotNull(serviceMetadata.getFunctionImportInfos()); - assertEquals(0, serviceMetadata.getFunctionImportInfos().size()); - } - - @Test - public void oDataExceptionsGetCaughtAndTransformed() { - EdmProvider provider = new EdmProvider() { - @Override - public List<Schema> getSchemas() throws ODataException { - throw new ODataException("msg"); - } - }; - - EdmServiceMetadata serviceMetadata = new EdmServiceMetadataImpl(provider); - callGetEntitySetInfosAndExpectException(serviceMetadata); - callGetSingletonInfosAndExpectException(serviceMetadata); - callGetFunctionImportInfosAndExpectException(serviceMetadata); - } - - private void callGetFunctionImportInfosAndExpectException(final EdmServiceMetadata svc) { - try { - svc.getFunctionImportInfos(); - } catch (EdmException e) { - assertEquals("org.apache.olingo.commons.api.ODataException: msg", e.getMessage()); - return; - } - fail("Expected EdmException was not thrown"); - - } - - private void callGetSingletonInfosAndExpectException(final EdmServiceMetadata svc) { - try { - svc.getSingletonInfos(); - } catch (EdmException e) { - assertEquals("org.apache.olingo.commons.api.ODataException: msg", e.getMessage()); - return; - } - fail("Expected EdmException was not thrown"); - } - - private void callGetEntitySetInfosAndExpectException(final EdmServiceMetadata svc) { - try { - svc.getEntitySetInfos(); - } catch (EdmException e) { - assertEquals("org.apache.olingo.commons.api.ODataException: msg", e.getMessage()); - return; - } - fail("Expected EdmException was not thrown"); - } - - private class CustomProvider extends EdmProvider { - private List<Schema> schemas; - - public CustomProvider(final boolean fillSchema) { - schemas = new ArrayList<Schema>(); - if (fillSchema) { - List<EntitySet> entitySets = new ArrayList<EntitySet>(); - entitySets.add(new EntitySet().setName("1")); - entitySets.add(new EntitySet().setName("2")); - List<Singleton> singletons = new ArrayList<Singleton>(); - singletons.add(new Singleton().setName("1")); - singletons.add(new Singleton().setName("2")); - List<FunctionImport> functionImports = new ArrayList<FunctionImport>(); - functionImports.add(new FunctionImport().setName("1")); - functionImports.add(new FunctionImport().setName("2")); - EntityContainer entityContainer = - new EntityContainer().setName("cont").setEntitySets(entitySets).setSingletons(singletons) - .setFunctionImports(functionImports); - Schema schema = new Schema().setEntityContainer(entityContainer); - schemas.add(schema); - } - } - - @Override - public List<Schema> getSchemas() throws ODataException { - return schemas; - } - } -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/188574f5/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 996385f..27defff 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 @@ -18,9 +18,10 @@ */ package org.apache.olingo.server.tecsvc; -import org.apache.olingo.commons.api.edm.Edm; import org.apache.olingo.server.api.OData; import org.apache.olingo.server.api.ODataHttpHandler; +import org.apache.olingo.server.api.ServiceMetadata; +import org.apache.olingo.server.api.edmx.EdmxReference; import org.apache.olingo.server.tecsvc.data.DataProvider; import org.apache.olingo.server.tecsvc.processor.TechnicalProcessor; import org.apache.olingo.server.tecsvc.provider.EdmTechProvider; @@ -33,6 +34,9 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; +import java.util.Collection; +import java.util.Collections; +import java.util.List; public class TechnicalServlet extends HttpServlet { @@ -44,7 +48,8 @@ public class TechnicalServlet extends HttpServlet { throws ServletException, IOException { try { OData odata = OData.newInstance(); - Edm edm = odata.createEdm(new EdmTechProvider()); + List<EdmxReference> references = Collections.emptyList(); + ServiceMetadata serviceMetadata = odata.createServiceMetadata(new EdmTechProvider(references), references); HttpSession session = req.getSession(true); DataProvider dataProvider = (DataProvider) session.getAttribute(DataProvider.class.getName()); @@ -54,7 +59,7 @@ public class TechnicalServlet extends HttpServlet { LOG.info("Created new data provider."); } - ODataHttpHandler handler = odata.createHandler(edm); + ODataHttpHandler handler = odata.createHandler(serviceMetadata); handler.register(new TechnicalProcessor(dataProvider)); handler.process(req, resp); } catch (RuntimeException e) { http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/188574f5/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalProcessor.java ---------------------------------------------------------------------- diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalProcessor.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalProcessor.java index 8609b0e..06eef4c 100644 --- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalProcessor.java +++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalProcessor.java @@ -37,10 +37,7 @@ import org.apache.olingo.commons.api.format.ODataFormat; import org.apache.olingo.commons.api.http.HttpContentType; import org.apache.olingo.commons.api.http.HttpHeader; import org.apache.olingo.commons.api.http.HttpStatusCode; -import org.apache.olingo.server.api.OData; -import org.apache.olingo.server.api.ODataApplicationException; -import org.apache.olingo.server.api.ODataRequest; -import org.apache.olingo.server.api.ODataResponse; +import org.apache.olingo.server.api.*; import org.apache.olingo.server.api.processor.EntityProcessor; import org.apache.olingo.server.api.processor.EntitySetProcessor; import org.apache.olingo.server.api.processor.PropertyProcessor; @@ -71,7 +68,7 @@ public class TechnicalProcessor implements EntitySetProcessor, EntityProcessor, } @Override - public void init(final OData odata, final Edm edm) { + public void init(final OData odata, final ServiceMetadata edm) { this.odata = odata; } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/188574f5/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/EdmTechProvider.java ---------------------------------------------------------------------- diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/EdmTechProvider.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/EdmTechProvider.java index c15727b..aadc45b 100644 --- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/EdmTechProvider.java +++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/EdmTechProvider.java @@ -19,6 +19,7 @@ package org.apache.olingo.server.tecsvc.provider; import org.apache.olingo.commons.api.ODataException; +import org.apache.olingo.server.api.edmx.EdmxReference; import org.apache.olingo.commons.api.edm.FullQualifiedName; import org.apache.olingo.server.api.edm.provider.Action; import org.apache.olingo.server.api.edm.provider.ActionImport; @@ -38,6 +39,7 @@ import org.apache.olingo.server.api.edm.provider.Term; import org.apache.olingo.server.api.edm.provider.TypeDefinition; import java.util.Arrays; +import java.util.Collections; import java.util.List; public class EdmTechProvider extends EdmProvider { @@ -52,8 +54,13 @@ public class EdmTechProvider extends EdmProvider { private final ActionProvider actionProvider; private final FunctionProvider functionProvider; private final TypeDefinitionProvider typeDefinitionProvider; + private final List<EdmxReference> references; public EdmTechProvider() { + this(Collections.<EdmxReference>emptyList()); + } + + public EdmTechProvider(List<EdmxReference> references) { containerProvider = new ContainerProvider(this); entityTypeProvider = new EntityTypeProvider(); complexTypeProvider = new ComplexTypeProvider(); @@ -62,6 +69,7 @@ public class EdmTechProvider extends EdmProvider { functionProvider = new FunctionProvider(); typeDefinitionProvider = new TypeDefinitionProvider(); schemaProvider = new SchemaProvider(this); + this.references = references; } @Override http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/188574f5/lib/server-tecsvc/src/test/java/org/apache/olingo/server/tecsvc/data/DataProviderTest.java ---------------------------------------------------------------------- diff --git a/lib/server-tecsvc/src/test/java/org/apache/olingo/server/tecsvc/data/DataProviderTest.java b/lib/server-tecsvc/src/test/java/org/apache/olingo/server/tecsvc/data/DataProviderTest.java index 943b589..b42bedb 100644 --- a/lib/server-tecsvc/src/test/java/org/apache/olingo/server/tecsvc/data/DataProviderTest.java +++ b/lib/server-tecsvc/src/test/java/org/apache/olingo/server/tecsvc/data/DataProviderTest.java @@ -19,6 +19,7 @@ package org.apache.olingo.server.tecsvc.data; import java.util.Arrays; +import java.util.Collections; import java.util.List; import org.apache.olingo.commons.api.data.Entity; @@ -30,6 +31,7 @@ import org.apache.olingo.commons.api.edm.EdmEntityContainer; import org.apache.olingo.commons.api.edm.EdmEntitySet; import org.apache.olingo.commons.api.edm.FullQualifiedName; import org.apache.olingo.server.api.OData; +import org.apache.olingo.server.api.edmx.EdmxReference; import org.apache.olingo.server.api.uri.UriParameter; import org.apache.olingo.server.tecsvc.provider.EdmTechProvider; import org.junit.Assert; @@ -38,7 +40,10 @@ import org.mockito.Mockito; public class DataProviderTest { - private final Edm edm = OData.newInstance().createEdm(new EdmTechProvider()); + private final Edm edm = + OData.newInstance().createServiceMetadata(new EdmTechProvider( + Collections.<EdmxReference>emptyList()), + Collections.<EdmxReference>emptyList()).getEdm(); private final EdmEntityContainer entityContainer = edm.getEntityContainer( new FullQualifiedName("olingo.odata.test1", "Container")); http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/188574f5/lib/server-test/src/test/java/org/apache/olingo/server/core/ODataHandlerExceptionHandlingTest.java ---------------------------------------------------------------------- diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/ODataHandlerExceptionHandlingTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/ODataHandlerExceptionHandlingTest.java index f227f29..c0c8f18 100644 --- a/lib/server-test/src/test/java/org/apache/olingo/server/core/ODataHandlerExceptionHandlingTest.java +++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/ODataHandlerExceptionHandlingTest.java @@ -24,20 +24,18 @@ import static org.mockito.Matchers.any; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.mock; +import java.util.Collections; import java.util.Locale; import org.apache.olingo.commons.api.ODataException; -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.api.http.HttpMethod; import org.apache.olingo.commons.api.http.HttpStatusCode; -import org.apache.olingo.server.api.OData; -import org.apache.olingo.server.api.ODataApplicationException; -import org.apache.olingo.server.api.ODataRequest; -import org.apache.olingo.server.api.ODataResponse; +import org.apache.olingo.server.api.*; import org.apache.olingo.server.api.edm.provider.EdmProvider; import org.apache.olingo.server.api.edm.provider.EntitySet; +import org.apache.olingo.server.api.edmx.EdmxReference; import org.apache.olingo.server.api.processor.MetadataProcessor; import org.apache.olingo.server.api.uri.UriInfo; import org.apache.olingo.server.tecsvc.provider.EdmTechProvider; @@ -50,9 +48,10 @@ public class ODataHandlerExceptionHandlingTest { @Before public void before() { OData odata = OData.newInstance(); - Edm edm = odata.createEdm(new EdmTechProvider()); + ServiceMetadata metadata = odata.createServiceMetadata( + new EdmTechProvider(), Collections.<EdmxReference>emptyList()); - handler = new ODataHandler(odata, edm); + handler = new ODataHandler(odata, metadata); } @Test @@ -173,14 +172,14 @@ public class ODataHandlerExceptionHandlingTest { request.setRawODataPath("EdmException"); OData odata = OData.newInstance(); - Edm edm = odata.createEdm(new EdmProvider() { + ServiceMetadata serviceMetadata = odata.createServiceMetadata(new EdmProvider() { public EntitySet getEntitySet(final FullQualifiedName entityContainer, final String entitySetName) throws ODataException { throw new ODataException("msg"); } - }); + }, Collections.<EdmxReference>emptyList()); - ODataHandler localHandler = new ODataHandler(odata, edm); + ODataHandler localHandler = new ODataHandler(odata, serviceMetadata); ODataResponse response = localHandler.process(request); assertNotNull(response); http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/188574f5/lib/server-test/src/test/java/org/apache/olingo/server/core/ODataHandlerTest.java ---------------------------------------------------------------------- diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/ODataHandlerTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/ODataHandlerTest.java index 1ae9ea3..b8c6553 100644 --- a/lib/server-test/src/test/java/org/apache/olingo/server/core/ODataHandlerTest.java +++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/ODataHandlerTest.java @@ -24,9 +24,9 @@ import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import java.util.Arrays; +import java.util.Collections; import org.apache.commons.io.IOUtils; -import org.apache.olingo.commons.api.edm.Edm; 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; @@ -36,6 +36,8 @@ import org.apache.olingo.commons.api.http.HttpStatusCode; 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.ServiceMetadata; +import org.apache.olingo.server.api.edmx.EdmxReference; import org.apache.olingo.server.api.processor.*; import org.apache.olingo.server.api.uri.UriInfo; import org.apache.olingo.server.tecsvc.provider.EdmTechProvider; @@ -50,9 +52,10 @@ public class ODataHandlerTest { @Before public void before() { OData odata = OData.newInstance(); - Edm edm = odata.createEdm(new EdmTechProvider()); + ServiceMetadata metadata = odata.createServiceMetadata( + new EdmTechProvider(), Collections.<EdmxReference>emptyList()); - handler = new ODataHandler(odata, edm); + handler = new ODataHandler(odata, metadata); } @Test http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/188574f5/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializerTest.java ---------------------------------------------------------------------- diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializerTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializerTest.java index 36e3887..562787d 100644 --- a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializerTest.java +++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializerTest.java @@ -21,6 +21,7 @@ package org.apache.olingo.server.core.serializer.json; import java.io.InputStream; import java.net.URI; import java.util.Arrays; +import java.util.Collections; import org.apache.commons.io.IOUtils; import org.apache.olingo.commons.api.data.ContextURL; @@ -37,6 +38,7 @@ import org.apache.olingo.commons.api.edm.FullQualifiedName; import org.apache.olingo.commons.api.format.ODataFormat; import org.apache.olingo.commons.core.data.PropertyImpl; import org.apache.olingo.server.api.OData; +import org.apache.olingo.server.api.edmx.EdmxReference; import org.apache.olingo.server.api.serializer.ODataSerializer; import org.apache.olingo.server.api.serializer.SerializerException; import org.apache.olingo.server.api.serializer.ODataSerializerOptions; @@ -56,7 +58,8 @@ import org.mockito.Mockito; public class ODataJsonSerializerTest { - private static final Edm edm = OData.newInstance().createEdm(new EdmTechProvider()); + private static final Edm edm = OData.newInstance().createServiceMetadata( + new EdmTechProvider(), Collections.<EdmxReference>emptyList()).getEdm(); private static final EdmEntityContainer entityContainer = edm.getEntityContainer( new FullQualifiedName("olingo.odata.test1", "Container")); private final DataProvider data = new DataProvider(); http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/188574f5/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/utils/ContextURLHelperTest.java ---------------------------------------------------------------------- diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/utils/ContextURLHelperTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/utils/ContextURLHelperTest.java index f622cd1..a880c60 100644 --- a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/utils/ContextURLHelperTest.java +++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/utils/ContextURLHelperTest.java @@ -21,6 +21,7 @@ package org.apache.olingo.server.core.serializer.utils; import static org.junit.Assert.assertEquals; import java.util.Arrays; +import java.util.Collections; import org.apache.olingo.commons.api.data.ContextURL; import org.apache.olingo.commons.api.edm.Edm; @@ -28,6 +29,7 @@ import org.apache.olingo.commons.api.edm.EdmEntityContainer; import org.apache.olingo.commons.api.edm.EdmEntitySet; import org.apache.olingo.commons.api.edm.FullQualifiedName; import org.apache.olingo.server.api.OData; +import org.apache.olingo.server.api.edmx.EdmxReference; import org.apache.olingo.server.api.uri.queryoption.ExpandItem; import org.apache.olingo.server.api.uri.queryoption.ExpandOption; import org.apache.olingo.server.api.uri.queryoption.SelectItem; @@ -39,7 +41,8 @@ import org.mockito.Mockito; public class ContextURLHelperTest { - private static final Edm edm = OData.newInstance().createEdm(new EdmTechProvider()); + private static final Edm edm = OData.newInstance().createServiceMetadata( + new EdmTechProvider(), Collections.<EdmxReference>emptyList()).getEdm(); private static final EdmEntityContainer entityContainer = edm.getEntityContainer( new FullQualifiedName("olingo.odata.test1", "Container")); http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/188574f5/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentTest.java ---------------------------------------------------------------------- diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentTest.java index 2dbce10..8fbbf15 100644 --- a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentTest.java +++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentTest.java @@ -21,10 +21,12 @@ package org.apache.olingo.server.core.serializer.xml; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; import java.io.InputStream; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.List; import org.apache.commons.io.IOUtils; @@ -33,8 +35,10 @@ import org.apache.olingo.commons.api.edm.Edm; import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind; import org.apache.olingo.commons.api.edm.FullQualifiedName; import org.apache.olingo.commons.api.edm.Target; +import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion; import org.apache.olingo.commons.api.format.ODataFormat; import org.apache.olingo.server.api.OData; +import org.apache.olingo.server.api.ServiceMetadata; import org.apache.olingo.server.api.edm.provider.Action; import org.apache.olingo.server.api.edm.provider.ActionImport; import org.apache.olingo.server.api.edm.provider.ComplexType; @@ -54,32 +58,31 @@ import org.apache.olingo.server.api.edm.provider.ReturnType; import org.apache.olingo.server.api.edm.provider.Schema; import org.apache.olingo.server.api.edm.provider.Singleton; import org.apache.olingo.server.api.edm.provider.TypeDefinition; +import org.apache.olingo.server.api.edmx.EdmxReference; import org.apache.olingo.server.api.serializer.ODataSerializer; import org.apache.olingo.server.api.serializer.SerializerException; +import org.apache.olingo.server.core.ServiceMetadataImpl; import org.apache.olingo.server.core.edm.provider.EdmProviderImpl; import org.apache.olingo.server.tecsvc.provider.EdmTechProvider; import org.junit.Test; public class MetadataDocumentTest { - @Test(expected = SerializerException.class) - public void metadataOnJsonResultsInException() throws Exception { - ODataSerializer serializer = OData.newInstance().createSerializer(ODataFormat.JSON); - serializer.metadataDocument(mock(Edm.class)); - } - @Test public void writeMetadataWithEmptyMockedEdm() throws Exception { ODataSerializer serializer = OData.newInstance().createSerializer(ODataFormat.XML); + ServiceMetadata metadata = mock(ServiceMetadata.class); Edm edm = mock(Edm.class); - serializer.metadataDocument(edm); + when(metadata.getEdm()).thenReturn(edm); + serializer.metadataDocument(metadata); } @Test public void writeMetadataWithLocalTestEdm() throws Exception { ODataSerializer serializer = OData.newInstance().createSerializer(ODataFormat.XML); - Edm edm = new EdmProviderImpl(new TestMetadataProvider()); - InputStream metadata = serializer.metadataDocument(edm); + ServiceMetadata serviceMetadata = new ServiceMetadataImpl(ODataServiceVersion.V40, + new TestMetadataProvider(), Collections.<EdmxReference>emptyList()); + InputStream metadata = serializer.metadataDocument(serviceMetadata); assertNotNull(metadata); String metadataString = IOUtils.toString(metadata); @@ -147,8 +150,9 @@ public class MetadataDocumentTest { @Test public void writeMetadataWithTechnicalScenario() throws Exception { ODataSerializer serializer = OData.newInstance().createSerializer(ODataFormat.XML); - EdmProviderImpl edm = new EdmProviderImpl(new EdmTechProvider()); - InputStream metadata = serializer.metadataDocument(edm); + ServiceMetadata serviceMetadata = new ServiceMetadataImpl(ODataServiceVersion.V40, + new TestMetadataProvider(), Collections.<EdmxReference>emptyList()); + InputStream metadata = serializer.metadataDocument(serviceMetadata); assertNotNull(metadata); // The technical scenario is too big to verify. We are content for now to make sure we can serialize it. // System.out.println(StringUtils.inputStreamToString(metadata, false));
