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 * If you wish your version of this file to be governed by only the CDDL
025 * or only the GPL Version 2, indicate your decision by adding
026 * "[Contributor] elects to include this software in this distribution
027 * under the [CDDL or GPL Version 2] license." If you do not indicate a
028 * single choice of license, a recipient has the option to distribute
029 * your version of this file under either the CDDL, the GPL Version 2 or
030 * to extend the choice of license to its licensees as provided above.
031 * However, if you add GPL Version 2 code and therefore, elected the GPL
032 * Version 2 license, then the option applies only if the new code is
033 * made subject to such option by the copyright holder.
034 *
035 * Contributor(s):
036 *
037 * Portions Copyrighted 2007 Sun Microsystems, Inc.
038 */
039
040 package org.netbeans.modules.j2ee.deployment.impl.bridge;
041
042 import java.io.IOException;
043 import java.util.Collection;
044 import java.util.HashSet;
045 import java.util.Set;
046 import javax.swing.event.ChangeListener;
047 import org.netbeans.modules.j2ee.deployment.impl.Server;
048 import org.netbeans.modules.j2ee.deployment.impl.ServerRegistry;
049 import org.netbeans.modules.j2ee.deployment.plugins.api.InstanceProperties;
050 import org.netbeans.modules.j2ee.deployment.plugins.spi.OptionalDeploymentManagerFactory;
051 import org.openide.WizardDescriptor;
052 import org.openide.WizardDescriptor.InstantiatingIterator;
053 import org.openide.WizardDescriptor.Panel;
054
055 /**
056 *
057 * @author Petr Hejl
058 */
059 public class BridgingServerWizardProvider implements
060 org.netbeans.spi.server.ServerWizardProvider {
061
062 private final Server server;
063
064 private final OptionalDeploymentManagerFactory optional;
065
066 public BridgingServerWizardProvider(Server server,
067 OptionalDeploymentManagerFactory optional) {
068 this .server = server;
069 this .optional = optional;
070 }
071
072 public InstantiatingIterator getInstantiatingIterator() {
073 if (optional.getAddInstanceIterator() == null) {
074 return null;
075 }
076 return new InstantiatingIteratorBridge(optional
077 .getAddInstanceIterator(), server);
078 }
079
080 public String getDisplayName() {
081 return server.getDisplayName();
082 }
083
084 private static class InstantiatingIteratorBridge implements
085 InstantiatingIterator {
086
087 private final InstantiatingIterator iterator;
088
089 private final Server server;
090
091 public InstantiatingIteratorBridge(
092 InstantiatingIterator iterator, Server server) {
093 this .iterator = iterator;
094 this .server = server;
095 }
096
097 public void uninitialize(WizardDescriptor wizard) {
098 iterator.uninitialize(wizard);
099 }
100
101 public Set instantiate() throws IOException {
102 Set objects = iterator.instantiate();
103 if (!objects.isEmpty()) {
104 Object value = objects.iterator().next();
105 String url = null;
106 if (value instanceof String) {
107 url = (String) value;
108 } else if (value instanceof InstanceProperties) {
109 url = ((InstanceProperties) value)
110 .getProperty(InstanceProperties.URL_ATTR);
111 }
112 if (url != null) {
113 org.netbeans.api.server.ServerInstance instance = getBridge(ServerRegistry
114 .getInstance().getServerInstance(url));
115 if (instance != null) {
116 objects = new HashSet();
117 objects.add(instance);
118 }
119 }
120 }
121 return objects;
122 }
123
124 public void initialize(WizardDescriptor wizard) {
125 iterator.initialize(wizard);
126 }
127
128 public void removeChangeListener(ChangeListener l) {
129 iterator.removeChangeListener(l);
130 }
131
132 public void previousPanel() {
133 iterator.previousPanel();
134 }
135
136 public void nextPanel() {
137 iterator.nextPanel();
138 }
139
140 public String name() {
141 return iterator.name();
142 }
143
144 public boolean hasPrevious() {
145 return iterator.hasPrevious();
146 }
147
148 public boolean hasNext() {
149 return iterator.hasNext();
150 }
151
152 public Panel current() {
153 return iterator.current();
154 }
155
156 public void addChangeListener(ChangeListener l) {
157 iterator.addChangeListener(l);
158 }
159
160 private org.netbeans.api.server.ServerInstance getBridge(
161 org.netbeans.modules.j2ee.deployment.impl.ServerInstance instance) {
162 Collection<? extends org.netbeans.spi.server.ServerInstanceProvider> providers = ServerInstanceProviderLookup
163 .getInstance()
164 .lookupAll(
165 org.netbeans.spi.server.ServerInstanceProvider.class);
166 for (org.netbeans.spi.server.ServerInstanceProvider provider : providers) {
167 if (provider instanceof BridgingServerInstanceProvider) {
168 org.netbeans.api.server.ServerInstance bridgingInstance = ((BridgingServerInstanceProvider) provider)
169 .getBridge(instance);
170 if (bridgingInstance != null) {
171 return bridgingInstance;
172 }
173 }
174 }
175 return null;
176 }
177
178 }
179 }
|