[jboss-cvs] JBossAS SVN: r111355 - in projects/specs/trunk: jboss-javaee-6.0 and 10 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu May 12 18:23:34 EDT 2011


Author: sguilhen at redhat.com
Date: 2011-05-12 18:23:34 -0400 (Thu, 12 May 2011)
New Revision: 111355

Added:
   projects/specs/trunk/jboss-rmi-api_1.0_spec/
   projects/specs/trunk/jboss-rmi-api_1.0_spec/pom.xml
   projects/specs/trunk/jboss-rmi-api_1.0_spec/src/
   projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/
   projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/
   projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/
   projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/
   projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/
   projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/ClassDesc.java
   projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/GetORBPropertiesFileAction.java
   projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/GetPropertyAction.java
   projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/PortableRemoteObjectDelegate.java
   projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/Stub.java
   projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/StubDelegate.java
   projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/Tie.java
   projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/Util.java
   projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/UtilDelegate.java
   projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/ValueHandler.java
   projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/ValueHandlerMultiFormat.java
   projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/package.html
   projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/PortableRemoteObject.java
   projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/package.html
   projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/resources/
   projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/resources/LICENSE
Modified:
   projects/specs/trunk/jboss-javaee-6.0/pom.xml
   projects/specs/trunk/jboss-javaee6-specs-bom/pom.xml
   projects/specs/trunk/jboss-specs-parent/pom.xml
Log:
JBEE-78: Add the jboss-rmi-api module

Modified: projects/specs/trunk/jboss-javaee-6.0/pom.xml
===================================================================
--- projects/specs/trunk/jboss-javaee-6.0/pom.xml	2011-05-12 18:11:28 UTC (rev 111354)
+++ projects/specs/trunk/jboss-javaee-6.0/pom.xml	2011-05-12 22:23:34 UTC (rev 111355)
@@ -96,6 +96,10 @@
          <artifactId>jboss-jms-api_1.1_spec</artifactId>
       </dependency>
       <dependency>
+         <groupId>org.jboss.spec.javax.rmi</groupId>
+         <artifactId>jboss-rmi-api_1.0_spec</artifactId>
+      </dependency>
+      <dependency>
          <groupId>org.jboss.spec.javax.security.auth.message</groupId>
          <artifactId>jboss-jaspi-api_1.0_spec</artifactId>
       </dependency>

Modified: projects/specs/trunk/jboss-javaee6-specs-bom/pom.xml
===================================================================
--- projects/specs/trunk/jboss-javaee6-specs-bom/pom.xml	2011-05-12 18:11:28 UTC (rev 111354)
+++ projects/specs/trunk/jboss-javaee6-specs-bom/pom.xml	2011-05-12 22:23:34 UTC (rev 111355)
@@ -86,6 +86,11 @@
         <version>${version.javaee.specs.api}</version>
       </dependency>
       <dependency>
+        <groupId>org.jboss.spec.javax.rmi</groupId>
+        <artifactId>jboss-rmi-api_1.0_spec</artifactId>
+        <version>${version.javaee.specs.api}</version>
+      </dependency>
+      <dependency>
         <groupId>org.jboss.spec.javax.security.jacc</groupId>
         <artifactId>jboss-jacc-api_1.4_spec</artifactId>
         <version>${version.javaee.specs.api}</version>

Added: projects/specs/trunk/jboss-rmi-api_1.0_spec/pom.xml
===================================================================
--- projects/specs/trunk/jboss-rmi-api_1.0_spec/pom.xml	                        (rev 0)
+++ projects/specs/trunk/jboss-rmi-api_1.0_spec/pom.xml	2011-05-12 22:23:34 UTC (rev 111355)
@@ -0,0 +1,67 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  
+  <parent>
+    <groupId>org.jboss.spec</groupId>
+    <artifactId>jboss-specs-parent</artifactId>
+    <version>1.0.0.Beta2</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.jboss.spec.javax.rmi</groupId>
+  <artifactId>jboss-rmi-api_1.0_spec</artifactId>
+  <version>1.0.0.Final</version>
+  <packaging>jar</packaging>
+  <name>JAVAX RMI API</name>
+  <description>The javax.rmi and javax.rmi.CORBA classes</description>
+  
+  <scm>
+    <connection>scm:svn:http://anonsvn.jboss.org/repos/jbossas/projects/specs/trunk/jboss-rmi-api_1.0_spec</connection>
+    <developerConnection>scm:svn:https://svn.jboss.org/repos/jbossas/projects/specs/trunk/jboss-rmi-api_1.0_spec</developerConnection>
+    <url>http://fisheye.jboss.org/browse/JBossAS/projects/specs/trunk/jboss-rmi-api_1.0_spec</url>
+  </scm>
+
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <showDeprecation>false</showDeprecation>
+          <compilerArguments>
+            <endorseddirs>${project.build.directory}/endorsed</endorseddirs>
+          </compilerArguments>
+        </configuration>
+      </plugin>
+      <plugin>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <executions>
+          <execution>
+            <phase>generate-sources</phase>
+            <goals>
+              <goal>copy</goal>
+            </goals>
+            <configuration>
+              <artifactItems>
+                <artifactItem>
+                  <groupId>jacorb</groupId>
+                  <artifactId>jacorb</artifactId>
+                  <type>jar</type>
+                  <overWrite>true</overWrite>
+                  <outputDirectory>${project.build.directory}/endorsed</outputDirectory>
+                </artifactItem>
+              </artifactItems>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
+  <dependencies>
+    <dependency>
+      <groupId>jacorb</groupId>
+      <artifactId>jacorb</artifactId>
+      <version>2.3.1jboss.patch01-brew</version>
+      <scope>provided</scope>
+    </dependency>
+  </dependencies>
+  
+</project>

Added: projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/ClassDesc.java
===================================================================
--- projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/ClassDesc.java	                        (rev 0)
+++ projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/ClassDesc.java	2011-05-12 22:23:34 UTC (rev 111355)
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 1999, 2000, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * Licensed Materials - Property of IBM
+ * RMI-IIOP v1.0
+ * Copyright IBM Corp. 1998 1999  All Rights Reserved
+ *
+ */
+
+package javax.rmi.CORBA;
+
+/**
+ * This class is used to marshal java.lang.Class objects over IIOP.
+ */
+public class ClassDesc implements java.io.Serializable {
+
+    /**
+     * @serial The class's RepositoryId.
+     */
+    private String repid;
+
+    /**
+     * @serial A space-separated list of codebase URLs.
+     */
+    private String codebase;
+}

Added: projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/GetORBPropertiesFileAction.java
===================================================================
--- projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/GetORBPropertiesFileAction.java	                        (rev 0)
+++ projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/GetORBPropertiesFileAction.java	2011-05-12 22:23:34 UTC (rev 111355)
@@ -0,0 +1,105 @@
+/*
+ * Copyright (c) 1999, 2001, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * (C) Copyright IBM Corp. 1993 - 1997 - All Rights Reserved
+ *
+ * The original version of this source code and documentation is
+ * copyrighted and owned by IBM, Inc. These materials are provided under
+ * terms of a License Agreement between IBM and Sun. This technology is
+ * protected by multiple US and International patents. This notice and
+ * attribution to IBM may not be removed.
+ *
+ */
+
+
+package javax.rmi.CORBA;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.util.Properties;
+
+class GetORBPropertiesFileAction implements PrivilegedAction<Object> {
+    private boolean debug = false ;
+
+    public GetORBPropertiesFileAction () {
+    }
+
+    private String getSystemProperty(final String name) {
+        // This will not throw a SecurityException because this
+        // class was loaded from rt.jar using the bootstrap classloader.
+        String propValue = (String) AccessController.doPrivileged(
+            new PrivilegedAction<String>() {
+                public java.lang.String run() {
+                    return System.getProperty(name);
+                }
+            }
+        );
+
+        return propValue;
+    }
+
+    private void getPropertiesFromFile( Properties props, String fileName )
+    {
+        try {
+            File file = new File( fileName ) ;
+            if (!file.exists())
+                return ;
+
+            FileInputStream in = new FileInputStream( file ) ;
+
+            try {
+                props.load( in ) ;
+            } finally {
+                in.close() ;
+            }
+        } catch (Exception exc) {
+            if (debug)
+                System.out.println( "ORB properties file " + fileName +
+                    " not found: " + exc) ;
+        }
+    }
+
+    public Object run()
+    {
+        Properties defaults = new Properties() ;
+
+        String javaHome = getSystemProperty( "java.home" ) ;
+        String fileName = javaHome + File.separator + "lib" + File.separator +
+            "orb.properties" ;
+
+        getPropertiesFromFile( defaults, fileName ) ;
+
+        Properties results = new Properties( defaults ) ;
+
+        String userHome = getSystemProperty( "user.home" ) ;
+        fileName = userHome + File.separator + "orb.properties" ;
+
+        getPropertiesFromFile( results, fileName ) ;
+        return results ;
+    }
+}

