diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EdmType.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EdmType.java deleted file mode 100644 index 3e59c03d8..000000000 --- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EdmType.java +++ /dev/null @@ -1,111 +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.odata4.client.api.edm; - -import org.apache.olingo.odata4.client.api.data.EdmSimpleType; -import org.apache.olingo.odata4.client.api.edm.xml.ComplexType; -import org.apache.olingo.odata4.client.api.edm.xml.EntityType; -import org.apache.olingo.odata4.client.api.edm.xml.EnumType; - -public interface EdmType { - - /** - * Checks if is a collection. - * - * @return 'TRUE' if is a collection; 'FALSE' otherwise. - */ - boolean isCollection(); - - /** - * Checks if is a simple type. - * - * @return 'TRUE' if is a simple type; 'FALSE' otherwise. - */ - boolean isSimpleType(); - - /** - * Gets type as a simple type. - * - * @return simple type. An EdmTypeNotFoundException will be raised if it is not a simple type. - */ - EdmSimpleType getSimpleType(); - - /** - * Checks if is an enum type. - * - * @return 'TRUE' if is an enum type; 'FALSE' otherwise. - */ - boolean isEnumType(); - - /** - * Gets type as enum type. - * - * @return enum type. An EdmTypeNotFoundException will be raised if it is not an enum type. - */ - EnumType getEnumType(); - - /** - * Checks if is a complex type. - * - * @return 'TRUE' if is a complex type; 'FALSE' otherwise. - */ - boolean isComplexType(); - - /** - * Gets type as complex type. - * - * @return complex type. An EdmTypeNotFoundException will be raised if it is not a complex type. - */ - ComplexType getComplexType(); - - /** - * Checks if is an entity type. - * - * @return 'TRUE' if is an entity type; 'FALSE' otherwise. - */ - boolean isEntityType(); - - /** - * Gets type as entity type. - * - * @return entity type. An EdmTypeNotFoundException will be raised if it is not an entity type. - */ - EntityType getEntityType(); - - /** - * Gets base type. - * - * @return base type. - */ - String getBaseType(); - - /** - * Gets type expression. - * - * @return type expression. - */ - String getTypeExpression(); - - /** - * Gets namespace or alias retrieved from the provided type expression. - * - * @return namespace or alias. - */ - String getNamespaceOrAlias(); -} diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EdmTypeNotFoundException.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EdmTypeNotFoundException.java deleted file mode 100644 index 6928f98d8..000000000 --- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EdmTypeNotFoundException.java +++ /dev/null @@ -1,37 +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.odata4.client.api.edm; - -/** - * This exception indicates that a certain type is not found. - */ -public class EdmTypeNotFoundException extends RuntimeException { - - private static final long serialVersionUID = 1685118875699966611L; - - /** - * Constructor. - * - * @param type type in object. - * @param typeExpression type expression. - */ - public EdmTypeNotFoundException(final Class type, final String typeExpression) { - super("No " + type.getSimpleName() + " found in " + typeExpression); - } -} diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmTypeImpl.java deleted file mode 100644 index 18216c629..000000000 --- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmTypeImpl.java +++ /dev/null @@ -1,52 +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.odata4.client.core.edm.v3; - -import org.apache.olingo.odata4.client.api.edm.xml.XMLMetadata; -import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmType; -import org.apache.olingo.odata4.client.core.edm.xml.v3.ComplexTypeImpl; -import org.apache.olingo.odata4.client.core.edm.xml.v3.EntityTypeImpl; -import org.apache.olingo.odata4.client.core.edm.xml.v3.EnumTypeImpl; - -public class EdmTypeImpl extends AbstractEdmType { - - public EdmTypeImpl(final String typeExpression) { - super(typeExpression); - } - - public EdmTypeImpl(final XMLMetadata metadata, final String typeExpression) { - super(metadata, typeExpression); - } - - @Override - public EnumTypeImpl getEnumType() { - return (EnumTypeImpl) super.getEnumType(); - } - - @Override - public ComplexTypeImpl getComplexType() { - return (ComplexTypeImpl) super.getComplexType(); - } - - @Override - public EntityTypeImpl getEntityType() { - return (EntityTypeImpl) super.getEntityType(); - } - -} diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmTypeImpl.java deleted file mode 100644 index c693f9cab..000000000 --- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmTypeImpl.java +++ /dev/null @@ -1,51 +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.odata4.client.core.edm.v4; - -import org.apache.olingo.odata4.client.api.edm.xml.XMLMetadata; -import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmType; -import org.apache.olingo.odata4.client.core.edm.xml.v4.ComplexTypeImpl; -import org.apache.olingo.odata4.client.core.edm.xml.v4.EntityTypeImpl; -import org.apache.olingo.odata4.client.core.edm.xml.v4.EnumTypeImpl; - -public class EdmTypeImpl extends AbstractEdmType { - - public EdmTypeImpl(final String typeExpression) { - super(typeExpression); - } - - public EdmTypeImpl(final XMLMetadata metadata, final String typeExpression) { - super(metadata, typeExpression); - } - - @Override - public EnumTypeImpl getEnumType() { - return (EnumTypeImpl) super.getEnumType(); - } - - @Override - public ComplexTypeImpl getComplexType() { - return (ComplexTypeImpl) super.getComplexType(); - } - - @Override - public EntityTypeImpl getEntityType() { - return (EntityTypeImpl) super.getEntityType(); - } -} diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEdmType.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEdmType.java deleted file mode 100644 index 48de56066..000000000 --- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEdmType.java +++ /dev/null @@ -1,262 +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.odata4.client.core.edm.xml; - -import org.apache.commons.lang3.StringUtils; -import org.apache.olingo.odata4.client.api.data.EdmSimpleType; -import org.apache.olingo.odata4.client.api.edm.xml.ComplexType; -import org.apache.olingo.odata4.client.api.edm.EdmType; -import org.apache.olingo.odata4.client.api.edm.EdmTypeNotFoundException; -import org.apache.olingo.odata4.client.api.edm.xml.EntityType; -import org.apache.olingo.odata4.client.api.edm.xml.EnumType; -import org.apache.olingo.odata4.client.api.edm.xml.Schema; -import org.apache.olingo.odata4.client.api.edm.xml.XMLMetadata; - -/** - * Parse type information from metadata into semantic data. - */ -public abstract class AbstractEdmType implements EdmType { - - private final String typeExpression; - - private final String baseType; - - private final String namespaceOrAlias; - - private boolean collection; - - private EdmSimpleType simpleType; - - private EnumType enumType; - - private ComplexType complexType; - - private EntityType entityType; - - /** - * Constructor. - * - * @param typeExpression type expression. - */ - public AbstractEdmType(final String typeExpression) { - this(null, typeExpression); - } - - /** - * Constructor. - * - * @param metadata metadata. - * @param typeExpression type expression. - */ - public AbstractEdmType(final XMLMetadata metadata, final String typeExpression) { - this.typeExpression = typeExpression; - - final int collectionStartIdx = typeExpression.indexOf("Collection("); - final int collectionEndIdx = typeExpression.lastIndexOf(')'); - if (collectionStartIdx == -1) { - baseType = typeExpression; - } else { - if (collectionEndIdx == -1) { - throw new IllegalArgumentException("Malformed type: " + typeExpression); - } - - this.collection = true; - baseType = typeExpression.substring(collectionStartIdx + 11, collectionEndIdx); - } - - final int lastDotIdx = baseType.lastIndexOf('.'); - if (lastDotIdx == -1) { - throw new IllegalArgumentException("Cannot find namespace or alias in " + typeExpression); - } - namespaceOrAlias = baseType.substring(0, lastDotIdx); - final String typeName = baseType.substring(lastDotIdx + 1); - if (StringUtils.isBlank(typeName)) { - throw new IllegalArgumentException("Null or empty type name in " + typeExpression); - } - - if (namespaceOrAlias.equals(EdmSimpleType.namespace())) { - this.simpleType = EdmSimpleType.fromValue(EdmSimpleType.namespace() + "." + typeName); - } else if (metadata != null) { - if (!metadata.isNsOrAlias(namespaceOrAlias)) { - throw new IllegalArgumentException("Illegal namespace or alias: " + namespaceOrAlias); - } - final Schema schema = metadata.getSchema(namespaceOrAlias); - - for (EnumType type : schema.getEnumTypes()) { - if (typeName.equals(type.getName())) { - this.enumType = type; - } - } - if (this.enumType == null) { - for (ComplexType type : schema.getComplexTypes()) { - if (typeName.equals(type.getName())) { - this.complexType = type; - } - } - if (this.complexType == null) { - for (EntityType type : schema.getEntityTypes()) { - if (typeName.equals(type.getName())) { - this.entityType = type; - } - } - } - } - - if (!isSimpleType() && !isEnumType() && !isComplexType() && !isEntityType()) { - throw new IllegalArgumentException("Could not parse type information out of " + typeExpression); - } - } - } - - /** - * Checks if is a collection. - * - * @return 'TRUE' if is a collection; 'FALSE' otherwise. - */ - @Override - public final boolean isCollection() { - return this.collection; - } - - /** - * Checks if is a simple type. - * - * @return 'TRUE' if is a simple type; 'FALSE' otherwise. - */ - @Override - public final boolean isSimpleType() { - return this.simpleType != null; - } - - /** - * Gets type as a simple type. - * - * @return simple type. An EdmTypeNotFoundException will be raised if it is not a simple type. - */ - @Override - public final EdmSimpleType getSimpleType() { - if (!isSimpleType()) { - throw new EdmTypeNotFoundException(EdmSimpleType.class, this.typeExpression); - } - - return this.simpleType; - } - - /** - * Checks if is an enum type. - * - * @return 'TRUE' if is an enum type; 'FALSE' otherwise. - */ - @Override - public final boolean isEnumType() { - return this.enumType != null; - } - - /** - * Gets type as enum type. - * - * @return enum type. An EdmTypeNotFoundException will be raised if it is not an enum type. - */ - @Override - public EnumType getEnumType() { - if (!isEnumType()) { - throw new EdmTypeNotFoundException(AbstractEnumType.class, this.typeExpression); - } - - return this.enumType; - } - - /** - * Checks if is a complex type. - * - * @return 'TRUE' if is a complex type; 'FALSE' otherwise. - */ - @Override - public final boolean isComplexType() { - return this.complexType != null; - } - - /** - * Gets type as complex type. - * - * @return complex type. An EdmTypeNotFoundException will be raised if it is not a complex type. - */ - @Override - public ComplexType getComplexType() { - if (!isComplexType()) { - throw new EdmTypeNotFoundException(AbstractComplexType.class, this.typeExpression); - } - - return this.complexType; - } - - /** - * Checks if is an entity type. - * - * @return 'TRUE' if is an entity type; 'FALSE' otherwise. - */ - @Override - public final boolean isEntityType() { - return this.entityType != null; - } - - /** - * Gets type as entity type. - * - * @return entity type. An EdmTypeNotFoundException will be raised if it is not an entity type. - */ - @Override - public EntityType getEntityType() { - if (!isEntityType()) { - throw new EdmTypeNotFoundException(AbstractEntityType.class, this.typeExpression); - } - - return this.entityType; - } - - /** - * Gets base type. - * - * @return base type. - */ - @Override - public String getBaseType() { - return baseType; - } - - /** - * Gets type expression. - * - * @return type expression. - */ - @Override - public String getTypeExpression() { - return typeExpression; - } - - /** - * Gets namespace or alias retrieved from the provided type expression. - * - * @return namespace or alias. - */ - @Override - public String getNamespaceOrAlias() { - return namespaceOrAlias; - } -} diff --git a/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v3/MetadataTest.java b/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v3/MetadataTest.java index 97f855ce3..b7d7492f5 100644 --- a/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v3/MetadataTest.java +++ b/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v3/MetadataTest.java @@ -21,15 +21,12 @@ package org.apache.olingo.odata4.client.core.v3; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; import java.util.List; -import org.apache.olingo.odata4.client.api.edm.EdmType; import org.apache.olingo.odata4.client.api.http.HttpMethod; import org.apache.olingo.odata4.client.core.AbstractTest; import org.apache.olingo.odata4.client.core.ODataV3Client; import org.apache.olingo.odata4.client.core.edm.xml.v3.ComplexTypeImpl; -import org.apache.olingo.odata4.client.core.edm.v3.EdmTypeImpl; import org.apache.olingo.odata4.client.core.edm.xml.v3.EntityContainerImpl; import org.apache.olingo.odata4.client.core.edm.xml.v3.EntityTypeImpl; import org.apache.olingo.odata4.client.core.edm.xml.v3.FunctionImportImpl; @@ -50,27 +47,10 @@ public class MetadataTest extends AbstractTest { toMetadata(getClass().getResourceAsStream("metadata.xml")); assertNotNull(metadata); - final EdmTypeImpl orderCollection = new EdmTypeImpl(metadata, - "Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Order)"); - assertNotNull(orderCollection); - assertTrue(orderCollection.isCollection()); - assertFalse(orderCollection.isSimpleType()); - assertFalse(orderCollection.isEnumType()); - assertFalse(orderCollection.isComplexType()); - assertTrue(orderCollection.isEntityType()); - - final EntityTypeImpl order = orderCollection.getEntityType(); + final EntityTypeImpl order = metadata.getSchemas().get(0).getEntityType("Order"); assertNotNull(order); assertEquals("Order", order.getName()); - final EdmType stream = new EdmTypeImpl(metadata, "Edm.Stream"); - assertNotNull(stream); - assertFalse(stream.isCollection()); - assertTrue(stream.isSimpleType()); - assertFalse(stream.isEnumType()); - assertFalse(stream.isComplexType()); - assertFalse(stream.isEntityType()); - final List functionImports = metadata.getSchemas().get(0). getDefaultEntityContainer().getFunctionImports(); int legacyGetters = 0; diff --git a/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v4/MetadataTest.java b/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v4/MetadataTest.java index fba34daa7..1265f150a 100644 --- a/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v4/MetadataTest.java +++ b/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v4/MetadataTest.java @@ -25,7 +25,6 @@ import static org.junit.Assert.assertTrue; import org.apache.olingo.odata4.client.core.AbstractTest; import org.apache.olingo.odata4.client.core.ODataV4Client; -import org.apache.olingo.odata4.client.core.edm.v4.EdmTypeImpl; import org.apache.olingo.odata4.client.core.edm.xml.v4.XMLMetadataImpl; import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl; import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationsImpl; @@ -177,10 +176,7 @@ public class MetadataTest extends AbstractTest { assertEquals("Products", product.getNavigationProperty("Supplier").getPartner()); final EntityTypeImpl category = metadata.getSchema(0).getEntityType("Category"); - final EdmTypeImpl type = new EdmTypeImpl(metadata, category.getNavigationProperty("Products").getType()); - assertNotNull(type); - assertTrue(type.isCollection()); - assertFalse(type.isSimpleType()); + assertNotNull(category); final ComplexTypeImpl address = metadata.getSchema(0).getComplexType("Address"); assertFalse(address.getNavigationProperty("Country").getReferentialConstraints().isEmpty());