blob: 9e37cd8a67e15b05bf2054be9c9c14966f5f9c3b [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
package org.apache.axis2.schema;
import org.apache.axis2.schema.i18n.SchemaCompilerMessages;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 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;
private boolean offStrictValidation = false;
private boolean isUseWrapperClasses = 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;
}
public boolean isOffStrictValidation() {
return offStrictValidation;
}
public void setOffStrictValidation(boolean offStrictValidation) {
this.offStrictValidation = offStrictValidation;
}
public boolean isUseWrapperClasses() {
return isUseWrapperClasses;
}
public void setUseWrapperClasses(boolean useWrapperClasses) {
this.isUseWrapperClasses = useWrapperClasses;
}
}