http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/IncludeImpl.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/IncludeImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/IncludeImpl.java new file mode 100644 index 0000000..6906257 --- /dev/null +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/IncludeImpl.java @@ -0,0 +1,53 @@ +/* + * 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.client.core.edm.xml; + +import org.apache.olingo.client.api.edm.xml.Include; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class IncludeImpl extends AbstractEdmItem implements Include { + + private static final long serialVersionUID = -5450008299655584221L; + + @JsonProperty(value = "Namespace", required = true) + private String namespace; + + @JsonProperty(value = "Alias") + private String alias; + + @Override + public String getNamespace() { + return namespace; + } + + public void setNamespace(final String namespace) { + this.namespace = namespace; + } + + @Override + public String getAlias() { + return alias; + } + + public void setAlias(final String alias) { + this.alias = alias; + } + +}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/MemberImpl.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/MemberImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/MemberImpl.java new file mode 100644 index 0000000..bc48e9f --- /dev/null +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/MemberImpl.java @@ -0,0 +1,38 @@ +/* + * 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.client.core.edm.xml; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.olingo.client.api.edm.xml.Annotatable; +import org.apache.olingo.client.api.edm.xml.Annotation; + +public class MemberImpl extends AbstractMember implements Annotatable { + + private static final long serialVersionUID = -6138606817225829791L; + + private final List<Annotation> annotations = new ArrayList<Annotation>(); + + @Override + public List<Annotation> getAnnotations() { + return annotations; + } + +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/NavigationPropertyBindingImpl.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/NavigationPropertyBindingImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/NavigationPropertyBindingImpl.java new file mode 100644 index 0000000..283b0d5 --- /dev/null +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/NavigationPropertyBindingImpl.java @@ -0,0 +1,53 @@ +/* + * 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.client.core.edm.xml; + +import org.apache.olingo.client.api.edm.xml.NavigationPropertyBinding; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class NavigationPropertyBindingImpl extends AbstractEdmItem implements NavigationPropertyBinding { + + private static final long serialVersionUID = -7056978592235483660L; + + @JsonProperty(value = "Path", required = true) + private String path; + + @JsonProperty(value = "Target", required = true) + private String target; + + @Override + public String getPath() { + return path; + } + + public void setPath(final String path) { + this.path = path; + } + + @Override + public String getTarget() { + return target; + } + + public void setTarget(final String target) { + this.target = target; + } + +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/NavigationPropertyDeserializer.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/NavigationPropertyDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/NavigationPropertyDeserializer.java new file mode 100644 index 0000000..a422c53 --- /dev/null +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/NavigationPropertyDeserializer.java @@ -0,0 +1,67 @@ +/* + * 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.client.core.edm.xml; + +import java.io.IOException; + +import org.apache.commons.lang3.BooleanUtils; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.databind.DeserializationContext; + +public class NavigationPropertyDeserializer extends AbstractEdmDeserializer<NavigationPropertyImpl> { + + @Override + protected NavigationPropertyImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt) + throws IOException, JsonProcessingException { + + final NavigationPropertyImpl property = new NavigationPropertyImpl(); + + for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) { + final JsonToken token = jp.getCurrentToken(); + if (token == JsonToken.FIELD_NAME) { + if ("Name".equals(jp.getCurrentName())) { + property.setName(jp.nextTextValue()); + } else if ("Type".equals(jp.getCurrentName())) { + property.setType(jp.nextTextValue()); + } else if ("Nullable".equals(jp.getCurrentName())) { + property.setNullable(BooleanUtils.toBoolean(jp.nextTextValue())); + } else if ("Partner".equals(jp.getCurrentName())) { + property.setPartner(jp.nextTextValue()); + } else if ("ContainsTarget".equals(jp.getCurrentName())) { + property.setContainsTarget(BooleanUtils.toBoolean(jp.nextTextValue())); + } else if ("ReferentialConstraint".equals(jp.getCurrentName())) { + jp.nextToken(); + property.getReferentialConstraints().add(jp.readValueAs(ReferentialConstraintImpl.class)); + } else if ("OnDelete".equals(jp.getCurrentName())) { + jp.nextToken(); + property.setOnDelete(jp.readValueAs(OnDeleteImpl.class)); + } else if ("Annotation".equals(jp.getCurrentName())) { + jp.nextToken(); + property.getAnnotations().add(jp.readValueAs(AnnotationImpl.class)); + } + } + } + + return property; + } + +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/NavigationPropertyImpl.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/NavigationPropertyImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/NavigationPropertyImpl.java new file mode 100644 index 0000000..deb20e5 --- /dev/null +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/NavigationPropertyImpl.java @@ -0,0 +1,94 @@ +/* + * 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.client.core.edm.xml; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.olingo.client.api.edm.xml.Annotation; +import org.apache.olingo.client.api.edm.xml.NavigationProperty; +import org.apache.olingo.client.api.edm.xml.OnDelete; +import org.apache.olingo.client.api.edm.xml.ReferentialConstraint; + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; + +@JsonDeserialize(using = NavigationPropertyDeserializer.class) +public class NavigationPropertyImpl extends AbstractNavigationProperty implements NavigationProperty { + + private static final long serialVersionUID = 4503112988794432940L; + + private String type; + + private boolean nullable = true; + + private String partner; + + private final List<ReferentialConstraint> referentialConstraints = new ArrayList<ReferentialConstraint>(); + + private OnDelete onDelete; + + private final List<Annotation> annotations = new ArrayList<Annotation>(); + + @Override + public String getType() { + return type; + } + + public void setType(final String type) { + this.type = type; + } + + @Override + public boolean isNullable() { + return nullable; + } + + public void setNullable(final boolean nullable) { + this.nullable = nullable; + } + + @Override + public String getPartner() { + return partner; + } + + public void setPartner(final String partner) { + this.partner = partner; + } + + @Override + public List<ReferentialConstraint> getReferentialConstraints() { + return referentialConstraints; + } + + @Override + public OnDelete getOnDelete() { + return onDelete; + } + + public void setOnDelete(final OnDelete onDelete) { + this.onDelete = onDelete; + } + + @Override + public List<Annotation> getAnnotations() { + return annotations; + } + +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ParameterDeserializer.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ParameterDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ParameterDeserializer.java index d6c9bed..16353f5 100644 --- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ParameterDeserializer.java +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ParameterDeserializer.java @@ -21,7 +21,6 @@ package org.apache.olingo.client.core.edm.xml; import java.io.IOException; import org.apache.commons.lang3.BooleanUtils; -import org.apache.olingo.client.core.edm.xml.v4.AnnotationImpl; import org.apache.olingo.commons.api.edm.geo.SRID; import com.fasterxml.jackson.core.JsonParser; @@ -35,7 +34,7 @@ public class ParameterDeserializer extends AbstractEdmDeserializer<AbstractParam protected AbstractParameter doDeserialize(final JsonParser jp, final DeserializationContext ctxt) throws IOException, JsonProcessingException { - final AbstractParameter parameter = new org.apache.olingo.client.core.edm.xml.v4.ParameterImpl(); + final AbstractParameter parameter = new org.apache.olingo.client.core.edm.xml.ParameterImpl(); for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) { final JsonToken token = jp.getCurrentToken(); @@ -57,11 +56,11 @@ public class ParameterDeserializer extends AbstractEdmDeserializer<AbstractParam } else if ("SRID".equals(jp.getCurrentName())) { final String srid = jp.nextTextValue(); if (srid != null) { - ((org.apache.olingo.client.core.edm.xml.v4.ParameterImpl) parameter).setSrid(SRID.valueOf(srid)); + ((org.apache.olingo.client.core.edm.xml.ParameterImpl) parameter).setSrid(SRID.valueOf(srid)); } } else if ("Annotation".equals(jp.getCurrentName())) { jp.nextToken(); - ((org.apache.olingo.client.core.edm.xml.v4.ParameterImpl) parameter).getAnnotations(). + ((org.apache.olingo.client.core.edm.xml.ParameterImpl) parameter).getAnnotations(). add(jp.readValueAs(AnnotationImpl.class)); } } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ParameterImpl.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ParameterImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ParameterImpl.java new file mode 100644 index 0000000..ec2a08e --- /dev/null +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ParameterImpl.java @@ -0,0 +1,50 @@ +/* + * 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.client.core.edm.xml; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.olingo.client.api.edm.xml.Annotation; +import org.apache.olingo.client.api.edm.xml.Parameter; +import org.apache.olingo.commons.api.edm.geo.SRID; + +public class ParameterImpl extends AbstractParameter implements Parameter { + + private static final long serialVersionUID = 7119478691341167904L; + + private SRID srid; + + private final List<Annotation> annotations = new ArrayList<Annotation>(); + + @Override + public SRID getSrid() { + return srid; + } + + public void setSrid(final SRID srid) { + this.srid = srid; + } + + @Override + public List<Annotation> getAnnotations() { + return annotations; + } + +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/PropertyDeserializer.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/PropertyDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/PropertyDeserializer.java index bf6e8b4..02c3c3e 100644 --- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/PropertyDeserializer.java +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/PropertyDeserializer.java @@ -21,7 +21,6 @@ package org.apache.olingo.client.core.edm.xml; import java.io.IOException; import org.apache.commons.lang3.BooleanUtils; -import org.apache.olingo.client.core.edm.xml.v4.AnnotationImpl; import org.apache.olingo.commons.api.edm.geo.SRID; import com.fasterxml.jackson.core.JsonParser; @@ -35,7 +34,7 @@ public class PropertyDeserializer extends AbstractEdmDeserializer<AbstractProper protected AbstractProperty doDeserialize(final JsonParser jp, final DeserializationContext ctxt) throws IOException, JsonProcessingException { - final AbstractProperty property = new org.apache.olingo.client.core.edm.xml.v4.PropertyImpl(); + final AbstractProperty property = new org.apache.olingo.client.core.edm.xml.PropertyImpl(); for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) { final JsonToken token = jp.getCurrentToken(); @@ -65,7 +64,7 @@ public class PropertyDeserializer extends AbstractEdmDeserializer<AbstractProper } } else if ("Annotation".equals(jp.getCurrentName())) { jp.nextToken(); - ((org.apache.olingo.client.core.edm.xml.v4.PropertyImpl) property).getAnnotations(). + ((org.apache.olingo.client.core.edm.xml.PropertyImpl) property).getAnnotations(). add(jp.readValueAs(AnnotationImpl.class)); } } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/PropertyImpl.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/PropertyImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/PropertyImpl.java new file mode 100644 index 0000000..1cbdfb1 --- /dev/null +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/PropertyImpl.java @@ -0,0 +1,37 @@ +/* + * 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.client.core.edm.xml; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.olingo.client.api.edm.xml.Annotation; +import org.apache.olingo.client.api.edm.xml.Property; + +public class PropertyImpl extends AbstractProperty implements Property { + + private static final long serialVersionUID = 4544336801968719526L; + + private final List<Annotation> annotations = new ArrayList<Annotation>(); + + @Override + public List<Annotation> getAnnotations() { + return annotations; + } +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReferenceDeserializer.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReferenceDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReferenceDeserializer.java new file mode 100644 index 0000000..92f1e53 --- /dev/null +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReferenceDeserializer.java @@ -0,0 +1,58 @@ +/* + * 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.client.core.edm.xml; + +import java.io.IOException; +import java.net.URI; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.databind.DeserializationContext; + +public class ReferenceDeserializer extends AbstractEdmDeserializer<ReferenceImpl> { + + @Override + protected ReferenceImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt) + throws IOException, JsonProcessingException { + + final ReferenceImpl reference = new ReferenceImpl(); + + for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) { + final JsonToken token = jp.getCurrentToken(); + if (token == JsonToken.FIELD_NAME) { + if ("Uri".equals(jp.getCurrentName())) { + reference.setUri(URI.create(jp.nextTextValue())); + } else if ("Include".equals(jp.getCurrentName())) { + jp.nextToken(); + reference.getIncludes().add(jp.readValueAs( IncludeImpl.class)); + } else if ("IncludeAnnotations".equals(jp.getCurrentName())) { + jp.nextToken(); + reference.getIncludeAnnotations().add(jp.readValueAs( IncludeAnnotationsImpl.class)); + } else if ("Annotation".equals(jp.getCurrentName())) { + jp.nextToken(); + reference.getAnnotations().add(jp.readValueAs( AnnotationImpl.class)); + } + } + } + + return reference; + } + +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReferenceImpl.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReferenceImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReferenceImpl.java new file mode 100644 index 0000000..f9efbf9 --- /dev/null +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReferenceImpl.java @@ -0,0 +1,61 @@ +/* + * 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.client.core.edm.xml; + +import java.net.URI; +import java.util.ArrayList; +import java.util.List; + +import org.apache.olingo.client.api.edm.xml.Include; +import org.apache.olingo.client.api.edm.xml.IncludeAnnotations; +import org.apache.olingo.client.api.edm.xml.Reference; + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; + +@JsonDeserialize(using = ReferenceDeserializer.class) +public class ReferenceImpl extends AbstractAnnotatable implements Reference { + + private static final long serialVersionUID = 7720274712545267654L; + + private URI uri; + + private final List<Include> includes = new ArrayList<Include>(); + + private final List<IncludeAnnotations> includeAnnotations = new ArrayList<IncludeAnnotations>(); + + @Override + public URI getUri() { + return uri; + } + + public void setUri(final URI uri) { + this.uri = uri; + } + + @Override + public List<Include> getIncludes() { + return includes; + } + + @Override + public List<IncludeAnnotations> getIncludeAnnotations() { + return includeAnnotations; + } + +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReferentialConstraintImpl.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReferentialConstraintImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReferentialConstraintImpl.java new file mode 100644 index 0000000..61b2642 --- /dev/null +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReferentialConstraintImpl.java @@ -0,0 +1,53 @@ +/* + * 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.client.core.edm.xml; + +import org.apache.olingo.client.api.edm.xml.ReferentialConstraint; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class ReferentialConstraintImpl extends AbstractAnnotatable implements ReferentialConstraint { + + private static final long serialVersionUID = -5822115908069878139L; + + @JsonProperty(value = "Property", required = true) + private String property; + + @JsonProperty(value = "ReferencedProperty", required = true) + private String referencedProperty; + + @Override + public String getProperty() { + return property; + } + + public void setProperty(final String property) { + this.property = property; + } + + @Override + public String getReferencedProperty() { + return referencedProperty; + } + + public void setReferencedProperty(final String referencedProperty) { + this.referencedProperty = referencedProperty; + } + +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReturnTypeDeserializer.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReturnTypeDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReturnTypeDeserializer.java new file mode 100644 index 0000000..1a8cd94 --- /dev/null +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReturnTypeDeserializer.java @@ -0,0 +1,66 @@ +/* + * 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.client.core.edm.xml; + +import java.io.IOException; + +import org.apache.commons.lang3.BooleanUtils; +import org.apache.olingo.commons.api.edm.geo.SRID; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.databind.DeserializationContext; + +public class ReturnTypeDeserializer extends AbstractEdmDeserializer<ReturnTypeImpl> { + + @Override + protected ReturnTypeImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt) + throws IOException, JsonProcessingException { + + final ReturnTypeImpl returnType = new ReturnTypeImpl(); + + for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) { + final JsonToken token = jp.getCurrentToken(); + if (token == JsonToken.FIELD_NAME) { + if ("Type".equals(jp.getCurrentName())) { + returnType.setType(jp.nextTextValue()); + } else if ("Nullable".equals(jp.getCurrentName())) { + returnType.setNullable(BooleanUtils.toBoolean(jp.nextTextValue())); + } else if ("MaxLength".equals(jp.getCurrentName())) { + final String maxLenght = jp.nextTextValue(); + returnType.setMaxLength(maxLenght.equalsIgnoreCase("max") ? Integer.MAX_VALUE : Integer.valueOf(maxLenght)); + } else if ("Precision".equals(jp.getCurrentName())) { + returnType.setPrecision(Integer.valueOf(jp.nextTextValue())); + } else if ("Scale".equals(jp.getCurrentName())) { + final String scale = jp.nextTextValue(); + returnType.setScale(scale.equalsIgnoreCase("variable") ? 0 : Integer.valueOf(scale)); + } else if ("SRID".equals(jp.getCurrentName())) { + final String srid = jp.nextTextValue(); + if (srid != null) { + returnType.setSrid(SRID.valueOf(srid)); + } + } + } + } + + return returnType; + } + +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReturnTypeImpl.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReturnTypeImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReturnTypeImpl.java new file mode 100644 index 0000000..1135437 --- /dev/null +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReturnTypeImpl.java @@ -0,0 +1,97 @@ +/* + * 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.client.core.edm.xml; + +import org.apache.olingo.client.api.edm.xml.ReturnType; +import org.apache.olingo.commons.api.edm.geo.SRID; + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; + +@JsonDeserialize(using = ReturnTypeDeserializer.class) +public class ReturnTypeImpl extends AbstractEdmItem implements ReturnType { + + private static final long serialVersionUID = 6261092793901735110L; + + private String type; + + private boolean nullable = true; + + private Integer maxLength; + + private Integer precision; + + private Integer scale; + + private SRID srid; + + @Override + public String getType() { + return type; + } + + public void setType(final String type) { + this.type = type; + } + + @Override + public boolean isNullable() { + return nullable; + } + + public void setNullable(final boolean nullable) { + this.nullable = nullable; + } + + @Override + public Integer getMaxLength() { + return maxLength; + } + + public void setMaxLength(final Integer maxLength) { + this.maxLength = maxLength; + } + + @Override + public Integer getPrecision() { + return precision; + } + + public void setPrecision(final Integer precision) { + this.precision = precision; + } + + @Override + public Integer getScale() { + return scale; + } + + public void setScale(final Integer scale) { + this.scale = scale; + } + + @Override + public SRID getSrid() { + return srid; + } + + public void setSrid(final SRID srid) { + this.srid = srid; + } + +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SchemaDeserializer.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SchemaDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SchemaDeserializer.java index c182303..0b042ad 100644 --- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SchemaDeserializer.java +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SchemaDeserializer.java @@ -20,12 +20,6 @@ package org.apache.olingo.client.core.edm.xml; import java.io.IOException; -import org.apache.olingo.client.core.edm.xml.v4.ActionImpl; -import org.apache.olingo.client.core.edm.xml.v4.AnnotationImpl; -import org.apache.olingo.client.core.edm.xml.v4.FunctionImpl; -import org.apache.olingo.client.core.edm.xml.v4.TermImpl; -import org.apache.olingo.client.core.edm.xml.v4.TypeDefinitionImpl; - import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonToken; @@ -37,7 +31,7 @@ public class SchemaDeserializer extends AbstractEdmDeserializer<AbstractSchema> protected AbstractSchema doDeserialize(final JsonParser jp, final DeserializationContext ctxt) throws IOException, JsonProcessingException { - final AbstractSchema schema = new org.apache.olingo.client.core.edm.xml.v4.SchemaImpl(); + final AbstractSchema schema = new org.apache.olingo.client.core.edm.xml.SchemaImpl(); for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) { final JsonToken token = jp.getCurrentToken(); @@ -49,60 +43,60 @@ public class SchemaDeserializer extends AbstractEdmDeserializer<AbstractSchema> } else if ("ComplexType".equals(jp.getCurrentName())) { jp.nextToken(); - ((org.apache.olingo.client.core.edm.xml.v4.SchemaImpl) schema). + ((org.apache.olingo.client.core.edm.xml.SchemaImpl) schema). getComplexTypes().add(jp.readValueAs( - org.apache.olingo.client.core.edm.xml.v4.ComplexTypeImpl.class)); + org.apache.olingo.client.core.edm.xml.ComplexTypeImpl.class)); } else if ("EntityType".equals(jp.getCurrentName())) { jp.nextToken(); - ((org.apache.olingo.client.core.edm.xml.v4.SchemaImpl) schema). + ((org.apache.olingo.client.core.edm.xml.SchemaImpl) schema). getEntityTypes().add(jp.readValueAs( - org.apache.olingo.client.core.edm.xml.v4.EntityTypeImpl.class)); + org.apache.olingo.client.core.edm.xml.EntityTypeImpl.class)); } else if ("EnumType".equals(jp.getCurrentName())) { jp.nextToken(); - ((org.apache.olingo.client.core.edm.xml.v4.SchemaImpl) schema). + ((org.apache.olingo.client.core.edm.xml.SchemaImpl) schema). getEnumTypes().add(jp.readValueAs( - org.apache.olingo.client.core.edm.xml.v4.EnumTypeImpl.class)); + org.apache.olingo.client.core.edm.xml.EnumTypeImpl.class)); } else if ("EntityContainer".equals(jp.getCurrentName())) { jp.nextToken(); - org.apache.olingo.client.core.edm.xml.v4.EntityContainerImpl entityContainer = + org.apache.olingo.client.core.edm.xml.EntityContainerImpl entityContainer = jp.readValueAs( - org.apache.olingo.client.core.edm.xml.v4.EntityContainerImpl.class); + org.apache.olingo.client.core.edm.xml.EntityContainerImpl.class); entityContainer.setDefaultEntityContainer(true); - ((org.apache.olingo.client.core.edm.xml.v4.SchemaImpl) schema). + ((org.apache.olingo.client.core.edm.xml.SchemaImpl) schema). setEntityContainer(entityContainer); } else if ("Action".equals(jp.getCurrentName())) { jp.nextToken(); - ((org.apache.olingo.client.core.edm.xml.v4.SchemaImpl) schema).getActions(). + ((org.apache.olingo.client.core.edm.xml.SchemaImpl) schema).getActions(). add(jp.readValueAs(ActionImpl.class)); } else if ("Function".equals(jp.getCurrentName())) { jp.nextToken(); - ((org.apache.olingo.client.core.edm.xml.v4.SchemaImpl) schema).getFunctions(). + ((org.apache.olingo.client.core.edm.xml.SchemaImpl) schema).getFunctions(). add(jp.readValueAs(FunctionImpl.class)); } else if ("TypeDefinition".equals(jp.getCurrentName())) { jp.nextToken(); - ((org.apache.olingo.client.core.edm.xml.v4.SchemaImpl) schema). + ((org.apache.olingo.client.core.edm.xml.SchemaImpl) schema). getTypeDefinitions().add(jp.readValueAs(TypeDefinitionImpl.class)); } } else if ("Annotations".equals(jp.getCurrentName())) { jp.nextToken(); - ((org.apache.olingo.client.core.edm.xml.v4.SchemaImpl) schema).getAnnotationGroups(). - add(jp.readValueAs(org.apache.olingo.client.core.edm.xml.v4.AnnotationsImpl.class)); + ((org.apache.olingo.client.core.edm.xml.SchemaImpl) schema).getAnnotationGroups(). + add(jp.readValueAs(org.apache.olingo.client.core.edm.xml.AnnotationsImpl.class)); } else if ("Annotation".equals(jp.getCurrentName())) { jp.nextToken(); - ((org.apache.olingo.client.core.edm.xml.v4.SchemaImpl) schema).getAnnotations(). + ((org.apache.olingo.client.core.edm.xml.SchemaImpl) schema).getAnnotations(). add(jp.readValueAs(AnnotationImpl.class)); } else if ("Term".equals(jp.getCurrentName())) { jp.nextToken(); - ((org.apache.olingo.client.core.edm.xml.v4.SchemaImpl) schema).getTerms(). + ((org.apache.olingo.client.core.edm.xml.SchemaImpl) schema).getTerms(). add(jp.readValueAs(TermImpl.class)); } } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SchemaImpl.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SchemaImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SchemaImpl.java new file mode 100644 index 0000000..f44e558 --- /dev/null +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SchemaImpl.java @@ -0,0 +1,248 @@ +/* + * 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.client.core.edm.xml; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.olingo.client.api.edm.xml.Action; +import org.apache.olingo.client.api.edm.xml.ActionImport; +import org.apache.olingo.client.api.edm.xml.Annotatable; +import org.apache.olingo.client.api.edm.xml.Annotation; +import org.apache.olingo.client.api.edm.xml.Annotations; +import org.apache.olingo.client.api.edm.xml.ComplexType; +import org.apache.olingo.client.api.edm.xml.EntityContainer; +import org.apache.olingo.client.api.edm.xml.EntitySet; +import org.apache.olingo.client.api.edm.xml.EntityType; +import org.apache.olingo.client.api.edm.xml.EnumType; +import org.apache.olingo.client.api.edm.xml.Function; +import org.apache.olingo.client.api.edm.xml.FunctionImport; +import org.apache.olingo.client.api.edm.xml.Schema; +import org.apache.olingo.client.api.edm.xml.Singleton; +import org.apache.olingo.client.api.edm.xml.Term; +import org.apache.olingo.client.api.edm.xml.TypeDefinition; + +public class SchemaImpl extends AbstractSchema implements Schema { + + private static final long serialVersionUID = 1911087363912024939L; + + private final List<Action> actions = new ArrayList<Action>(); + + private final List<Annotations> annotationGroups = new ArrayList<Annotations>(); + + private final List<Annotation> annotations = new ArrayList<Annotation>(); + + private final List<ComplexType> complexTypes = new ArrayList<ComplexType>(); + + private EntityContainer entityContainer; + + private final List<EnumType> enumTypes = new ArrayList<EnumType>(); + + private final List<EntityType> entityTypes = new ArrayList<EntityType>(); + + private final List<Function> functions = new ArrayList<Function>(); + + private final List<Term> terms = new ArrayList<Term>(); + + private final List<TypeDefinition> typeDefinitions = new ArrayList<TypeDefinition>(); + + private Map<String, Annotatable> annotatables; + + @Override + public List<Action> getActions() { + return actions; + } + + @Override + public List<Action> getActions(final String name) { + return getAllByName(name, getActions()); + } + + @Override + public List<Annotations> getAnnotationGroups() { + return annotationGroups; + } + + @Override + public Annotations getAnnotationGroup(final String target) { + Annotations result = null; + for (Annotations annots : getAnnotationGroups()) { + if (target.equals(annots.getTarget())) { + result = annots; + } + } + return result; + } + + @Override + public Annotation getAnnotation(final String term) { + Annotation result = null; + for (Annotation annot : getAnnotations()) { + if (term.equals(annot.getTerm())) { + result = annot; + } + } + return result; + } + + @Override + public List<Annotation> getAnnotations() { + return annotations; + } + + @Override + public List<Function> getFunctions() { + return functions; + } + + @Override + public List<Function> getFunctions(final String name) { + return getAllByName(name, getFunctions()); + } + + @Override + public Term getTerm(final String name) { + return getOneByName(name, getTerms()); + } + + @Override + public List<Term> getTerms() { + return terms; + } + + @Override + public TypeDefinition getTypeDefinition(final String name) { + return getOneByName(name, getTypeDefinitions()); + } + + @Override + public List<TypeDefinition> getTypeDefinitions() { + return typeDefinitions; + } + + @Override + public EntityContainer getEntityContainer() { + return entityContainer; + } + + public void setEntityContainer(final EntityContainerImpl entityContainer) { + this.entityContainer = entityContainer; + } + + @Override + public List<EntityContainer> getEntityContainers() { + return entityContainer == null + ? Collections.<EntityContainer>emptyList() : Collections.singletonList(entityContainer); + } + + @Override + public EntityContainer getDefaultEntityContainer() { + return entityContainer; + } + + @Override + public EntityContainer getEntityContainer(final String name) { + if (entityContainer != null && name.equals(entityContainer.getName())) { + return entityContainer; + } + return null; + } + + @Override + public List<EnumType> getEnumTypes() { + return enumTypes; + } + + @Override + public ComplexType getComplexType(final String name) { + return (ComplexType) super.getComplexType(name); + } + + @Override + public List<ComplexType> getComplexTypes() { + return complexTypes; + } + + @Override + public EntityType getEntityType(final String name) { + return (EntityType) super.getEntityType(name); + } + + @Override + public List<EntityType> getEntityTypes() { + return entityTypes; + } + + @Override + public Map<String, Annotatable> getAnnotatables() { + if (annotatables == null) { + annotatables = new HashMap<String, Annotatable>(); + for (Annotations annotationGroup : getAnnotationGroups()) { + annotatables.put(null, annotationGroup); + } + for (Annotation annotation : getAnnotations()) { + annotatables.put(annotation.getTerm(), annotation); + } + for (Action action : getActions()) { + annotatables.put(action.getName(), action); + } + for (ComplexType complexType : getComplexTypes()) { + annotatables.put(complexType.getName(), complexType); + } + for (EntityType entityType : getEntityTypes()) { + annotatables.put(entityType.getName(), entityType); + } + for (EnumType enumType : getEnumTypes()) { + annotatables.put(enumType.getName(), (EnumTypeImpl) enumType); + } + for (Function function : getFunctions()) { + annotatables.put(function.getName(), function); + } + for (Term term : getTerms()) { + annotatables.put(term.getName(), term); + } + for (TypeDefinition typedef : getTypeDefinitions()) { + annotatables.put(typedef.getName(), typedef); + } + if (entityContainer != null) { + annotatables.put(entityContainer.getName(), entityContainer); + for (Annotation annotation : entityContainer.getAnnotations()) { + annotatables.put(annotation.getTerm(), annotation); + } + for (ActionImport actionImport : entityContainer.getActionImports()) { + annotatables.put(actionImport.getName(), actionImport); + } + for (FunctionImport functionImport : entityContainer.getFunctionImports()) { + annotatables.put(functionImport.getName(), functionImport); + } + for (EntitySet entitySet : entityContainer.getEntitySets()) { + annotatables.put(entitySet.getName(), entitySet); + } + for (Singleton singleton : entityContainer.getSingletons()) { + annotatables.put(singleton.getName(), singleton); + } + } + } + return annotatables; + } + +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SingletonDeserializer.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SingletonDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SingletonDeserializer.java new file mode 100644 index 0000000..1bc3b2d --- /dev/null +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SingletonDeserializer.java @@ -0,0 +1,57 @@ +/* + * 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.client.core.edm.xml; + +import java.io.IOException; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.databind.DeserializationContext; + +public class SingletonDeserializer extends AbstractEdmDeserializer<SingletonImpl> { + + @Override + protected SingletonImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt) + throws IOException, JsonProcessingException { + + final SingletonImpl singleton = new SingletonImpl(); + + for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) { + final JsonToken token = jp.getCurrentToken(); + if (token == JsonToken.FIELD_NAME) { + if ("Name".equals(jp.getCurrentName())) { + singleton.setName(jp.nextTextValue()); + } else if ("Type".equals(jp.getCurrentName())) { + singleton.setEntityType(jp.nextTextValue()); + } else if ("NavigationPropertyBinding".equals(jp.getCurrentName())) { + jp.nextToken(); + singleton.getNavigationPropertyBindings().add( + jp.readValueAs(NavigationPropertyBindingImpl.class)); + } else if ("Annotation".equals(jp.getCurrentName())) { + jp.nextToken(); + singleton.getAnnotations().add(jp.readValueAs(AnnotationImpl.class)); + } + } + } + + return singleton; + } + +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SingletonImpl.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SingletonImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SingletonImpl.java new file mode 100644 index 0000000..ea26cf5 --- /dev/null +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SingletonImpl.java @@ -0,0 +1,69 @@ +/* + * 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.client.core.edm.xml; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.olingo.client.api.edm.xml.NavigationPropertyBinding; +import org.apache.olingo.client.api.edm.xml.Singleton; + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; + +@JsonDeserialize(using = SingletonDeserializer.class) +public class SingletonImpl extends AbstractAnnotatable implements Singleton { + + private static final long serialVersionUID = 1656749615107151921L; + + private String name; + + private String entityType; + + private final List<NavigationPropertyBinding> navigationPropertyBindings = new ArrayList<NavigationPropertyBinding>(); + + @Override + public String getName() { + return name; + } + + public void setName(final String name) { + this.name = name; + } + + @Override + public String getEntityType() { + return entityType; + } + + public void setEntityType(final String entityType) { + this.entityType = entityType; + } + + @Override + public List<NavigationPropertyBinding> getNavigationPropertyBindings() { + return navigationPropertyBindings; + } + + //TODO: includeInServiceDocument is always false for singletons + @Override + public boolean isIncludeInServiceDocument() { + return false; + } + +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/TermDeserializer.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/TermDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/TermDeserializer.java new file mode 100644 index 0000000..084c62f --- /dev/null +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/TermDeserializer.java @@ -0,0 +1,79 @@ +/* + * 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.client.core.edm.xml; + +import java.io.IOException; +import java.util.Arrays; + +import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.olingo.commons.api.edm.geo.SRID; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.databind.DeserializationContext; + +public class TermDeserializer extends AbstractEdmDeserializer<TermImpl> { + + @Override + protected TermImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt) + throws IOException, JsonProcessingException { + + final TermImpl term = new TermImpl(); + + for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) { + final JsonToken token = jp.getCurrentToken(); + if (token == JsonToken.FIELD_NAME) { + if ("Name".equals(jp.getCurrentName())) { + term.setName(jp.nextTextValue()); + } else if ("Type".equals(jp.getCurrentName())) { + term.setType(jp.nextTextValue()); + } else if ("BaseTerm".equals(jp.getCurrentName())) { + term.setBaseTerm(jp.nextTextValue()); + } else if ("DefaultValue".equals(jp.getCurrentName())) { + term.setDefaultValue(jp.nextTextValue()); + } else if ("Nullable".equals(jp.getCurrentName())) { + term.setNullable(BooleanUtils.toBoolean(jp.nextTextValue())); + } else if ("MaxLength".equals(jp.getCurrentName())) { + final String maxLenght = jp.nextTextValue(); + term.setMaxLength(maxLenght.equalsIgnoreCase("max") ? Integer.MAX_VALUE : Integer.valueOf(maxLenght)); + } else if ("Precision".equals(jp.getCurrentName())) { + term.setPrecision(Integer.valueOf(jp.nextTextValue())); + } else if ("Scale".equals(jp.getCurrentName())) { + final String scale = jp.nextTextValue(); + term.setScale(scale.equalsIgnoreCase("variable") ? 0 : Integer.valueOf(scale)); + } else if ("SRID".equals(jp.getCurrentName())) { + final String srid = jp.nextTextValue(); + if (srid != null) { + term.setSrid(SRID.valueOf(srid)); + } + } else if ("AppliesTo".equals(jp.getCurrentName())) { + term.getAppliesTo().addAll(Arrays.asList(StringUtils.split(jp.nextTextValue()))); + } else if ("Annotation".equals(jp.getCurrentName())) { + jp.nextToken(); + term.getAnnotations().add(jp.readValueAs(AnnotationImpl.class)); + } + } + } + + return term; + } + +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/TermImpl.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/TermImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/TermImpl.java new file mode 100644 index 0000000..a9212aa --- /dev/null +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/TermImpl.java @@ -0,0 +1,140 @@ +/* + * 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.client.core.edm.xml; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.olingo.client.api.edm.xml.Term; +import org.apache.olingo.commons.api.edm.geo.SRID; + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; + +@JsonDeserialize(using = TermDeserializer.class) +public class TermImpl extends AbstractAnnotatable implements Term { + + private static final long serialVersionUID = -8350072064720586186L; + + private String name; + + private String type; + + private String baseTerm; + + private String defaultValue; + + private boolean nullable = true; + + private Integer maxLength; + + private Integer precision; + + private Integer scale; + + private SRID srid; + + private final List<String> appliesTo = new ArrayList<String>(); + + @Override + public String getName() { + return name; + } + + public void setName(final String name) { + this.name = name; + } + + @Override + public String getType() { + return type; + } + + public void setType(final String type) { + this.type = type; + } + + @Override + public String getBaseTerm() { + return baseTerm; + } + + public void setBaseTerm(final String baseTerm) { + this.baseTerm = baseTerm; + } + + @Override + public String getDefaultValue() { + return defaultValue; + } + + public void setDefaultValue(final String defaultValue) { + this.defaultValue = defaultValue; + } + + @Override + public boolean isNullable() { + return nullable; + } + + public void setNullable(final boolean nullable) { + this.nullable = nullable; + } + + @Override + public Integer getMaxLength() { + return maxLength; + } + + public void setMaxLength(final Integer maxLength) { + this.maxLength = maxLength; + } + + @Override + public Integer getPrecision() { + return precision; + } + + public void setPrecision(final Integer precision) { + this.precision = precision; + } + + @Override + public Integer getScale() { + return scale; + } + + public void setScale(final Integer scale) { + this.scale = scale; + } + + @Override + public SRID getSrid() { + return srid; + } + + public void setSrid(final SRID srid) { + this.srid = srid; + } + + @Override + public List<String> getAppliesTo() { + return appliesTo; + } + +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/TypeDefinitionDeserializer.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/TypeDefinitionDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/TypeDefinitionDeserializer.java new file mode 100644 index 0000000..551a3c7 --- /dev/null +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/TypeDefinitionDeserializer.java @@ -0,0 +1,70 @@ +/* + * 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.client.core.edm.xml; + +import java.io.IOException; + +import org.apache.commons.lang3.BooleanUtils; +import org.apache.olingo.commons.api.edm.geo.SRID; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.databind.DeserializationContext; + +public class TypeDefinitionDeserializer extends AbstractEdmDeserializer<TypeDefinitionImpl> { + + @Override + protected TypeDefinitionImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt) + throws IOException, JsonProcessingException { + + final TypeDefinitionImpl typeDefinition = new TypeDefinitionImpl(); + + for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) { + final JsonToken token = jp.getCurrentToken(); + if (token == JsonToken.FIELD_NAME) { + if ("Name".equals(jp.getCurrentName())) { + typeDefinition.setName(jp.nextTextValue()); + } else if ("UnderlyingType".equals(jp.getCurrentName())) { + typeDefinition.setUnderlyingType(jp.nextTextValue()); + } else if ("MaxLength".equals(jp.getCurrentName())) { + typeDefinition.setMaxLength(jp.nextIntValue(0)); + } else if ("Unicode".equals(jp.getCurrentName())) { + typeDefinition.setUnicode(BooleanUtils.toBoolean(jp.nextTextValue())); + } else if ("Precision".equals(jp.getCurrentName())) { + typeDefinition.setPrecision(jp.nextIntValue(0)); + } else if ("Scale".equals(jp.getCurrentName())) { + final String scale = jp.nextTextValue(); + typeDefinition.setScale(scale.equalsIgnoreCase("variable") ? 0 : Integer.valueOf(scale)); + } else if ("SRID".equals(jp.getCurrentName())) { + final String srid = jp.nextTextValue(); + if (srid != null) { + typeDefinition.setSrid(SRID.valueOf(srid)); + } + } else if ("Annotation".equals(jp.getCurrentName())) { + jp.nextToken(); + typeDefinition.getAnnotations().add(jp.readValueAs(AnnotationImpl.class)); + } + } + } + + return typeDefinition; + } + +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/TypeDefinitionImpl.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/TypeDefinitionImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/TypeDefinitionImpl.java new file mode 100644 index 0000000..0ec8b17 --- /dev/null +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/TypeDefinitionImpl.java @@ -0,0 +1,119 @@ +/* + * 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.client.core.edm.xml; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.olingo.client.api.edm.xml.Annotation; +import org.apache.olingo.client.api.edm.xml.TypeDefinition; +import org.apache.olingo.commons.api.edm.geo.SRID; + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; + +@JsonDeserialize(using = TypeDefinitionDeserializer.class) +public class TypeDefinitionImpl extends AbstractEdmItem implements TypeDefinition { + + private static final long serialVersionUID = -902407149079419602L; + + private String name; + + private String underlyingType; + + private Integer maxLength; + + private Integer precision; + + private Integer scale; + + private boolean unicode = true; + + private SRID srid; + + private final List<Annotation> annotations = new ArrayList<Annotation>(); + + @Override + public String getName() { + return name; + } + + public void setName(final String name) { + this.name = name; + } + + @Override + public String getUnderlyingType() { + return underlyingType; + } + + public void setUnderlyingType(final String underlyingType) { + this.underlyingType = underlyingType; + } + + @Override + public Integer getMaxLength() { + return maxLength; + } + + public void setMaxLength(final Integer maxLength) { + this.maxLength = maxLength; + } + + @Override + public Integer getPrecision() { + return precision; + } + + public void setPrecision(final Integer precision) { + this.precision = precision; + } + + @Override + public Integer getScale() { + return scale; + } + + public void setScale(final Integer scale) { + this.scale = scale; + } + + @Override + public boolean isUnicode() { + return unicode; + } + + public void setUnicode(final boolean unicode) { + this.unicode = unicode; + } + + @Override + public SRID getSrid() { + return srid; + } + + public void setSrid(final SRID srid) { + this.srid = srid; + } + + @Override + public List<Annotation> getAnnotations() { + return annotations; + } + +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/XMLMetadataImpl.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/XMLMetadataImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/XMLMetadataImpl.java new file mode 100644 index 0000000..35de525 --- /dev/null +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/XMLMetadataImpl.java @@ -0,0 +1,56 @@ +/* + * 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.client.core.edm.xml; + +import java.util.List; + +import org.apache.olingo.client.api.edm.xml.Edmx; +import org.apache.olingo.client.api.edm.xml.Reference; +import org.apache.olingo.client.api.edm.xml.Schema; +import org.apache.olingo.client.api.edm.xml.XMLMetadata; + +public class XMLMetadataImpl extends AbstractXMLMetadata implements XMLMetadata { + + private static final long serialVersionUID = 6025723060298454901L; + + public XMLMetadataImpl(final EdmxImpl edmx) { + super(edmx); + } + + @Override + @SuppressWarnings("unchecked") + public List<Schema> getSchemas() { + return (List<Schema>) super.getSchemas(); + } + + @Override + public Schema getSchema(final int index) { + return (Schema) super.getSchema(index); + } + + @Override + public Schema getSchema(final String key) { + return (Schema) super.getSchema(key); + } + + @Override + public List<Reference> getReferences() { + return ((Edmx) this.edmx).getReferences(); + } +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/annotation/AbstractAnnotatableDynamicAnnotationExpression.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/annotation/AbstractAnnotatableDynamicAnnotationExpression.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/annotation/AbstractAnnotatableDynamicAnnotationExpression.java new file mode 100644 index 0000000..da9691e --- /dev/null +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/annotation/AbstractAnnotatableDynamicAnnotationExpression.java @@ -0,0 +1,38 @@ +/* + * 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.client.core.edm.xml.annotation; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.olingo.client.api.edm.xml.Annotatable; +import org.apache.olingo.client.api.edm.xml.Annotation; + +abstract class AbstractAnnotatableDynamicAnnotationExpression + extends AbstractDynamicAnnotationExpression implements Annotatable { + + private static final long serialVersionUID = -450668773857358139L; + + private final List<Annotation> annotations = new ArrayList<Annotation>(); + + @Override + public List<Annotation> getAnnotations() { + return annotations; + } +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/annotation/AbstractAnnotationExpression.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/annotation/AbstractAnnotationExpression.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/annotation/AbstractAnnotationExpression.java new file mode 100644 index 0000000..82c0a3d --- /dev/null +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/annotation/AbstractAnnotationExpression.java @@ -0,0 +1,49 @@ +/* + * 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.client.core.edm.xml.annotation; + +import org.apache.olingo.client.api.edm.xml.annotation.AnnotationExpression; +import org.apache.olingo.client.api.edm.xml.annotation.ConstantAnnotationExpression; +import org.apache.olingo.client.api.edm.xml.annotation.DynamicAnnotationExpression; +import org.apache.olingo.client.core.edm.xml.AbstractEdmItem; + +public abstract class AbstractAnnotationExpression extends AbstractEdmItem implements AnnotationExpression { + + private static final long serialVersionUID = -4238652997159205377L; + + @Override + public boolean isConstant() { + return this instanceof ConstantAnnotationExpression; + } + + @Override + public ConstantAnnotationExpression asConstant() { + return isConstant() ? (ConstantAnnotationExpression) this : null; + } + + @Override + public boolean isDynamic() { + return this instanceof DynamicAnnotationExpression; + } + + @Override + public DynamicAnnotationExpression asDynamic() { + return isDynamic() ? (DynamicAnnotationExpression) this : null; + } +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/annotation/AbstractDynamicAnnotationExpression.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/annotation/AbstractDynamicAnnotationExpression.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/annotation/AbstractDynamicAnnotationExpression.java new file mode 100644 index 0000000..f94bac6 --- /dev/null +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/annotation/AbstractDynamicAnnotationExpression.java @@ -0,0 +1,218 @@ +/* + * 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.client.core.edm.xml.annotation; + +import org.apache.olingo.client.api.edm.xml.annotation.AnnotationPath; +import org.apache.olingo.client.api.edm.xml.annotation.Apply; +import org.apache.olingo.client.api.edm.xml.annotation.Cast; +import org.apache.olingo.client.api.edm.xml.annotation.Collection; +import org.apache.olingo.client.api.edm.xml.annotation.DynamicAnnotationExpression; +import org.apache.olingo.client.api.edm.xml.annotation.If; +import org.apache.olingo.client.api.edm.xml.annotation.IsOf; +import org.apache.olingo.client.api.edm.xml.annotation.LabeledElement; +import org.apache.olingo.client.api.edm.xml.annotation.LabeledElementReference; +import org.apache.olingo.client.api.edm.xml.annotation.NavigationPropertyPath; +import org.apache.olingo.client.api.edm.xml.annotation.Not; +import org.apache.olingo.client.api.edm.xml.annotation.Null; +import org.apache.olingo.client.api.edm.xml.annotation.Path; +import org.apache.olingo.client.api.edm.xml.annotation.PropertyPath; +import org.apache.olingo.client.api.edm.xml.annotation.PropertyValue; +import org.apache.olingo.client.api.edm.xml.annotation.Record; +import org.apache.olingo.client.api.edm.xml.annotation.TwoParamsOpDynamicAnnotationExpression; +import org.apache.olingo.client.api.edm.xml.annotation.UrlRef; + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; + +@JsonDeserialize(using = DynamicAnnotationExpressionDeserializer.class) +public abstract class AbstractDynamicAnnotationExpression + extends AbstractAnnotationExpression implements DynamicAnnotationExpression { + + private static final long serialVersionUID = 1093411847477874348L; + + @Override + public boolean isNot() { + return this instanceof Not; + } + + @Override + public Not asNot() { + return isNot() ? (Not) this : null; + + } + + @Override + public boolean isTwoParamsOp() { + return this instanceof TwoParamsOpDynamicAnnotationExpression; + } + + @Override + public TwoParamsOpDynamicAnnotationExpression asTwoParamsOp() { + return isTwoParamsOp() ? (TwoParamsOpDynamicAnnotationExpression) this : null; + } + + @Override + public boolean isAnnotationPath() { + return this instanceof AnnotationPath; + } + + @Override + public AnnotationPath asAnnotationPath() { + return isAnnotationPath() ? (AnnotationPath) this : null; + } + + @Override + public boolean isApply() { + return this instanceof Apply; + } + + @Override + public Apply asApply() { + return isApply() ? (Apply) this : null; + } + + @Override + public boolean isCast() { + return this instanceof Cast; + } + + @Override + public Cast asCast() { + return isCast() ? (Cast) this : null; + } + + @Override + public boolean isCollection() { + return this instanceof Collection; + } + + @Override + public Collection asCollection() { + return isCollection() ? (Collection) this : null; + } + + @Override + public boolean isIf() { + return this instanceof If; + } + + @Override + public If asIf() { + return isIf() ? (If) this : null; + } + + @Override + public boolean isIsOf() { + return this instanceof IsOf; + } + + @Override + public IsOf asIsOf() { + return isIsOf() ? (IsOf) this : null; + } + + @Override + public boolean isLabeledElement() { + return this instanceof LabeledElement; + } + + @Override + public LabeledElement asLabeledElement() { + return isLabeledElement() ? (LabeledElement) this : null; + } + + @Override + public boolean isLabeledElementReference() { + return this instanceof LabeledElementReference; + } + + @Override + public LabeledElementReference asLabeledElementReference() { + return isLabeledElementReference() ? (LabeledElementReference) this : null; + } + + @Override + public boolean isNull() { + return this instanceof Null; + } + + @Override + public Null asNull() { + return isNull() ? (Null) this : null; + } + + @Override + public boolean isNavigationPropertyPath() { + return this instanceof NavigationPropertyPath; + } + + @Override + public NavigationPropertyPath asNavigationPropertyPath() { + return isNavigationPropertyPath() ? (NavigationPropertyPath) this : null; + } + + @Override + public boolean isPath() { + return this instanceof Path; + } + + @Override + public Path asPath() { + return isPath() ? (Path) this : null; + } + + @Override + public boolean isPropertyPath() { + return this instanceof PropertyPath; + } + + @Override + public PropertyPath asPropertyPath() { + return isPropertyPath() ? (PropertyPath) this : null; + } + + @Override + public boolean isPropertyValue() { + return this instanceof PropertyValue; + } + + @Override + public PropertyValue asPropertyValue() { + return isPropertyValue() ? (PropertyValue) this : null; + } + + @Override + public boolean isRecord() { + return this instanceof Record; + } + + @Override + public Record asRecord() { + return isRecord() ? (Record) this : null; + } + + @Override + public boolean isUrlRef() { + return this instanceof UrlRef; + } + + @Override + public UrlRef asUrlRef() { + return isUrlRef() ? (UrlRef) this : null; + } +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/annotation/AbstractElementOrAttributeExpression.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/annotation/AbstractElementOrAttributeExpression.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/annotation/AbstractElementOrAttributeExpression.java new file mode 100644 index 0000000..8237fca --- /dev/null +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/annotation/AbstractElementOrAttributeExpression.java @@ -0,0 +1,37 @@ +/* + * 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.client.core.edm.xml.annotation; + +/** + * Groups dynamic expressions that may be provided using element notation or attribute notation. + */ +abstract class AbstractElementOrAttributeExpression extends AbstractDynamicAnnotationExpression { + + private static final long serialVersionUID = 1588336268773032932L; + + private String value; + + public String getValue() { + return value; + } + + public void setValue(final String value) { + this.value = value; + } +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/109c33ba/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/annotation/AnnotationPathImpl.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/annotation/AnnotationPathImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/annotation/AnnotationPathImpl.java new file mode 100644 index 0000000..0893613 --- /dev/null +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/annotation/AnnotationPathImpl.java @@ -0,0 +1,27 @@ +/* + * 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.client.core.edm.xml.annotation; + +import org.apache.olingo.client.api.edm.xml.annotation.AnnotationPath; + +public class AnnotationPathImpl extends AbstractElementOrAttributeExpression implements AnnotationPath { + + private static final long serialVersionUID = 5360735207353494466L; + +}
