You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by md...@apache.org on 2012/10/04 23:13:45 UTC
svn commit: r1394270 - in
/jackrabbit/oak/trunk/oak-http/src/main/java/org/apache/jackrabbit/oak/http:
JsonRepresentation.java PostRepresentation.java
Author: mduerig
Date: Thu Oct 4 21:13:45 2012
New Revision: 1394270
URL: http://svn.apache.org/viewvc?rev=1394270&view=rev
Log:
OAK-350: Unify PropertyState and CoreValue
- Replace CoreValue.getString with PropertyState.getValue(Type)
Modified:
jackrabbit/oak/trunk/oak-http/src/main/java/org/apache/jackrabbit/oak/http/JsonRepresentation.java
jackrabbit/oak/trunk/oak-http/src/main/java/org/apache/jackrabbit/oak/http/PostRepresentation.java
Modified: jackrabbit/oak/trunk/oak-http/src/main/java/org/apache/jackrabbit/oak/http/JsonRepresentation.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-http/src/main/java/org/apache/jackrabbit/oak/http/JsonRepresentation.java?rev=1394270&r1=1394269&r2=1394270&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-http/src/main/java/org/apache/jackrabbit/oak/http/JsonRepresentation.java (original)
+++ jackrabbit/oak/trunk/oak-http/src/main/java/org/apache/jackrabbit/oak/http/JsonRepresentation.java Thu Oct 4 21:13:45 2012
@@ -19,17 +19,29 @@ package org.apache.jackrabbit.oak.http;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.math.BigDecimal;
-import javax.jcr.PropertyType;
import javax.servlet.http.HttpServletResponse;
-import org.apache.jackrabbit.oak.api.CoreValue;
+import com.fasterxml.jackson.core.JsonFactory;
+import com.fasterxml.jackson.core.JsonGenerator;
+import org.apache.jackrabbit.oak.api.Blob;
import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.api.Type;
import org.apache.tika.mime.MediaType;
-import com.fasterxml.jackson.core.JsonFactory;
-import com.fasterxml.jackson.core.JsonGenerator;
+import static org.apache.jackrabbit.oak.api.Type.BINARIES;
+import static org.apache.jackrabbit.oak.api.Type.BINARY;
+import static org.apache.jackrabbit.oak.api.Type.BOOLEAN;
+import static org.apache.jackrabbit.oak.api.Type.BOOLEANS;
+import static org.apache.jackrabbit.oak.api.Type.DECIMAL;
+import static org.apache.jackrabbit.oak.api.Type.DECIMALS;
+import static org.apache.jackrabbit.oak.api.Type.DOUBLE;
+import static org.apache.jackrabbit.oak.api.Type.DOUBLES;
+import static org.apache.jackrabbit.oak.api.Type.LONG;
+import static org.apache.jackrabbit.oak.api.Type.LONGS;
+import static org.apache.jackrabbit.oak.api.Type.STRINGS;
class JsonRepresentation implements Representation {
@@ -47,6 +59,7 @@ class JsonRepresentation implements Repr
return type;
}
+ @Override
public void render(Tree tree, HttpServletResponse response)
throws IOException {
JsonGenerator generator = startResponse(response);
@@ -54,6 +67,7 @@ class JsonRepresentation implements Repr
generator.close();
}
+ @Override
public void render(PropertyState property, HttpServletResponse response)
throws IOException {
JsonGenerator generator = startResponse(response);
@@ -67,7 +81,7 @@ class JsonRepresentation implements Repr
return factory.createJsonGenerator(response.getOutputStream());
}
- private void render(Tree tree, JsonGenerator generator)
+ private static void render(Tree tree, JsonGenerator generator)
throws IOException {
generator.writeStartObject();
for (PropertyState property : tree.getProperties()) {
@@ -82,46 +96,57 @@ class JsonRepresentation implements Repr
generator.writeEndObject();
}
- private void render(PropertyState property, JsonGenerator generator)
+ private static void render(PropertyState property, JsonGenerator generator)
throws IOException {
if (property.isArray()) {
generator.writeStartArray();
- for (CoreValue value : property.getValues()) {
- render(value, generator);
- }
+ renderValue(property, generator);
generator.writeEndArray();
} else {
- render(property.getValue(), generator);
+ renderValue(property, generator);
}
}
- private void render(CoreValue value, JsonGenerator generator)
+ private static void renderValue(PropertyState property, JsonGenerator generator)
throws IOException {
// TODO: Type info?
- if (value.getType() == PropertyType.BOOLEAN) {
- generator.writeBoolean(value.getBoolean());
- } else if (value.getType() == PropertyType.DECIMAL) {
- generator.writeNumber(value.getDecimal());
- } else if (value.getType() == PropertyType.DOUBLE) {
- generator.writeNumber(value.getDouble());
- } else if (value.getType() == PropertyType.LONG) {
- generator.writeNumber(value.getLong());
- } else if (value.getType() == PropertyType.BINARY) {
+ Type<?> type = property.getType();
+ if (BOOLEAN.equals(type)) {
+ for (boolean value : property.getValue(BOOLEANS)) {
+ generator.writeBoolean(value);
+ }
+ } else if (DECIMAL.equals(type)) {
+ for (BigDecimal value : property.getValue(DECIMALS)) {
+ generator.writeNumber(value);
+ }
+ } else if (DOUBLE.equals(type)) {
+ for (double value : property.getValue(DOUBLES)) {
+ generator.writeNumber(value);
+ }
+ } else if (LONG.equals(type)) {
+ for (long value : property.getValue(LONGS)) {
+ generator.writeNumber(value);
+ }
+ } else if (BINARY.equals(type)) {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
- InputStream stream = value.getNewStream();
- try {
- byte[] b = new byte[1024];
- int n = stream.read(b);
- while (n != -1) {
- buffer.write(b, 0, n);
- n = stream.read(b);
+ for (Blob value : property.getValue(BINARIES)) {
+ InputStream stream = value.getNewStream();
+ try {
+ byte[] b = new byte[1024];
+ int n = stream.read(b);
+ while (n != -1) {
+ buffer.write(b, 0, n);
+ n = stream.read(b);
+ }
+ } finally {
+ stream.close();
}
- } finally {
- stream.close();
+ generator.writeBinary(buffer.toByteArray());
}
- generator.writeBinary(buffer.toByteArray());
} else {
- generator.writeString(value.getString());
+ for (String value : property.getValue(STRINGS)) {
+ generator.writeString(value);
+ }
}
}
Modified: jackrabbit/oak/trunk/oak-http/src/main/java/org/apache/jackrabbit/oak/http/PostRepresentation.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-http/src/main/java/org/apache/jackrabbit/oak/http/PostRepresentation.java?rev=1394270&r1=1394269&r2=1394270&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-http/src/main/java/org/apache/jackrabbit/oak/http/PostRepresentation.java (original)
+++ jackrabbit/oak/trunk/oak-http/src/main/java/org/apache/jackrabbit/oak/http/PostRepresentation.java Thu Oct 4 21:13:45 2012
@@ -23,11 +23,13 @@ import java.net.URLEncoder;
import javax.servlet.http.HttpServletResponse;
-import org.apache.jackrabbit.oak.api.CoreValue;
import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.api.Tree;
import org.apache.tika.mime.MediaType;
+import static org.apache.jackrabbit.oak.api.Type.STRING;
+import static org.apache.jackrabbit.oak.api.Type.STRINGS;
+
class PostRepresentation implements Representation {
private static final MediaType TYPE =
@@ -40,6 +42,7 @@ class PostRepresentation implements Repr
return TYPE;
}
+ @Override
public void render(Tree tree, HttpServletResponse response)
throws IOException {
PrintWriter writer = startResponse(response);
@@ -48,39 +51,38 @@ class PostRepresentation implements Repr
for (PropertyState property : tree.getProperties()) {
String name = property.getName();
if (property.isArray()) {
- for (CoreValue value : property.getValues()) {
+ for (String value : property.getValue(STRINGS)) {
first = render(first, name, value, writer);
}
} else {
- CoreValue value = property.getValue();
- first = render(first, name, value, writer);
+ first = render(first, name, property.getValue(STRING), writer);
}
}
}
+ @Override
public void render(PropertyState property, HttpServletResponse response)
throws IOException {
PrintWriter writer = startResponse(response);
if (property.isArray()) {
- for (CoreValue value : property.getValues()) {
+ for (String value : property.getValue(STRINGS)) {
render(value, writer);
writer.print('\n');
}
} else {
- render(property.getValue(), writer);
+ render(property.getValue(STRING), writer);
}
}
- private PrintWriter startResponse(HttpServletResponse response)
+ private static PrintWriter startResponse(HttpServletResponse response)
throws IOException {
response.setContentType(TYPE.toString());
response.setCharacterEncoding(ENCODING);
return response.getWriter();
}
- private boolean render(
- boolean first, String name, CoreValue value, PrintWriter writer)
- throws UnsupportedEncodingException {
+ private static boolean render(
+ boolean first, String name, String value, PrintWriter writer) {
if (!first) {
writer.print('&');
}
@@ -90,11 +92,7 @@ class PostRepresentation implements Repr
return false;
}
- private void render(CoreValue value, PrintWriter writer) {
- render(value.getString(), writer);
- }
-
- private void render(String string, PrintWriter writer) {
+ private static void render(String string, PrintWriter writer) {
try {
writer.print(URLEncoder.encode(string, ENCODING));
} catch (UnsupportedEncodingException e) {