/*
* JBoss, Home of Professional Open Source
* Copyright 2010 Red Hat Inc. and/or its affiliates and other contributors
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* 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 org.jboss.arquillian.protocol.servlet.arq514hack.descriptors.impl.application;
import org.jboss.arquillian.protocol.servlet.arq514hack.descriptors.api.application.ApplicationDescriptor;
import org.jboss.shrinkwrap.descriptor.spi.node.Node;
import org.jboss.shrinkwrap.descriptor.spi.node.NodeDescriptorImplBase;
/**
* ApplicationDescriptorImpl
*
* @author <a href="mailto:aslak@redhat.com">Aslak Knutsen</a>
* @version $Revision: $
*/
public class ApplicationDescriptorImpl extends NodeDescriptorImplBase implements ApplicationDescriptor {
// -------------------------------------------------------------------------------------||
// Instance Members -------------------------------------------------------------------||
// -------------------------------------------------------------------------------------||
private final Node model;
// -------------------------------------------------------------------------------------||
// Constructor ------------------------------------------------------------------------||
// -------------------------------------------------------------------------------------||
public ApplicationDescriptorImpl(String descriptorName) {
this(descriptorName, new Node("application")
.attribute("xmlns", "http://java.sun.com/xml/ns/javaee")
.attribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"));
version("6");
}
public ApplicationDescriptorImpl(String descriptorName, Node model) {
super(descriptorName);
this.model = model;
}
// -------------------------------------------------------------------------------------||
// API --------------------------------------------------------------------------------||
// -------------------------------------------------------------------------------------||
/*
* (non-Javadoc)
*
* @see org.jboss.shrinkwrap.descriptor.api.spec.ee.application.ApplicationDescriptor#description()
*/
@Override
public ApplicationDescriptor description(String description) {
model.getOrCreate("description").text(description);
return this;
}
/*
* (non-Javadoc)
*
* @see org.jboss.shrinkwrap.descriptor.api.spec.ee.application.ApplicationDescriptor#displayName(java.lang.String)
*/
@Override
public ApplicationDescriptor displayName(String displayName) {
model.getOrCreate("display-name").text(displayName);
return this;
}
/*
* (non-Javadoc)
*
* @see
* org.jboss.shrinkwrap.descriptor.api.spec.ee.application.ApplicationDescriptor#libraryDirectory(java.lang.String)
*/
@Override
public ApplicationDescriptor libraryDirectory(String libraryDirectory) {
model.getOrCreate("library-directory").text(libraryDirectory);
return this;
}
/*
* (non-Javadoc)
*
* @see org.jboss.shrinkwrap.descriptor.api.spec.ee.application.ApplicationDescriptor#ejbModule(java.lang.String)
*/
@Override
public ApplicationDescriptor ejbModule(String uri) {
model.createChild("module").createChild("ejb").text(uri);
return this;
}
/*
* (non-Javadoc)
*
* @see org.jboss.shrinkwrap.descriptor.api.spec.ee.application.ApplicationDescriptor#javaModule(java.lang.String)
*/
@Override
public ApplicationDescriptor javaModule(String uri) {
model.createChild("module").createChild("java").text(uri);
return this;
}
/*
* (non-Javadoc)
*
* @see
* org.jboss.shrinkwrap.descriptor.api.spec.ee.application.ApplicationDescriptor#connectorModule(java.lang.String)
*/
@Override
public ApplicationDescriptor connectorModule(String uri) {
model.createChild("module").createChild("connector").text(uri);
return this;
}
/*
* (non-Javadoc)
*
* @see org.jboss.shrinkwrap.descriptor.api.spec.ee.application.ApplicationDescriptor#webModule(java.lang.String,
* java.lang.String)
*/
@Override
public ApplicationDescriptor webModule(String uri, String contextRoot) {
Node web = model.createChild("module").createChild("web");
web.createChild("web-uri").text(uri);
web.createChild("context-root").text(contextRoot);
return this;
}
/*
* (non-Javadoc)
*
* @see org.jboss.shrinkwrap.descriptor.api.spec.ee.application.ApplicationDescriptor#version(java.lang.String)
*/
@Override
public ApplicationDescriptor version(String version) {
model.attribute("version", version);
return this;
}
/*
* (non-Javadoc)
*
* @see org.jboss.shrinkwrap.descriptor.api.spec.ee.application.ApplicationDescriptor#securityRole(java.lang.String)
*/
@Override
public ApplicationDescriptor securityRole(String roleName) {
return securityRole(roleName, null);
}
/*
* (non-Javadoc)
*
* @see org.jboss.shrinkwrap.descriptor.api.spec.ee.application.ApplicationDescriptor#securityRole(java.lang.String,
* java.lang.String)
*/
@Override
public ApplicationDescriptor securityRole(String roleName, String description) {
Node security = model.createChild("security-role");
if (roleName != null) {
security.createChild("role-name").text(roleName);
}
if (description != null) {
security.createChild("description").text(description);
}
return this;
}
// -------------------------------------------------------------------------------------||
// Required Implementations - NodeProviderImplBase ------------------------------------||
// -------------------------------------------------------------------------------------||
@Override
public Node getRootNode() {
return model;
}
}