001 /*
002 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003 *
004 * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005 *
006 * The contents of this file are subject to the terms of either the GNU
007 * General Public License Version 2 only ("GPL") or the Common
008 * Development and Distribution License("CDDL") (collectively, the
009 * "License"). You may not use this file except in compliance with the
010 * License. You can obtain a copy of the License at
011 * http://www.netbeans.org/cddl-gplv2.html
012 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013 * specific language governing permissions and limitations under the
014 * License. When distributing the software, include this License Header
015 * Notice in each file and include the License file at
016 * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017 * particular file as subject to the "Classpath" exception as provided
018 * by Sun in the GPL Version 2 section of the License file that
019 * accompanied this code. If applicable, add the following below the
020 * License Header, with the fields enclosed by brackets [] replaced by
021 * your own identifying information:
022 * "Portions Copyrighted [year] [name of copyright owner]"
023 *
024 * Contributor(s):
025 *
026 * The Original Software is NetBeans. The Initial Developer of the Original
027 * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
028 * Microsystems, Inc. All Rights Reserved.
029 *
030 * If you wish your version of this file to be governed by only the CDDL
031 * or only the GPL Version 2, indicate your decision by adding
032 * "[Contributor] elects to include this software in this distribution
033 * under the [CDDL or GPL Version 2] license." If you do not indicate a
034 * single choice of license, a recipient has the option to distribute
035 * your version of this file under either the CDDL, the GPL Version 2 or
036 * to extend the choice of license to its licensees as provided above.
037 * However, if you add GPL Version 2 code and therefore, elected the GPL
038 * Version 2 license, then the option applies only if the new code is
039 * made subject to such option by the copyright holder.
040 */
041
042 package org.netbeans.modules.j2ee.deployment.impl;
043
044 import javax.enterprise.deploy.spi.Target;
045
046 public class ServerString implements java.io.Serializable {
047
048 private final String plugin;
049 private final String instance;
050 /** <i>NonNull</i> */
051 private final String[] targets;
052 private final transient ServerInstance serverInstance;
053 private transient String[] theTargets;
054 private static final long serialVersionUID = 923457209372L;
055
056 protected ServerString(String plugin, String instance,
057 String[] targets, ServerInstance serverInstance) {
058 if (targets == null) {
059 this .targets = new String[0];
060 } else {
061 this .targets = targets.clone();
062 }
063 this .plugin = plugin;
064 this .instance = instance;
065 this .serverInstance = serverInstance;
066 }
067
068 public ServerString(String plugin, String instance, String[] targets) {
069 this (plugin, instance, targets, null);
070 }
071
072 public ServerString(ServerInstance instance) {
073 this (instance.getServer().getShortName(), instance.getUrl(),
074 null, instance);
075 }
076
077 public ServerString(ServerTarget target) {
078 this (target.getInstance().getServer().getShortName(), target
079 .getInstance().getUrl(), new String[] { target
080 .getName() }, null);
081 }
082
083 public ServerString(ServerInstance instance, String targetName) {
084 this (
085 instance.getServer().getShortName(),
086 instance.getUrl(),
087 (targetName != null && !"".equals(targetName.trim())) ? new String[] { targetName }
088 : null, instance);
089 }
090
091 public String getPlugin() {
092 return plugin;
093 }
094
095 public String getUrl() {
096 return instance;
097 }
098
099 public String[] getTargets() {
100 return getTargets(false);
101 }
102
103 public String[] getTargets(boolean concrete) {
104 if (!concrete || targets.length > 0) {
105 return targets.clone();
106 }
107
108 if (theTargets != null) {
109 return theTargets.clone();
110 }
111
112 ServerTarget[] serverTargets = getServerInstance().getTargets();
113 theTargets = new String[serverTargets.length];
114 for (int i = 0; i < theTargets.length; i++) {
115 theTargets[i] = serverTargets[i].getName();
116 }
117 return theTargets.clone();
118 }
119
120 public Server getServer() {
121 return ServerRegistry.getInstance().getServer(plugin);
122 }
123
124 public ServerInstance getServerInstance() {
125 if (serverInstance != null) {
126 return serverInstance;
127 }
128 return ServerRegistry.getInstance().getServerInstance(instance);
129 }
130
131 @Override
132 public String toString() {
133 StringBuffer buffer = new StringBuffer();
134 buffer.append("Server ").append(plugin); // NOI18N
135 buffer.append(" Instance ").append(instance); // NOI18N
136 if (/*targets == null || */targets.length == 0) {
137 buffer.append(" Targets none"); // NOI18N
138 } else {
139 buffer.append(" Targets ").append(targets.length); // NOI18N
140 }
141 return buffer.toString();
142 }
143
144 public Target[] toTargets() {
145 String[] targetNames = getTargets(true);
146 Target[] ret = new Target[targetNames.length];
147 for (int i = 0; i < targetNames.length; i++) {
148 ret[i] = getServerInstance()
149 .getServerTarget(targetNames[i]).getTarget();
150 }
151 return ret;
152 }
153 }
|