001: /*
002: * Copyright (c) 1998-2008 Caucho Technology -- all rights reserved
003: *
004: * This file is part of Resin(R) Open Source
005: *
006: * Each copy or derived work must preserve the copyright notice and this
007: * notice unmodified.
008: *
009: * Resin Open Source is free software; you can redistribute it and/or modify
010: * it under the terms of the GNU General Public License as published by
011: * the Free Software Foundation; either version 2 of the License, or
012: * (at your option) any later version.
013: *
014: * Resin Open Source is distributed in the hope that it will be useful,
015: * but WITHOUT ANY WARRANTY; without even the implied warranty of
016: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty
017: * of NON-INFRINGEMENT. See the GNU General Public License for more
018: * details.
019: *
020: * You should have received a copy of the GNU General Public License
021: * along with Resin Open Source; if not, write to the
022: *
023: * Free Software Foundation, Inc.
024: * 59 Temple Place, Suite 330
025: * Boston, MA 02111-1307 USA
026: *
027: * @author Sam
028: */
029:
030: package com.caucho.netbeans;
031:
032: import com.caucho.netbeans.ide.ResinTarget;
033:
034: import javax.enterprise.deploy.spi.exceptions.DeploymentManagerCreationException;
035: import org.netbeans.modules.j2ee.deployment.plugins.api.InstanceProperties;
036:
037: import javax.enterprise.deploy.model.DeployableObject;
038: import javax.enterprise.deploy.shared.DConfigBeanVersionType;
039: import javax.enterprise.deploy.shared.ModuleType;
040: import javax.enterprise.deploy.spi.DeploymentConfiguration;
041: import javax.enterprise.deploy.spi.DeploymentManager;
042: import javax.enterprise.deploy.spi.Target;
043: import javax.enterprise.deploy.spi.TargetModuleID;
044: import javax.enterprise.deploy.spi.exceptions.DConfigBeanVersionUnsupportedException;
045: import javax.enterprise.deploy.spi.exceptions.InvalidModuleException;
046: import javax.enterprise.deploy.spi.exceptions.TargetException;
047: import javax.enterprise.deploy.spi.status.ProgressObject;
048: import java.io.File;
049: import java.io.InputStream;
050: import java.net.URL;
051: import java.util.Locale;
052: import java.util.logging.*;
053:
054: public final class ResinDeploymentManager implements DeploymentManager {
055: private static final Logger log = Logger
056: .getLogger(ResinDeploymentManager.class.getName());
057:
058: private static final PluginL10N L = new PluginL10N(
059: ResinDeploymentManager.class);
060:
061: private final String _uri;
062: private final InstanceProperties _ip;
063: private final ResinConfiguration _resinConfiguration;
064: private ResinProcess _resinProcess;
065: private TargetModuleID[] _runningModules = new TargetModuleID[0];
066:
067: private ResinPlatformImpl _j2eePlatform;
068:
069: public ResinDeploymentManager(String uri, InstanceProperties ip)
070: throws DeploymentManagerCreationException {
071: _uri = uri;
072: _ip = ip;
073:
074: // XXX: what is connected for?
075: _resinConfiguration = new ResinConfiguration(ip);
076: _resinProcess = new ResinProcess(_uri, _resinConfiguration);
077:
078: }
079:
080: public ResinConfiguration getResinConfiguration() {
081: return _resinConfiguration;
082: }
083:
084: public ResinProcess getResinProcess() {
085: if (_resinProcess == null) {
086: _resinProcess = new ResinProcess(_uri, _resinConfiguration);
087: _resinProcess.init();
088: }
089: return _resinProcess;
090: }
091:
092: public Target[] getTargets() throws IllegalStateException {
093: return new ResinTarget[] { new ResinTarget(_uri,
094: _resinConfiguration), };
095: }
096:
097: public TargetModuleID[] getRunningModules(ModuleType moduleType,
098: Target[] target) throws TargetException,
099: IllegalStateException {
100: return _runningModules;
101: }
102:
103: public TargetModuleID[] getNonRunningModules(ModuleType moduleType,
104: Target[] target) throws TargetException,
105: IllegalStateException {
106: return new TargetModuleID[0];
107: }
108:
109: public TargetModuleID[] getAvailableModules(ModuleType moduleType,
110: Target[] target) throws TargetException,
111: IllegalStateException {
112: return new TargetModuleID[0];
113: }
114:
115: public DeploymentConfiguration createConfiguration(
116: DeployableObject deployableObject)
117: throws InvalidModuleException {
118: return null;
119: /*
120: ModuleType type = deployableObject.getType();
121:
122: if (type == ModuleType.WAR)
123: throw new UnsupportedOperationException("XXX: unimplemented");
124: else if (type == ModuleType.EAR)
125: throw new UnsupportedOperationException("XXX: unimplemented");
126: else if (type == ModuleType.EJB)
127: throw new UnsupportedOperationException("XXX: unimplemented");
128: else {
129: throw new InvalidModuleException(L.l("Unsupported module type ''{0}''", type));
130: }
131: */
132: }
133:
134: public ProgressObject distribute(Target[] target, File archive,
135: File plan) throws IllegalStateException {
136: try {
137: String urlString = "http://localhost:"
138: + _resinConfiguration.getPort()
139: + "/resin:local-deploy/deploy?action=add-web-app"
140: + "&context-path="
141: + _resinConfiguration.getContextPath() + "&war="
142: + archive.getAbsolutePath();
143:
144: if (plan != null)
145: urlString += "&resin-web=" + plan.getAbsolutePath();
146:
147: log.fine("Dist: " + urlString);
148:
149: URL url = new URL(urlString);
150:
151: StringBuilder sb = new StringBuilder();
152: InputStream is = url.openStream();
153: int ch;
154: while ((ch = is.read()) >= 0) {
155: sb.append((char) ch);
156: }
157:
158: is.close();
159:
160: log.fine("Complete: " + sb);
161:
162: return new SuccessProgressObject(target);
163: } catch (Exception e) {
164: throw new RuntimeException(e);
165: }
166: }
167:
168: public ProgressObject distribute(Target[] target,
169: InputStream archive, InputStream plan)
170: throws IllegalStateException {
171: return new SuccessProgressObject(target);
172: }
173:
174: public ProgressObject distribute(Target[] target, ModuleType type,
175: InputStream archive, InputStream plan)
176: throws IllegalStateException {
177: return null;
178: }
179:
180: public ProgressObject start(TargetModuleID[] targetModuleIDs)
181: throws IllegalStateException {
182: _runningModules = targetModuleIDs;
183:
184: return new SuccessProgressObject(targetModuleIDs);
185: }
186:
187: public ProgressObject stop(TargetModuleID[] targetModuleIDs)
188: throws IllegalStateException {
189: _runningModules = new TargetModuleID[0];
190:
191: return new SuccessProgressObject();
192: }
193:
194: public ProgressObject undeploy(TargetModuleID[] targetModuleIDs)
195: throws IllegalStateException {
196: return new SuccessProgressObject();
197: }
198:
199: public boolean isRedeploySupported() {
200: return false;
201: }
202:
203: @Override
204: public ProgressObject redeploy(TargetModuleID[] targetModuleID,
205: File archive, File plan) {
206: return null;
207: }
208:
209: @Override
210: public ProgressObject redeploy(TargetModuleID[] targetModuleID,
211: InputStream archive, InputStream plan) {
212: return null;
213: }
214:
215: public void release() {
216: }
217:
218: public Locale getDefaultLocale() {
219: return null;
220: }
221:
222: public Locale getCurrentLocale() {
223: return null;
224: }
225:
226: public void setLocale(Locale locale)
227: throws UnsupportedOperationException {
228: }
229:
230: public Locale[] getSupportedLocales() {
231: return null;
232: }
233:
234: public boolean isLocaleSupported(Locale locale) {
235: return false;
236: }
237:
238: public DConfigBeanVersionType getDConfigBeanVersion() {
239: return null;
240: }
241:
242: public boolean isDConfigBeanVersionSupported(
243: DConfigBeanVersionType dConfigBeanVersionType) {
244: return false;
245: }
246:
247: public void setDConfigBeanVersionSupported(
248: DConfigBeanVersionType version)
249: throws DConfigBeanVersionUnsupportedException {
250: }
251:
252: public void setDConfigBeanVersion(
253: DConfigBeanVersionType dConfigBeanVersionType)
254: throws DConfigBeanVersionUnsupportedException {
255: }
256:
257: public ResinPlatformImpl getJ2eePlatform() {
258: /*
259: if (_j2eePlatform == null)
260: _j2eePlatform = new ResinPlatformImpl(_resinConfiguration);
261:
262: return _j2eePlatform;
263: */
264: return null;
265: }
266:
267: public String getUri() {
268: return _uri;
269: }
270: }
|