You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by mi...@apache.org on 2015/09/10 21:15:39 UTC
olingo-odata4 git commit: [OLINGO-750] Fixed some critical issues
Repository: olingo-odata4
Updated Branches:
refs/heads/master 524dbebc4 -> 637ca00db
[OLINGO-750] Fixed some critical issues
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/637ca00d
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/637ca00d
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/637ca00d
Branch: refs/heads/master
Commit: 637ca00db7478c1ae780133a1abf9c4cdc99b546
Parents: 524dbeb
Author: mibo <mi...@apache.org>
Authored: Thu Sep 10 21:10:01 2015 +0200
Committer: mibo <mi...@apache.org>
Committed: Thu Sep 10 21:10:09 2015 +0200
----------------------------------------------------------------------
.../request/AbstractODataStreamer.java | 3 +-
.../apache/olingo/client/core/uri/URIUtils.java | 14 ++-------
.../olingo/server/core/MetadataParser.java | 32 +++++++++++---------
.../core/serializer/xml/ODataXmlSerializer.java | 10 ------
.../server/tecsvc/async/AsyncProcessor.java | 3 +-
5 files changed, 25 insertions(+), 37 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/637ca00d/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AbstractODataStreamer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AbstractODataStreamer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AbstractODataStreamer.java
index efc3c1a..c470916 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AbstractODataStreamer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/AbstractODataStreamer.java
@@ -21,6 +21,7 @@ package org.apache.olingo.client.core.communication.request;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PipedOutputStream;
+import java.util.Arrays;
import org.apache.olingo.client.api.communication.request.ODataStreamer;
import org.slf4j.Logger;
@@ -87,7 +88,7 @@ public abstract class AbstractODataStreamer implements ODataStreamer {
public Writer(final byte[] src, final OutputStream os) {
this.os = os;
- this.src = src;
+ this.src = Arrays.copyOf(src, src.length);
}
@Override
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/637ca00d/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java
index 9d52f5c..5d6c3fb 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java
@@ -61,8 +61,6 @@ import org.apache.olingo.commons.core.edm.primitivetype.EdmDuration;
import org.apache.olingo.commons.core.edm.primitivetype.EdmInt64;
import org.apache.olingo.commons.core.edm.primitivetype.EdmPrimitiveTypeFactory;
import org.apache.olingo.commons.core.edm.primitivetype.EdmSingle;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* URI utilities.
@@ -72,7 +70,7 @@ public final class URIUtils {
/**
* Logger.
*/
- private static final Logger LOG = LoggerFactory.getLogger(URIUtils.class);
+// private static final Logger LOG = LoggerFactory.getLogger(URIUtils.class);
private static final Pattern ENUM_VALUE = Pattern.compile("(.+\\.)?.+'.+'");
@@ -262,12 +260,7 @@ public final class URIUtils {
: obj.toString();
}
} catch (Exception e) {
- LOG.warn("While escaping '{}', using getName()", obj, e);
- if (obj == null) {
- value = "null";
- } else {
- value = obj.toString();
- }
+ value = obj.toString();
}
return value;
@@ -298,7 +291,7 @@ public final class URIUtils {
bytes = IOUtils.toByteArray(input);
IOUtils.closeQuietly(input);
} catch (IOException e) {
- LOG.error("While reading input for not chunked encoding", e);
+ throw new RuntimeException("While reading input for not chunked encoding", e);
}
entity = new ByteArrayEntity(bytes);
@@ -307,7 +300,6 @@ public final class URIUtils {
}
if (!useChunked && entity.getContentLength() < 0) {
- LOG.error("Could not determine length - request will be sent as chunked.");
useChunked = true;
}
// both entities can be sent in chunked way or not
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/637ca00d/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/MetadataParser.java
----------------------------------------------------------------------
diff --git a/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/MetadataParser.java b/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/MetadataParser.java
index 660db3f..b1427d6 100644
--- a/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/MetadataParser.java
+++ b/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/MetadataParser.java
@@ -20,7 +20,7 @@ package org.apache.olingo.server.core;
import java.io.Reader;
import java.util.ArrayList;
-import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
import javax.xml.namespace.QName;
@@ -33,6 +33,7 @@ import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;
import org.apache.olingo.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.commons.api.edm.geo.SRID;
import org.apache.olingo.commons.api.edm.provider.CsdlAction;
import org.apache.olingo.commons.api.edm.provider.CsdlActionImport;
import org.apache.olingo.commons.api.edm.provider.CsdlComplexType;
@@ -74,7 +75,7 @@ public class MetadataParser {
void build(XMLEventReader reader, StartElement element, SchemaBasedEdmProvider provider,
String name) throws XMLStreamException {
String version = attr(element, "Version");
- if (version.equals("4.0")) {
+ if ("4.0".equals(version)) {
readDataServicesAndReference(reader, element, provider);
}
}
@@ -140,10 +141,9 @@ public class MetadataParser {
throws XMLStreamException {
if (name.equals("Action")) {
readAction(reader, element, schema);
- } else if (name.equals("Annotations")) {
- // TODO:
- } else if (name.equals("Annotation")) {
- // TODO:
+// } else if (name.equals("Annotations")) {
+// } else if (name.equals("Annotation")) {
+ // TODO: Add support for annotations
} else if (name.equals("ComplexType")) {
readComplexType(reader, element, schema);
} else if (name.equals("EntityContainer")) {
@@ -182,7 +182,7 @@ public class MetadataParser {
private FullQualifiedName readType(StartElement element) {
String type = attr(element, "Type");
- if (type.startsWith("Collection(") && type.endsWith(")")) {
+ if (type != null && type.startsWith("Collection(") && type.endsWith(")")) {
return new FullQualifiedName(type.substring(11, type.length() - 1));
}
return new FullQualifiedName(type);
@@ -190,7 +190,7 @@ public class MetadataParser {
private boolean isCollectionType(StartElement element) {
String type = attr(element, "Type");
- if (type.startsWith("Collection(") && type.endsWith(")")) {
+ if (type != null && type.startsWith("Collection(") && type.endsWith(")")) {
return true;
}
return false;
@@ -217,6 +217,7 @@ public class MetadataParser {
String srid = attr(element, "SRID");
if (srid != null) {
// TODO: no olingo support yet.
+ returnType.setSrid(SRID.valueOf(srid));
}
operation.setReturnType(returnType);
}
@@ -243,6 +244,7 @@ public class MetadataParser {
String srid = attr(element, "SRID");
if (srid != null) {
// TODO: no olingo support yet.
+ parameter.setSrid(SRID.valueOf(srid));
}
operation.getParameters().add(parameter);
}
@@ -268,6 +270,7 @@ public class MetadataParser {
String srid = attr(element, "SRID");
if (srid != null) {
// TODO: no olingo support yet.
+ td.setSrid(SRID.valueOf(srid));
}
return td;
}
@@ -283,7 +286,7 @@ public class MetadataParser {
term.setDefaultValue(attr(element, "DefaultValue"));
}
if (attr(element, "AppliesTo") != null) {
- term.setAppliesTo(Arrays.asList(attr(element, "AppliesTo")));
+ term.setAppliesTo(Collections.singletonList(attr(element, "AppliesTo")));
}
term.setNullable(Boolean.parseBoolean(attr(element, "Nullable")));
String maxLength = attr(element, "MaxLength");
@@ -301,6 +304,7 @@ public class MetadataParser {
String srid = attr(element, "SRID");
if (srid != null) {
// TODO: no olingo support yet.
+ term.setSrid(SRID.valueOf(srid));
}
return term;
}
@@ -473,6 +477,7 @@ public class MetadataParser {
String srid = attr(element, "SRID");
if (srid != null) {
// TODO: no olingo support yet.
+ property.setSrid(SRID.valueOf(srid));
}
String defaultValue = attr(element, "DefaultValue");
if (defaultValue != null) {
@@ -570,7 +575,6 @@ public class MetadataParser {
}
}.read(reader, element, bindings, "NavigationPropertyBinding");
- ;
}
}.read(reader, element, schema, "EntitySet", "Singleton", "ActionImport", "FunctionImport");
schema.setEntityContainer(container);
@@ -622,19 +626,19 @@ public class MetadataParser {
boolean hit = false;
- for (int i = 0; i < names.length; i++) {
+ for (String name : names) {
if (event.isStartElement()) {
element = event.asStartElement();
- if (element.getName().getLocalPart().equals(names[i])) {
+ if (element.getName().getLocalPart().equals(name)) {
reader.nextEvent(); // advance cursor
// System.out.println("reading = "+names[i]);
- build(reader, element, t, names[i]);
+ build(reader, element, t, name);
hit = true;
}
}
if (event.isEndElement()) {
EndElement e = event.asEndElement();
- if (e.getName().getLocalPart().equals(names[i])) {
+ if (e.getName().getLocalPart().equals(name)) {
reader.nextEvent(); // advance cursor
// System.out.println("done reading = "+names[i]);
hit = true;
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/637ca00d/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/ODataXmlSerializer.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/ODataXmlSerializer.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/ODataXmlSerializer.java
index 1ebd01a..cdcace0 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/ODataXmlSerializer.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/ODataXmlSerializer.java
@@ -752,16 +752,6 @@ public class ODataXmlSerializer extends AbstractODataSerializer {
isNullable, maxLength, precision, scale, isUnicode);
if (value == null) {
writer.writeAttribute(DATA, NS_DATA, "null", "true");
- } else if (type == EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Byte)
- || type == EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Boolean)
- || type == EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Decimal)
- || type == EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Double)
- || type == EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Int16)
- || type == EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Int32)
- || type == EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Int64)
- || type == EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.SByte)
- || type == EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Single)) {
- writer.writeCharacters(value);
} else {
writer.writeCharacters(value);
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/637ca00d/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/async/AsyncProcessor.java
----------------------------------------------------------------------
diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/async/AsyncProcessor.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/async/AsyncProcessor.java
index 4e07083..9ce3766 100644
--- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/async/AsyncProcessor.java
+++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/async/AsyncProcessor.java
@@ -39,6 +39,7 @@ import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
import java.nio.channels.WritableByteChannel;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import java.util.Map;
@@ -73,7 +74,7 @@ public class AsyncProcessor<T extends Processor> {
public Object invoke(Object o, Method method, Object[] objects) throws Throwable {
if (Processor.class.isAssignableFrom(method.getDeclaringClass())) {
invokeMethod = method;
- invokeParameters = objects;
+ invokeParameters = Arrays.copyOf(objects, objects.length);
} else {
throw new ODataRuntimeException("Invalid class '" + method.getDeclaringClass() +
"' can not wrapped for asynchronous processing.");