in src/main/java/org/apache/xmlbeans/impl/tool/SchemaCompiler.java [79:359]
public static void main(String[] args) {
if (args.length == 0) {
printUsage();
System.exit(0);
return;
}
Set<String> flags = new HashSet<>();
flags.add("h");
flags.add("help");
flags.add("usage");
flags.add("license");
flags.add("quiet");
flags.add("verbose");
flags.add("version");
flags.add("dl");
flags.add("noupa");
flags.add("nopvr");
flags.add("noann");
flags.add("novdoc");
flags.add("noext");
flags.add("srconly");
flags.add("debug");
Set<String> opts = new HashSet<>();
opts.add("out");
opts.add("name");
opts.add("src");
opts.add("d");
opts.add("cp");
opts.add("compiler");
opts.add("jar"); // deprecated
opts.add("ms");
opts.add("mx");
opts.add("repackage");
opts.add("schemaCodePrinter");
opts.add("extension");
opts.add("extensionParms");
opts.add("allowmdef");
opts.add("catalog");
opts.add("partialMethods");
opts.add("copyann");
opts.add("sourcecodeencoding");
CommandLine cl = new CommandLine(args, flags, opts);
if (cl.getOpt("h") != null || cl.getOpt("help") != null || cl.getOpt("usage") != null) {
printUsage();
System.exit(0);
return;
}
String[] badopts = cl.getBadOpts();
if (badopts.length > 0) {
for (String badopt : badopts) {
System.out.println("Unrecognized option: " + badopt);
}
printUsage();
System.exit(0);
return;
}
if (cl.getOpt("license") != null) {
CommandLine.printLicense();
System.exit(0);
return;
}
if (cl.getOpt("version") != null) {
CommandLine.printVersion();
System.exit(0);
return;
}
boolean verbose = (cl.getOpt("verbose") != null);
boolean quiet = (cl.getOpt("quiet") != null);
if (verbose) {
quiet = false;
}
if (verbose) {
CommandLine.printVersion();
}
String outputfilename = cl.getOpt("out");
String repackage = cl.getOpt("repackage");
String codePrinterClass = cl.getOpt("schemaCodePrinter");
SchemaCodePrinter codePrinter = null;
if (codePrinterClass != null) {
try {
codePrinter = (SchemaCodePrinter)
Class.forName(codePrinterClass).getDeclaredConstructor().newInstance();
} catch (Exception e) {
System.err.println
("Failed to load SchemaCodePrinter class " +
codePrinterClass + "; proceeding with default printer");
}
}
String name = cl.getOpt("name");
boolean download = (cl.getOpt("dl") != null);
boolean noUpa = (cl.getOpt("noupa") != null);
boolean noPvr = (cl.getOpt("nopvr") != null);
boolean noAnn = (cl.getOpt("noann") != null);
boolean noVDoc = (cl.getOpt("novdoc") != null);
boolean noExt = (cl.getOpt("noext") != null);
boolean nojavac = (cl.getOpt("srconly") != null);
boolean debug = (cl.getOpt("debug") != null);
boolean copyAnn = (cl.getOpt("copyann") != null);
String sourceCodeEncoding = cl.getOpt("sourcecodeencoding");
String allowmdef = cl.getOpt("allowmdef");
Set<String> mdefNamespaces = (allowmdef == null ? Collections.emptySet() :
new HashSet<>(Arrays.asList(XmlListImpl.split_list(allowmdef))));
List<Extension> extensions = new ArrayList<>();
if (cl.getOpt("extension") != null) {
try {
Extension e = new Extension();
e.setClassName(Class.forName(cl.getOpt("extension"), false, Thread.currentThread().getContextClassLoader()));
extensions.add(e);
} catch (ClassNotFoundException e) {
System.err.println("Could not find extension class: " + cl.getOpt("extension") + " Is it on your classpath?");
System.exit(1);
}
}
if (!extensions.isEmpty()) {
// example: -extensionParms typeMappingFileLocation=d:\types
if (cl.getOpt("extensionParms") != null) {
Extension e = extensions.get(0);
// extensionParms are delimited by ';'
StringTokenizer parmTokens = new StringTokenizer(cl.getOpt("extensionParms"), ";");
while (parmTokens.hasMoreTokens()) {
// get name value pair for each extension parms and stick into extension parms
String nvPair = parmTokens.nextToken();
int index = nvPair.indexOf('=');
if (index < 0) {
System.err.println("extensionParms should be name=value;name=value");
System.exit(1);
}
String n = nvPair.substring(0, index);
String v = nvPair.substring(index + 1);
Extension.Param param = e.createParam();
param.setName(n);
param.setValue(v);
}
}
}
String classesdir = cl.getOpt("d");
File classes = null;
if (classesdir != null) {
classes = new File(classesdir);
}
String srcdir = cl.getOpt("src");
File src = null;
if (srcdir != null) {
src = new File(srcdir);
}
if (nojavac && srcdir == null && classes != null) {
src = classes;
}
// create temp directory
File tempdir = null;
if (src == null || classes == null) {
try {
tempdir = SchemaCodeGenerator.createTempDir();
} catch (java.io.IOException e) {
System.err.println("Error creating temp dir " + e);
System.exit(1);
}
}
File jarfile = null;
if (outputfilename == null && classes == null && !nojavac) {
outputfilename = "xmltypes.jar";
}
if (outputfilename != null) {
jarfile = new File(outputfilename);
}
if (src == null) {
src = IOUtil.createDir(tempdir, "src");
}
if (classes == null) {
classes = IOUtil.createDir(tempdir, "classes");
}
File[] classpath;
String cpString = cl.getOpt("cp");
if (cpString != null) {
String[] cpparts = cpString.split(File.pathSeparator);
List<File> cpList = new ArrayList<>();
for (String cppart : cpparts) {
cpList.add(new File(cppart));
}
classpath = cpList.toArray(new File[0]);
} else {
classpath = CodeGenUtil.systemClasspath();
}
String compiler = cl.getOpt("compiler");
String jar = cl.getOpt("jar");
if (verbose && jar != null) {
System.out.println("The 'jar' option is no longer supported.");
}
String memoryInitialSize = cl.getOpt("ms");
String memoryMaximumSize = cl.getOpt("mx");
File[] xsdFiles = cl.filesEndingWith(".xsd");
File[] wsdlFiles = cl.filesEndingWith(".wsdl");
File[] javaFiles = cl.filesEndingWith(".java");
File[] configFiles = cl.filesEndingWith(".xsdconfig");
URL[] urlFiles = cl.getURLs();
if (xsdFiles.length + wsdlFiles.length + urlFiles.length == 0) {
System.out.println("Could not find any xsd or wsdl files to process.");
System.exit(0);
}
File baseDir = cl.getBaseDir();
URI baseURI = baseDir == null ? null : baseDir.toURI();
XmlErrorPrinter err = new XmlErrorPrinter(verbose, baseURI);
String catString = cl.getOpt("catalog");
String partialMethods = cl.getOpt("partialMethods");
Parameters params = new Parameters();
params.setBaseDir(baseDir);
params.setXsdFiles(xsdFiles);
params.setWsdlFiles(wsdlFiles);
params.setJavaFiles(javaFiles);
params.setConfigFiles(configFiles);
params.setUrlFiles(urlFiles);
params.setClasspath(classpath);
params.setOutputJar(jarfile);
params.setName(name);
params.setSrcDir(src);
params.setClassesDir(classes);
params.setCompiler(compiler);
params.setMemoryInitialSize(memoryInitialSize);
params.setMemoryMaximumSize(memoryMaximumSize);
params.setNojavac(nojavac);
params.setQuiet(quiet);
params.setVerbose(verbose);
params.setDownload(download);
params.setNoUpa(noUpa);
params.setNoPvr(noPvr);
params.setNoAnn(noAnn);
params.setNoVDoc(noVDoc);
params.setNoExt(noExt);
params.setDebug(debug);
params.setSourceCodeEncoding(sourceCodeEncoding);
params.setErrorListener(err);
params.setRepackage(repackage);
params.setExtensions(extensions);
params.setMdefNamespaces(mdefNamespaces);
params.setCatalogFile(catString);
params.setSchemaCodePrinter(codePrinter);
params.setPartialMethods(parsePartialMethods(partialMethods));
params.setCopyAnn(copyAnn);
boolean result = compile(params);
if (tempdir != null) {
SchemaCodeGenerator.tryHardToDelete(tempdir);
}
if (!result) {
System.exit(1);
}
System.exit(0);
}