/hg/release/icedtea7-forest-2.2/corba: 5 new changesets

andrew at icedtea.classpath.org andrew at icedtea.classpath.org
Tue Feb 5 00:36:44 PST 2013


changeset 61fe9908ce37 in /hg/release/icedtea7-forest-2.2/corba
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.2/corba?cmd=changeset;node=61fe9908ce37
author: mbankal
date: Fri Nov 09 10:20:16 2012 -0800

	7141694: Improving CORBA internals
	Reviewed-by: coffeys, ahgross


changeset a78c15e36b6c in /hg/release/icedtea7-forest-2.2/corba
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.2/corba?cmd=changeset;node=a78c15e36b6c
author: coffeys
date: Tue Nov 06 15:50:14 2012 +0000

	7201066: Change modifiers on unused fields
	Reviewed-by: alanb, skoivu


changeset ac4d709ac7a7 in /hg/release/icedtea7-forest-2.2/corba
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.2/corba?cmd=changeset;node=ac4d709ac7a7
author: ngmr
date: Tue Oct 30 17:15:13 2012 +0000

	8000540: Improve IIOP type reuse management
	Reviewed-by: alanb, ahgross, coffeys


changeset e35a6cffcdb0 in /hg/release/icedtea7-forest-2.2/corba
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.2/corba?cmd=changeset;node=e35a6cffcdb0
author: coffeys
date: Tue Oct 30 17:06:35 2012 +0000

	8000631: Restrict access to class constructor
	Reviewed-by: alanb, ahgross


changeset ac1b50725439 in /hg/release/icedtea7-forest-2.2/corba
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.2/corba?cmd=changeset;node=ac1b50725439
author: andrew
date: Tue Feb 05 08:35:51 2013 +0000

	Added tag icedtea-2.2.5 for changeset e35a6cffcdb0


diffstat:

 .hgtags                                                                      |     1 +
 make/com/sun/corba/minclude/com_sun_corba_se_impl_orbutil.jmk                |    14 +-
 src/share/classes/com/sun/corba/se/impl/activation/ServerMain.java           |     8 +-
 src/share/classes/com/sun/corba/se/impl/corba/AnyImpl.java                   |     6 +-
 src/share/classes/com/sun/corba/se/impl/encoding/CDRInputStream_1_0.java     |    61 +-
 src/share/classes/com/sun/corba/se/impl/encoding/CDROutputStream_1_0.java    |    20 +-
 src/share/classes/com/sun/corba/se/impl/io/FVDCodeBaseImpl.java              |     8 +-
 src/share/classes/com/sun/corba/se/impl/io/ObjectStreamClass.java            |   114 +-
 src/share/classes/com/sun/corba/se/impl/io/ValueHandlerImpl.java             |    85 +-
 src/share/classes/com/sun/corba/se/impl/io/ValueUtility.java                 |    10 +-
 src/share/classes/com/sun/corba/se/impl/javax/rmi/CORBA/Util.java            |     6 +-
 src/share/classes/com/sun/corba/se/impl/orb/ORBImpl.java                     |     2 +-
 src/share/classes/com/sun/corba/se/impl/orbutil/IIOPInputStream_1_3.java     |    57 -
 src/share/classes/com/sun/corba/se/impl/orbutil/IIOPInputStream_1_3_1.java   |    54 -
 src/share/classes/com/sun/corba/se/impl/orbutil/IIOPOutputStream_1_3.java    |    68 -
 src/share/classes/com/sun/corba/se/impl/orbutil/IIOPOutputStream_1_3_1.java  |    66 -
 src/share/classes/com/sun/corba/se/impl/orbutil/ORBUtility.java              |    38 +-
 src/share/classes/com/sun/corba/se/impl/orbutil/ObjectStreamClass_1_3_1.java |     6 +-
 src/share/classes/com/sun/corba/se/impl/orbutil/RepIdDelegator_1_3.java      |   177 -
 src/share/classes/com/sun/corba/se/impl/orbutil/RepIdDelegator_1_3_1.java    |   177 -
 src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryIdCache_1_3.java   |   108 -
 src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryIdCache_1_3_1.java |   102 -
 src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryIdFactory.java     |    53 +-
 src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryId_1_3.java        |   990 ---------
 src/share/classes/com/sun/corba/se/impl/orbutil/RepositoryId_1_3_1.java      |  1065 ----------
 src/share/classes/com/sun/corba/se/impl/orbutil/ValueHandlerImpl_1_3.java    |   251 --
 src/share/classes/com/sun/corba/se/impl/orbutil/ValueHandlerImpl_1_3_1.java  |    77 -
 src/share/classes/com/sun/corba/se/spi/orb/ORB.java                          |    37 +-
 src/share/classes/sun/corba/JavaCorbaAccess.java                             |    32 +
 src/share/classes/sun/corba/SharedSecrets.java                               |    60 +
 30 files changed, 220 insertions(+), 3533 deletions(-)