Added: projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/GetPropertyAction.java
===================================================================
--- projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/GetPropertyAction.java	                        (rev 0)
+++ projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/GetPropertyAction.java	2011-05-12 22:23:34 UTC (rev 111355)
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2004, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.rmi.CORBA ;
+
+/**
+ * A convenience class for retrieving the string value of a system
+ * property as a privileged action.  This class is directly copied
+ * from sun.security.action.GetPropertyAction in order to avoid
+ * depending on the sun.security.action package.
+ *
+ * <p>An instance of this class can be used as the argument of
+ * <code>AccessController.doPrivileged</code>.
+ *
+ * <p>The following code retrieves the value of the system
+ * property named <code>"prop"</code> as a privileged action: <p>
+ *
+ * <pre>
+ * String s = (String) java.security.AccessController.doPrivileged(
+ *                         new GetPropertyAction("prop"));
+ * </pre>
+ *
+ * @author Roland Schemers
+ * @author Ken Cavanaugh
+ * @see java.security.PrivilegedAction
+ * @see java.security.AccessController
+ */
+
+public class GetPropertyAction implements java.security.PrivilegedAction {
+    private String theProp;
+    private String defaultVal;
+
+    /**
+     * Constructor that takes the name of the system property whose
+     * string value needs to be determined.
+     *
+     * @param theProp the name of the system property.
+     */
+    public GetPropertyAction(String theProp) {
+        this.theProp = theProp;
+    }
+
+    /**
+     * Constructor that takes the name of the system property and the default
+     * value of that property.
+     *
+     * @param theProp the name of the system property.
+     * @param defaulVal the default value.
+     */
+    public GetPropertyAction(String theProp, String defaultVal) {
+        this.theProp = theProp;
+        this.defaultVal = defaultVal;
+    }
+
+    /**
+     * Determines the string value of the system property whose
+     * name was specified in the constructor.
+     *
+     * @return the string value of the system property,
+     *         or the default value if there is no property with that key.
+     */
+    public Object run() {
+        String value = System.getProperty(theProp);
+        return (value == null) ? defaultVal : value;
+    }
+}

Added: projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/PortableRemoteObjectDelegate.java
===================================================================
--- projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/PortableRemoteObjectDelegate.java	                        (rev 0)
+++ projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/PortableRemoteObjectDelegate.java	2011-05-12 22:23:34 UTC (rev 111355)
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 1999, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * Licensed Materials - Property of IBM
+ * RMI-IIOP v1.0
+ * Copyright IBM Corp. 1998 1999  All Rights Reserved
+ *
+ */
+
+package javax.rmi.CORBA;
+
+import java.rmi.RemoteException;
+import java.rmi.NoSuchObjectException;
+import java.rmi.Remote;
+
+/**
+ * Supports delegation for method implementations in {@link javax.rmi.PortableRemoteObject}.
+ * The delegate is a singleton instance of a class that implements this
+ * interface and provides a replacement implementation for all the
+ * methods of <code>javax.rmi.PortableRemoteObject</code>.
+ *
+ * Delegates are enabled by providing the delegate's class name as the
+ * value of the
+ * <code>javax.rmi.CORBA.PortableRemoteObjectClass</code>
+ * system property.
+ *
+ * @see javax.rmi.PortableRemoteObject
+ */
+public interface PortableRemoteObjectDelegate {
+
+    /**
+     * Delegation call for {@link javax.rmi.PortableRemoteObject#exportObject}.
+     */
+    void exportObject(Remote obj)
+        throws RemoteException;
+
+    /**
+     * Delegation call for {@link javax.rmi.PortableRemoteObject#toStub}.
+     */
+    Remote toStub (Remote obj)
+        throws NoSuchObjectException;
+
+    /**
+     * Delegation call for {@link javax.rmi.PortableRemoteObject#unexportObject}.
+     */
+    void unexportObject(Remote obj)
+        throws NoSuchObjectException;
+
+    /**
+     * Delegation call for {@link javax.rmi.PortableRemoteObject#narrow}.
+     */
+    java.lang.Object narrow (java.lang.Object narrowFrom,
+                                    java.lang.Class narrowTo)
+        throws ClassCastException;
+
+    /**
+     * Delegation call for {@link javax.rmi.PortableRemoteObject#connect}.
+     */
+    void connect (Remote target, Remote source)
+        throws RemoteException;
+
+}

Added: projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/Stub.java
===================================================================
--- projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/Stub.java	                        (rev 0)
+++ projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/Stub.java	2011-05-12 22:23:34 UTC (rev 111355)
@@ -0,0 +1,257 @@
+/*
+ * Copyright (c) 1998, 2004, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * Licensed Materials - Property of IBM
+ * RMI-IIOP v1.0
+ * Copyright IBM Corp. 1998 1999  All Rights Reserved
+ *
+ */
+
+package javax.rmi.CORBA;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.rmi.RemoteException;
+import java.rmi.server.RMIClassLoader;
+import java.security.AccessController;
+import java.util.Properties;
+
+import org.omg.CORBA.INITIALIZE;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA_2_3.portable.ObjectImpl;
+
+/**
+ * Base class from which all RMI-IIOP stubs must inherit.
+ */
+public abstract class Stub extends ObjectImpl
+    implements java.io.Serializable {
+
+    private static final long serialVersionUID = 1087775603798577179L;
+
+    // This can only be set at object construction time (no sync necessary).
+    private transient StubDelegate stubDelegate = null;
+    private static Class stubDelegateClass = null;
+    private static final String StubClassKey = "javax.rmi.CORBA.StubClass";
+    private static final String defaultStubImplName = "com.sun.corba.se.impl.javax.rmi.CORBA.StubDelegateImpl";
+
+    static {
+        Object stubDelegateInstance = (Object) createDelegateIfSpecified(StubClassKey, defaultStubImplName);
+        if (stubDelegateInstance != null)
+            stubDelegateClass = stubDelegateInstance.getClass();
+
+    }
+
+
+    /**
+     * Returns a hash code value for the object which is the same for all stubs
+     * that represent the same remote object.
+     * @return the hash code value.
+     */
+    public int hashCode() {
+
+        if (stubDelegate == null) {
+            setDefaultDelegate();
+        }
+
+        if (stubDelegate != null) {
+            return stubDelegate.hashCode(this);
+        }
+
+        return 0;
+    }
+
+    /**
+     * Compares two stubs for equality. Returns <code>true</code> when used to compare stubs
+     * that represent the same remote object, and <code>false</code> otherwise.
+     * @param obj the reference object with which to compare.
+     * @return <code>true</code> if this object is the same as the <code>obj</code>
+     *          argument; <code>false</code> otherwise.
+     */
+    public boolean equals(java.lang.Object obj) {
+
+        if (stubDelegate == null) {
+            setDefaultDelegate();
+        }
+
+        if (stubDelegate != null) {
+            return stubDelegate.equals(this, obj);
+        }
+
+        return false;
+    }
+
+    /**
+     * Returns a string representation of this stub. Returns the same string
+     * for all stubs that represent the same remote object.
+     * @return a string representation of this stub.
+     */
+    public String toString() {
+
+
+        if (stubDelegate == null) {
+            setDefaultDelegate();
+        }
+
+        String ior;
+        if (stubDelegate != null) {
+            ior = stubDelegate.toString(this);
+            if (ior == null) {
+                return super.toString();
+            } else {
+                return ior;
+            }
+        }
+        return super.toString();
+    }
+
+    /**
+     * Connects this stub to an ORB. Required after the stub is deserialized
+     * but not after it is demarshalled by an ORB stream. If an unconnected
+     * stub is passed to an ORB stream for marshalling, it is implicitly
+     * connected to that ORB. Application code should not call this method
+     * directly, but should call the portable wrapper method
+     * {@link javax.rmi.PortableRemoteObject#connect}.
+     * @param orb the ORB to connect to.
+     * @exception RemoteException if the stub is already connected to a different
+     * ORB, or if the stub does not represent an exported remote or local object.
+     */
+    public void connect(ORB orb) throws RemoteException {
+
+        if (stubDelegate == null) {
+            setDefaultDelegate();
+        }
+
+        if (stubDelegate != null) {
+            stubDelegate.connect(this, orb);
+        }
+
+    }
+
+    /**
+     * Serialization method to restore the IOR state.
+     */
+    private void readObject(java.io.ObjectInputStream stream)
+        throws IOException, ClassNotFoundException {
+
+        if (stubDelegate == null) {
+            setDefaultDelegate();
+        }
+
+        if (stubDelegate != null) {
+            stubDelegate.readObject(this, stream);
+        }
+
+    }
+
+    /**
+     * Serialization method to save the IOR state.
+     * @serialData The length of the IOR type ID (int), followed by the IOR type ID
+     * (byte array encoded using ISO8859-1), followed by the number of IOR profiles
+     * (int), followed by the IOR profiles.  Each IOR profile is written as a
+     * profile tag (int), followed by the length of the profile data (int), followed
+     * by the profile data (byte array).
+     */
+    private void writeObject(java.io.ObjectOutputStream stream) throws IOException {
+
+        if (stubDelegate == null) {
+            setDefaultDelegate();
+        }
+
+        if (stubDelegate != null) {
+            stubDelegate.writeObject(this, stream);
+        }
+    }
+
+    private void setDefaultDelegate() {
+        if (stubDelegateClass != null) {
+            try {
+                 stubDelegate = (javax.rmi.CORBA.StubDelegate) stubDelegateClass.newInstance();
+            } catch (Exception ex) {
+            // what kind of exception to throw
+            // delegate not set therefore it is null and will return default
+            // values
+            }
+        }
+    }
+
+    // Same code as in PortableRemoteObject. Can not be shared because they
+    // are in different packages and the visibility needs to be package for
+    // security reasons. If you know a better solution how to share this code
+    // then remove it from PortableRemoteObject. Also in Util.java
+    private static Object createDelegateIfSpecified(String classKey, String defaultClassName) {
+        String className = (String)
+            AccessController.doPrivileged(new GetPropertyAction(classKey));
+        if (className == null) {
+            Properties props = getORBPropertiesFile();
+            if (props != null) {
+                className = props.getProperty(classKey);
+            }
+        }
+
+        if (className == null) {
+            className = defaultClassName;
+        }
+
+        try {
+            return loadDelegateClass(className).newInstance();
+        } catch (ClassNotFoundException ex) {
+            INITIALIZE exc = new INITIALIZE( "Cannot instantiate " + className);
+            exc.initCause( ex ) ;
+            throw exc ;
+        } catch (Exception ex) {
+            INITIALIZE exc = new INITIALIZE( "Error while instantiating" + className);
+            exc.initCause( ex ) ;
+            throw exc ;
+        }
+
+    }
+
+    private static Class loadDelegateClass( String className )  throws ClassNotFoundException
+    {
+        try {
+            ClassLoader loader = Thread.currentThread().getContextClassLoader();
+            return Class.forName(className, false, loader);
+        } catch (ClassNotFoundException e) {
+            // ignore, then try RMIClassLoader
+        }
+
+        try {
+            return RMIClassLoader.loadClass(className);
+        } catch (MalformedURLException e) {
+            String msg = "Could not load " + className + ": " + e.toString();
+            ClassNotFoundException exc = new ClassNotFoundException( msg ) ;
+            throw exc ;
+        }
+    }
+
+    /**
+     * Load the orb.properties file.
+     */
+    private static Properties getORBPropertiesFile () {
+        return (Properties) AccessController.doPrivileged(new GetORBPropertiesFileAction());
+    }
+
+}

