/* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright (c) 2008-2010 Oracle and/or its affiliates. All rights reserved. * * The contents of this file are subject to the terms of either the GNU * General Public License Version 2 only ("GPL") or the Common Development * and Distribution License("CDDL") (collectively, the "License"). You * may not use this file except in compliance with the License. You can * obtain a copy of the License at * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html * or packager/legal/LICENSE.txt. See the License for the specific * language governing permissions and limitations under the License. * * When distributing the software, include this License Header Notice in each * file and include the License file at packager/legal/LICENSE.txt. * * GPL Classpath Exception: * Oracle designates this particular file as subject to the "Classpath" * exception as provided by Oracle in the GPL Version 2 section of the License * file that accompanied this code. * * Modifications: * If applicable, add the following below the License Header, with the fields * enclosed by brackets [] replaced by your own identifying information: * "Portions Copyright [year] [name of copyright owner]" * * Contributor(s): * If you wish your version of this file to be governed by only the CDDL or * only the GPL Version 2, indicate your decision by adding "[Contributor] * elects to include this software in this distribution under the [CDDL or GPL * Version 2] license." If you don't indicate a single choice of license, a * recipient has the option to distribute your version of this file under * either the CDDL, the GPL Version 2 or to extend the choice of license to * its licensees as provided above. However, if you add GPL Version 2 code * and therefore, elected the GPL Version 2 license, then the option applies * only if the new code is made subject to such option by the copyright * holder. */ package org.glassfish.deployapi; import javax.enterprise.deploy.shared.ModuleType; import javax.enterprise.deploy.spi.Target; import javax.enterprise.deploy.spi.TargetModuleID; /** * Implements the {@link TargetModuleID} interface from JSR-88, representing the * presence of a given module on a given {@link Target}. * <p> * This implementation is independent of the {@link TargetOwner} that owns the * corresponding Target. * * @author tjquinn */ public class TargetModuleIDImpl implements TargetModuleID { private TargetImpl target; private String moduleID; private TargetModuleIDImpl parent; private TargetModuleIDImpl[] children = new TargetModuleIDImpl[0]; private ModuleType moduleType; /** * Creates a new implementation object of TargetModuleID. * <p> * Normally this constructor should be used only by implementations of * TargetOwner. Other code will normally retrieve TargetModuleID objects * from other methods that create them as part of their work (such as * deployment, for example). * @param target the target on which the module resides * @param moduleID the name of the module * @param parent the higher-level TargetModuleIDImpl (if this object represents * a submodule of a module that is deployed to a Target) * @param children TargetModuleIDImpl objects representing the submodules * of this module as deployed to the Target */ public TargetModuleIDImpl( TargetImpl target, String moduleID, TargetModuleIDImpl parent, TargetModuleIDImpl[] children) { this.target = target; this.moduleID = moduleID; this.parent = parent; this.children = children; } /** * Creates a new implementation object of TargetModuleId with no parent * and no children. * @param target the target on which the module resides * @param moduleID the name of the module */ public TargetModuleIDImpl(TargetImpl target, String moduleID) { this(target, moduleID, null, new TargetModuleIDImpl[0]); } /** * Returns the Target on which the module is deployed. * @return the Target */ public Target getTarget() { return target; } public TargetImpl getTargetImpl() { return target; } /** * Returns the name of the module that is deployed to a given Target. * @return the module name */ public String getModuleID() { return moduleID; } /** * Returns the URL for running the Web module, if this TargetModuleID * represents a Web module or submodule on a Target. * @return the URL */ public String getWebURL() { return target.getOwner().getWebURL(this); } /** * Sets the URL for running the Web module, if this TargetModuleID * represents a Web module or submodule on a Target. * @param the webURL */ public void setWebURL(String webURL) { target.getOwner().setWebURL(this, webURL); } /** * Returns the TargetModuleID for the containing module on the Target, if * this TargetModuleID represents a submodule. * @return the parent TargetModuleID */ public TargetModuleID getParentTargetModuleID() { return parent; } /** * Returns the TargetModuleIDs representing submodules of this module * deployed to the Target. * @return the child TargetModuleID objects */ public TargetModuleID[] getChildTargetModuleID() { return children; } /** * Add a child TargetModuleID to this TargetModuleID */ public void addChildTargetModuleID(TargetModuleIDImpl child) { TargetModuleIDImpl[] newChildren = new TargetModuleIDImpl[children.length+1]; System.arraycopy(children, 0, newChildren, 0, children.length); newChildren[children.length] = child; children = newChildren; child.setParentTargetModuleID(this); } /** * Sets the parent TargetModuleID */ public void setParentTargetModuleID(TargetModuleIDImpl parent) { this.parent = parent; } /** * Sets the module type for this deployed module * @param the module type */ public void setModuleType(ModuleType moduleType) { this.moduleType = moduleType; } /** * @return the module type of this deployed module */ public ModuleType getModuleType() { return moduleType; } }