Author: peter_firmstone Date: Sun Mar 3 01:24:09 2013 New Revision: 1451981
URL: http://svn.apache.org/r1451981 Log: Fix UriString normalisation, related to test failure of com/sun/jini/test/impl/start/CodebaseTest.td on OSX. Refactor Distributed, renamed SerialFactory to SerialReflectionFactory to more accurately describe function. Improved performance of SerialReflectionFactory, by serialising primitive Object parameters as primitives instead of objects. Added: river/jtsk/skunk/qa_refactor/trunk/src/org/apache/river/api/io/SerialReflectionFactory.java - copied, changed from r1451832, river/jtsk/skunk/qa_refactor/trunk/src/org/apache/river/api/io/SerialFactory.java Removed: river/jtsk/skunk/qa_refactor/trunk/src/org/apache/river/api/io/SerialFactory.java Modified: river/jtsk/skunk/qa_refactor/trunk/src/org/apache/river/api/io/Distributed.java river/jtsk/skunk/qa_refactor/trunk/src/org/apache/river/api/io/DistributedObjectInputStream.java river/jtsk/skunk/qa_refactor/trunk/src/org/apache/river/impl/net/UriString.java Modified: river/jtsk/skunk/qa_refactor/trunk/src/org/apache/river/api/io/Distributed.java URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/org/apache/river/api/io/Distributed.java?rev=1451981&r1=1451980&r2=1451981&view=diff ============================================================================== --- river/jtsk/skunk/qa_refactor/trunk/src/org/apache/river/api/io/Distributed.java (original) +++ river/jtsk/skunk/qa_refactor/trunk/src/org/apache/river/api/io/Distributed.java Sun Mar 3 01:24:09 2013 @@ -27,7 +27,7 @@ package org.apache.river.api.io; * but must always share a common public interface or superclass for referential * purposes. * <p> - * Distributed objects have no version, instead SerialFactory contains all + * Distributed objects have no version, instead SerialReflectionFactory contains all * information required to distribute and recreate any Distributed Object using * reflection. * <p> @@ -45,13 +45,13 @@ package org.apache.river.api.io; public interface Distributed { /** - * Substitutes an Object in an ObjectOutput with a SerialFactory, - * ObjectInput uses SerialFactory to reconstruct the Object at the + * Substitutes an Object in an ObjectOutput with a SerialReflectionFactory, + * ObjectInput uses SerialReflectionFactory to reconstruct the Object at the * remote end using reflection to call a constructor, static method or * object method. * - * @return SerialFactory for object instantiation using reflection to call - * a constructor, static method or object method. + * @return SerialReflectionFactory for object remote instantiation using + * reflection to call a constructor, static method or object method. */ - SerialFactory substitute(); + SerialReflectionFactory substitute(); } Modified: river/jtsk/skunk/qa_refactor/trunk/src/org/apache/river/api/io/DistributedObjectInputStream.java URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/org/apache/river/api/io/DistributedObjectInputStream.java?rev=1451981&r1=1451980&r2=1451981&view=diff ============================================================================== --- river/jtsk/skunk/qa_refactor/trunk/src/org/apache/river/api/io/DistributedObjectInputStream.java (original) +++ river/jtsk/skunk/qa_refactor/trunk/src/org/apache/river/api/io/DistributedObjectInputStream.java Sun Mar 3 01:24:09 2013 @@ -50,7 +50,7 @@ public class DistributedObjectInputStrea } protected final Object resolveObject(Object o) throws IOException{ - if (o instanceof SerialFactory) return ((SerialFactory)o).create(); + if (o instanceof SerialReflectionFactory) return ((SerialReflectionFactory)o).create(); return o; } Copied: river/jtsk/skunk/qa_refactor/trunk/src/org/apache/river/api/io/SerialReflectionFactory.java (from r1451832, river/jtsk/skunk/qa_refactor/trunk/src/org/apache/river/api/io/SerialFactory.java) URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/org/apache/river/api/io/SerialReflectionFactory.java?p2=river/jtsk/skunk/qa_refactor/trunk/src/org/apache/river/api/io/SerialReflectionFactory.java&p1=river/jtsk/skunk/qa_refactor/trunk/src/org/apache/river/api/io/SerialFactory.java&r1=1451832&r2=1451981&rev=1451981&view=diff ============================================================================== --- river/jtsk/skunk/qa_refactor/trunk/src/org/apache/river/api/io/SerialFactory.java (original) +++ river/jtsk/skunk/qa_refactor/trunk/src/org/apache/river/api/io/SerialReflectionFactory.java Sun Mar 3 01:24:09 2013 @@ -27,8 +27,8 @@ import java.lang.reflect.Method; import java.security.Guard; /** - * Distributed form, required for reflective calls to instantiate remotely, - * using constructor, static method or Object method. + * Distributed form, required for reflective calls to instantiate objects remotely, + * using a constructor, static method or an Object method. * * This object must be Thread confined, it is not thread safe. * @@ -38,7 +38,7 @@ import java.security.Guard; * @see Distributed * @see DistributePermission */ -public final class SerialFactory implements Externalizable { +public final class SerialReflectionFactory implements Externalizable { private static final long serialVersionUID = 1L; /* Guard private state */ private static final Guard distributable = new DistributePermission(); @@ -70,42 +70,37 @@ public final class SerialFactory impleme private final boolean constructed; // default value is false. /** - * Public method provided for serialization framework. + * Public method provided for java serialization framework. */ - public SerialFactory(){ + public SerialReflectionFactory(){ constructed = false; } /** * Reflection is used at the remote end, with information provided to - * SerialFactory, to call a constructor, static method - * or object method after de-serialization by DistributedObjectInputStream. + * SerialReflectionFactory, to call a constructor, static method + * or an object method after de-serialization by DistributedObjectInputStream. * <p> - * Information given to SerialFactory is guarded by DistributePermission. + * Information given to SerialReflectionFactory is guarded by DistributePermission. * <p> - * Instantiation of Distributed object at remote ends proceeds as follows: + * Instantiation of a Distributed object at a remote endpoint proceeds as follows: * <ul><li> * If factoryClassOrObject is a Class and methodName is null, a constructor * of that Class is called reflectively with parameterTypes and parameters. * </li><li> * If factoryClassOrObject is a Class and methodName is defined, a static - * method with the defined name is called reflectively on that Class with + * method with that name is called reflectively on that Class with * parameterTypes and parameters. * </li><li> * If factoryClassOrObject is an Object and methodName is defined, a method - * with the defined name is called reflectively on that Object with + * with that name is called reflectively on that Object with * parameterTypes and parameters. * </li></ul> * <p> * Tip: Object versions of primitive values and String parameters - * are relatively fast as are primitive array parameters. - * Object versions of primitive parameters are externalized - * as primitives, arrays of Object's are treated as object parameters. - * <p> - * If you really need ultimate serialization performance, consider using a - * constructor that accepts a single parameter byte[] array. - * Remember to compress your bytes, this will minimize the size of the - * byte stream. + * are relatively fast as are primitive arrays. + * Object versions of primitive parameters are writen to DataOutput + * as primitives. * <p> * * @param factoryClassOrObject will be used for constructor, factory static method, @@ -115,7 +110,7 @@ public final class SerialFactory impleme * @param parameters array of Objects to be passed to constructor, or null. * @see DistributePermission */ - public SerialFactory(Object factoryClassOrObject, String methodName, Class[] parameterTypes, Object [] parameters){ + public SerialReflectionFactory(Object factoryClassOrObject, String methodName, Class[] parameterTypes, Object [] parameters){ classOrObject = factoryClassOrObject; method = methodName; this.parameterTypes = parameterTypes; @@ -260,7 +255,6 @@ public final class SerialFactory impleme } - @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { if (constructed) throw new IllegalStateException("Object already constructed"); /* Don't defensively copy arrays, the object is used immediately after Modified: river/jtsk/skunk/qa_refactor/trunk/src/org/apache/river/impl/net/UriString.java URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/org/apache/river/impl/net/UriString.java?rev=1451981&r1=1451980&r2=1451981&view=diff ============================================================================== --- river/jtsk/skunk/qa_refactor/trunk/src/org/apache/river/impl/net/UriString.java (original) +++ river/jtsk/skunk/qa_refactor/trunk/src/org/apache/river/impl/net/UriString.java Sun Mar 3 01:24:09 2013 @@ -403,24 +403,24 @@ public class UriString { escIndex = i; continue; } - if (escIndex > 0 && i > escIndex && i < escIndex + 3 ){ - if (index(numeric, hos[i]) > 0) { + if (escIndex > -1 && i > escIndex && i < escIndex + 3 ){ + if (index(numeric, hos[i]) > -1) { sb.append(hos[i]); continue; } - if (index(upalpha, hos[i]) > 0){ + if (index(upalpha, hos[i]) > -1){ sb.append(hos[i]); continue; } int n = index(lowalpha, hos[i]); - if (n > 0){ + if (n > -1){ sb.append(upalpha[n]); continue; } throw new URISyntaxException(host, "host contains escaped sequence that has an illegal character at index " + i); } int n = index(upalpha, hos[i]); - if (n > 0) { + if (n > -1) { sb.append(lowalpha[n]); continue; } @@ -474,17 +474,17 @@ public class UriString { escIndex = i; continue; } - if (escIndex > 0 && i > escIndex && i < escIndex + 3 ){ - if (index(numeric, pth[i]) > 0) { + if (escIndex > -1 && i > escIndex && i < escIndex + 3 ){ + if (index(numeric, pth[i]) > -1) { sb.append(pth[i]); continue; } - if (index(upalpha, pth[i]) > 0){ + if (index(upalpha, pth[i]) > -1){ sb.append(pth[i]); continue; } int n = index(lowalpha, pth[i]); - if (n > 0){ + if (n > -1){ sb.append(upalpha[n]); continue; }
