blob: 1f0946beee53ad4b4e1dfdd01a7573ea15a0ef79 [file] [log] [blame]
package org.apache.maven.plugin.ear;
/*
* 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.
*/
import java.util.List;
/**
* The JBoss specific configuration, used to generate the jboss-app.xml deployment descriptor file
*
* @author <a href="snicoll@apache.org">Stephane Nicoll</a>
* @version $Id$
*/
class JbossConfiguration
{
static final String VERSION_3_2 = "3.2";
static final String VERSION_4 = "4";
static final String VERSION_4_2 = "4.2";
static final String VERSION_5 = "5";
static final String VERSION = "version";
static final String SECURITY_DOMAIN = "security-domain";
static final String UNAUHTHENTICTED_PRINCIPAL = "unauthenticated-principal";
static final String JMX_NAME = "jmx-name";
static final String LOADER_REPOSITORY = "loader-repository";
static final String LOADER_REPOSITORY_CLASS_ATTRIBUTE = "loaderRepositoryClass";
static final String LOADER_REPOSITORY_CONFIG = "loader-repository-config";
static final String CONFIG_PARSER_CLASS_ATTRIBUTE = "configParserClass";
static final String MODULE_ORDER = "module-order";
static final String DATASOURCES = "data-sources";
static final String DATASOURCE = "data-source";
static final String LIBRARY_DIRECTORY = "library-directory";
private final String version;
private boolean jbossThreeDotTwo;
private boolean jbossFour;
private boolean jbossFourDotTwo;
private boolean jbossFive;
private final String securityDomain;
private final String unauthenticatedPrincipal;
private final String jmxName;
private final String loaderRepository;
private final String loaderRepositoryConfig;
private final String loaderRepositoryClass;
private final String configParserClass;
private final String moduleOrder;
private final List<String> dataSources;
private final String libraryDirectory;
public JbossConfiguration( String version, String securityDomain, String unauthenticatedPrincipal, String jmxName,
String loaderRepository, String moduleOrder, List<String> dataSources,
String libraryDirectory, String loaderRepositoryConfig, String loaderRepositoryClass,
String configParserClass )
throws EarPluginException
{
if ( version == null )
{
throw new EarPluginException( "jboss version could not be null." );
}
else
{
this.version = version;
if ( version.equals( JbossConfiguration.VERSION_3_2 ) )
{
this.jbossThreeDotTwo = true;
}
else if ( version.equals( JbossConfiguration.VERSION_4 ) )
{
this.jbossFour = true;
}
else if ( version.equals( JbossConfiguration.VERSION_4_2 ) )
{
this.jbossFourDotTwo = true;
}
else if ( version.equals( JbossConfiguration.VERSION_5 ) )
{
this.jbossFive = true;
}
else
{
throw new EarPluginException( "Invalid JBoss configuration, version[" + version + "] is not supported." );
}
this.securityDomain = securityDomain;
this.unauthenticatedPrincipal = unauthenticatedPrincipal;
this.jmxName = jmxName;
this.loaderRepository = loaderRepository;
this.moduleOrder = moduleOrder;
this.dataSources = dataSources;
this.libraryDirectory = libraryDirectory;
this.loaderRepositoryConfig = loaderRepositoryConfig;
this.loaderRepositoryClass = loaderRepositoryClass;
this.configParserClass = configParserClass;
}
}
/**
* Returns the targeted version of JBoss.
*
* @return the jboss version
*/
public String getVersion()
{
return version;
}
/**
* Returns true if the targeted JBoss version is 3.2.
*
* @return if the targeted version is 3.2
*/
public boolean isJbossThreeDotTwo()
{
return jbossThreeDotTwo;
}
/**
* Returns true if the targeted JBoss version is 4.
*
* @return if the targeted version is 4
*/
public boolean isJbossFour()
{
return jbossFour;
}
/**
* Returns true if the targeted JBoss version if 4 or higher (that is 4, 4.2 or 5).
*
* @return true if the targeted version is 4+
*/
public boolean isJbossFourOrHigher()
{
return jbossFour || jbossFourDotTwo || jbossFive;
}
/**
* Returns true if the targeted JBoss version is 4.2.
*
* @return if the targeted version is 4.2
*/
public boolean isJbossFourDotTwo()
{
return jbossFourDotTwo;
}
/**
* Returns true if the targeted JBoss version if 4.2 or higher (that is 4.2 or 5).
*
* @return true if the targeted version is 4.2+
*/
public boolean isJbossFourDotTwoOrHigher()
{
return jbossFourDotTwo || jbossFive;
}
/**
* Returns true if the targeted JBoss version is 5.
*
* @return if the targeted version is 5
*/
public boolean isJbossFive()
{
return jbossFive;
}
/**
* The security-domain element specifies the JNDI name of the security manager that implements the
* EJBSecurityManager and RealmMapping for the domain. When specified at the jboss level it specifies the security
* domain for all j2ee components in the deployment unit.
* <p/>
* One can override the global security-domain at the container level using the security-domain element at the
* container-configuration level.
* <p/>
* Only available as from JBoss 4.
*
* @return the JNDI name of the security manager
*/
public String getSecurityDomain()
{
return securityDomain;
}
/**
* The unauthenticated-principal element specifies the name of the principal that will be returned by the
* EJBContext.getCallerPrincipal() method if there is no authenticated user. This Principal has no roles or
* privileges to call any other beans.
* <p/>
* Only available as from JBoss 4.
*
* @return the unauthenticated principal
*/
public String getUnauthenticatedPrincipal()
{
return unauthenticatedPrincipal;
}
/**
* The jmx-name element allows one to specify the JMX ObjectName to use for the MBean associated with the ear
* module. This must be a unique name and valid JMX ObjectName string.
*
* @return the object name of the ear mbean
*/
public String getJmxName()
{
return jmxName;
}
/**
* The loader-repository specifies the name of the UnifiedLoaderRepository MBean to use for the ear to provide ear
* level scoping of classes deployed in the ear. It is a unique JMX ObjectName string.
* <p/>
* <P>
* Example:
* </P>
* &lt;loader-repository>jboss.test:loader=cts-cmp2v1-sar.ear&lt;/loader-repository>
*
* @return the object name of the ear mbean
*/
public String getLoaderRepository()
{
return loaderRepository;
}
/**
* The module-order specifies the order in which the modules specified in the application.xml file gets loaded.
* Allowed values are:
* <p/>
* <module-order>strict</module-order> The strict value indicates that the deployments of the modules will be done
* in the order that would be specified in the application.xml and jboss-app.xml file.
* <p/>
* <module-order>implicit</module-order> The implicit value indicates the deployment would follow the order which
* would be specified in the DeploymentSorter.
* <p/>
* Returns <tt>null</tt> if no module order is set.
* <p/>
* Only available in JBoss 4.2 and 4.3. Has no effect in JBoss 5 and is not added when mentioned version is used.
*
* @return the module order
*/
public String getModuleOrder()
{
return moduleOrder;
}
/**
* Returns the list of datasources to include in the <tt>jboss-app.xml</tt> file as services. Each element of the
* list is the relative path to the datasource file contained in the EAR archive.
*
* @return the list of datasources paths
*/
public List<String> getDataSources()
{
return dataSources;
}
/**
* Returns the library directory to include in the <tt>jboss-app.xml</tt> file. It tells JBoss where to find
* non-Java EE libraries included in the EAR.
*
* @return the library directory
*/
public String getLibraryDirectory()
{
return libraryDirectory;
}
/**
* Returns the class loader repository configuration to include in the <tt>jboss-app.xml</tt> file. The content of
* this element is handed to the class loader, thereby altering it's default behaviour.
* <p/>
* This element is added as a child to the <tt>loader-repository</tt> element. If the element is not present in the
* configuration, it will be added.
* <p/>
* Example: &lt;loader-repository-config>java2ParentDelegaton=true&lt;/loader-repository-config>
*
* @return the class loader repository configuration
*/
public String getLoaderRepositoryConfig()
{
return loaderRepositoryConfig;
}
/**
* Returns the class loader repository class to include in the <tt>jboss-app.xml</tt> file. It tells JBoss which
* loader repository implementation to use.
* <p/>
* This element is added as an attribute to the <tt>loader-repository</tt> element, therefore it is not added if no
* such element configuration is present.
* <p/>
* Example: &lt;loader-repository-class>org.mindbug.jboss.AlternateLoaderRepository&lt;/loader-repository-class>
*
* @return the class loader repository class
*/
public String getLoaderRepositoryClass()
{
return loaderRepositoryClass;
}
/**
* Returns the class loader's configuration parser class to include in the <tt>jboss-app.xml</tt> file. It tells
* JBoss how to parse the configuration given in the <tt>loader-repository-config</tt> element.
* <p/>
* This element is added as an attribute to the <tt>loader-repository-config</tt> element, therefore it is not added
* if no such element configuration is present.
* <p/>
* Example: &lt;config-parser-class>org.mindbug.jboss.AlternateLoaderRepositoryConfigParser&lt;/config-parser-class>
*
* @return the class loader's configuration parser class
*/
public String getConfigParserClass()
{
return configParserClass;
}
}