+++ /dev/null
-package com.vaadin.tests;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-
-import junit.framework.TestCase;
-
-import com.vaadin.data.Item;
-import com.vaadin.data.util.IndexedContainer;
-import com.vaadin.data.util.MethodProperty;
-import com.vaadin.data.validator.RegexpValidator;
-import com.vaadin.ui.Form;
-
-public class TestSerialization extends TestCase {
-
- public void testValidators() throws Exception {
- RegexpValidator validator = new RegexpValidator(".*", "Error");
- validator.isValid("aaa");
- RegexpValidator validator2 = (RegexpValidator) serializeAndDeserialize(validator);
- validator2.isValid("aaa");
- }
-
- public void testForm() throws Exception {
- Form f = new Form();
- String propertyId = "My property";
- f.addItemProperty(propertyId, new MethodProperty(new Data(),
- "dummyGetterAndSetter"));
- f.replaceWithSelect(propertyId, new Object[] { "a", "b", null },
- new String[] { "Item a", "ITem b", "Null item" });
-
- serializeAndDeserialize(f);
-
- }
-
- public void testIndedexContainerItemIds() throws Exception {
- IndexedContainer ic = new IndexedContainer();
- ic.addContainerProperty("prop1", String.class, null);
- Object id = ic.addItem();
- ic.getItem(id).getItemProperty("prop1").setValue("1");
-
- Item item2 = ic.addItem("item2");
- item2.getItemProperty("prop1").setValue("2");
-
- serializeAndDeserialize(ic);
- }
-
- public void testMethodPropertyGetter() throws Exception {
- MethodProperty mp = new MethodProperty(new Data(), "dummyGetter");
- serializeAndDeserialize(mp);
- }
-
- public void testMethodPropertyGetterAndSetter() throws Exception {
- MethodProperty mp = new MethodProperty(new Data(),
- "dummyGetterAndSetter");
- serializeAndDeserialize(mp);
- }
-
- public void testMethodPropertyInt() throws Exception {
- MethodProperty mp = new MethodProperty(new Data(), "dummyInt");
- serializeAndDeserialize(mp);
- }
-
- private static Serializable serializeAndDeserialize(Serializable s)
- throws IOException, ClassNotFoundException {
- // Serialize and deserialize
-
- ByteArrayOutputStream bs = new ByteArrayOutputStream();
- ObjectOutputStream out = new ObjectOutputStream(bs);
- out.writeObject(s);
- byte[] data = bs.toByteArray();
- ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(
- data));
- Serializable s2 = (Serializable) in.readObject();
-
- if (s.equals(s2)) {
- System.out.println(s + " equals " + s2);
- } else {
- System.out.println(s + " does NOT equal " + s2);
- }
-
- return s2;
- }
-
- public static class Data implements Serializable {
- private String dummyGetter;
- private String dummyGetterAndSetter;
- private int dummyInt;
-
- public String getDummyGetterAndSetter() {
- return dummyGetterAndSetter;
- }
-
- public void setDummyGetterAndSetter(String dummyGetterAndSetter) {
- this.dummyGetterAndSetter = dummyGetterAndSetter;
- }
-
- public int getDummyInt() {
- return dummyInt;
- }
-
- public void setDummyInt(int dummyInt) {
- this.dummyInt = dummyInt;
- }
-
- public String getDummyGetter() {
- return dummyGetter;
- }
- }
-}
\ No newline at end of file
--- /dev/null
+package com.vaadin.tests.server;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+
+import junit.framework.TestCase;
+
+import com.vaadin.data.Item;
+import com.vaadin.data.util.IndexedContainer;
+import com.vaadin.data.util.MethodProperty;
+import com.vaadin.data.validator.RegexpValidator;
+import com.vaadin.ui.Form;
+
+public class TestSerialization extends TestCase {
+
+ public void testValidators() throws Exception {
+ RegexpValidator validator = new RegexpValidator(".*", "Error");
+ validator.isValid("aaa");
+ RegexpValidator validator2 = (RegexpValidator) serializeAndDeserialize(validator);
+ validator2.isValid("aaa");
+ }
+
+ public void testForm() throws Exception {
+ Form f = new Form();
+ String propertyId = "My property";
+ f.addItemProperty(propertyId, new MethodProperty(new Data(),
+ "dummyGetterAndSetter"));
+ f.replaceWithSelect(propertyId, new Object[] { "a", "b", null },
+ new String[] { "Item a", "ITem b", "Null item" });
+
+ serializeAndDeserialize(f);
+
+ }
+
+ public void testIndedexContainerItemIds() throws Exception {
+ IndexedContainer ic = new IndexedContainer();
+ ic.addContainerProperty("prop1", String.class, null);
+ Object id = ic.addItem();
+ ic.getItem(id).getItemProperty("prop1").setValue("1");
+
+ Item item2 = ic.addItem("item2");
+ item2.getItemProperty("prop1").setValue("2");
+
+ serializeAndDeserialize(ic);
+ }
+
+ public void testMethodPropertyGetter() throws Exception {
+ MethodProperty mp = new MethodProperty(new Data(), "dummyGetter");
+ serializeAndDeserialize(mp);
+ }
+
+ public void testMethodPropertyGetterAndSetter() throws Exception {
+ MethodProperty mp = new MethodProperty(new Data(),
+ "dummyGetterAndSetter");
+ serializeAndDeserialize(mp);
+ }
+
+ public void testMethodPropertyInt() throws Exception {
+ MethodProperty mp = new MethodProperty(new Data(), "dummyInt");
+ serializeAndDeserialize(mp);
+ }
+
+ private static Serializable serializeAndDeserialize(Serializable s)
+ throws IOException, ClassNotFoundException {
+ // Serialize and deserialize
+
+ ByteArrayOutputStream bs = new ByteArrayOutputStream();
+ ObjectOutputStream out = new ObjectOutputStream(bs);
+ out.writeObject(s);
+ byte[] data = bs.toByteArray();
+ ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(
+ data));
+ Serializable s2 = (Serializable) in.readObject();
+
+ if (s.equals(s2)) {
+ System.out.println(s + " equals " + s2);
+ } else {
+ System.out.println(s + " does NOT equal " + s2);
+ }
+
+ return s2;
+ }
+
+ public static class Data implements Serializable {
+ private String dummyGetter;
+ private String dummyGetterAndSetter;
+ private int dummyInt;
+
+ public String getDummyGetterAndSetter() {
+ return dummyGetterAndSetter;
+ }
+
+ public void setDummyGetterAndSetter(String dummyGetterAndSetter) {
+ this.dummyGetterAndSetter = dummyGetterAndSetter;
+ }
+
+ public int getDummyInt() {
+ return dummyInt;
+ }
+
+ public void setDummyInt(int dummyInt) {
+ this.dummyInt = dummyInt;
+ }
+
+ public String getDummyGetter() {
+ return dummyGetter;
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+package com.vaadin.tests.server.container;\r
+\r
+import java.util.HashMap;\r
+import java.util.Iterator;\r
+import java.util.Map;\r
+\r
+import junit.framework.TestCase;\r
+\r
+import com.vaadin.data.Container;\r
+import com.vaadin.data.Item;\r
+import com.vaadin.data.util.HierarchicalContainer;\r
+import com.vaadin.data.util.IndexedContainer;\r
+\r
+public class TestContainerSorting extends TestCase {\r
+\r
+ private static final String ITEM_DATA_MINUS2_NULL = "Data -2 null";\r
+ private static final String ITEM_DATA_MINUS2 = "Data -2";\r
+ private static final String ITEM_DATA_MINUS1 = "Data -1";\r
+ private static final String ITEM_DATA_MINUS1_NULL = "Data -1 null";\r
+ private static final String ITEM_ANOTHER_NULL = "Another null";\r
+ private static final String ITEM_STRING_2 = "String 2";\r
+ private static final String ITEM_STRING_NULL2 = "String null";\r
+ private static final String ITEM_STRING_1 = "String 1";\r
+\r
+ private static final String PROPERTY_INTEGER_NULL2 = "integer-null";\r
+ private static final String PROPERTY_INTEGER_NOT_NULL = "integer-not-null";\r
+ private static final String PROPERTY_STRING_NULL = "string-null";\r
+ private static final String PROPERTY_STRING_ID = "string-not-null";\r
+\r
+ @Override\r
+ protected void setUp() throws Exception {\r
+ super.setUp();\r
+ }\r
+\r
+ public void testIndexedContainer() {\r
+ IndexedContainer ic = new IndexedContainer();\r
+\r
+ addProperties(ic);\r
+ populate(ic);\r
+\r
+ ic.sort(new Object[] { PROPERTY_STRING_ID }, new boolean[] { true });\r
+ verifyOrder(ic, new String[] { ITEM_ANOTHER_NULL, ITEM_DATA_MINUS1,\r
+ ITEM_DATA_MINUS1_NULL, ITEM_DATA_MINUS2, ITEM_DATA_MINUS2_NULL,\r
+ ITEM_STRING_1, ITEM_STRING_2, ITEM_STRING_NULL2 });\r
+\r
+ ic.sort(new Object[] { PROPERTY_INTEGER_NOT_NULL,\r
+ PROPERTY_INTEGER_NULL2, PROPERTY_STRING_ID }, new boolean[] {\r
+ true, false, true });\r
+ verifyOrder(ic, new String[] { ITEM_DATA_MINUS2, ITEM_DATA_MINUS2_NULL,\r
+ ITEM_DATA_MINUS1, ITEM_DATA_MINUS1_NULL, ITEM_ANOTHER_NULL,\r
+ ITEM_STRING_NULL2, ITEM_STRING_1, ITEM_STRING_2 });\r
+\r
+ ic.sort(new Object[] { PROPERTY_INTEGER_NOT_NULL,\r
+ PROPERTY_INTEGER_NULL2, PROPERTY_STRING_ID }, new boolean[] {\r
+ true, true, true });\r
+ verifyOrder(ic, new String[] { ITEM_DATA_MINUS2_NULL, ITEM_DATA_MINUS2,\r
+ ITEM_DATA_MINUS1_NULL, ITEM_DATA_MINUS1, ITEM_ANOTHER_NULL,\r
+ ITEM_STRING_NULL2, ITEM_STRING_1, ITEM_STRING_2 });\r
+\r
+ }\r
+\r
+ public void testHierarchicalContainer() {\r
+ HierarchicalContainer hc = new HierarchicalContainer();\r
+ populateContainer(hc);\r
+ hc.sort(new Object[] { "name" }, new boolean[] { true });\r
+ verifyOrder(hc, new String[] { "Audi", "C++", "Call of Duty", "Cars",\r
+ "English", "Fallout", "Finnish", "Ford", "Games", "Java",\r
+ "Might and Magic", "Natural languages", "PHP",\r
+ "Programming languages", "Python", "Red Alert", "Swedish",\r
+ "Toyota", "Volvo" });\r
+ assertArrays(hc.rootItemIds().toArray(), new Integer[] {\r
+ nameToId.get("Cars"), nameToId.get("Games"),\r
+ nameToId.get("Natural languages"),\r
+ nameToId.get("Programming languages") });\r
+ assertArrays(hc.getChildren(nameToId.get("Games")).toArray(),\r
+ new Integer[] { nameToId.get("Call of Duty"),\r
+ nameToId.get("Fallout"),\r
+ nameToId.get("Might and Magic"),\r
+ nameToId.get("Red Alert") });\r
+ }\r
+\r
+ private static void populateContainer(HierarchicalContainer container) {\r
+ container.addContainerProperty("name", String.class, null);\r
+\r
+ addItem(container, "Games", null);\r
+ addItem(container, "Call of Duty", "Games");\r
+ addItem(container, "Might and Magic", "Games");\r
+ addItem(container, "Fallout", "Games");\r
+ addItem(container, "Red Alert", "Games");\r
+\r
+ addItem(container, "Cars", null);\r
+ addItem(container, "Toyota", "Cars");\r
+ addItem(container, "Volvo", "Cars");\r
+ addItem(container, "Audi", "Cars");\r
+ addItem(container, "Ford", "Cars");\r
+\r
+ addItem(container, "Natural languages", null);\r
+ addItem(container, "Swedish", "Natural languages");\r
+ addItem(container, "English", "Natural languages");\r
+ addItem(container, "Finnish", "Natural languages");\r
+\r
+ addItem(container, "Programming languages", null);\r
+ addItem(container, "C++", "Programming languages");\r
+ addItem(container, "PHP", "Programming languages");\r
+ addItem(container, "Java", "Programming languages");\r
+ addItem(container, "Python", "Programming languages");\r
+\r
+ }\r
+\r
+ private static int index = 0;\r
+ private static Map<String, Integer> nameToId = new HashMap<String, Integer>();\r
+ private static Map<Integer, String> idToName = new HashMap<Integer, String>();\r
+\r
+ public static void addItem(IndexedContainer container, String string,\r
+ String parent) {\r
+ nameToId.put(string, index);\r
+ idToName.put(index, string);\r
+\r
+ Item item = container.addItem(index);\r
+ item.getItemProperty("name").setValue(string);\r
+\r
+ if (parent != null && container instanceof HierarchicalContainer) {\r
+ ((HierarchicalContainer) container).setParent(index, nameToId\r
+ .get(parent));\r
+ }\r
+\r
+ index++;\r
+ }\r
+\r
+ private void verifyOrder(Container.Sortable ic, Object[] idOrder) {\r
+ int size = ic.size();\r
+ Object[] actual = new Object[size];\r
+ Iterator<?> i = ic.getItemIds().iterator();\r
+ int index = 0;\r
+ while (i.hasNext()) {\r
+ Object o = i.next();\r
+ if (o.getClass() == Integer.class\r
+ && idOrder[index].getClass() == String.class) {\r
+ o = idToName.get(o);\r
+ }\r
+ actual[index++] = o;\r
+ }\r
+\r
+ assertArrays(actual, idOrder);\r
+\r
+ }\r
+\r
+ private void assertArrays(Object[] actualObjects, Object[] expectedObjects) {\r
+ assertEquals(\r
+ "Actual contains a different number of values than was expected",\r
+ expectedObjects.length, actualObjects.length);\r
+\r
+ for (int i = 0; i < actualObjects.length; i++) {\r
+ Object actual = actualObjects[i];\r
+ Object expected = expectedObjects[i];\r
+\r
+ assertEquals("Item[" + i + "] does not match", expected, actual);\r
+ }\r
+\r
+ }\r
+\r
+ private void populate(IndexedContainer ic) {\r
+ addItem(ic, ITEM_STRING_1, ITEM_STRING_1, 1, 1);\r
+ addItem(ic, ITEM_STRING_NULL2, null, 0, null);\r
+ addItem(ic, ITEM_STRING_2, ITEM_STRING_2, 2, 2);\r
+ addItem(ic, ITEM_ANOTHER_NULL, null, 0, null);\r
+ addItem(ic, ITEM_DATA_MINUS1, ITEM_DATA_MINUS1, -1, -1);\r
+ addItem(ic, ITEM_DATA_MINUS1_NULL, null, -1, null);\r
+ addItem(ic, ITEM_DATA_MINUS2, ITEM_DATA_MINUS2, -2, -2);\r
+ addItem(ic, ITEM_DATA_MINUS2_NULL, null, -2, null);\r
+ }\r
+\r
+ private Item addItem(Container ic, String id, String string_null,\r
+ int integer, Integer integer_null) {\r
+ Item i = ic.addItem(id);\r
+ i.getItemProperty(PROPERTY_STRING_ID).setValue(id);\r
+ i.getItemProperty(PROPERTY_STRING_NULL).setValue(string_null);\r
+ i.getItemProperty(PROPERTY_INTEGER_NOT_NULL).setValue(integer);\r
+ i.getItemProperty(PROPERTY_INTEGER_NULL2).setValue(integer_null);\r
+\r
+ return i;\r
+ }\r
+\r
+ private void addProperties(IndexedContainer ic) {\r
+ ic.addContainerProperty("id", String.class, null);\r
+ ic.addContainerProperty(PROPERTY_STRING_ID, String.class, "");\r
+ ic.addContainerProperty(PROPERTY_STRING_NULL, String.class, null);\r
+ ic.addContainerProperty(PROPERTY_INTEGER_NULL2, Integer.class, null);\r
+ ic.addContainerProperty(PROPERTY_INTEGER_NOT_NULL, Integer.class, 0);\r
+ ic.addContainerProperty("comparable-null", Integer.class, 0);\r
+ }\r
+\r
+ public class MyObject implements Comparable<MyObject> {\r
+ private String data;\r
+\r
+ public int compareTo(MyObject o) {\r
+ if (o == null) {\r
+ return 1;\r
+ }\r
+\r
+ if (o.data == null) {\r
+ return data == null ? 0 : 1;\r
+ } else if (data == null) {\r
+ return -1;\r
+ } else {\r
+ return data.compareTo(o.data);\r
+ }\r
+ }\r
+ }\r
+\r
+}\r