Added: projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/StubDelegate.java
===================================================================
--- projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/StubDelegate.java	                        (rev 0)
+++ projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/StubDelegate.java	2011-05-12 22:23:34 UTC (rev 111355)
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 1999, 2001, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * Licensed Materials - Property of IBM
+ * RMI-IIOP v1.0
+ * Copyright IBM Corp. 1998 1999  All Rights Reserved
+ *
+ */
+
+package javax.rmi.CORBA;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.rmi.RemoteException;
+import org.omg.CORBA.ORB;
+
+/**
+ * Supports delegation for method implementations in {@link Stub}.
+ * A delegate is an instance of a class that implements this
+ * interface and provides a replacement implementation for all the
+ * methods of <code>javax.rmi.CORBA.Stub</code>.  If delegation is
+ * enabled, each stub has an associated delegate.
+ *
+ * Delegates are enabled by providing the delegate's class name as the
+ * value of the
+ * <code>javax.rmi.CORBA.StubClass</code>
+ * system property.
+ *
+ * @see Stub
+ */
+public interface StubDelegate {
+
+    /**
+     * Delegation call for {@link Stub#hashCode}.
+     */
+    int hashCode(Stub self);
+
+    /**
+     * Delegation call for {@link Stub#equals}.
+     */
+    boolean equals(Stub self, java.lang.Object obj);
+
+    /**
+     * Delegation call for {@link Stub#toString}.
+     */
+    String toString(Stub self);
+
+    /**
+     * Delegation call for {@link Stub#connect}.
+     */
+    void connect(Stub self, ORB orb)
+        throws RemoteException;
+
+    // _REVISIT_ cannot link to Stub.readObject directly... why not?
+    /**
+     * Delegation call for
+     * <a href="{@docRoot}/serialized-form.html#javax.rmi.CORBA.Stub"><code>Stub.readObject(java.io.ObjectInputStream)</code></a>.
+     */
+    void readObject(Stub self, ObjectInputStream s)
+        throws IOException, ClassNotFoundException;
+
+    // _REVISIT_ cannot link to Stub.writeObject directly... why not?
+    /**
+     * Delegation call for
+     * <a href="{@docRoot}/serialized-form.html#javax.rmi.CORBA.Stub"><code>Stub.writeObject(java.io.ObjectOutputStream)</code></a>.
+     */
+    void writeObject(Stub self, ObjectOutputStream s)
+        throws IOException;
+
+}

Added: projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/Tie.java
===================================================================
--- projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/Tie.java	                        (rev 0)
+++ projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/Tie.java	2011-05-12 22:23:34 UTC (rev 111355)
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 1998, 2001, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * Licensed Materials - Property of IBM
+ * RMI-IIOP v1.0
+ * Copyright IBM Corp. 1998 1999  All Rights Reserved
+ *
+ */
+
+package javax.rmi.CORBA;
+
+import java.rmi.Remote;
+
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.portable.InvokeHandler;
+
+/**
+ * Defines methods which all RMI-IIOP server side ties must implement.
+ */
+public interface Tie extends InvokeHandler {
+    /**
+     * Returns an object reference for the target object represented by
+     * this tie.
+     * @return an object reference for the target object.
+     */
+    org.omg.CORBA.Object thisObject();
+
+    /**
+     * Deactivates the target object represented by this tie.
+     */
+    void deactivate() throws java.rmi.NoSuchObjectException;
+
+    /**
+     * Returns the ORB for this tie.
+     * @return the ORB.
+     */
+    ORB orb();
+
+    /**
+     * Sets the ORB for this tie.
+     * @param orb the ORB.
+     */
+    void orb(ORB orb);
+
+    /**
+     * Called by {@link Util#registerTarget} to set the target
+     * for this tie.
+     * @param target the object to use as the target for this tie.
+     */
+    void setTarget(java.rmi.Remote target);
+
+    /**
+     * Returns the target for this tie.
+     * @return the target.
+     */
+    Remote getTarget();
+}

