Imported GNU Classpath 0.90
Imported GNU Classpath 0.90 * scripts/makemake.tcl: Set gnu/java/awt/peer/swing to ignore. * gnu/classpath/jdwp/VMFrame.java (SIZE): New constant. * java/lang/VMCompiler.java: Use gnu.java.security.hash.MD5. * java/lang/Math.java: New override file. * java/lang/Character.java: Merged from Classpath. (start, end): Now 'int's. (canonicalName): New field. (CANONICAL_NAME, NO_SPACES_NAME, CONSTANT_NAME): New constants. (UnicodeBlock): Added argument. (of): New overload. (forName): New method. Updated unicode blocks. (sets): Updated. * sources.am: Regenerated. * Makefile.in: Likewise. From-SVN: r111942
This commit is contained in:
parent
27079765d0
commit
8aa540d2f7
1367 changed files with 188789 additions and 22762 deletions
|
@ -157,6 +157,23 @@ public class DefaultPersistenceDelegate extends PersistenceDelegate
|
|||
protected void initialize(Class type, Object oldInstance, Object newInstance,
|
||||
Encoder out)
|
||||
{
|
||||
// Calling the supertype's implementation of initialize makes it
|
||||
// possible that descendants of classes like AbstractHashMap
|
||||
// or Hashtable are serialized correctly. This mechanism grounds on
|
||||
// two other facts:
|
||||
// * Each class which has not registered a special purpose
|
||||
// PersistenceDelegate is handled by a DefaultPersistenceDelegate
|
||||
// instance.
|
||||
// * PersistenceDelegate.initialize() is implemented in a way that it
|
||||
// calls the initialize method of the superclass' persistence delegate.
|
||||
super.initialize(type, oldInstance, newInstance, out);
|
||||
|
||||
// Suppresses the writing of property setting statements when this delegate
|
||||
// is not used for the exact instance type. By doing so the following code
|
||||
// is called only once per object.
|
||||
if (type != oldInstance.getClass())
|
||||
return;
|
||||
|
||||
try
|
||||
{
|
||||
PropertyDescriptor[] propertyDescs = Introspector.getBeanInfo(
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Encoder.java
|
||||
Copyright (C) 2005 Free Software Foundation, Inc.
|
||||
Copyright (C) 2005, 2006 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
|
@ -38,21 +38,16 @@
|
|||
|
||||
package java.beans;
|
||||
|
||||
import gnu.java.beans.DefaultExceptionListener;
|
||||
import gnu.java.beans.encoder.ArrayPersistenceDelegate;
|
||||
import gnu.java.beans.encoder.ClassPersistenceDelegate;
|
||||
import gnu.java.beans.encoder.CollectionPersistenceDelegate;
|
||||
import gnu.java.beans.encoder.MapPersistenceDelegate;
|
||||
import gnu.java.beans.encoder.PrimitivePersistenceDelegate;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.AbstractCollection;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.IdentityHashMap;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.LinkedList;
|
||||
import java.util.TreeMap;
|
||||
import java.util.TreeSet;
|
||||
import java.util.Vector;
|
||||
|
||||
/**
|
||||
* @author Robert Schuster (robertschuster@fsfe.org)
|
||||
|
@ -123,31 +118,11 @@ public class Encoder
|
|||
delegates.put(Object[].class, new ArrayPersistenceDelegate());
|
||||
|
||||
pd = new CollectionPersistenceDelegate();
|
||||
delegates.put(ArrayList.class, pd);
|
||||
delegates.put(LinkedList.class, pd);
|
||||
delegates.put(Vector.class, pd);
|
||||
delegates.put(HashSet.class, pd);
|
||||
delegates.put(LinkedHashSet.class, pd);
|
||||
delegates.put(TreeSet.class, pd);
|
||||
delegates.put(AbstractCollection.class, pd);
|
||||
|
||||
pd = new MapPersistenceDelegate();
|
||||
delegates.put(HashMap.class, pd);
|
||||
delegates.put(TreeMap.class, pd);
|
||||
delegates.put(java.util.AbstractMap.class, pd);
|
||||
delegates.put(java.util.Hashtable.class, pd);
|
||||
delegates.put(java.util.IdentityHashMap.class, pd);
|
||||
|
||||
delegates.put(java.util.LinkedHashMap.class, pd);
|
||||
delegates.put(java.util.Properties.class, pd);
|
||||
|
||||
delegates.put(java.awt.RenderingHints.class, pd);
|
||||
delegates.put(java.util.WeakHashMap.class, pd);
|
||||
delegates.put(javax.swing.UIDefaults.class, pd);
|
||||
|
||||
// TODO: These classes need to be implemented first
|
||||
//delegates.put(java.security.AuthProvider.class, pd);
|
||||
//delegates.put(java.util.concurrent.ConcurrentHashMap.class, pd);
|
||||
//delegates.put(java.util.EnumMap.class, pd);
|
||||
//delegates.put(javax.management.openmbean.TabularDataSupport.class, pd);
|
||||
|
||||
defaultPersistenceDelegate = new DefaultPersistenceDelegate();
|
||||
delegates.put(Object.class, defaultPersistenceDelegate);
|
||||
|
@ -194,14 +169,8 @@ public class Encoder
|
|||
*/
|
||||
public void setExceptionListener(ExceptionListener listener)
|
||||
{
|
||||
exceptionListener = (listener != null) ? listener : new ExceptionListener()
|
||||
{
|
||||
public void exceptionThrown(Exception e)
|
||||
{
|
||||
System.err.println("exception thrown: " + e);
|
||||
e.printStackTrace();
|
||||
}
|
||||
};
|
||||
exceptionListener = (listener != null)
|
||||
? listener : DefaultExceptionListener.INSTANCE;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -59,9 +59,8 @@ public abstract class PersistenceDelegate
|
|||
{
|
||||
type = type.getSuperclass();
|
||||
|
||||
PersistenceDelegate pd = out.getPersistenceDelegate(
|
||||
oldInstance.getClass().getSuperclass());
|
||||
|
||||
PersistenceDelegate pd = out.getPersistenceDelegate(type);
|
||||
|
||||
pd.initialize(type, oldInstance, newInstance, out);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/* PropertyChangeSupport.java -- support to manage property change listeners
|
||||
Copyright (C) 1998, 1999, 2000, 2002, 2005 Free Software Foundation, Inc.
|
||||
Copyright (C) 1998, 1999, 2000, 2002, 2005, 2006
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
|
@ -120,14 +121,17 @@ public class PropertyChangeSupport implements Serializable
|
|||
* property change events will be sent to this listener. The listener add
|
||||
* is not unique: that is, <em>n</em> adds with the same listener will
|
||||
* result in <em>n</em> events being sent to that listener for every
|
||||
* property change. Adding a null listener may cause a NullPointerException
|
||||
* down the road. This method will unwrap a PropertyChangeListenerProxy,
|
||||
* property change. Adding a null listener is silently ignored.
|
||||
* This method will unwrap a PropertyChangeListenerProxy,
|
||||
* registering the underlying delegate to the named property list.
|
||||
*
|
||||
* @param l the listener to add
|
||||
*/
|
||||
public synchronized void addPropertyChangeListener(PropertyChangeListener l)
|
||||
{
|
||||
if (l == null)
|
||||
return;
|
||||
|
||||
if (l instanceof PropertyChangeListenerProxy)
|
||||
{
|
||||
PropertyChangeListenerProxy p = (PropertyChangeListenerProxy) l;
|
||||
|
@ -216,8 +220,8 @@ public class PropertyChangeSupport implements Serializable
|
|||
* cumulative, too; if you are registered to listen to receive events on
|
||||
* all property changes, and then you register on a particular property,
|
||||
* you will receive change events for that property twice. Adding a null
|
||||
* listener may cause a NullPointerException down the road. This method
|
||||
* will unwrap a PropertyChangeListenerProxy, registering the underlying
|
||||
* listener is silently ignored. This method will unwrap a
|
||||
* PropertyChangeListenerProxy, registering the underlying
|
||||
* delegate to the named property list if the names match, and discarding
|
||||
* it otherwise.
|
||||
*
|
||||
|
@ -228,6 +232,9 @@ public class PropertyChangeSupport implements Serializable
|
|||
public synchronized void addPropertyChangeListener(String propertyName,
|
||||
PropertyChangeListener l)
|
||||
{
|
||||
if (l == null)
|
||||
return;
|
||||
|
||||
while (l instanceof PropertyChangeListenerProxy)
|
||||
{
|
||||
PropertyChangeListenerProxy p = (PropertyChangeListenerProxy) l;
|
||||
|
@ -290,17 +297,16 @@ public class PropertyChangeSupport implements Serializable
|
|||
|
||||
/**
|
||||
* Returns an array of all property change listeners registered under the
|
||||
* given property name. If there are no registered listeners, this returns
|
||||
* an empty array.
|
||||
* given property name. If there are no registered listeners, or
|
||||
* propertyName is null, this returns an empty array.
|
||||
*
|
||||
* @return the array of registered listeners
|
||||
* @throws NullPointerException if propertyName is null
|
||||
* @since 1.4
|
||||
*/
|
||||
public synchronized PropertyChangeListener[]
|
||||
getPropertyChangeListeners(String propertyName)
|
||||
{
|
||||
if (children == null)
|
||||
if (children == null || propertyName == null)
|
||||
return new PropertyChangeListener[0];
|
||||
PropertyChangeSupport s
|
||||
= (PropertyChangeSupport) children.get(propertyName);
|
||||
|
@ -455,7 +461,6 @@ public class PropertyChangeSupport implements Serializable
|
|||
*
|
||||
* @param propertyName the property that may be listened on
|
||||
* @return whether the property is being listened on
|
||||
* @throws NullPointerException if propertyName is null
|
||||
*/
|
||||
public synchronized boolean hasListeners(String propertyName)
|
||||
{
|
||||
|
|
|
@ -37,6 +37,8 @@ exception statement from your version. */
|
|||
|
||||
package java.beans;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
/**
|
||||
|
@ -344,6 +346,71 @@ public class PropertyDescriptor extends FeatureDescriptor
|
|||
this.propertyEditorClass = propertyEditorClass;
|
||||
}
|
||||
|
||||
/**
|
||||
* Instantiate a property editor using the property editor class.
|
||||
* If no property editor class has been set, this will return null.
|
||||
* If the editor class has a public constructor which takes a single
|
||||
* argument, that will be used and the bean parameter will be passed
|
||||
* to it. Otherwise, a public no-argument constructor will be used,
|
||||
* if available. This method will return null if no constructor is
|
||||
* found or if construction fails for any reason.
|
||||
* @param bean the argument to the constructor
|
||||
* @return a new PropertyEditor, or null on error
|
||||
* @since 1.5
|
||||
*/
|
||||
public PropertyEditor createPropertyEditor(Object bean)
|
||||
{
|
||||
if (propertyEditorClass == null)
|
||||
return null;
|
||||
Constructor c = findConstructor(propertyEditorClass,
|
||||
new Class[] { Object.class });
|
||||
if (c != null)
|
||||
return instantiateClass(c, new Object[] { bean });
|
||||
c = findConstructor(propertyEditorClass, null);
|
||||
if (c != null)
|
||||
return instantiateClass(c, null);
|
||||
return null;
|
||||
}
|
||||
|
||||
// Helper method to look up a constructor and return null if it is not
|
||||
// found.
|
||||
private Constructor findConstructor(Class k, Class[] argTypes)
|
||||
{
|
||||
try
|
||||
{
|
||||
return k.getConstructor(argTypes);
|
||||
}
|
||||
catch (NoSuchMethodException _)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// Helper method to instantiate an object but return null on error.
|
||||
private PropertyEditor instantiateClass(Constructor c, Object[] args)
|
||||
{
|
||||
try
|
||||
{
|
||||
return (PropertyEditor) c.newInstance(args);
|
||||
}
|
||||
catch (InstantiationException _)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
catch (InvocationTargetException _)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
catch (IllegalAccessException _)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
catch (ClassCastException _)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private void findMethods(
|
||||
Class beanClass,
|
||||
String getMethodName1,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* java.beans.XMLDecoder --
|
||||
Copyright (C) 2004, 2005 Free Software Foundation, Inc.
|
||||
Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
|
@ -38,7 +38,7 @@ exception statement from your version. */
|
|||
|
||||
package java.beans;
|
||||
|
||||
import gnu.java.beans.decoder.DefaultExceptionListener;
|
||||
import gnu.java.beans.DefaultExceptionListener;
|
||||
import gnu.java.beans.decoder.PersistenceParser;
|
||||
|
||||
import java.io.IOException;
|
||||
|
@ -289,7 +289,7 @@ public class XMLDecoder
|
|||
// uses a default implementation when null
|
||||
if (listener == null)
|
||||
{
|
||||
listener = new DefaultExceptionListener();
|
||||
listener = DefaultExceptionListener.INSTANCE;
|
||||
}
|
||||
exceptionListener = listener;
|
||||
}
|
||||
|
|
|
@ -168,6 +168,8 @@ public class XMLEncoder extends Encoder
|
|||
// an erroneous state to the ScanEngine without behaving different
|
||||
// to the JDK.
|
||||
scanEngine.revoke();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
writeObject(value);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue