blob: 1778ba023586e44c18591b3655a022fc5fd3a73d [file] [log] [blame]
package org.apache.axis2.schema;
import org.apache.axis2.schema.i18n.SchemaCompilerMessages;
import java.io.File;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.Map;
import java.util.HashMap;
/*
* Copyright 2004,2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* This is a bean class that captures all the compiler options.
* Right now the compiler options consist of the following
* 1. output file location - A folder with necessary rights for the
* schema compiler to write the files
* 2.package name
* 3.namespace to package map
* 4.boolean flag marking whether to wrap or unwrap
* 4.boolean flag marking whether to write classes or not
*/
public class CompilerOptions {
/**
* Generated output file
*/
private File outputLocation;
private String packageName = null;
private boolean generateAll = false;
/**
* Package for the mapper
*/
private String mapperClassPackage = null;
public String getMapperClassPackage() {
return mapperClassPackage;
}
public void setMapperClassPackage(String mapperClassPackage) {
this.mapperClassPackage = mapperClassPackage;
}
/**
* get whether the mapper class package
* name is present
*/
public boolean isMapperClassPackagePresent(){
return (mapperClassPackage!=null &&
!"".equals(mapperClassPackage));
}
/**
* The flag keeping whether seperate helpers
* need to be generated or not
*/
private boolean helperMode = false;
public boolean isHelperMode() {
return helperMode;
}
public void setHelperMode(boolean helperMode) {
this.helperMode = helperMode;
}
/**
* Keep track of the namespace and packages mapping
*/
private Map ns2PackageMap = new HashMap();
public Map getNs2PackageMap() {
return ns2PackageMap;
}
public void setNs2PackageMap(Map ns2PackageMap) {
this.ns2PackageMap = ns2PackageMap;
}
/**
* This flag tells the databinder to either write the output or
* not. if this is set to true it will write the output at once.
* if not the outputter will populate the
*/
private boolean writeOutput = false;
/**
* This flag determines whether the generated classes are wrapped or not
* if the wrapper flag is true, then only a single file will be generated
*/
private boolean wrapClasses = false;
public boolean isWriteOutput() {
return writeOutput;
}
public void setWriteOutput(boolean writeOutput) {
this.writeOutput = writeOutput;
}
public boolean isWrapClasses() {
return wrapClasses;
}
public void setWrapClasses(boolean wrapClasses) {
this.wrapClasses = wrapClasses;
}
public String getPackageName() {
return packageName;
}
public CompilerOptions setPackageName(String packageName) {
// Validate the package name.
if (packageName != null && testValue(packageName)) {
this.packageName = packageName;
} else {
throw new RuntimeException(SchemaCompilerMessages.getMessage("schema.unsupportedvalue"));
}
return this;
}
public File getOutputLocation() {
return outputLocation;
}
public CompilerOptions setOutputLocation(File outputLocation) {
this.outputLocation = outputLocation;
return this;
}
private boolean testValue(String wordToMatch) {
Pattern pat = Pattern.compile("^(\\w+\\.)+$");
Matcher m = pat.matcher(wordToMatch);
return m.matches();
}
public boolean isGenerateAll() {
return generateAll;
}
public void setGenerateAll(boolean generateAll) {
this.generateAll = generateAll;
}
/**
* This flag determines whether the generated classes are expected to be
* backword compatible with Axis 1.x
*/
private boolean backwordCompatibilityMode = false;
public boolean isBackwordCompatibilityMode() {
return backwordCompatibilityMode;
}
public void setBackwordCompatibilityMode(boolean backwordCompatibilityMode) {
this.backwordCompatibilityMode = backwordCompatibilityMode;
}
/**
* Should we suppress namespace prefixes
*/
private boolean suppressPrefixesMode = false;
public boolean isSuppressPrefixesMode() {
return suppressPrefixesMode;
}
public void setSuppressPrefixesMode(boolean suppressPrefixesMode) {
this.suppressPrefixesMode = suppressPrefixesMode;
}
}