geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Jencks <david_jen...@yahoo.com>
Subject Re: svn commit: r1153313 - in /geronimo/yoko/trunk: yoko-core/src/main/java/org/apache/yoko/orb/OB/ yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/ yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/util/
Date Wed, 03 Aug 2011 19:49:26 GMT
One thing that would certainly cause this problem is that the relevant package "org.omg.CORBA.ValueDefPackage"
is not exported from the framework so code in the specs module that creates a FullValueDescription
would use a different class that code in the yoko implementation.  I fixed this in rev 1153626
(in server/trunk) but there might be other problems....

thanks
david jencks

On Aug 3, 2011, at 6:30 AM, Forrest Xia wrote:

> I am trying to debug it, hope I can find the problem module soon.
> 
> Forrest
> 
> On Wed, Aug 3, 2011 at 2:23 PM, David Jencks <david_jencks@yahoo.com> wrote:
> Hi Forrest,
> 
> Without an ibm jdk I don't think I can investigate this problem.  Can you at least figure
out what classloader has loaded the fvd?  My first thought was that the endorsed directory
might not be working properly (the yoko-spec-corba jar with this class should be there) but
I also wonder if the fvd somehow got pulled from the oracle jvm in an unexpected way.
> 
> thanks
> david jencks
> 
> On Aug 2, 2011, at 9:26 PM, Forrest Xia wrote:
> 
>> Hi David,
>> 
>> A quick test with this new fix, but hit a classloading problem like this:
>> 
>> Caused by: java.lang.LinkageError: loading constraint violation: loader "org/eclipse/osgi/internal/baseadaptor/DefaultClassLoader@3b0c3b0c"
previously initiated loading for a different type with name "org/omg/CORBA/ValueDefPackage/FullValueDescription"
defined by loader "com/ibm/oti/vm/BootstrapClassLoader@547d547d"
>>     at org.apache.yoko.rmi.impl.TypeRepository.getDescriptor(TypeRepository.java:338)
>>     at org.apache.yoko.rmi.impl.ValueHandlerImpl.desc(ValueHandlerImpl.java:55)
>>     at org.apache.yoko.rmi.impl.ValueHandlerImpl.readValue0(ValueHandlerImpl.java:91)
>>     at org.apache.yoko.rmi.impl.ValueHandlerImpl.readValue(ValueHandlerImpl.java:76)
>>     at org.apache.yoko.orb.OB.ValueReader.readRMIValue(ValueReader.java:969)
>>     at org.apache.yoko.orb.OB.ValueReader$FactoryCreationStrategy.create(ValueReader.java:299)
>>     at org.apache.yoko.orb.OB.ValueReader.readValueAny(ValueReader.java:1549)
>>     at org.apache.yoko.orb.CORBA.InputStream.read_value(InputStream.java:1916)
>>     at org.apache.yoko.orb.CORBA.Any.readValue(Any.java:210)
>>     at org.apache.yoko.orb.CORBA.Any.read_value(Any.java:505)
>>     at org.apache.yoko.orb.CORBA.InputStream.read_any(InputStream.java:1806)
>>     at org.apache.yoko.rmi.impl.UtilImpl.readAny(UtilImpl.java:309)
>>     at org.apache.geronimo.corba.util.UtilDelegateImpl.readAny(UtilDelegateImpl.java:111)
>>     at javax.rmi.CORBA.Util.readAny(Util.java:95)
>>     at org.apache.yoko.rmi.impl.AnyDescriptor.read(AnyDescriptor.java:36)
>>     at org.apache.yoko.rmi.impl.MethodDescriptor.readResult(MethodDescriptor.java:274)
>>     at org.apache.yoko.rmi.impl.RMIStubHandler.invoke(RMIStubHandler.java:79)
>>     at org.apache.geronimo.yoko.RMIStubHandler.invoke(RMIStubHandler.java:45)
>>     ... 51 more
>> 
>> Forrest
>> On Wed, Aug 3, 2011 at 8:42 AM, <djencks@apache.org> wrote:
>> Author: djencks
>> Date: Wed Aug  3 00:42:03 2011
>> New Revision: 1153313
>> 
>> URL: http://svn.apache.org/viewvc?rev=1153313&view=rev
>> Log:
>> YOKO-434 better implementation of figuring out if remote objects were custom marshalled
>> 
>> Modified:
>>    geronimo/yoko/trunk/yoko-core/src/main/java/org/apache/yoko/orb/OB/ValueReader.java
>>    geronimo/yoko/trunk/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/FVDValueDescriptor.java
>>    geronimo/yoko/trunk/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/TypeRepository.java
>>    geronimo/yoko/trunk/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/ValueDescriptor.java
>>    geronimo/yoko/trunk/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/util/ClassLoaderLocal.java
>> 
>> Modified: geronimo/yoko/trunk/yoko-core/src/main/java/org/apache/yoko/orb/OB/ValueReader.java
>> URL: http://svn.apache.org/viewvc/geronimo/yoko/trunk/yoko-core/src/main/java/org/apache/yoko/orb/OB/ValueReader.java?rev=1153313&r1=1153312&r2=1153313&view=diff
>> ==============================================================================
>> --- geronimo/yoko/trunk/yoko-core/src/main/java/org/apache/yoko/orb/OB/ValueReader.java
(original)
>> +++ geronimo/yoko/trunk/yoko-core/src/main/java/org/apache/yoko/orb/OB/ValueReader.java
Wed Aug  3 00:42:03 2011
>> @@ -71,7 +71,7 @@ final public class ValueReader {
>> 
>>         String[] ids;
>> 
>> -        ChunkState state;
>> +        final ChunkState state;
>> 
>>         Header next; // Java only
>>         String codebase; // Java only
>> 
>> Modified: geronimo/yoko/trunk/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/FVDValueDescriptor.java
>> URL: http://svn.apache.org/viewvc/geronimo/yoko/trunk/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/FVDValueDescriptor.java?rev=1153313&r1=1153312&r2=1153313&view=diff
>> ==============================================================================
>> --- geronimo/yoko/trunk/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/FVDValueDescriptor.java
(original)
>> +++ geronimo/yoko/trunk/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/FVDValueDescriptor.java
Wed Aug  3 00:42:03 2011
>> @@ -20,6 +20,7 @@ package org.apache.yoko.rmi.impl;
>>  import org.omg.CORBA.AttributeDescription;
>>  import org.omg.CORBA.TypeCode;
>>  import org.omg.CORBA.ValueDefPackage.FullValueDescription;
>> +import org.omg.CORBA.ValueMember;
>> 
>>  /**
>>  * @author krab
>> @@ -44,24 +45,24 @@ public class FVDValueDescriptor extends
>>     public void init() {
>>         super.init();
>> 
>> -        // iverride custom loading
>> -        if (!fvd.is_custom) {
>> -            _read_object_method = null;
>> -            _write_object_method = null;
>> -            _is_externalizable = false;
>> -        }
>> -
>> -        AttributeDescription[] atts = fvd.attributes;
>> -        FieldDescriptor[] new_fields = new FieldDescriptor[atts.length];
>> -        for (int i = 0; i < atts.length; i++) {
>> -            AttributeDescription att = atts[i];
>> -            new_fields[i] = findField(att);
>> +        // don't override custom loading. Our local version could work differently.
>> +//        if (!fvd.is_custom) {
>> +//            _read_object_method = null;
>> +//            _write_object_method = null;
>> +//            _is_externalizable = false;
>> +//        }
>> +
>> +        ValueMember[] members = fvd.members;
>> +        FieldDescriptor[] new_fields = new FieldDescriptor[members.length];
>> +        for (int i = 0; i < members.length; i++) {
>> +            ValueMember valueMember = members[i];
>> +            new_fields[i] = findField(valueMember);
>>         }
>> 
>>         _fields = new_fields;
>>     }
>> 
>> -    FieldDescriptor findField(AttributeDescription att) {
>> +    FieldDescriptor findField(ValueMember valueMember) {
>>         FieldDescriptor result = null;
>> 
>>         for (Class c = getJavaClass(); c != null; c = c.getSuperclass()) {
>> @@ -75,7 +76,7 @@ public class FVDValueDescriptor extends
>>                 }
>> 
>>                 for (int i = 0; i < fds.length; i++) {
>> -                    if (fds[i].getIDLName().equals(att.name)) {
>> +                    if (fds[i].getIDLName().equals(valueMember.name)) {
>>                         return fds[0];
>>                     }
>>                 }
>> @@ -103,7 +104,7 @@ public class FVDValueDescriptor extends
>>      *
>>      * @see org.apache.yoko.rmi.impl.TypeDescriptor#getTypeCode()
>>      */
>> -    TypeCode getTypeCode() {
>> +    public TypeCode getTypeCode() {
>>         return fvd.type;
>>     }
>> 
>> 
>> Modified: geronimo/yoko/trunk/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/TypeRepository.java
>> URL: http://svn.apache.org/viewvc/geronimo/yoko/trunk/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/TypeRepository.java?rev=1153313&r1=1153312&r2=1153313&view=diff
>> ==============================================================================
>> --- geronimo/yoko/trunk/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/TypeRepository.java
(original)
>> +++ geronimo/yoko/trunk/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/TypeRepository.java
Wed Aug  3 00:42:03 2011
>> @@ -18,6 +18,8 @@
>> 
>>  package org.apache.yoko.rmi.impl;
>> 
>> +import java.lang.reflect.Method;
>> +import java.util.concurrent.ConcurrentHashMap;
>>  import java.util.logging.Logger;
>>  import java.util.logging.Level;
>> 
>> @@ -37,76 +39,58 @@ public class TypeRepository {
>> 
>>     org.omg.CORBA.ORB orb;
>> 
>> -    java.util.Map classMap = new java.util.HashMap();
>> +    java.util.Map<Class, TypeDescriptor> classMap = new ConcurrentHashMap<Class,
TypeDescriptor> ();
>> 
>> -    java.util.Map repidMap = new java.util.HashMap();
>> +    java.util.Map<String, TypeDescriptor> repidMap = new ConcurrentHashMap<String,
TypeDescriptor>();
>> 
>>     public TypeRepository(org.omg.CORBA.ORB orb) {
>>         this.orb = orb;
>> -        init();
>> -    }
>> -
>> -    org.omg.CORBA.ORB getORB() {
>> -        return orb;
>> -    }
>> -
>> -    void init() {
>>         TypeDescriptor desc;
>> 
>>         desc = new AnyDescriptor(java.lang.Object.class, this);
>> -        synchronized (desc) {
>> -            classMap.put(java.lang.Object.class, desc);
>> -            desc.init();
>> -            repidMap.put(desc.getRepositoryID(), desc);
>> -        }
>> +        classMap.put(java.lang.Object.class, desc);
>> +        desc.init();
>> +        repidMap.put(desc.getRepositoryID(), desc);
>> 
>>         desc = new AnyDescriptor(java.lang.Object.class, this);
>> -        synchronized (desc) {
>> -            classMap.put(java.lang.Object.class, desc);
>> -            desc.init();
>> -            repidMap.put(desc.getRepositoryID(), desc);
>> -        }
>> +        classMap.put(java.lang.Object.class, desc);
>> +        desc.init();
>> +        repidMap.put(desc.getRepositoryID(), desc);
>> 
>>         desc = new StringDescriptor(this);
>> -        synchronized (desc) {
>> -            classMap.put(String.class, desc);
>> -            desc.init();
>> -            repidMap.put(desc.getRepositoryID(), desc);
>> -        }
>> +        classMap.put(String.class, desc);
>> +        desc.init();
>> +        repidMap.put(desc.getRepositoryID(), desc);
>> 
>>         desc = new ClassDescriptor(this);
>> -        synchronized (desc) {
>> -            classMap.put(Class.class, desc);
>> -            classMap.put(javax.rmi.CORBA.ClassDesc.class, desc);
>> -            desc.init();
>> -            repidMap.put(desc.getRepositoryID(), desc);
>> -        }
>> +        classMap.put(Class.class, desc);
>> +        classMap.put(javax.rmi.CORBA.ClassDesc.class, desc);
>> +        desc.init();
>> +        repidMap.put(desc.getRepositoryID(), desc);
>> 
>>         desc = new DateValueDescriptor(this);
>> -        synchronized (desc) {
>> -            classMap.put(java.util.Date.class, desc);
>> -            desc.init();
>> -            repidMap.put(desc.getRepositoryID(), desc);
>> -        }
>> +        classMap.put(java.util.Date.class, desc);
>> +        desc.init();
>> +        repidMap.put(desc.getRepositoryID(), desc);
>> +
>>         desc = new AnyDescriptor(java.io.Externalizable.class, this);
>> -        synchronized (desc) {
>> -            classMap.put(java.io.Externalizable.class, desc);
>> -            desc.init();
>> -            repidMap.put(desc.getRepositoryID(), desc);
>> -        }
>> +        classMap.put(java.io.Externalizable.class, desc);
>> +        desc.init();
>> +        repidMap.put(desc.getRepositoryID(), desc);
>> 
>>         desc = new AnyDescriptor(java.io.Serializable.class, this);
>> -        synchronized (desc) {
>> -            classMap.put(java.io.Serializable.class, desc);
>> -            desc.init();
>> -            repidMap.put(desc.getRepositoryID(), desc);
>> -        }
>> +        classMap.put(java.io.Serializable.class, desc);
>> +        desc.init();
>> +        repidMap.put(desc.getRepositoryID(), desc);
>> +
>>         desc = new AnyDescriptor(java.rmi.Remote.class, this);
>> -        synchronized (desc) {
>> -            classMap.put(java.rmi.Remote.class, desc);
>> -            desc.init();
>> -            repidMap.put(desc.getRepositoryID(), desc);
>> -        }
>> +        classMap.put(java.rmi.Remote.class, desc);
>> +        desc.init();
>> +        repidMap.put(desc.getRepositoryID(), desc);
>> +    }
>> +
>> +    org.omg.CORBA.ORB getORB() {
>> +        return orb;
>>     }
>> 
>>     public String getRepositoryID(Class type) {
>> @@ -143,8 +127,8 @@ public class TypeRepository {
>>     }
>> 
>>     public TypeDescriptor getDescriptor(Class type) {
>> -        logger.fine("Requesting type descriptor for class " + type.getName());
>> -        TypeDescriptor desc = (TypeDescriptor) classMap.get(type);
>> +        logger.fine("Requesting type descriptor for class " + type.getName());
>> +        TypeDescriptor desc = classMap.get(type);
>> 
>>         if (desc != null) {
>>             return desc.getSelf();
>> @@ -154,33 +138,25 @@ public class TypeRepository {
>>                 && isIDLEntity(type)) {
>>             IDLEntityDescriptor idlDesc = new IDLEntityDescriptor(type, this);
>>             desc = idlDesc;
>> -            synchronized (desc) {
>> -                classMap.put(type, desc);
>> -                idlDesc.initIDL();
>> -            }
>> +            classMap.put(type, desc);
>> +            idlDesc.initIDL();
>>         } else if (java.lang.Throwable.class.isAssignableFrom(type)) {
>>             desc = new ExceptionDescriptor(type, this);
>> -            synchronized (desc) {
>> -                classMap.put(type, desc);
>> -                desc.init();
>> -                repidMap.put(desc.getRepositoryID(), desc);
>> -            }
>> +            classMap.put(type, desc);
>> +            desc.init();
>> +            repidMap.put(desc.getRepositoryID(), desc);
>> 
>>         } else if (type.isArray()) {
>>             desc = ArrayDescriptor.get(type, this);
>> -            synchronized (desc) {
>> -                classMap.put(type, desc);
>> -                desc.init();
>> -                repidMap.put(desc.getRepositoryID(), desc);
>> -            }
>> +            classMap.put(type, desc);
>> +            desc.init();
>> +            repidMap.put(desc.getRepositoryID(), desc);
>>         } else if (!type.isInterface()
>>                 && java.io.Serializable.class.isAssignableFrom(type)) {
>>             desc = new ValueDescriptor(type, this);
>> -            synchronized (desc) {
>> -                classMap.put(type, desc);
>> -                desc.init();
>> -                repidMap.put(desc.getRepositoryID(), desc);
>> -            }
>> +            classMap.put(type, desc);
>> +            desc.init();
>> +            repidMap.put(desc.getRepositoryID(), desc);
>>         } else if (java.rmi.Remote.class.isAssignableFrom(type)) {
>>             if (type.isInterface()) {
>>                 desc = new RemoteInterfaceDescriptor(type, this);
>> @@ -188,17 +164,13 @@ public class TypeRepository {
>>                 desc = new RemoteClassDescriptor(type, this);
>>             }
>> 
>> -            synchronized (desc) {
>> -                classMap.put(type, desc);
>> -                desc.init();
>> -                repidMap.put(desc.getRepositoryID(), desc);
>> -            }
>> +            classMap.put(type, desc);
>> +            desc.init();
>> +            repidMap.put(desc.getRepositoryID(), desc);
>>         } else if (type.isPrimitive()) {
>>             desc = getSimpleDescriptor(type);
>> -            synchronized (desc) {
>> -                classMap.put(type, desc);
>> -                repidMap.put(desc.getRepositoryID(), desc);
>> -            }
>> +            classMap.put(type, desc);
>> +            repidMap.put(desc.getRepositoryID(), desc);
>> 
>>         } else if (Object.class.isAssignableFrom(type)) {
>>             if (isAbstractInterface(type)) {
>> @@ -212,24 +184,18 @@ public class TypeRepository {
>>                 desc = new ValueDescriptor(type, this);
>>             }
>> 
>> -            synchronized (desc) {
>> -                classMap.put(type, desc);
>> -                desc.init();
>> -                repidMap.put(desc.getRepositoryID(), desc);
>> -            }
>> +            classMap.put(type, desc);
>> +            desc.init();
>> +            repidMap.put(desc.getRepositoryID(), desc);
>> 
>>         } else {
>>             throw new RuntimeException("cannot handle class " + type.getName());
>>         }
>> -
>> -        logger.fine("Class " + type.getName() + " resolves to " + desc.getClass().getName());
>> +
>> +        logger.fine("Class " + type.getName() + " resolves to " + desc.getClass().getName());
>>         return desc;
>>     }
>> 
>> -    /**
>> -     * @param type
>> -     * @return
>> -     */
>>     private boolean isIDLEntity(Class type) {
>>         Class[] supers = type.getInterfaces();
>> 
>> @@ -293,14 +259,14 @@ public class TypeRepository {
>>             return false;
>> 
>>         Class[] interfaces = type.getInterfaces();
>> -        for (int i = 0; i < interfaces.length; i++) {
>> -            if (!isAbstractInterface(interfaces[i]))
>> +        for (Class anInterface : interfaces) {
>> +            if (!isAbstractInterface(anInterface))
>>                 return false;
>>         }
>> 
>>         java.lang.reflect.Method[] methods = type.getDeclaredMethods();
>> -        for (int j = 0; j < methods.length; j++) {
>> -            if (!isRemoteMethod(methods[j]))
>> +        for (Method method : methods) {
>> +            if (!isRemoteMethod(method))
>>                 return false;
>>         }
>> 
>> @@ -310,8 +276,8 @@ public class TypeRepository {
>>     boolean isRemoteMethod(java.lang.reflect.Method m) {
>>         Class[] ex = m.getExceptionTypes();
>> 
>> -        for (int i = 0; i < ex.length; i++) {
>> -            if (ex[i].isAssignableFrom(REMOTE_EXCEPTION))
>> +        for (Class anEx : ex) {
>> +            if (anEx.isAssignableFrom(REMOTE_EXCEPTION))
>>                 return true;
>>         }
>> 
>> @@ -319,28 +285,32 @@ public class TypeRepository {
>>     }
>> 
>>     /**
>> -     * @param repid
>> +     * @param clz (local) class we are interested in
>> +     * @param repid  repository id from GIOP input for the remote class
>> +     * @param runtime way to look up the complete remote descriptor
>>      * @return ValueDescriptor
>> +     * @throws ClassNotFoundException  something might go wrong.
>>      */
>>     public ValueDescriptor getDescriptor(Class clz, String repid,
>>             RunTime runtime) throws ClassNotFoundException {
>> -        // ValueDescriptor desc = null;
>> -        ValueDescriptor clzdesc = null;
>> +        if (repid == null) {
>> +            return (ValueDescriptor) getDescriptor(clz);
>> +        }
>> +
>> +        ValueDescriptor clzdesc = (ValueDescriptor) repidMap.get(repid);
>> +        if (clzdesc != null) {
>> +            return clzdesc;
>> +        }
>> 
>>         if (clz != null) {
>>             logger.fine("Requesting type descriptor for class " + clz.getName() +
" with repid " + repid);
>> -            ValueDescriptor desc = (ValueDescriptor)classMap.get(clz);
>> -            if (desc != null) {
>> -                return desc;
>> -            }
>> -            // special handling for array value types.
>> +            // special handling for array value types.
>>             if (clz.isArray()) {
>> -                desc = ArrayDescriptor.get(clz, this);
>> -                synchronized (desc) {
>> -                    classMap.put(clz, desc);
>> -                    desc.init();
>> -                    repidMap.put(desc.getRepositoryID(), desc);
>> -                }
>> +                //TODO don't we need to look up the FVD for the array element?
>> +                ValueDescriptor desc = ArrayDescriptor.get(clz, this);
>> +                classMap.put(clz, desc);
>> +                desc.init();
>> +                repidMap.put(desc.getRepositoryID(), desc);
>>                 return desc;
>>             }
>>             clzdesc = (ValueDescriptor) getDescriptor(clz);
>> @@ -349,33 +319,14 @@ public class TypeRepository {
>>             if (repid.equals(localID)) {
>>                 return clzdesc;
>>             }
>> -
>> -            // we have a mismatch.  We'll accept this if the class name and the
>> -            // serial version id are the same (ignoring the hash portion of the
id);
>> -            String localClassName = localID.substring(0, localID.indexOf(':'));
>> -            String remoteClassName = repid.substring(0, repid.indexOf(':'));
>> -
>> -            String localSUID = localID.substring(localID.lastIndexOf(':'));
>> -            String remoteSUID = repid.substring(repid.lastIndexOf(':'));
>> -
>> -            // compare the CORBA hash codes, and allow this to work
>> -            if (localClassName.equals(remoteClassName) && localSUID.equals(remoteSUID))
{
>> -                logger.fine("mismatching repository ids accepted because of matching
name and SUID.  local: " + clzdesc.getRepositoryID() + "; remote: " + repid);
>> -                return clzdesc;
>> -            }
>> -
>> -            logger.fine("mismatching repository ids. local: "
>> -                    + clzdesc.getRepositoryID() + "; remote: " + repid);
>> +            //One might think that java serialization compatibility (same SerialVersionUID)
would mean corba
>> +            //serialization compatibility.  However, one implementation might have
a writeObject method and the
>> +            //other implementation not.  This is recorded only in the isCustomMarshall
of the source value
>> +            //descriptor, so we have to fetch it to find out.  A custom marshall
value has a couple extra bytes
>> +            // and padding and these can't be reliably identified without this remote
info.  cf YOKO-434.
>>         }
>> 
>>         logger.fine("Requesting type descriptor for repid " + repid);
>> -        if (repid != null) {
>> -            clzdesc = (ValueDescriptor) repidMap.get(repid);
>> -            if (clzdesc != null) {
>> -                return clzdesc;
>> -            }
>> -        }
>> -
>>         CodeBase codebase = CodeBaseHelper.narrow(runtime);
>>         if (codebase == null) {
>>             throw new MARSHAL("cannot locate RunTime CodeBase");
>> @@ -385,7 +336,7 @@ public class TypeRepository {
>> 
>>         ValueDescriptor super_desc = null;
>>         if (!"".equals(fvd.base_value)) {
>> -            super_desc = getDescriptor(clz.getSuperclass(), fvd.base_value,
>> +            super_desc = getDescriptor(clz == null? null: clz.getSuperclass(), fvd.base_value,
>>                     codebase);
>>         }
>> 
>> @@ -475,14 +426,14 @@ public class TypeRepository {
>>             int len = current.length();
>>             match = false;
>> 
>> -            for (int i = 0; i < reservedPostfixes.length; i++) {
>> -                if (current.endsWith(reservedPostfixes[i])) {
>> +            for (ByteString reservedPostfixe : reservedPostfixes) {
>> +                if (current.endsWith(reservedPostfixe)) {
>>                     ByteBuffer buf = new ByteBuffer();
>>                     buf.append('_');
>>                     buf.append(result);
>>                     result = buf.toByteString();
>> 
>> -                    int resultLen = reservedPostfixes[i].length();
>> +                    int resultLen = reservedPostfixe.length();
>>                     if (len > resultLen)
>>                         current = current.substring(0, len - resultLen);
>>                     else
>> @@ -498,7 +449,7 @@ public class TypeRepository {
>>         return name;
>>     }
>> 
>> -    static final java.util.Set keyWords = new java.util.HashSet();
>> +    static final java.util.Set<ByteString> keyWords = new java.util.HashSet<ByteString>();
>> 
>>     static final ByteString[] reservedPostfixes = new ByteString[] {
>>             new ByteString("Helper"), new ByteString("Holder"),
>> @@ -519,8 +470,8 @@ public class TypeRepository {
>>                 "toString", "transient", "true", "try", "void", "volatile",
>>                 "wait", "while" };
>> 
>> -        for (int i = 0; i < words.length; i++) {
>> -            keyWords.add(new ByteString(words[i]));
>> +        for (String word : words) {
>> +            keyWords.add(new ByteString(word));
>>         }
>>     }
>> 
>> 
>> Modified: geronimo/yoko/trunk/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/ValueDescriptor.java
>> URL: http://svn.apache.org/viewvc/geronimo/yoko/trunk/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/ValueDescriptor.java?rev=1153313&r1=1153312&r2=1153313&view=diff
>> ==============================================================================
>> --- geronimo/yoko/trunk/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/ValueDescriptor.java
(original)
>> +++ geronimo/yoko/trunk/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/ValueDescriptor.java
Wed Aug  3 00:42:03 2011
>> @@ -818,7 +818,7 @@ public class ValueDescriptor extends Typ
>> 
>>         // System.out.println ("readValue "+getJavaClass());
>> 
>> -        if (_write_object_method != null) {
>> +        if (isCustomMarshalled()) {
>> 
>>             // read custom marshalling value header
>>             byte streamFormatVersion = reader.readByte();
>> @@ -967,7 +967,8 @@ public class ValueDescriptor extends Typ
>>                 getJavaClass().getName(), getRepositoryID(), false, // is_abstract
>>                 isCustomMarshalled(), "", "1.0",
>>                 new org.omg.CORBA.OperationDescription[0],
>> -                new org.omg.CORBA.AttributeDescription[0], getValueMembers(),
>> +                new org.omg.CORBA.AttributeDescription[0],
>> +                getValueMembers(),
>>                 new org.omg.CORBA.Initializer[0], new String[0], new String[0],
>>                 false, // is_truncatable
>>                 (_super_descriptor == null ? "" : _super_descriptor
>> 
>> Modified: geronimo/yoko/trunk/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/util/ClassLoaderLocal.java
>> URL: http://svn.apache.org/viewvc/geronimo/yoko/trunk/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/util/ClassLoaderLocal.java?rev=1153313&r1=1153312&r2=1153313&view=diff
>> ==============================================================================
>> --- geronimo/yoko/trunk/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/util/ClassLoaderLocal.java
(original)
>> +++ geronimo/yoko/trunk/yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/util/ClassLoaderLocal.java
Wed Aug  3 00:42:03 2011
>> @@ -86,7 +86,7 @@ public class ClassLoaderLocal {
>> 
>>     // table for tracking the CL to map relationships.  We're
>>     // using a WeakHashMap to prevent us pinning class loaders.
>> -    static private WeakHashMap localMaps = new WeakHashMap();
>> +    static final private WeakHashMap localMaps = new WeakHashMap();
>> 
>>     private ClassLocalMap getLoaderLocalMap() {
>>         ClassLoader cl = Thread.currentThread().getContextClassLoader();
>> 
>> 
>> 
> 
> 


Mime
View raw message