You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by to...@apache.org on 2007/07/23 07:36:17 UTC
svn commit: r558606 - in /harmony/enhanced/classlib/trunk/modules/beans/src:
main/java/java/beans/Encoder.java
main/java/java/beans/UtilDatePersistenceDelegate.java
test/java/org/apache/harmony/beans/tests/java/beans/PersistenceDelegateTest.java
Author: tonywu
Date: Sun Jul 22 22:36:17 2007
New Revision: 558606
URL: http://svn.apache.org/viewvc?view=rev&rev=558606
Log:
Apply patch Harmony-4505 ([classlib][beans] Beans module needs a persistence delegate for java.util.Date class)
Added:
harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/UtilDatePersistenceDelegate.java (with props)
Modified:
harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/Encoder.java
harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/PersistenceDelegateTest.java
Modified: harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/Encoder.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/Encoder.java?view=diff&rev=558606&r1=558605&r2=558606
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/Encoder.java (original)
+++ harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/Encoder.java Sun Jul 22 22:36:17 2007
@@ -23,6 +23,7 @@
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.Collection;
+import java.util.Date;
import java.util.Map;
import java.util.Hashtable;
@@ -109,6 +110,8 @@
delegates.put(JTabbedPane.class, new SwingJTabbedPanePersistenceDelegate());
delegates.put(DefaultComboBoxModel.class, new SwingDefaultComboBoxModelPersistenceDelegate());
delegates.put(ToolTipManager.class, new SwingToolTipManagerPersistenceDelegate());
+
+ delegates.put(Date.class, new UtilDatePersistenceDelegate());
}
Added: harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/UtilDatePersistenceDelegate.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/UtilDatePersistenceDelegate.java?view=auto&rev=558606
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/UtilDatePersistenceDelegate.java (added)
+++ harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/UtilDatePersistenceDelegate.java Sun Jul 22 22:36:17 2007
@@ -0,0 +1,28 @@
+/*
+ * 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 java.beans;
+
+import java.util.Date;
+
+class UtilDatePersistenceDelegate extends DefaultPersistenceDelegate {
+ protected Expression instantiate(Object oldInstance, Encoder enc) {
+ Date date = (Date) oldInstance;
+ return new Expression(oldInstance, oldInstance.getClass(),
+ Statement.CONSTRUCTOR_NAME, new Object[] { date.getTime() });
+ }
+}
Propchange: harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/UtilDatePersistenceDelegate.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/PersistenceDelegateTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/PersistenceDelegateTest.java?view=diff&rev=558606&r1=558605&r2=558606
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/PersistenceDelegateTest.java (original)
+++ harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/PersistenceDelegateTest.java Sun Jul 22 22:36:17 2007
@@ -973,6 +973,75 @@
assertEquals(manager, aManager);
assertEquals(manager.getDismissDelay(), aManager.getDismissDelay());
}
+
+ public static class DummyBean {
+
+ private String value;
+
+ public DummyBean() {
+ }
+
+ public DummyBean(String s) {
+ value = s;
+ }
+
+ public String getDummyValue() {
+ return value;
+ }
+
+ public void setDummyValue(String s) {
+ value = s;
+ }
+
+ public boolean equals(Object bean) {
+ if (!(bean instanceof DummyBean)) {
+ return false;
+ }
+ DummyBean aBean = (DummyBean) bean;
+
+ if (aBean.value == null && value != null || value != null
+ && aBean.value == null) {
+ return false;
+ } else if(value != null && aBean.value != null){
+ return value.equals(aBean.value);
+ }
+ return true;
+ }
+ }
+ public void test_writeExpression_writeObject() {
+ ByteArrayOutputStream output = new ByteArrayOutputStream();
+ XMLEncoder encoder = new XMLEncoder( output );
+
+ Date date = new Date(2007, 06, 26);
+ Expression expression = new Expression( date, "toString", null );
+ String date_string = null;
+ try {
+ date_string = (String) expression.getValue();
+ } catch (Exception e ) {
+ System.out.println("Failed to get the date value.");
+ e.printStackTrace();
+ }
+ DummyBean bean = new DummyBean( date_string );
+ // The expression knows about the date object.
+ encoder.writeExpression( expression );
+ encoder.writeObject( date );
+ // The value for the bean is already part of the expression
+ // so instead of writing the value we write a reference to
+ // the extpression.
+ encoder.writeObject( bean );
+
+ encoder.flush();
+ encoder.close();
+
+ DataInputStream stream = new DataInputStream(new ByteArrayInputStream(
+ output.toByteArray()));
+ XMLDecoder decoder = new XMLDecoder(stream);
+ Date aDate = (Date) decoder.readObject();
+ assertEquals(date, aDate);
+
+ DummyBean aBean = (DummyBean) decoder.readObject();
+ assertEquals(bean, aBean);
+ }
// <--