[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