diffs (truncated from 4252 to 500 lines):

diff -r f90e1b6ccfb6 -r ac1b50725439 .hgtags
--- a/.hgtags	Mon Jan 14 22:54:02 2013 +0000
+++ b/.hgtags	Tue Feb 05 08:35:51 2013 +0000
@@ -178,3 +178,4 @@
 38deb372c569b4c824bd3913567c0ea5844e34a9 icedtea-2.2.2
 64c5506f4a4b50657ce32a68dbf4c6aecd07e4bf icedtea-2.2.3
 12fee4f9ac222e28ca0e7d4e4475c4c6f92a50bf icedtea-2.2.4
+e35a6cffcdb09223158a04694455ad39365e88cb icedtea-2.2.5
diff -r f90e1b6ccfb6 -r ac1b50725439 make/com/sun/corba/minclude/com_sun_corba_se_impl_orbutil.jmk
--- a/make/com/sun/corba/minclude/com_sun_corba_se_impl_orbutil.jmk	Mon Jan 14 22:54:02 2013 +0000
+++ b/make/com/sun/corba/minclude/com_sun_corba_se_impl_orbutil.jmk	Tue Feb 05 08:35:51 2013 +0000
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -29,10 +29,6 @@
 	com/sun/corba/se/impl/orbutil/DenseIntMapImpl.java \
 	com/sun/corba/se/impl/orbutil/GetPropertyAction.java \
 	com/sun/corba/se/impl/orbutil/HexOutputStream.java \
-	com/sun/corba/se/impl/orbutil/IIOPInputStream_1_3.java \
-	com/sun/corba/se/impl/orbutil/IIOPInputStream_1_3_1.java \
-	com/sun/corba/se/impl/orbutil/IIOPOutputStream_1_3.java \
-	com/sun/corba/se/impl/orbutil/IIOPOutputStream_1_3_1.java \
 	com/sun/corba/se/impl/orbutil/LegacyHookGetFields.java \
 	com/sun/corba/se/impl/orbutil/LegacyHookPutFields.java \
 	com/sun/corba/se/impl/orbutil/LogKeywords.java \
@@ -45,19 +41,11 @@
 	com/sun/corba/se/impl/orbutil/ORBUtility.java \
 	com/sun/corba/se/impl/orbutil/ORBClassLoader.java \
 	com/sun/corba/se/impl/orbutil/RepIdDelegator.java \
-	com/sun/corba/se/impl/orbutil/RepIdDelegator_1_3.java \
-	com/sun/corba/se/impl/orbutil/RepIdDelegator_1_3_1.java \
-	com/sun/corba/se/impl/orbutil/RepositoryIdCache_1_3.java \
-	com/sun/corba/se/impl/orbutil/RepositoryId_1_3.java \
 	com/sun/corba/se/impl/orbutil/RepositoryIdFactory.java \
 	com/sun/corba/se/impl/orbutil/RepositoryIdStrings.java \
 	com/sun/corba/se/impl/orbutil/RepositoryIdUtility.java \
 	com/sun/corba/se/impl/orbutil/RepositoryIdInterface.java \
-	com/sun/corba/se/impl/orbutil/RepositoryIdCache_1_3_1.java \
-	com/sun/corba/se/impl/orbutil/RepositoryId_1_3_1.java \
 	com/sun/corba/se/impl/orbutil/StackImpl.java \
