/**
* Copyright 2011-2017 Asakusa Framework Team.
*
* 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.
*/
package com.asakusafw.dmdl.java;
import java.util.Locale;
import com.asakusafw.dmdl.source.DmdlSourceRepository;
import com.asakusafw.utils.java.model.syntax.ModelFactory;
import com.asakusafw.utils.java.model.syntax.Name;
import com.asakusafw.utils.java.model.util.Emitter;
/**
* Configurations for DMDL Java emitter.
*/
public class Configuration {
private final ModelFactory factory;
private final DmdlSourceRepository source;
private final Name basePackage;
private final Emitter output;
private final ClassLoader serviceClassLoader;
private final Locale locale;
/**
* Creates and returns a new instance.
* @param factory Java DOM element factory
* @param source DMDL source repository
* @param basePackage the Java base package
* @param output the Java DOM emitter
* @param serviceClassLoader the class loader to load external services
* @param locale the locale information to generate programs
* @throws IllegalArgumentException if some parameters were {@code null}
*/
public Configuration(
ModelFactory factory,
DmdlSourceRepository source,
Name basePackage,
Emitter output,
ClassLoader serviceClassLoader,
Locale locale) {
if (factory == null) {
throw new IllegalArgumentException("factory must not be null"); //$NON-NLS-1$
}
if (source == null) {
throw new IllegalArgumentException("source must not be null"); //$NON-NLS-1$
}
if (basePackage == null) {
throw new IllegalArgumentException("basePackage must not be null"); //$NON-NLS-1$
}
if (output == null) {
throw new IllegalArgumentException("output must not be null"); //$NON-NLS-1$
}
if (serviceClassLoader == null) {
throw new IllegalArgumentException("serviceClassLoader must not be null"); //$NON-NLS-1$
}
if (locale == null) {
throw new IllegalArgumentException("locale must not be null"); //$NON-NLS-1$
}
this.factory = factory;
this.source = source;
this.basePackage = basePackage;
this.output = output;
this.serviceClassLoader = serviceClassLoader;
this.locale = locale;
}
/**
* Returns Java DOM element factory.
* @return the element factory
*/
public ModelFactory getFactory() {
return factory;
}
/**
* Returns DMDL source repository.
* @return the source repository
*/
public DmdlSourceRepository getSource() {
return source;
}
/**
* Returns the Java base package.
* @return the base package
*/
public Name getBasePackage() {
return basePackage;
}
/**
* Returns the Java DOM emitter.
* @return the Java DOM emitter
*/
public Emitter getOutput() {
return output;
}
/**
* Returns the service class loader.
* @return the class loader to load the external service classes
*/
public ClassLoader getServiceClassLoader() {
return serviceClassLoader;
}
/**
* Returns the locale information to generate programs.
* @return the locale
*/
public Locale getLocale() {
return locale;
}
}