|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*/ |
|
|
|
/* |
|
* Licensed Materials - Property of IBM |
|
* RMI-IIOP v1.0 |
|
* Copyright IBM Corp. 1998 1999 All Rights Reserved |
|
* |
|
*/ |
|
|
|
package sun.rmi.rmic; |
|
|
|
import java.io.File; |
|
import sun.tools.java.Identifier; |
|
|
|
/** |
|
* Util provides static utility methods used by other rmic classes. |
|
* |
|
* WARNING: The contents of this source file are not part of any |
|
* supported API. Code that depends on them does so at its own risk: |
|
* they are subject to change or removal without notice. |
|
* |
|
* @author Bryan Atsatt |
|
*/ |
|
|
|
public class Util implements sun.rmi.rmic.Constants { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*/ |
|
public static File getOutputDirectoryFor(Identifier theClass, |
|
File rootDir, |
|
BatchEnvironment env) { |
|
|
|
File outputDir = null; |
|
String className = theClass.getFlatName().toString().replace('.', SIGC_INNERCLASS); |
|
String qualifiedClassName = className; |
|
String packagePath = null; |
|
String packageName = theClass.getQualifier().toString(); |
|
|
|
if (packageName.length() > 0) { |
|
qualifiedClassName = packageName + "." + className; |
|
packagePath = packageName.replace('.', File.separatorChar); |
|
} |
|
|
|
// Do we have a root directory? |
|
|
|
if (rootDir != null) { |
|
|
|
// Yes, do we have a package name? |
|
|
|
if (packagePath != null) { |
|
|
|
// Yes, so use it as the root. Open the directory... |
|
|
|
outputDir = new File(rootDir, packagePath); |
|
|
|
// Make sure the directory exists... |
|
|
|
ensureDirectory(outputDir,env); |
|
|
|
} else { |
|
|
|
// Default package, so use root as output dir... |
|
|
|
outputDir = rootDir; |
|
} |
|
} else { |
|
|
|
// No root directory. Get the current working directory... |
|
|
|
String workingDirPath = System.getProperty("user.dir"); |
|
File workingDir = new File(workingDirPath); |
|
|
|
// Do we have a package name? |
|
|
|
if (packagePath == null) { |
|
|
|
// No, so use working directory... |
|
|
|
outputDir = workingDir; |
|
|
|
} else { |
|
|
|
// Yes, so use working directory as the root... |
|
|
|
outputDir = new File(workingDir, packagePath); |
|
|
|
// Make sure the directory exists... |
|
|
|
ensureDirectory(outputDir,env); |
|
} |
|
} |
|
|
|
// Finally, return the directory... |
|
|
|
return outputDir; |
|
} |
|
|
|
private static void ensureDirectory (File dir, BatchEnvironment env) { |
|
if (!dir.exists()) { |
|
dir.mkdirs(); |
|
if (!dir.exists()) { |
|
env.error(0,"rmic.cannot.create.dir",dir.getAbsolutePath()); |
|
throw new InternalError(); |
|
} |
|
} |
|
} |
|
} |