-	com/sun/corba/se/impl/orbutil/ValueHandlerImpl_1_3_1.java \
-	com/sun/corba/se/impl/orbutil/ValueHandlerImpl_1_3.java \
 	com/sun/corba/se/impl/orbutil/closure/Future.java \
 	com/sun/corba/se/impl/orbutil/closure/Constant.java \
 	com/sun/corba/se/impl/orbutil/concurrent/Sync.java \
diff -r f90e1b6ccfb6 -r ac1b50725439 src/share/classes/com/sun/corba/se/impl/activation/ServerMain.java
--- a/src/share/classes/com/sun/corba/se/impl/activation/ServerMain.java	Mon Jan 14 22:54:02 2013 +0000
+++ b/src/share/classes/com/sun/corba/se/impl/activation/ServerMain.java	Tue Feb 05 08:35:51 2013 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -322,9 +322,9 @@
     com.sun.corba.se.spi.activation._ServerImplBase
 {
     private ORB orb;
-    private Method installMethod ;
-    private Method uninstallMethod ;
-    private Method shutdownMethod ;
+    private transient Method installMethod ;
+    private transient Method uninstallMethod ;
+    private transient Method shutdownMethod ;
     private Object methodArgs[] ;
 
     ServerCallback(ORB orb, Method installMethod, Method uninstallMethod,
diff -r f90e1b6ccfb6 -r ac1b50725439 src/share/classes/com/sun/corba/se/impl/corba/AnyImpl.java
--- a/src/share/classes/com/sun/corba/se/impl/corba/AnyImpl.java	Mon Jan 14 22:54:02 2013 +0000
+++ b/src/share/classes/com/sun/corba/se/impl/corba/AnyImpl.java	Tue Feb 05 08:35:51 2013 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -1218,7 +1218,7 @@
         // See bug 4391648 for more info about the tcORB in this
         // case.
         RepositoryIdStrings repStrs
-            = RepositoryIdFactory.getRepIdStringsFactory(tcORB);
+            = RepositoryIdFactory.getRepIdStringsFactory();
 
 
         // Assertion: c instanceof Serializable?
@@ -1251,7 +1251,7 @@
         // Anything else
         // We know that this is a TypeCodeImpl since it is our ORB
         classTC = (TypeCodeImpl)ValueUtility.createTypeCodeForClass(
-            tcORB, c, ORBUtility.createValueHandler(tcORB));
+            tcORB, c, ORBUtility.createValueHandler());
         // Intruct classTC to store its buffer
         classTC.setCaching(true);
         // Update the cache
diff -r f90e1b6ccfb6 -r ac1b50725439 src/share/classes/com/sun/corba/se/impl/encoding/CDRInputStream_1_0.java
--- a/src/share/classes/com/sun/corba/se/impl/encoding/CDRInputStream_1_0.java	Mon Jan 14 22:54:02 2013 +0000
+++ b/src/share/classes/com/sun/corba/se/impl/encoding/CDRInputStream_1_0.java	Tue Feb 05 08:35:51 2013 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -269,8 +269,8 @@
 
     private final void createRepositoryIdHandlers()
     {
-        repIdUtil = RepositoryIdFactory.getRepIdUtility(orb);
-        repIdStrs = RepositoryIdFactory.getRepIdStringsFactory(orb);
+        repIdUtil = RepositoryIdFactory.getRepIdUtility();
+        repIdStrs = RepositoryIdFactory.getRepIdStringsFactory();
     }
 
     public GIOPVersion getGIOPVersion() {
@@ -564,10 +564,7 @@
 
         checkForNegativeLength(len);
 
-        if (orb != null && ORBUtility.isLegacyORB((ORB)orb))
-            return legacyReadString(len);
-        else
-            return internalReadString(len);
+        return internalReadString(len);
     }
 
     private final String internalReadString(int len) {
@@ -588,54 +585,6 @@
         return new String(result, 0, getCharConverter().getNumChars());
     }
 
-    private final String legacyReadString(int len) {
-
-        //
-        // Workaround for ORBs which send string lengths of
-        // zero to mean empty string.
-        //
-        //
-        // IMPORTANT: Do not replace 'new String("")' with "", it may result
-        // in a Serialization bug (See serialization.zerolengthstring) and
-        // bug id: 4728756 for details
-        if (len == 0)
-            return new String("");
-
-        len--;
-        char[] c = new char[len];
-
-        int n = 0;
-        while (n < len) {
-            int avail;
-            int bytes;
-            int wanted;
-
-            avail = bbwi.buflen - bbwi.position();
-            if (avail <= 0) {
-                grow(1, 1);
-                avail = bbwi.buflen - bbwi.position();
-            }
-            wanted = len - n;
-            bytes = (wanted < avail) ? wanted : avail;
-            // Microbenchmarks are showing a loop of ByteBuffer.get(int) being
-            // faster than ByteBuffer.get(byte[], int, int).
-            for (int i=0; i<bytes; i++) {
-                c[n+i] = (char) (bbwi.byteBuffer.get(bbwi.position()+i) & 0xFF);
-            }
-            bbwi.position(bbwi.position() + bytes);
-            n += bytes;
-        }
-
-        //
-        // Skip past terminating null byte
-        //
-        if (bbwi.position() + 1 > bbwi.buflen)
-            alignAndCheck(1, 1);
-        bbwi.position(bbwi.position() + 1);
-
-        return new String(c);
-    }
-
     public final String read_string() {
         return readStringOrIndirection(false);
     }
@@ -1045,7 +994,7 @@
 
                 try {
                     if (valueHandler == null)
-                        valueHandler = ORBUtility.createValueHandler(orb);
+                        valueHandler = ORBUtility.createValueHandler();
 
                     value = valueHandler.readValue(parent,
                                                    indirection,
diff -r f90e1b6ccfb6 -r ac1b50725439 src/share/classes/com/sun/corba/se/impl/encoding/CDROutputStream_1_0.java
--- a/src/share/classes/com/sun/corba/se/impl/encoding/CDROutputStream_1_0.java	Mon Jan 14 22:54:02 2013 +0000
+++ b/src/share/classes/com/sun/corba/se/impl/encoding/CDROutputStream_1_0.java	Tue Feb 05 08:35:51 2013 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -189,18 +189,8 @@
 
     private final void createRepositoryIdHandlers()
     {
-        if (orb != null) {
-            // Get the appropriate versions based on the ORB version.  The
-            // ORB versioning info is only in the core ORB.
-            repIdUtil
-                = RepositoryIdFactory.getRepIdUtility(orb);
-            repIdStrs
-                = RepositoryIdFactory.getRepIdStringsFactory(orb);
-        } else {
-            // Get the latest versions
-            repIdUtil = RepositoryIdFactory.getRepIdUtility();
-            repIdStrs = RepositoryIdFactory.getRepIdStringsFactory();
-        }
+        repIdUtil = RepositoryIdFactory.getRepIdUtility();
+        repIdStrs = RepositoryIdFactory.getRepIdStringsFactory();
     }
 
     public BufferManagerWrite getBufferManager()
@@ -705,7 +695,7 @@
     private void writeArray(Serializable array, Class clazz) {
 
         if (valueHandler == null)
-            valueHandler = ORBUtility.createValueHandler(orb); //d11638
+            valueHandler = ORBUtility.createValueHandler(); //d11638
 
         // Write value_tag
         int indirection = writeValueTag(mustChunk, true,
@@ -768,7 +758,7 @@
 
     private void writeRMIIIOPValueType(Serializable object, Class clazz) {
         if (valueHandler == null)
-            valueHandler = ORBUtility.createValueHandler(orb); //d11638
+            valueHandler = ORBUtility.createValueHandler(); //d11638
 
         Serializable key = object;
 
diff -r f90e1b6ccfb6 -r ac1b50725439 src/share/classes/com/sun/corba/se/impl/io/FVDCodeBaseImpl.java
--- a/src/share/classes/com/sun/corba/se/impl/io/FVDCodeBaseImpl.java	Mon Jan 14 22:54:02 2013 +0000
+++ b/src/share/classes/com/sun/corba/se/impl/io/FVDCodeBaseImpl.java	Tue Feb 05 08:35:51 2013 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -86,7 +86,7 @@
             // default to using the current ORB version in case the
             // vhandler is not set
             if (vhandler == null) {
-                vhandler = new ValueHandlerImpl(false);
+                vhandler = ValueHandlerImpl.getInstance(false);
             }
 
             // Util.getCodebase may return null which would
@@ -120,7 +120,7 @@
                 // default to using the current ORB version in case the
                 // vhandler is not set
                 if (vhandler == null) {
-                    vhandler = new ValueHandlerImpl(false);
+                    vhandler = ValueHandlerImpl.getInstance(false);
                 }
 
                 try{
@@ -161,7 +161,7 @@
             // default to using the current ORB version in case the
             // vhandler is not set
             if (vhandler == null) {
-                vhandler = new ValueHandlerImpl(false);
+                vhandler = ValueHandlerImpl.getInstance(false);
             }
 
             Stack repIds = new Stack();
diff -r f90e1b6ccfb6 -r ac1b50725439 src/share/classes/com/sun/corba/se/impl/io/ObjectStreamClass.java
--- a/src/share/classes/com/sun/corba/se/impl/io/ObjectStreamClass.java	Mon Jan 14 22:54:02 2013 +0000
+++ b/src/share/classes/com/sun/corba/se/impl/io/ObjectStreamClass.java	Tue Feb 05 08:35:51 2013 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,7 @@
 /*
  * Licensed Materials - Property of IBM
  * RMI-IIOP v1.0
- * Copyright IBM Corp. 1998 1999  All Rights Reserved
+ * Copyright IBM Corp. 1998 2012  All Rights Reserved
  *
  */
 
@@ -56,7 +56,6 @@
 
 import java.util.Arrays;
 import java.util.Comparator;
-import java.util.Hashtable;
 
 import com.sun.corba.se.impl.util.RepositoryId;
 
@@ -83,8 +82,6 @@
     private static Object noArgsList[] = {};
     private static Class noTypesList[] = {};
 
-    private static Hashtable translatedFields;
-
     /** true if represents enum type */
     private boolean isEnum;
 
@@ -384,6 +381,42 @@
          */
     }
 
+    private static final class PersistentFieldsValue
+            extends ClassValue<ObjectStreamField[]> {
+        PersistentFieldsValue() { }
+
+        protected ObjectStreamField[] computeValue(Class<?> type) {
+            try {
+                Field pf = type.getDeclaredField("serialPersistentFields");
+                int mods = pf.getModifiers();
+                if (Modifier.isPrivate(mods) && Modifier.isStatic(mods) &&
+                        Modifier.isFinal(mods)) {
+                    pf.setAccessible(true);
+                    java.io.ObjectStreamField[] fields =
+                        (java.io.ObjectStreamField[])pf.get(type);
+                    return translateFields(fields);
+                }
+            } catch (NoSuchFieldException | IllegalAccessException |
+                    IllegalArgumentException | ClassCastException e) {
+            }
+            return null;
+        }
+
+        private static ObjectStreamField[] translateFields(
+            java.io.ObjectStreamField[] fields) {
+            ObjectStreamField[] translation =
+                new ObjectStreamField[fields.length];
+            for (int i = 0; i < fields.length; i++) {
+                translation[i] = new ObjectStreamField(fields[i].getName(),
+                        fields[i].getType());
+            }
+            return translation;
+        }
+    }
+
+    private static final PersistentFieldsValue persistentFieldsValue =
+        new PersistentFieldsValue();
+
     /*
      * Initialize class descriptor.  This method is only invoked on class
      * descriptors created via calls to lookupInternal().  This method is kept
@@ -416,35 +449,7 @@
                  * If it is declared, use the declared serialPersistentFields.
                  * Otherwise, extract the fields from the class itself.
                  */
-                try {
-                    Field pf = cl.getDeclaredField("serialPersistentFields");
-                    // serial bug 7; the serialPersistentFields were not
-                    // being read and stored as Accessible bit was not set
-                    pf.setAccessible(true);
-                    // serial bug 7; need to find if the field is of type
-                    // java.io.ObjectStreamField
-                    java.io.ObjectStreamField[] f =
-                           (java.io.ObjectStreamField[])pf.get(cl);
-                    int mods = pf.getModifiers();
-                    if ((Modifier.isPrivate(mods)) &&
-                        (Modifier.isStatic(mods)) &&
-                        (Modifier.isFinal(mods)))
-                    {
-                        fields = (ObjectStreamField[])translateFields((Object[])pf.get(cl));
-                    }
-                } catch (NoSuchFieldException e) {
-                    fields = null;
-                } catch (IllegalAccessException e) {
-                    fields = null;
-                } catch (IllegalArgumentException e) {
-                    fields = null;
-                } catch (ClassCastException e) {
-                    /* Thrown if a field serialPersistentField exists
-                     * but it is not of type ObjectStreamField.
-                     */
-                    fields = null;
-                }
-
+                    fields = persistentFieldsValue.get(cl);
 
                 if (fields == null) {
                     /* Get all of the declared fields for this
@@ -641,43 +646,6 @@
         superclass = null;
     }
 
-    private static Object[] translateFields(Object objs[])
-        throws NoSuchFieldException {
-        try{
-            java.io.ObjectStreamField fields[] = (java.io.ObjectStreamField[])objs;
-            Object translation[] = null;
-
-            if (translatedFields == null)
-                translatedFields = new Hashtable();
-
-            translation = (Object[])translatedFields.get(fields);
-
-            if (translation != null)
-                return translation;
-            else {
-                Class osfClass = Class.forName("com.sun.corba.se.impl.io.ObjectStreamField");
-                translation = (Object[])java.lang.reflect.Array.newInstance(osfClass, objs.length);
-                Object arg[] = new Object[2];
-                Class types[] = {String.class, Class.class};
-                Constructor constructor = osfClass.getDeclaredConstructor(types);
-                for (int i = fields.length -1; i >= 0; i--){
-                    arg[0] = fields[i].getName();
-                    arg[1] = fields[i].getType();
-
-                    translation[i] = constructor.newInstance(arg);
-                }
-                translatedFields.put(fields, translation);
-
-            }
-
-            return (Object[])translation;
-        }
-        catch(Throwable t){
-            NoSuchFieldException nsfe = new NoSuchFieldException();
-            nsfe.initCause( t ) ;
-            throw nsfe ;
-        }
-    }
 
     /*
      * Set the class this version descriptor matches.
@@ -1555,8 +1523,8 @@
     private boolean hasExternalizableBlockData;
     Method writeObjectMethod;
     Method readObjectMethod;
-    private Method writeReplaceObjectMethod;
-    private Method readResolveObjectMethod;
+    private transient Method writeReplaceObjectMethod;
+    private transient Method readResolveObjectMethod;
     private Constructor cons ;
 
     /**
diff -r f90e1b6ccfb6 -r ac1b50725439 src/share/classes/com/sun/corba/se/impl/io/ValueHandlerImpl.java
--- a/src/share/classes/com/sun/corba/se/impl/io/ValueHandlerImpl.java	Mon Jan 14 22:54:02 2013 +0000
+++ b/src/share/classes/com/sun/corba/se/impl/io/ValueHandlerImpl.java	Tue Feb 05 08:35:51 2013 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -53,7 +53,7 @@
 import com.sun.corba.se.impl.logging.OMGSystemException;
 import com.sun.corba.se.impl.logging.UtilSystemException;
 
-public class ValueHandlerImpl implements javax.rmi.CORBA.ValueHandlerMultiFormat {
+public final class ValueHandlerImpl implements javax.rmi.CORBA.ValueHandlerMultiFormat {
 
     // Property to override our maximum stream format version
     public static final String FORMAT_VERSION_PROPERTY
@@ -150,14 +150,22 @@
         writeValueWithVersion(out, value, streamFormatVersion);
     }
 
-    public ValueHandlerImpl(){}
+    private ValueHandlerImpl(){}
 
-    public ValueHandlerImpl(boolean isInputStream) {
+    private ValueHandlerImpl(boolean isInputStream) {
         this();
         useHashtables = false;
         this.isInputStream = isInputStream;
     }
 
+    static ValueHandlerImpl getInstance() {
+        return new ValueHandlerImpl();
+    }
+
+    static ValueHandlerImpl getInstance(boolean isInputStream) {
+        return new ValueHandlerImpl(isInputStream);
+    }
+
     /**
      * Writes the value to the stream using java semantics.
      * @param out The stream to write the value to
@@ -458,12 +466,7 @@
         return ObjectStreamClass.lookup(value.getClass()).writeReplace(value);



More information about the distro-pkg-dev mailing list