antelder 2002/06/26 06:07:56
Modified: java/src/org/apache/wsif/compiler/schema/tools
Schema2Java.java
Log:
Change Schema2Java to lazy initialize the workingDirectory and wrap the getProperty
in a DoPrivileged call
Revision Changes Path
1.4 +25 -3
xml-axis-wsif/java/src/org/apache/wsif/compiler/schema/tools/Schema2Java.java
Index: Schema2Java.java
===================================================================
RCS file:
/home/cvs/xml-axis-wsif/java/src/org/apache/wsif/compiler/schema/tools/Schema2Java.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Schema2Java.java 24 Jun 2002 13:11:17 -0000 1.3
+++ Schema2Java.java 26 Jun 2002 13:07:56 -0000 1.4
@@ -67,6 +67,8 @@
import java.util.Iterator;
import java.util.Map;
import java.util.Vector;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import javax.xml.namespace.QName;
@@ -86,7 +88,7 @@
public class Schema2Java {
private HashMap registry = new HashMap();
- private String workingDirectory = System.getProperty("user.dir");
+ private String workingDirectory;
private HashMap namespaceRegistry = new HashMap();
private HashMap undefinedRegistry = new HashMap();
@@ -632,6 +634,26 @@
return reg;
}
+
+ /**
+ * Gets the current working directory for generated Java files.
+ * @return dir java.lang.String defaults to the "user.dir"
+ * system property
+ * @see setWorkingDirectory
+ */
+ public String getWorkingDirectory() {
+ if ( workingDirectory == null ) {
+ workingDirectory =
+ (String)AccessController.doPrivileged(
+ new PrivilegedAction() {
+ public Object run() {
+ return System.getProperty("user.dir");
+ }
+ }
+ );
+ }
+ return workingDirectory;
+ }
private ClassFile group2Class(SchemaGroup gp) throws SchemaException {
@@ -810,7 +832,7 @@
(ClassFile) classFileList.elementAt(classIndex);
String javaPathName =
Conventions.getJavaPathName(
- workingDirectory,
+ getWorkingDirectory(),
classFile.packageName);
String javaFileName = classFile.className + ".java";
OutputStream os =
@@ -840,7 +862,7 @@
if (javac) {
for (int i = 0; i < classCount; i++) {
- if (Conventions.JDKcompile(fileNames[i], workingDirectory)
+ if (Conventions.JDKcompile(fileNames[i], getWorkingDirectory() )
&& verbose) {
System.out.println("Compiled file '" + fileNames[i] + "'.");
}