You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by gb...@apache.org on 2010/08/28 14:28:07 UTC
svn commit: r990353 - in /pivot/trunk: core/src/org/apache/pivot/json/
core/src/org/apache/pivot/serialization/ core/src/org/apache/pivot/sql/
tests/src/org/apache/pivot/tests/sql/
tutorials-server/src/org/apache/pivot/tutorials/webqueries/server/ tuto...
Author: gbrown
Date: Sat Aug 28 12:28:07 2010
New Revision: 990353
URL: http://svn.apache.org/viewvc?rev=990353&view=rev
Log:
Allow caller to specify CSVSerializer keys using varargs; support parameterized types in CSVSerializer and move type definition to constructor for consistency with JSONSerializer; update ResultList API for consistency with CSVSerializer key specification API.
Modified:
pivot/trunk/core/src/org/apache/pivot/json/JSONSerializer.java
pivot/trunk/core/src/org/apache/pivot/serialization/CSVSerializer.java
pivot/trunk/core/src/org/apache/pivot/sql/ResultList.java
pivot/trunk/tests/src/org/apache/pivot/tests/sql/ResultListTest.java
pivot/trunk/tutorials-server/src/org/apache/pivot/tutorials/webqueries/server/ExpenseServlet.java
pivot/trunk/tutorials/src/org/apache/pivot/tutorials/stocktracker/StockTrackerWindow.java
Modified: pivot/trunk/core/src/org/apache/pivot/json/JSONSerializer.java
URL: http://svn.apache.org/viewvc/pivot/trunk/core/src/org/apache/pivot/json/JSONSerializer.java?rev=990353&r1=990352&r2=990353&view=diff
==============================================================================
--- pivot/trunk/core/src/org/apache/pivot/json/JSONSerializer.java (original)
+++ pivot/trunk/core/src/org/apache/pivot/json/JSONSerializer.java Sat Aug 28 12:28:07 2010
@@ -52,21 +52,24 @@ public class JSONSerializer implements S
private Charset charset;
private Type type;
- private int c = -1;
private boolean alwaysDelimitMapKeys = false;
private boolean verbose = false;
+ private int c = -1;
+
public static final String DEFAULT_CHARSET_NAME = "UTF-8";
+ public static final Type DEFAULT_TYPE = Object.class;
+
public static final String JSON_EXTENSION = "json";
public static final String MIME_TYPE = "application/json";
public static final int BUFFER_SIZE = 2048;
public JSONSerializer() {
- this(Charset.forName(DEFAULT_CHARSET_NAME), Object.class);
+ this(Charset.forName(DEFAULT_CHARSET_NAME), DEFAULT_TYPE);
}
public JSONSerializer(Charset charset) {
- this(charset, Object.class);
+ this(charset, DEFAULT_TYPE);
}
public JSONSerializer(Type type) {
@@ -78,6 +81,10 @@ public class JSONSerializer implements S
throw new IllegalArgumentException("charset is null.");
}
+ if (type == null) {
+ throw new IllegalArgumentException("type is null.");
+ }
+
this.charset = charset;
this.type = type;
}
Modified: pivot/trunk/core/src/org/apache/pivot/serialization/CSVSerializer.java
URL: http://svn.apache.org/viewvc/pivot/trunk/core/src/org/apache/pivot/serialization/CSVSerializer.java?rev=990353&r1=990352&r2=990353&view=diff
==============================================================================
--- pivot/trunk/core/src/org/apache/pivot/serialization/CSVSerializer.java (original)
+++ pivot/trunk/core/src/org/apache/pivot/serialization/CSVSerializer.java Sat Aug 28 12:28:07 2010
@@ -26,10 +26,13 @@ import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
import java.nio.charset.Charset;
import java.util.NoSuchElementException;
import org.apache.pivot.beans.BeanAdapter;
+import org.apache.pivot.collections.ArrayAdapter;
import org.apache.pivot.collections.ArrayList;
import org.apache.pivot.collections.Dictionary;
import org.apache.pivot.collections.HashMap;
@@ -83,61 +86,93 @@ public class CSVSerializer implements Se
}
private Charset charset;
+ private Type itemType;
- int c = -1;
private ArrayList<String> keys = new ArrayList<String>();
- private Class<?> itemClass = HashMap.class;
+
private boolean writeKeys = false;
private boolean verbose = false;
+ int c = -1;
+
public static final String DEFAULT_CHARSET_NAME = "ISO-8859-1";
+ public static final Type DEFAULT_ITEM_TYPE = HashMap.class;
+
public static final String CSV_EXTENSION = "csv";
public static final String MIME_TYPE = "text/csv";
public static final int BUFFER_SIZE = 2048;
public CSVSerializer() {
- this(Charset.forName(DEFAULT_CHARSET_NAME));
+ this(Charset.forName(DEFAULT_CHARSET_NAME), DEFAULT_ITEM_TYPE);
}
public CSVSerializer(Charset charset) {
+ this(charset, DEFAULT_ITEM_TYPE);
+ }
+
+ public CSVSerializer(Type itemType) {
+ this(Charset.forName(DEFAULT_CHARSET_NAME), itemType);
+ }
+
+ public CSVSerializer(Charset charset, Type itemType) {
if (charset == null) {
throw new IllegalArgumentException("charset is null.");
}
+ if (itemType == null) {
+ throw new IllegalArgumentException("itemType is null.");
+ }
+
this.charset = charset;
+ this.itemType = itemType;
}
+ /**
+ * Returns the character set used to encode/decode the CSV data.
+ */
public Charset getCharset() {
return charset;
}
/**
- * Returns a sequence representing the fields that will be read or written
- * by this serializer.
+ * Returns the type of the item that will be instantiated by the serializer
+ * during a read operation.
+ */
+ public Type getItemType() {
+ return itemType;
+ }
+
+ /**
+ * Returns the keys that will be read or written by this serializer.
*/
public Sequence<String> getKeys() {
return keys;
}
/**
- * Returns the item class that will be instantiated by the serializer during
- * a read operation.
+ * Sets the keys that will be read or written by this serializer.
+ *
+ * @param keys
*/
- public Class<?> getItemClass() {
- return itemClass;
+ public void setKeys(Sequence<String> keys) {
+ if (keys == null) {
+ throw new IllegalArgumentException();
+ }
+
+ this.keys = new ArrayList<String>(keys);
}
/**
- * Sets the item class that will be instantiated by the serializer during
- * a read operation. The class must implement the {@link Dictionary}
- * interface.
+ * Sets the keys that will be read or written by this serializer.
+ *
+ * @param keys
*/
- public void setItemClass(Class<?> itemClass) {
- if (itemClass == null) {
- throw new IllegalArgumentException("itemClass is null.");
+ public void setKeys(String... keys) {
+ if (keys == null) {
+ throw new IllegalArgumentException();
}
- this.itemClass = itemClass;
+ setKeys(new ArrayAdapter<String>(keys));
}
/**
@@ -306,7 +341,14 @@ public class CSVSerializer implements Se
Dictionary<String, Object> itemDictionary;
try {
- item = itemClass.newInstance();
+ if (itemType instanceof ParameterizedType) {
+ ParameterizedType parameterizedItemType = (ParameterizedType)itemType;
+ Class<?> rawItemType = (Class<?>)parameterizedItemType.getRawType();
+ item = rawItemType.newInstance();
+ } else {
+ Class<?> classItemType = (Class<?>)itemType;
+ item = classItemType.newInstance();
+ }
if (item instanceof Dictionary<?, ?>) {
itemDictionary = (Dictionary<String, Object>)item;
Modified: pivot/trunk/core/src/org/apache/pivot/sql/ResultList.java
URL: http://svn.apache.org/viewvc/pivot/trunk/core/src/org/apache/pivot/sql/ResultList.java?rev=990353&r1=990352&r2=990353&view=diff
==============================================================================
--- pivot/trunk/core/src/org/apache/pivot/sql/ResultList.java (original)
+++ pivot/trunk/core/src/org/apache/pivot/sql/ResultList.java Sat Aug 28 12:28:07 2010
@@ -180,34 +180,41 @@ public class ResultList implements List<
}
private ResultSet resultSet;
- private ArrayList<Field> fields;
- private ListListenerList<Map<String, Object>> listListeners = new ListListenerList<Map<String,Object>>();
+ private ArrayList<Field> fields = new ArrayList<Field>();
- public ResultList(ResultSet resultSet, Field... fields) {
- this(resultSet, new ArrayAdapter<Field>(fields));
- }
+ private ListListenerList<Map<String, Object>> listListeners = new ListListenerList<Map<String,Object>>();
- public ResultList(ResultSet resultSet, Sequence<Field> fields) {
+ public ResultList(ResultSet resultSet) {
if (resultSet == null) {
throw new IllegalArgumentException();
}
+ this.resultSet = resultSet;
+ }
+
+ public ResultSet getResultSet() {
+ return resultSet;
+ }
+
+ public Sequence<Field> getFields() {
+ return fields;
+ }
+
+ public void setFields(Sequence<Field> fields) {
if (fields == null) {
throw new IllegalArgumentException();
}
- this.resultSet = resultSet;
this.fields = new ArrayList<Field>(fields);
}
+ public void setFields(Field... fields) {
+ if (fields == null) {
+ throw new IllegalArgumentException();
+ }
- public Field getField(int index) {
- return fields.get(index);
- }
-
- public int getFieldCount() {
- return fields.getLength();
+ setFields(new ArrayAdapter<Field>(fields));
}
@Override
Modified: pivot/trunk/tests/src/org/apache/pivot/tests/sql/ResultListTest.java
URL: http://svn.apache.org/viewvc/pivot/trunk/tests/src/org/apache/pivot/tests/sql/ResultListTest.java?rev=990353&r1=990352&r2=990353&view=diff
==============================================================================
--- pivot/trunk/tests/src/org/apache/pivot/tests/sql/ResultListTest.java (original)
+++ pivot/trunk/tests/src/org/apache/pivot/tests/sql/ResultListTest.java Sat Aug 28 12:28:07 2010
@@ -42,24 +42,24 @@ public class ResultListTest {
ResultList resultList;
resultSet = statement.executeQuery("SELECT * FROM result_list_test");
- resultList = new ResultList(resultSet,
- new ResultList.Field("i"),
+ resultList = new ResultList(resultSet);
+ resultList.setFields(new ResultList.Field("i"),
new ResultList.Field("f"),
new ResultList.Field("s"),
new ResultList.Field("b"));
out.println(JSONSerializer.toString(resultList));
resultSet = statement.executeQuery("SELECT * FROM result_list_test");
- resultList = new ResultList(resultSet,
- new ResultList.Field("i", "integer"),
+ resultList = new ResultList(resultSet);
+ resultList.setFields(new ResultList.Field("i", "integer"),
new ResultList.Field("f", "float"),
new ResultList.Field("s", "string"),
new ResultList.Field("b", "boolean"));
out.println(JSONSerializer.toString(resultList));
resultSet = statement.executeQuery("SELECT * FROM result_list_test");
- resultList = new ResultList(resultSet,
- new ResultList.Field("i", "integer", Integer.class),
+ resultList = new ResultList(resultSet);
+ resultList.setFields(new ResultList.Field("i", "integer", Integer.class),
new ResultList.Field("f", "float", Float.class),
new ResultList.Field("s", "string", String.class),
new ResultList.Field("b", "boolean", Boolean.class));
@@ -67,8 +67,8 @@ public class ResultListTest {
// Test forward and backward iteration
resultSet = statement.executeQuery("SELECT * FROM result_list_test");
- resultList = new ResultList(resultSet,
- new ResultList.Field("i"),
+ resultList = new ResultList(resultSet);
+ resultList.setFields(new ResultList.Field("i"),
new ResultList.Field("f"),
new ResultList.Field("s"),
new ResultList.Field("b"));
Modified: pivot/trunk/tutorials-server/src/org/apache/pivot/tutorials/webqueries/server/ExpenseServlet.java
URL: http://svn.apache.org/viewvc/pivot/trunk/tutorials-server/src/org/apache/pivot/tutorials/webqueries/server/ExpenseServlet.java?rev=990353&r1=990352&r2=990353&view=diff
==============================================================================
--- pivot/trunk/tutorials-server/src/org/apache/pivot/tutorials/webqueries/server/ExpenseServlet.java (original)
+++ pivot/trunk/tutorials-server/src/org/apache/pivot/tutorials/webqueries/server/ExpenseServlet.java Sat Aug 28 12:28:07 2010
@@ -44,18 +44,14 @@ public class ExpenseServlet extends Quer
@Override
@SuppressWarnings("unchecked")
public void init() throws ServletException {
- CSVSerializer csvSerializer = new CSVSerializer();
- csvSerializer.getKeys().add("date");
- csvSerializer.getKeys().add("type");
- csvSerializer.getKeys().add("amount");
- csvSerializer.getKeys().add("description");
- csvSerializer.setItemClass(Expense.class);
+ CSVSerializer expenseSerializer = new CSVSerializer(Expense.class);
+ expenseSerializer.setKeys("date", "type", "amount", "description");
// Load the initial expense data
InputStream inputStream = ExpenseServlet.class.getResourceAsStream("expenses.csv");
try {
- expenses = (List<Expense>)csvSerializer.readObject(inputStream);
+ expenses = (List<Expense>)expenseSerializer.readObject(inputStream);
} catch (IOException exception) {
throw new ServletException(exception);
} catch (SerializationException exception) {
Modified: pivot/trunk/tutorials/src/org/apache/pivot/tutorials/stocktracker/StockTrackerWindow.java
URL: http://svn.apache.org/viewvc/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/stocktracker/StockTrackerWindow.java?rev=990353&r1=990352&r2=990353&view=diff
==============================================================================
--- pivot/trunk/tutorials/src/org/apache/pivot/tutorials/stocktracker/StockTrackerWindow.java (original)
+++ pivot/trunk/tutorials/src/org/apache/pivot/tutorials/stocktracker/StockTrackerWindow.java Sat Aug 28 12:28:07 2010
@@ -307,17 +307,15 @@ public class StockTrackerWindow extends
getQuery.getParameters().put("s", symbolsArgument);
getQuery.getParameters().put("f", "snl1ohgc1v");
- CSVSerializer quoteSerializer = new CSVSerializer();
- quoteSerializer.setItemClass(StockQuote.class);
-
- quoteSerializer.getKeys().add("symbol");
- quoteSerializer.getKeys().add("companyName");
- quoteSerializer.getKeys().add("value");
- quoteSerializer.getKeys().add("openingValue");
- quoteSerializer.getKeys().add("highValue");
- quoteSerializer.getKeys().add("lowValue");
- quoteSerializer.getKeys().add("change");
- quoteSerializer.getKeys().add("volume");
+ CSVSerializer quoteSerializer = new CSVSerializer(StockQuote.class);
+ quoteSerializer.setKeys("symbol",
+ "companyName",
+ "value",
+ "openingValue",
+ "highValue",
+ "lowValue",
+ "change",
+ "volume");
getQuery.setSerializer(quoteSerializer);