Added: projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/Util.java
===================================================================
--- projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/Util.java	                        (rev 0)
+++ projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/Util.java	2011-05-12 22:23:34 UTC (rev 111355)
@@ -0,0 +1,387 @@
+/*
+ * Copyright (c) 1998, 2006, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * Licensed Materials - Property of IBM
+ * RMI-IIOP v1.0
+ * Copyright IBM Corp. 1998 1999  All Rights Reserved
+ *
+ */
+
+package javax.rmi.CORBA;
+
+import java.net.MalformedURLException;
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+import java.rmi.server.RMIClassLoader;
+import java.security.AccessController;
+import java.util.Properties;
+
+import org.omg.CORBA.INITIALIZE;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.SystemException;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+
+/**
+ * Provides utility methods that can be used by stubs and ties to
+ * perform common operations.
+ */
+public class Util {
+
+    // This can only be set at static initialization time (no sync necessary).
+    private static javax.rmi.CORBA.UtilDelegate utilDelegate = null;
+    private static final String UtilClassKey = "javax.rmi.CORBA.UtilClass";
+    private static final String defaultUtilImplName =
+"com.sun.corba.se.impl.javax.rmi.CORBA.Util";
+
+    static {
+        utilDelegate = (javax.rmi.CORBA.UtilDelegate)
+            createDelegateIfSpecified(UtilClassKey, defaultUtilImplName);
+    }
+
+    private Util(){}
+
+    /**
+     * Maps a SystemException to a RemoteException.
+     * @param ex the SystemException to map.
+     * @return the mapped exception.
+     */
+    public static RemoteException mapSystemException(SystemException ex) {
+
+        if (utilDelegate != null) {
+            return utilDelegate.mapSystemException(ex);
+        }
+        return null;
+    }
+
+    /**
+     * Writes any java.lang.Object as a CORBA any.
+     * @param out the stream in which to write the any.
+     * @param obj the object to write as an any.
+     */
+    public static void writeAny(OutputStream out, Object obj) {
+
+        if (utilDelegate != null) {
+            utilDelegate.writeAny(out, obj);
+        }
+    }
+
+    /**
+     * Reads a java.lang.Object as a CORBA any.
+     * @param in the stream from which to read the any.
+     * @return the object read from the stream.
+     */
+    public static Object readAny(InputStream in) {
+
+        if (utilDelegate != null) {
+            return utilDelegate.readAny(in);
+        }
+        return null;
+    }
+
+    /**
+     * Writes a java.lang.Object as a CORBA Object. If <code>obj</code> is
+     * an exported RMI-IIOP server object, the tie is found
+     * and wired to <code>obj</code>, then written to
+<code>out.write_Object(org.omg.CORBA.Object)</code>.
+     * If <code>obj</code> is a CORBA Object, it is written to
+     * <code>out.write_Object(org.omg.CORBA.Object)</code>.
+     * @param out the stream in which to write the object.
+     * @param obj the object to write.
+     */
+    public static void writeRemoteObject(OutputStream out,
+                                         java.lang.Object obj) {
+
+        if (utilDelegate != null) {
+            utilDelegate.writeRemoteObject(out, obj);
+        }
+
+    }
+
+    /**
+     * Writes a java.lang.Object as either a value or a CORBA Object.
+     * If <code>obj</code> is a value object or a stub object, it is written to
+     * <code>out.write_abstract_interface(java.lang.Object)</code>. If <code>obj</code>
+is
+an exported
+     * RMI-IIOP server object, the tie is found and wired to <code>obj</code>,
+     * then written to <code>out.write_abstract_interface(java.lang.Object)</code>.
+     * @param out the stream in which to write the object.
+     * @param obj the object to write.
+     */
+    public static void writeAbstractObject(OutputStream out,
+                                           java.lang.Object obj) {
+
+        if (utilDelegate != null) {
+            utilDelegate.writeAbstractObject(out, obj);
+        }
+    }
+
+    /**
+     * Registers a target for a tie. Adds the tie to an internal table and calls
+     * {@link Tie#setTarget} on the tie object.
+     * @param tie the tie to register.
+     * @param target the target for the tie.
+     */
+    public static void registerTarget(javax.rmi.CORBA.Tie tie,
+                                      java.rmi.Remote target) {
+
+        if (utilDelegate != null) {
+            utilDelegate.registerTarget(tie, target);
+        }
+
+    }
+
+    /**
+     * Removes the associated tie from an internal table and calls {@link
+Tie#deactivate}
+     * to deactivate the object.
+     * @param target the object to unexport.
+     */
+    public static void unexportObject(java.rmi.Remote target)
+        throws java.rmi.NoSuchObjectException
+    {
+
+        if (utilDelegate != null) {
+            utilDelegate.unexportObject(target);
+        }
+
+    }
+
+    /**
+     * Returns the tie (if any) for a given target object.
+     * @return the tie or null if no tie is registered for the given target.
+     */
+    public static Tie getTie (Remote target) {
+
+        if (utilDelegate != null) {
+            return utilDelegate.getTie(target);
+        }
+        return null;
+    }
+
+
+    /**
+     * Returns a singleton instance of a class that implements the
+     * {@link ValueHandler} interface.
+     * @return a class which implements the ValueHandler interface.
+     */
+    public static ValueHandler createValueHandler() {
+
+        if (utilDelegate != null) {
+            return utilDelegate.createValueHandler();
+        }
+        return null;
+    }
+
+    /**
+     * Returns the codebase, if any, for the given class.
+     * @param clz the class to get a codebase for.
+     * @return a space-separated list of URLs, or null.
+     */
+    public static String getCodebase(java.lang.Class clz) {
+        if (utilDelegate != null) {
+            return utilDelegate.getCodebase(clz);
+        }
+        return null;
+    }
+
+    /**
+     * Returns a class instance for the specified class.
+     * <P>The spec for this method is the "Java to IDL language
+     * mapping", ptc/00-01-06.
+     * <P>In Java SE Platform, this method works as follows:
+     * <UL><LI>Find the first non-null <tt>ClassLoader</tt> on the
+     * call stack and attempt to load the class using this
+     * <tt>ClassLoader</tt>.
+     * <LI>If the first step fails, and if <tt>remoteCodebase</tt>
+     * is non-null and
+     * <tt>useCodebaseOnly</tt> is false, then call
+     * <tt>java.rmi.server.RMIClassLoader.loadClass(remoteCodebase, className)</tt>.
+     * <LI>If <tt>remoteCodebase</tt> is null or <tt>useCodebaseOnly</tt>
+     * is true, then call <tt>java.rmi.server.RMIClassLoader.loadClass(className)</tt>.
+     * <LI>If a class was not successfully loaded by step 1, 2, or 3,
+     * and <tt>loader</tt> is non-null, then call <tt>loader.loadClass(className)</tt>.
+     * <LI>If a class was successfully loaded by step 1, 2, 3, or 4, then
+     *  return the loaded class, else throw <tt>ClassNotFoundException</tt>.
+     * @param className the name of the class.
+     * @param remoteCodebase a space-separated list of URLs at which
+     * the class might be found. May be null.
+     * @param loader a <tt>ClassLoader</tt> that may be used to
+     * load the class if all other methods fail.
+     * @return the <code>Class</code> object representing the loaded class.
+     * @exception ClassNotFoundException if class cannot be loaded.
+     */
+    public static Class loadClass(String className,
+                                  String remoteCodebase,
+                                  ClassLoader loader)
+        throws ClassNotFoundException {
+        if (utilDelegate != null) {
+            return utilDelegate.loadClass(className,remoteCodebase,loader);
+        }
+        return null ;
+    }
+
+
+    /**
+     * The <tt>isLocal</tt> method has the same semantics as the
+     * <tt>ObjectImpl._is_local</tt>
+     * method, except that it can throw a <tt>RemoteException</tt>.
+     *
+     * The <tt>_is_local()</tt> method is provided so that stubs may determine if a
+     * particular object is implemented by a local servant and hence local
+     * invocation APIs may be used.
+     *
+     * @param stub the stub to test.
+     *
+     * @return The <tt>_is_local()</tt> method returns true if
+     * the servant incarnating the object is located in the same process as
+     * the stub and they both share the same ORB instance.  The <tt>_is_local()</tt>
+     * method returns false otherwise. The default behavior of <tt>_is_local()</tt> is
+     * to return false.
+     *
+     * @throws RemoteException The Java to IDL specification does not
+     * specify the conditions that cause a <tt>RemoteException</tt> to be thrown.
+     */
+    public static boolean isLocal(Stub stub) throws RemoteException {
+
+        if (utilDelegate != null) {
+            return utilDelegate.isLocal(stub);
+        }
+
+        return false;
+    }
+
+    /**
+     * Wraps an exception thrown by an implementation
+     * method.  It returns the corresponding client-side exception.
+     * @param orig the exception to wrap.
+     * @return the wrapped exception.
+     */
+    public static RemoteException wrapException(Throwable orig) {
+
+        if (utilDelegate != null) {
+            return utilDelegate.wrapException(orig);
+        }
+
+        return null;
+    }
+
+    /**
+     * Copies or connects an array of objects. Used by local stubs
+     * to copy any number of actual parameters, preserving sharing
+     * across parameters as necessary to support RMI semantics.
+     * @param obj the objects to copy or connect.
+     * @param orb the ORB.
+     * @return the copied or connected objects.
+     * @exception RemoteException if any object could not be copied or connected.
+     */
+    public static Object[] copyObjects (Object[] obj, ORB orb)
+        throws RemoteException {
+
+        if (utilDelegate != null) {
+            return utilDelegate.copyObjects(obj, orb);
+        }
+
+        return null;
+    }
+
+    /**
+     * Copies or connects an object. Used by local stubs to copy
+     * an actual parameter, result object, or exception.
+     * @param obj the object to copy.
+     * @param orb the ORB.
+     * @return the copy or connected object.
+     * @exception RemoteException if the object could not be copied or connected.
+     */
+    public static Object copyObject (Object obj, ORB orb)
+        throws RemoteException {
+
+        if (utilDelegate != null) {
+            return utilDelegate.copyObject(obj, orb);
+        }
+        return null;
+    }
+
+    // Same code as in PortableRemoteObject. Can not be shared because they
+    // are in different packages and the visibility needs to be package for
+    // security reasons. If you know a better solution how to share this code
+    // then remove it from PortableRemoteObject. Also in Stub.java
+    private static Object createDelegateIfSpecified(String classKey,
+        String defaultClassName)
+    {
+        String className = (String)
+            AccessController.doPrivileged(new GetPropertyAction(classKey));
+        if (className == null) {
+            Properties props = getORBPropertiesFile();
+            if (props != null) {
+                className = props.getProperty(classKey);
+            }
+        }
+
+        if (className == null) {
+            className = defaultClassName;
+        }
+
+        try {
+            return loadDelegateClass(className).newInstance();
+        } catch (ClassNotFoundException ex) {
+            INITIALIZE exc = new INITIALIZE( "Cannot instantiate " + className);
+            exc.initCause( ex ) ;
+            throw exc ;
+        } catch (Exception ex) {
+            INITIALIZE exc = new INITIALIZE( "Error while instantiating" + className);
+            exc.initCause( ex ) ;
+            throw exc ;
+        }
+    }
+
+    private static Class loadDelegateClass( String className )  throws ClassNotFoundException
+    {
+        try {
+            ClassLoader loader = Thread.currentThread().getContextClassLoader();
+            return Class.forName(className, false, loader);
+        } catch (ClassNotFoundException e) {
+            // ignore, then try RMIClassLoader
+        }
+
+        try {
+            return RMIClassLoader.loadClass(className);
+        } catch (MalformedURLException e) {
+            String msg = "Could not load " + className + ": " + e.toString();
+            ClassNotFoundException exc = new ClassNotFoundException( msg ) ;
+            throw exc ;
+        }
+    }
+    /**
+     * Load the orb.properties file.
+     */
+    private static Properties getORBPropertiesFile ()
+    {
+        return (Properties) AccessController.doPrivileged(
+            new GetORBPropertiesFileAction());
+    }
+
+}

