All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.glassfish.deployapi.TargetModuleIDImpl Maven / Gradle / Ivy

There is a newer version: 7.2024.1.Alpha1
Show newest version
/*
 * 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.
 */
// Portions Copyright [2019] Payara Foundation and/or affiliates

package org.glassfish.deployapi;

import javax.enterprise.deploy.shared.ModuleType;
import javax.enterprise.deploy.spi.Target;
import javax.enterprise.deploy.spi.TargetModuleID;

import org.glassfish.deployment.client.TargetOwner;

/**
 * Implements the {@link TargetModuleID} interface from JSR-88, representing the
 * presence of a given module on a given {@link Target}.
 * 

* This implementation is independent of the {@link TargetOwner} that owns the * corresponding Target. * * @author tjquinn */ public class TargetModuleIDImpl implements TargetModuleID { private final TargetImpl target; private final String moduleID; private TargetModuleIDImpl parent; private TargetModuleIDImpl[] children = new TargetModuleIDImpl[0]; private ModuleType moduleType; /** * Creates a new implementation object of TargetModuleID. *

* 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 {@link TargetImpl} */ @Override public Target getTarget() { return target; } /** * Returns the Target on which the module is deployed. * * @return the {@link TargetImpl} */ public TargetImpl getTargetImpl() { return target; } /** * Returns the name of the module that is deployed to a given Target. * * @return the module name */ @Override 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 */ @Override 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 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 */ @Override public TargetModuleID getParentTargetModuleID() { return parent; } /** * Returns the TargetModuleIDs representing submodules of this module * deployed to the Target. * * @return the child TargetModuleID objects */ @Override 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 moduleType {@link ModuleType} */ public void setModuleType(ModuleType moduleType) { this.moduleType = moduleType; } /** * @return the module type of this deployed module */ public ModuleType getModuleType() { return moduleType; } /** * Returns {@link #getModuleID()}. */ @Override public String toString() { return getModuleID(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy