8049375: Extend how the org.omg.CORBA.ORB handles the search for orb.properties
Reviewed-by: lancea, alanb
--- a/corba/src/java.corba/share/classes/org/omg/CORBA/ORB.java Wed Jul 05 22:48:37 2017 +0200
+++ b/corba/src/java.corba/share/classes/org/omg/CORBA/ORB.java Thu Feb 09 15:52:43 2017 +0000
@@ -106,13 +106,13 @@
*
* <LI>check in properties parameter, if any
*
- * <LI>check in the System properties
+ * <LI>check in the System properties, if any
*
* <LI>check in the orb.properties file located in the user.home
- * directory (if any)
+ * directory, if any
*
- * <LI>check in the orb.properties file located in the java.home/lib
- * directory (if any)
+ * <LI>check in the orb.properties file located in the run-time image,
+ * if any
*
* <LI>fall back on a hardcoded default behavior (use the Java IDL
* implementation)
@@ -170,9 +170,15 @@
* Thus, where appropriate, it is necessary that
* the classes for this alternative ORBSingleton are available on the application's class path.
* It should be noted that the singleton ORB is system wide.
- *
+ * <P>
* When a per-application ORB is created via the 2-arg init methods,
* then it will be located using the thread context class loader.
+ * <P>
+ * The IDL to Java Language OMG specification documents the ${java.home}/lib directory as the location,
+ * in the Java run-time image, to search for orb.properties.
+ * This location is not intended for user editable configuration files.
+ * Therefore, the implementation first checks the ${java.home}/conf directory for orb.properties,
+ * and thereafter the ${java.home}/lib directory.
*
* @since JDK1.2
*/
@@ -271,14 +277,25 @@
}
String javaHome = System.getProperty("java.home");
- fileName = javaHome + File.separator
- + "lib" + File.separator + "orb.properties";
- props = getFileProperties( fileName ) ;
+
+ fileName = javaHome + File.separator + "conf"
+ + File.separator + "orb.properties";
+ props = getFileProperties(fileName);
+
+ if (props != null) {
+ String value = props.getProperty(name);
+ if (value != null)
+ return value;
+ }
+
+ fileName = javaHome + File.separator + "lib"
+ + File.separator + "orb.properties";
+ props = getFileProperties(fileName);
if (props == null)
- return null ;
+ return null;
else
- return props.getProperty( name ) ;
+ return props.getProperty(name);
}
}
);