Added: projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/UtilDelegate.java
===================================================================
--- projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/UtilDelegate.java	                        (rev 0)
+++ projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/UtilDelegate.java	2011-05-12 22:23:34 UTC (rev 111355)
@@ -0,0 +1,135 @@
+/*
+ * Copyright (c) 1999, 2001, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * Licensed Materials - Property of IBM
+ * RMI-IIOP v1.0
+ * Copyright IBM Corp. 1998 1999  All Rights Reserved
+ *
+ */
+
+package javax.rmi.CORBA;
+
+import java.io.Serializable;
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+import javax.rmi.CORBA.Tie;
+import javax.rmi.CORBA.ValueHandler;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+import org.omg.CORBA.SystemException;
+
+/**
+ * Supports delegation for method implementations in {@link Util}.  The
+ * delegate is a singleton instance of a class that implements this
+ * interface and provides a replacement implementation for all the
+ * methods of <code>javax.rmi.CORBA.Util</code>.
+ *
+ * Delegation is enabled by providing the delegate's class name as the
+ * value of the
+ * <code>javax.rmi.CORBA.UtilClass</code>
+ * system property.
+ *
+ * @see Util
+ */
+public interface UtilDelegate {
+
+    /**
+     * Delegation call for {@link Util#mapSystemException}.
+     */
+    RemoteException mapSystemException(SystemException ex);
+
+    /**
+     * Delegation call for {@link Util#writeAny}.
+     */
+    void writeAny(OutputStream out, Object obj);
+
+    /**
+     * Delegation call for {@link Util#readAny}.
+     */
+    java.lang.Object readAny(InputStream in);
+
+    /**
+     * Delegation call for {@link Util#writeRemoteObject}.
+     */
+    void writeRemoteObject(OutputStream out, Object obj);
+
+    /**
+     * Delegation call for {@link Util#writeAbstractObject}.
+     */
+    void writeAbstractObject(OutputStream out, Object obj);
+
+    /**
+     * Delegation call for {@link Util#registerTarget}.
+     */
+    void registerTarget(Tie tie, Remote target);
+
+    /**
+     * Delegation call for {@link Util#unexportObject}.
+     */
+    void unexportObject(Remote target) throws java.rmi.NoSuchObjectException;
+
+    /**
+     * Delegation call for {@link Util#getTie}.
+     */
+    Tie getTie(Remote target);
+
+    /**
+     * Delegation call for {@link Util#createValueHandler}.
+     */
+    ValueHandler createValueHandler();
+
+    /**
+     * Delegation call for {@link Util#getCodebase}.
+     */
+    String getCodebase(Class clz);
+
+    /**
+     * Delegation call for {@link Util#loadClass}.
+     */
+    Class loadClass(String className, String remoteCodebase, ClassLoader loader)
+        throws ClassNotFoundException;
+
+    /**
+     * Delegation call for {@link Util#isLocal}.
+     */
+    boolean isLocal(Stub stub) throws RemoteException;
+
+    /**
+     * Delegation call for {@link Util#wrapException}.
+     */
+    RemoteException wrapException(Throwable obj);
+
+    /**
+     * Delegation call for {@link Util#copyObject}.
+     */
+    Object copyObject(Object obj, ORB orb) throws RemoteException;
+
+    /**
+     * Delegation call for {@link Util#copyObjects}.
+     */
+    Object[] copyObjects(Object[] obj, ORB orb) throws RemoteException;
+
+}

Added: projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/ValueHandler.java
===================================================================
--- projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/ValueHandler.java	                        (rev 0)
+++ projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/ValueHandler.java	2011-05-12 22:23:34 UTC (rev 111355)
@@ -0,0 +1,96 @@
+/*
+ * Copyright (c) 1998, 1999, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * Licensed Materials - Property of IBM
+ * RMI-IIOP v1.0
+ * Copyright IBM Corp. 1998 1999  All Rights Reserved
+ *
+ */
+
+package javax.rmi.CORBA;
+
+/**
+ * Defines methods which allow serialization of Java objects
+ * to and from GIOP streams.
+ **/
+public interface ValueHandler {
+
+    /**
+     * Writes a value to the stream using Java semantics.
+     * @param out the stream to write the value to.
+     * @param value the value to be written to the stream.
+     **/
+    void writeValue(org.omg.CORBA.portable.OutputStream out,
+                    java.io.Serializable value);
+
+    /**
+     * Reads a value from the stream using Java semantics.
+     * @param in the stream to read the value from.
+     * @param offset the current position in the input stream.
+     * @param clz the type of the value to be read in.
+     * @param repositoryID the RepositoryId of the value to be read in.
+     * @param sender the sending context runtime codebase.
+     * @return the value read from the stream.
+     **/
+    java.io.Serializable readValue(org.omg.CORBA.portable.InputStream in,
+                                   int offset,
+                                   java.lang.Class clz,
+                                   String repositoryID,
+                                   org.omg.SendingContext.RunTime sender);
+
+    /**
+     * Returns the CORBA RepositoryId for the given Java class.
+     * @param clz a Java class.
+     * @return the CORBA RepositoryId for the class.
+     **/
+    java.lang.String getRMIRepositoryID(java.lang.Class clz);
+
+    /**
+     * Indicates whether the given class performs custom or
+     * default marshaling.
+     * @param clz the class to test for custom marshaling.
+     * @return <code>true</code> if the class performs custom marshaling, <code>false</code>
+     * if it does not.
+     **/
+    boolean isCustomMarshaled(java.lang.Class clz);
+
+    /**
+     * Returns the CodeBase for this ValueHandler.  This is used by
+     * the ORB runtime.  The server sends the service context containing
+     * the IOR for this CodeBase on the first GIOP reply.  The client
+     * does the same on the first GIOP request.
+     * @return the SendingContext.CodeBase of this ValueHandler.
+     **/
+    org.omg.SendingContext.RunTime getRunTimeCodeBase();
+
+    /**
+     * If the value contains a <code>writeReplace</code> method then the result
+     * is returned.  Otherwise, the value itself is returned.
+     * @param value the value to be marshaled.
+     * @return the true value to marshal on the wire.
+     **/
+    java.io.Serializable writeReplace(java.io.Serializable value);
+
+}

Added: projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/ValueHandlerMultiFormat.java
===================================================================
--- projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/ValueHandlerMultiFormat.java	                        (rev 0)
+++ projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/ValueHandlerMultiFormat.java	2011-05-12 22:23:34 UTC (rev 111355)
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2002, 2006, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javax.rmi.CORBA;
+
+/**
+ * Java to IDL ptc 02-01-12 1.5.1.5
+ * @since 1.5
+ */
+public interface ValueHandlerMultiFormat extends ValueHandler {
+
+    /**
+     * Returns the maximum stream format version for
+     * RMI/IDL custom value types that is supported
+     * by this ValueHandler object. The ValueHandler
+     * object must support the returned stream format version and
+     * all lower versions.
+     *
+     * An ORB may use this value to include in a standard
+     * IOR tagged component or service context to indicate to other
+     * ORBs the maximum RMI-IIOP stream format that it
+     * supports.  If not included, the default for GIOP 1.2
+     * is stream format version 1, and stream format version
+     * 2 for GIOP 1.3 and higher.
+     */
+    byte getMaximumStreamFormatVersion();
+
+    /**
+     * Allows the ORB to pass the stream format
+     * version for RMI/IDL custom value types. If the ORB
+     * calls this method, it must pass a stream format version
+     * between 1 and the value returned by the
+     * getMaximumStreamFormatVersion method inclusive,
+     * or else a BAD_PARAM exception with standard minor code
+     * will be thrown.
+     *
+     * If the ORB calls the older ValueHandler.writeValue(OutputStream,
+     * Serializable) method, stream format version 1 is implied.
+     *
+     * The ORB output stream passed to the ValueHandlerMultiFormat.writeValue
+     * method must implement the ValueOutputStream interface, and the
+     * ORB input stream passed to the ValueHandler.readValue method must
+     * implement the ValueInputStream interface.
+     */
+    void writeValue(org.omg.CORBA.portable.OutputStream out,
+                    java.io.Serializable value,
+                    byte streamFormatVersion);
+}

Added: projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/package.html
===================================================================
--- projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/package.html	                        (rev 0)
+++ projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/CORBA/package.html	2011-05-12 22:23:34 UTC (rev 111355)
@@ -0,0 +1,35 @@
+<html>
+<head>
+<title>javax.rmi.CORBA package</title>
+<!--
+Copyright (c) 1999, 2003, 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
+under the terms of the GNU General Public License version 2 only, as
+published by the Free Software Foundation.  Oracle designates this
+particular file as subject to the "Classpath" exception as provided
+by Oracle in the LICENSE file that accompanied this code.
+
+This code is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+version 2 for more details (a copy is included in the LICENSE file that
+accompanied this code).
+
+You should have received a copy of the GNU General Public License version
+2 along with this work; if not, write to the Free Software Foundation,
+Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
+-->
+</head>
+<body bgcolor="white">
+Contains portability APIs for RMI-IIOP.  These APIs 
+provide a standard interface between the generated stubs and ties and the 
+RMI-IIOP runtime.  They also allow third party ORBs to be used for RMI over IIOP
+as an alternative to the ORB supplied by Sun.  They are not intended to be called
+directly from RMI-IIOP applications.  See also the {@link javax.rmi} package.
+</body>

Added: projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/PortableRemoteObject.java
===================================================================
--- projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/PortableRemoteObject.java	                        (rev 0)
+++ projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/PortableRemoteObject.java	2011-05-12 22:23:34 UTC (rev 111355)
@@ -0,0 +1,293 @@
+/*
+ * Copyright (c) 1998, 2010, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * Licensed Materials - Property of IBM
+ * RMI-IIOP v1.0
+ * Copyright IBM Corp. 1998 1999  All Rights Reserved
+ *
+ */
+
+package javax.rmi;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.net.MalformedURLException;
+import java.rmi.NoSuchObjectException;
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+import java.rmi.server.RMIClassLoader;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.util.Properties;
+
+import javax.rmi.CORBA.GetPropertyAction;
+
+import org.omg.CORBA.INITIALIZE;
+
+/**
+ * Server implementation objects may either inherit from
+ * javax.rmi.PortableRemoteObject or they may implement a remote interface
+ * and then use the exportObject method to register themselves as a server object.
+ * The toStub method takes a server implementation and returns a stub that
+ * can be used to access that server object.
+ * The connect method makes a Remote object ready for remote communication.
+ * The unexportObject method is used to deregister a server object, allowing it to become
+ * available for garbage collection.
+ * The narrow method takes an object reference or abstract interface type and
+ * attempts to narrow it to conform to
+ * the given interface. If the operation is successful the result will be an
+ * object of the specified type, otherwise an exception will be thrown.
+ */
+public class PortableRemoteObject {
+
+    private static javax.rmi.CORBA.PortableRemoteObjectDelegate proDelegate = null;
+
+    private static final String PortableRemoteObjectClassKey =
+            "javax.rmi.CORBA.PortableRemoteObjectClass";
+
+    private static final String defaultPortableRemoteObjectImplName =
+            "com.sun.corba.se.impl.javax.rmi.PortableRemoteObject";
+
+    static {
+        proDelegate = (javax.rmi.CORBA.PortableRemoteObjectDelegate)
+            createDelegateIfSpecified(PortableRemoteObjectClassKey);
+    }
+
+    /**
+     * Initializes the object by calling <code>exportObject(this)</code>.
+     * @exception RemoteException if export fails.
+     */
+    protected PortableRemoteObject() throws RemoteException {
+        if (proDelegate != null) {
+            PortableRemoteObject.exportObject((Remote)this);
+        }
+    }
+
+    /**
+     * Makes a server object ready to receive remote calls. Note
+     * that subclasses of PortableRemoteObject do not need to call this
+     * method, as it is called by the constructor.
+     * @param obj the server object to export.
+     * @exception RemoteException if export fails.
+     */
+    public static void exportObject(Remote obj)
+        throws RemoteException {
+
+        // Let the delegate do everything, including error handling.
+        if (proDelegate != null) {
+            proDelegate.exportObject(obj);
+        }
+    }
+
+    /**
+     * Returns a stub for the given server object.
+     * @param obj the server object for which a stub is required. Must either be a subclass
+     * of PortableRemoteObject or have been previously the target of a call to
+     * {@link #exportObject}.
+     * @return the most derived stub for the object.
+     * @exception NoSuchObjectException if a stub cannot be located for the given server object.
+     */
+    public static Remote toStub (Remote obj)
+        throws NoSuchObjectException {
+
+        if (proDelegate != null) {
+            return proDelegate.toStub(obj);
+        }
+        return null;
+    }
+
+    /**
+     * Deregisters a server object from the runtime, allowing the object to become
+     * available for garbage collection.
+     * @param obj the object to unexport.
+     * @exception NoSuchObjectException if the remote object is not
+     * currently exported.
+     */
+    public static void unexportObject(Remote obj)
+        throws NoSuchObjectException {
+
+        if (proDelegate != null) {
+            proDelegate.unexportObject(obj);
+        }
+
+    }
+
+    /**
+     * Checks to ensure that an object of a remote or abstract interface type
+     * can be cast to a desired type.
+     * @param narrowFrom the object to check.
+     * @param narrowTo the desired type.
+     * @return an object which can be cast to the desired type.
+     * @throws ClassCastException if narrowFrom cannot be cast to narrowTo.
+     */
+    public static java.lang.Object narrow ( java.lang.Object narrowFrom,
+                                            java.lang.Class narrowTo)
+        throws ClassCastException {
+
+        if (proDelegate != null) {
+            return proDelegate.narrow(narrowFrom, narrowTo);
+        }
+        return null;
+
+    }
+
+    /**
+     * Makes a Remote object ready for remote communication. This normally
+     * happens implicitly when the object is sent or received as an argument
+     * on a remote method call, but in some circumstances it is useful to
+     * perform this action by making an explicit call.  See the
+     * {@link javax.rmi.CORBA.Stub#connect} method for more information.
+     * @param target the object to connect.
+     * @param source a previously connected object.
+     * @throws RemoteException if <code>source</code> is not connected
+     * or if <code>target</code> is already connected to a different ORB than
+     * <code>source</code>.
+     */
+    public static void connect (Remote target, Remote source)
+        throws RemoteException {
+
+        if (proDelegate != null) {
+            proDelegate.connect(target, source);
+        }
+
+    }
+
+    // Same code as in javax.rmi.CORBA.Util. Can not be shared because they
+    // are in different packages and the visibility needs to be package for
+    // security reasons. If you know a better solution how to share this code
+    // then remove it from here.
+    private static Object createDelegateIfSpecified(String classKey) {
+        String className = (String)
+            AccessController.doPrivileged(new GetPropertyAction(classKey));
+        if (className == null) {
+            Properties props = getORBPropertiesFile();
+            if (props != null) {
+                className = props.getProperty(classKey);
+            }
+        }
+        if (className == null) {
+                className = defaultPortableRemoteObjectImplName;
+        }
+
+        try {
+            return (Object) loadDelegateClass(className).newInstance();
+        } catch (ClassNotFoundException ex) {
+            INITIALIZE exc = new INITIALIZE( "Cannot instantiate " + className);
+            exc.initCause( ex ) ;
+            throw exc ;
+        } catch (Exception ex) {
+            INITIALIZE exc = new INITIALIZE( "Error while instantiating" + className);
+            exc.initCause( ex ) ;
+            throw exc ;
+        }
+
+    }
+
+    private static Class loadDelegateClass( String className )  throws ClassNotFoundException
+    {
+        try {
+            ClassLoader loader = Thread.currentThread().getContextClassLoader();
+            return Class.forName(className, false, loader);
+        } catch (ClassNotFoundException e) {
+            // ignore, then try RMIClassLoader
+        }
+
+        try {
+            return RMIClassLoader.loadClass(className);
+        } catch (MalformedURLException e) {
+            String msg = "Could not load " + className + ": " + e.toString();
+            ClassNotFoundException exc = new ClassNotFoundException( msg ) ;
+            throw exc ;
+        }
+    }
+
+    /**
+     * Load the orb.properties file.
+     */
+    private static Properties getORBPropertiesFile () {
+        return (Properties) AccessController.doPrivileged(new GetORBPropertiesFileAction());
+    }
+}
+
+class GetORBPropertiesFileAction implements PrivilegedAction {
+    private boolean debug = false ;
+
+    public GetORBPropertiesFileAction () {
+    }
+
+    private String getSystemProperty(final String name) {
+        // This will not throw a SecurityException because this
+        // class was loaded from rt.jar using the bootstrap classloader.
+        String propValue = (String) AccessController.doPrivileged(
+            new PrivilegedAction() {
+                public java.lang.Object run() {
+                    return System.getProperty(name);
+                }
+            }
+        );
+
+        return propValue;
+    }
+
+    private void getPropertiesFromFile( Properties props, String fileName )
+    {
+        try {
+            File file = new File( fileName ) ;
+            if (!file.exists())
+                return ;
+
+            FileInputStream in = new FileInputStream( file ) ;
+
+            try {
+                props.load( in ) ;
+            } finally {
+                in.close() ;
+            }
+        } catch (Exception exc) {
+            if (debug)
+                System.out.println( "ORB properties file " + fileName +
+                    " not found: " + exc) ;
+        }
+    }
+
+    public Object run()
+    {
+        Properties defaults = new Properties() ;
+
+        String javaHome = getSystemProperty( "java.home" ) ;
+        String fileName = javaHome + File.separator + "lib" + File.separator +
+            "orb.properties" ;
+
+        getPropertiesFromFile( defaults, fileName ) ;
+
+        Properties results = new Properties( defaults ) ;
+
+        String userHome = getSystemProperty( "user.home" ) ;
+        fileName = userHome + File.separator + "orb.properties" ;
+
+        getPropertiesFromFile( results, fileName ) ;
+        return results ;
+    }
+}

Added: projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/package.html
===================================================================
--- projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/package.html	                        (rev 0)
+++ projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/java/javax/rmi/package.html	2011-05-12 22:23:34 UTC (rev 111355)
@@ -0,0 +1,34 @@
+<html>
+<head>
+<title>javax.rmi package</title>
+<!--
+Copyright (c) 1999, 2003, 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
+under the terms of the GNU General Public License version 2 only, as
+published by the Free Software Foundation.  Oracle designates this
+particular file as subject to the "Classpath" exception as provided
+by Oracle in the LICENSE file that accompanied this code.
+
+This code is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+version 2 for more details (a copy is included in the LICENSE file that
+accompanied this code).
+
+You should have received a copy of the GNU General Public License version
+2 along with this work; if not, write to the Free Software Foundation,
+Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
+-->
+</head>
+<body bgcolor="white">
+Contains user APIs for RMI-IIOP.  These APIs are
+provided for use by RMI-IIOP applications, and provide equivalent
+semantics when running over either IIOP or JRMP.  See also the
+{@link javax.rmi.CORBA} package.
+</body>

Added: projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/resources/LICENSE
===================================================================
--- projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/resources/LICENSE	                        (rev 0)
+++ projects/specs/trunk/jboss-rmi-api_1.0_spec/src/main/resources/LICENSE	2011-05-12 22:23:34 UTC (rev 111355)
@@ -0,0 +1,347 @@
+The GNU General Public License (GPL)
+
+Version 2, June 1991
+
+Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license
+document, but changing it is not allowed.
+
+Preamble
+
+The licenses for most software are designed to take away your freedom to share
+and change it.  By contrast, the GNU General Public License is intended to
+guarantee your freedom to share and change free software--to make sure the
+software is free for all its users.  This General Public License applies to
+most of the Free Software Foundation's software and to any other program whose
+authors commit to using it.  (Some other Free Software Foundation software is
+covered by the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+When we speak of free software, we are referring to freedom, not price.  Our
+General Public Licenses are designed to make sure that you have the freedom to
+distribute copies of free software (and charge for this service if you wish),
+that you receive source code or can get it if you want it, that you can change
+the software or use pieces of it in new free programs; and that you know you
+can do these things.
+
+To protect your rights, we need to make restrictions that forbid anyone to deny
+you these rights or to ask you to surrender the rights.  These restrictions
+translate to certain responsibilities for you if you distribute copies of the
+software, or if you modify it.
+
+For example, if you distribute copies of such a program, whether gratis or for
+a fee, you must give the recipients all the rights that you have.  You must
+make sure that they, too, receive or can get the source code.  And you must
+show them these terms so they know their rights.
+
+We protect your rights with two steps: (1) copyright the software, and (2)
+offer you this license which gives you legal permission to copy, distribute
+and/or modify the software.
+
+Also, for each author's protection and ours, we want to make certain that
+everyone understands that there is no warranty for this free software.  If the
+software is modified by someone else and passed on, we want its recipients to
+know that what they have is not the original, so that any problems introduced
+by others will not reflect on the original authors' reputations.
+
+Finally, any free program is threatened constantly by software patents.  We
+wish to avoid the danger that redistributors of a free program will
+individually obtain patent licenses, in effect making the program proprietary.
+To prevent this, we have made it clear that any patent must be licensed for
+everyone's free use or not licensed at all.
+
+The precise terms and conditions for copying, distribution and modification
+follow.
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+0. This License applies to any program or other work which contains a notice
+placed by the copyright holder saying it may be distributed under the terms of
+this General Public License.  The "Program", below, refers to any such program
+or work, and a "work based on the Program" means either the Program or any
+derivative work under copyright law: that is to say, a work containing the
+Program or a portion of it, either verbatim or with modifications and/or
+translated into another language.  (Hereinafter, translation is included
+without limitation in the term "modification".) Each licensee is addressed as
+"you".
+
+Activities other than copying, distribution and modification are not covered by
+this License; they are outside its scope.  The act of running the Program is
+not restricted, and the output from the Program is covered only if its contents
+constitute a work based on the Program (independent of having been made by
+running the Program).  Whether that is true depends on what the Program does.
+
+1. You may copy and distribute verbatim copies of the Program's source code as
+you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice and
+disclaimer of warranty; keep intact all the notices that refer to this License
+and to the absence of any warranty; and give any other recipients of the
+Program a copy of this License along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and you may
+at your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Program or any portion of it, thus
+forming a work based on the Program, and copy and distribute such modifications
+or work under the terms of Section 1 above, provided that you also meet all of
+these conditions:
+
+    a) You must cause the modified files to carry prominent notices stating
+    that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in whole or
+    in part contains or is derived from the Program or any part thereof, to be
+    licensed as a whole at no charge to all third parties under the terms of
+    this License.
+
+    c) If the modified program normally reads commands interactively when run,
+    you must cause it, when started running for such interactive use in the
+    most ordinary way, to print or display an announcement including an
+    appropriate copyright notice and a notice that there is no warranty (or
+    else, saying that you provide a warranty) and that users may redistribute
+    the program under these conditions, and telling the user how to view a copy
+    of this License.  (Exception: if the Program itself is interactive but does
+    not normally print such an announcement, your work based on the Program is
+    not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If identifiable
+sections of that work are not derived from the Program, and can be reasonably
+considered independent and separate works in themselves, then this License, and
+its terms, do not apply to those sections when you distribute them as separate
+works.  But when you distribute the same sections as part of a whole which is a
+work based on the Program, the distribution of the whole must be on the terms
+of this License, whose permissions for other licensees extend to the entire
+whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest your
+rights to work written entirely by you; rather, the intent is to exercise the
+right to control the distribution of derivative or collective works based on
+the Program.
+
+In addition, mere aggregation of another work not based on the Program with the
+Program (or with a work based on the Program) on a volume of a storage or
+distribution medium does not bring the other work under the scope of this
+License.
+
+3. You may copy and distribute the Program (or a work based on it, under
+Section 2) in object code or executable form under the terms of Sections 1 and
+2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable source
+    code, which must be distributed under the terms of Sections 1 and 2 above
+    on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three years, to
+    give any third party, for a charge no more than your cost of physically
+    performing source distribution, a complete machine-readable copy of the
+    corresponding source code, to be distributed under the terms of Sections 1
+    and 2 above on a medium customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer to
+    distribute corresponding source code.  (This alternative is allowed only
+    for noncommercial distribution and only if you received the program in
+    object code or executable form with such an offer, in accord with
+    Subsection b above.)
+
+The source code for a work means the preferred form of the work for making
+modifications to it.  For an executable work, complete source code means all
+the source code for all modules it contains, plus any associated interface
+definition files, plus the scripts used to control compilation and installation
+of the executable.  However, as a special exception, the source code
+distributed need not include anything that is normally distributed (in either
+source or binary form) with the major components (compiler, kernel, and so on)
+of the operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the source
+code from the same place counts as distribution of the source code, even though
+third parties are not compelled to copy the source along with the object code.
+
+4. You may not copy, modify, sublicense, or distribute the Program except as
+expressly provided under this License.  Any attempt otherwise to copy, modify,
+sublicense or distribute the Program is void, and will automatically terminate
+your rights under this License.  However, parties who have received copies, or
+rights, from you under this License will not have their licenses terminated so
+long as such parties remain in full compliance.
+
+5. You are not required to accept this License, since you have not signed it.
+However, nothing else grants you permission to modify or distribute the Program
+or its derivative works.  These actions are prohibited by law if you do not
+accept this License.  Therefore, by modifying or distributing the Program (or
+any work based on the Program), you indicate your acceptance of this License to
+do so, and all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+6. Each time you redistribute the Program (or any work based on the Program),
+the recipient automatically receives a license from the original licensor to
+copy, distribute or modify the Program subject to these terms and conditions.
+You may not impose any further restrictions on the recipients' exercise of the
+rights granted herein.  You are not responsible for enforcing compliance by
+third parties to this License.
+
+7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues), conditions
+are imposed on you (whether by court order, agreement or otherwise) that
+contradict the conditions of this License, they do not excuse you from the
+conditions of this License.  If you cannot distribute so as to satisfy
+simultaneously your obligations under this License and any other pertinent
+obligations, then as a consequence you may not distribute the Program at all.
+For example, if a patent license would not permit royalty-free redistribution
+of the Program by all those who receive copies directly or indirectly through
+you, then the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply and
+the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents or
+other property right claims or to contest validity of any such claims; this
+section has the sole purpose of protecting the integrity of the free software
+distribution system, which is implemented by public license practices.  Many
+people have made generous contributions to the wide range of software
+distributed through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing to
+distribute software through any other system and a licensee cannot impose that
+choice.
+
+This section is intended to make thoroughly clear what is believed to be a
+consequence of the rest of this License.
+
+8. If the distribution and/or use of the Program is restricted in certain
+countries either by patents or by copyrighted interfaces, the original
+copyright holder who places the Program under this License may add an explicit
+geographical distribution limitation excluding those countries, so that
+distribution is permitted only in or among countries not thus excluded.  In
+such case, this License incorporates the limitation as if written in the body
+of this License.
+
+9. The Free Software Foundation may publish revised and/or new versions of the
+General Public License from time to time.  Such new versions will be similar in
+spirit to the present version, but may differ in detail to address new problems
+or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any later
+version", you have the option of following the terms and conditions either of
+that version or of any later version published by the Free Software Foundation.
+If the Program does not specify a version number of this License, you may
+choose any version ever published by the Free Software Foundation.
+
+10. If you wish to incorporate parts of the Program into other free programs
+whose distribution conditions are different, write to the author to ask for
+permission.  For software which is copyrighted by the Free Software Foundation,
+write to the Free Software Foundation; we sometimes make exceptions for this.
+Our decision will be guided by the two goals of preserving the free status of
+all derivatives of our free software and of promoting the sharing and reuse of
+software generally.
+
+NO WARRANTY
+
+11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
+THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN OTHERWISE
+STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE
+PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND
+PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE,
+YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
+ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE
+PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
+INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA
+BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER
+OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+END OF TERMS AND CONDITIONS
+
+How to Apply These Terms to Your New Programs
+
+If you develop a new program, and you want it to be of the greatest possible
+use to the public, the best way to achieve this is to make it free software
+which everyone can redistribute and change under these terms.
+
+To do so, attach the following notices to the program.  It is safest to attach
+them to the start of each source file to most effectively convey the exclusion
+of warranty; and each file should have at least the "copyright" line and a
+pointer to where the full notice is found.
+
+    One line to give the program's name and a brief idea of what it does.
+
+    Copyright (C) <year> <name of author>
+
+    This program is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the Free
+    Software Foundation; either version 2 of the License, or (at your option)
+    any later version.
+
+    This program is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+    more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc., 59
+    Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this when it
+starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author Gnomovision comes
+    with ABSOLUTELY NO WARRANTY; for details type 'show w'.  This is free
+    software, and you are welcome to redistribute it under certain conditions;
+    type 'show c' for details.
+
+The hypothetical commands 'show w' and 'show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may be
+called something other than 'show w' and 'show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.  Here
+is a sample; alter the names:
+
+    Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+    'Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+    signature of Ty Coon, 1 April 1989
+
+    Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General Public
+License instead of this License.
+
+
+"CLASSPATH" EXCEPTION TO THE GPL
+
+Certain source files distributed by Oracle America and/or its affiliates are
+subject to the following clarification and special exception to the GPL, but
+only where Oracle has expressly included in the particular source file's header
+the words "Oracle designates this particular file as subject to the "Classpath"
+exception as provided by Oracle in the LICENSE file that accompanied this code."
+
+    Linking this library statically or dynamically with other modules is making
+    a combined work based on this library.  Thus, the terms and conditions of
+    the GNU General Public License cover the whole combination.
+
+    As a special exception, the copyright holders of this library give you
+    permission to link this library with independent modules to produce an
+    executable, regardless of the license terms of these independent modules,
+    and to copy and distribute the resulting executable under terms of your
+    choice, provided that you also meet, for each linked independent module,
+    the terms and conditions of the license of that module.  An independent
+    module is a module which is not derived from or based on this library.  If
+    you modify this library, you may extend this exception to your version of
+    the library, but you are not obligated to do so.  If you do not wish to do
+    so, delete this exception statement from your version.

Modified: projects/specs/trunk/jboss-specs-parent/pom.xml
===================================================================
--- projects/specs/trunk/jboss-specs-parent/pom.xml	2011-05-12 18:11:28 UTC (rev 111354)
+++ projects/specs/trunk/jboss-specs-parent/pom.xml	2011-05-12 22:23:34 UTC (rev 111355)
@@ -74,6 +74,7 @@
     <module>../jboss-jsf-api_2.0_spec</module>
     <module>../jboss-jsp-api_2.2_spec</module>
     <module>../jboss-jstl-api_1.2_spec</module>
+    <module>../jboss-rmi-api_1.0_spec</module>
     <module>../jboss-servlet-api_3.0_spec</module>
     <module>../jboss-transaction-api_1.1_spec</module>
     <module>../jboss-saaj-api_1.3_spec</module>



More information about the jboss-cvs-commits mailing list