|
What this is
Other links
The source code
/*
* Sun Public License Notice
*
* The contents of this file are subject to the Sun Public License
* Version 1.0 (the "License"). You may not use this file except in
* compliance with the License. A copy of the License is available at
* http://www.sun.com/
*
* The Original Code is NetBeans. The Initial Developer of the Original
* Code is Sun Microsystems, Inc. Portions Copyright 1997-2001 Sun
* Microsystems, Inc. All Rights Reserved.
*/
package org.netbeans.modules.j2ee.deployment.config;
import javax.enterprise.deploy.model.*;
import javax.enterprise.deploy.shared.*;
import javax.enterprise.deploy.spi.*;
import javax.enterprise.deploy.spi.exceptions.*;
import org.netbeans.modules.j2ee.deployment.impl.*;
import org.netbeans.modules.j2ee.deployment.devmodules.api.*;
import org.netbeans.modules.j2ee.deployment.devmodules.spi.*;
import org.netbeans.modules.j2ee.deployment.plugins.api.*;
import org.netbeans.modules.j2ee.deployment.execution.DeploymentConfigurationProvider;
import org.netbeans.modules.j2ee.deployment.config.ui.ConfigBeanTopComponent;
import java.util.*;
import java.io.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import org.openide.util.NbBundle;
import org.openide.filesystems.*;
import org.openide.nodes.*;
import org.openide.*;
import org.openide.cookies.SaveCookie;
import org.xml.sax.SAXException;
/* ConfigurationStorage stores a DeploymentConfiguration. It is responsible
* for creating the DeployableObjects and the DConfigBeanRoots and tracking
* changes at the application level. */
public class ConfigurationStorage implements DeploymentConfigurationProvider, ModuleListener, Node.Cookie {
public static final String ROOT = "/"; // NOI18N
final ServerString serverString;
DeploymentConfiguration config;
// Map of url -> ModuleDeploymentSupport
Map moduleMap = new HashMap();
final Map versionListeners = new HashMap();
DeployableObject dobj;
ConfigurationSaver saver;
private boolean needsSave = false;
final J2eeModuleProvider module;
public ConfigurationStorage(J2eeModuleProvider module,ServerString server) throws ConfigurationException, InvalidModuleException, IOException, SAXException {
this.serverString = server;
this.module = module;
init();
// if(!configFile.exists()) save(); JDL does this already
createVersionListeners();
}
private void init() throws ConfigurationException, InvalidModuleException, IOException, SAXException {
Server server = serverString.getServer();
ServerInstance instance = serverString.getServerInstance();
// create all MDS/ADS classes here. MDS's should be GC'ed if the DC changes.
ModuleDeploymentSupport mds = new ModuleDeploymentSupport(module.getJ2eeModule());
moduleMap.put(ROOT,mds);
if(module.getJ2eeModule().getModuleType().equals(J2eeModule.EAR)) {
J2eeModuleContainer appProvider = (J2eeModuleContainer) module.getJ2eeModule();
dobj = new ApplImpl(mds,moduleMap);
J2eeModule[] modules = appProvider.getModules(this);
for(int i = 0; i < modules.length; i++) {
moduleMap.put(modules[i].getUrl(),new ModuleDeploymentSupport(modules[i]));
}
} else {
dobj = mds.getDeployableObject();
}
if(instance != null) {
config = instance.getDeploymentManager().createConfiguration(dobj);
} else {
config = server.getDeploymentManager().createConfiguration(dobj);
}
load();
}
public void setSaver(ConfigurationSaver saver) {
this.saver = saver;
}
void setChanged() {
needsSave = true;
if(saver != null) saver.setChanged();
}
// J2eeModule.ModuleListener methods
public void addModule(J2eeModule module) {
ModuleDeploymentSupport mds = new ModuleDeploymentSupport(module);
moduleMap.put(module.getUrl(), mds);
createVersionListener(module);
try {
createDConfigBean(mds);
} catch (ConfigurationException ce) {
ErrorManager.getDefault().notify(ErrorManager.EXCEPTION,ce);
// PENDING what do I do with this error? need to somehow
// abort configuration
}
}
public void removeModule(J2eeModule module) {
ModuleDeploymentSupport mds = (ModuleDeploymentSupport) moduleMap.get(module.getUrl());
moduleMap.remove(module.getUrl());
mds.dispose(config);
removeVersionListener(module);
}
public Node getMainNode() {
ModuleDeploymentSupport mds = (ModuleDeploymentSupport) moduleMap.get("/");
return mds.getNodes()[0];
}
public Node[] getNodes(J2eeModule module) {
ModuleDeploymentSupport mds = (ModuleDeploymentSupport) moduleMap.get(module.getUrl());
return mds.getNodes();
}
private void createDConfigBean(ModuleDeploymentSupport mod) throws ConfigurationException {
mod.createConfigs(config, serverString.getServer(), this);
}
public void saveOnDemand() throws IOException {
if (needsSave)
save();
}
private static File[] getSaveFiles(J2eeModuleProvider provider, Server server) throws IOException {
return ConfigSupportImpl.getDeploymentConfigurationFiles(provider, server);
}
public void save() throws IOException {
try {
DeploymentPlanSplitter dps = serverString.getServer().getDeploymentPlanSplitter();
if(module.getJ2eeModule().getModuleType().equals(J2eeModule.EAR)) {
J2eeAppProvider appProvider = (J2eeAppProvider) module;
J2eeModuleProvider[] modules = appProvider.getChildModuleProviders();
for(int i = 0; i < modules.length; i++) {
ModuleDeploymentSupport mds = (ModuleDeploymentSupport) moduleMap.get(modules[i].getJ2eeModule().getUrl());
dps.writeDeploymentPlanFiles(config, mds.getDeployableObject(), getSaveFiles(modules[i],serverString.getServer()));
}
}
File files[] = getSaveFiles((J2eeModuleProvider)module,serverString.getServer());
dps.writeDeploymentPlanFiles(config, dobj, files);
for (int j = 0; j < files.length; j++) {
FileUtil.toFileObject (files [j]).refresh (true);
}
needsSave = false;
if(saver != null) saver.resetChanged();
} catch (ConfigurationException ce) {
String msg = NbBundle.getMessage(ConfigurationStorage.class, "MSG_ConfigurationSaveFailed", serverString.getServer().getShortName(), "TBD");
DialogDisplayer.getDefault().notify(new NotifyDescriptor.Message(msg));
}
}
public void load() throws IOException, ConfigurationException {
DeploymentPlanSplitter dps = serverString.getServer().getDeploymentPlanSplitter();
if(module.getJ2eeModule().getModuleType().equals(J2eeModule.EAR)) {
J2eeAppProvider appProvider = (J2eeAppProvider) module;
J2eeModuleProvider[] modules = appProvider.getChildModuleProviders();
for(int i = 0; i < modules.length; i++) {
ModuleDeploymentSupport mds = (ModuleDeploymentSupport) moduleMap.get(modules[i].getJ2eeModule().getUrl());
dps.readDeploymentPlanFiles(config, mds.getDeployableObject(), getSaveFiles(modules[i],serverString.getServer()));
}
}
File files[] = getSaveFiles((J2eeModuleProvider)module,serverString.getServer());
dps.readDeploymentPlanFiles(config, dobj, files);
for (int j = 0; j < files.length; j++) {
FileUtil.toFileObject (files [j]).refresh (true);
}
for(Iterator i = moduleMap.values().iterator();i.hasNext();) {
ModuleDeploymentSupport mod = (ModuleDeploymentSupport) i.next();
createDConfigBean(mod);
}
}
public void dispose() {
for(Iterator i = moduleMap.values().iterator();i.hasNext();) {
ModuleDeploymentSupport mds = (ModuleDeploymentSupport) i.next();
mds.cleanup();
}
}
public void realDispose() {
for(Iterator i = moduleMap.values().iterator();i.hasNext();) {
ModuleDeploymentSupport mds = (ModuleDeploymentSupport) i.next();
mds.dispose(config);
mds.cleanup();
}
moduleMap = new HashMap();
}
public DeployableObject getDeployableObject(String moduleUri) {
if (moduleUri == null)
return config.getDeployableObject();
ModuleDeploymentSupport mds = (ModuleDeploymentSupport) moduleMap.get(moduleUri);
return mds.getDeployableObject();
}
public DeploymentConfiguration getDeploymentConfiguration() {
return config;
}
public Server getServer() {
return serverString.getServer();
}
public String getTargetServerName() {
return serverString.getServer().getDisplayName();
}
private String getKey(J2eeModule mod) {
String key = mod.getUrl();
if (key == null || key.trim().equals("")) //NOI18N
key = ROOT;
return key;
}
private void createVersionListener(J2eeModule mod) {
String key = getKey(mod);
J2eeModule.VersionListener listener = new ModuleVersionListener(key);
mod.addVersionListener(listener);
versionListeners.put(key, listener);
}
private void removeVersionListener(J2eeModule mod) {
J2eeModule.VersionListener vl = (J2eeModule.VersionListener) versionListeners.remove(getKey(mod));
if (vl != null)
mod.removeVersionListener(vl);
}
private void createVersionListeners() {
createVersionListener(module.getJ2eeModule());
if(module.getJ2eeModule().getModuleType().equals(J2eeModule.EAR)) {
J2eeModuleContainer appProvider = (J2eeModuleContainer) module;
J2eeModule[] modules = appProvider.getModules(this);
for(int i = 0; i < modules.length; i++) {
createVersionListener(modules[i]);
}
}
}
private class ModuleVersionListener implements J2eeModule.VersionListener {
private String moduleUri;
ModuleVersionListener(String moduleUri) {
this.moduleUri = moduleUri;
}
public void versionChanged(String oldVersion, String newVersion) {
try {
saveOnDemand();
realDispose();
init();
} catch(java.util.NoSuchElementException e) {
String msg = NbBundle.getMessage(
ConfigurationStorage.class, "MSG_DescriptorError", "TBD", e.getMessage());
NotifyDescriptor nd = new NotifyDescriptor.Message(msg, NotifyDescriptor.ERROR_MESSAGE);
DialogDisplayer.getDefault().notify(nd);
ErrorManager.getDefault().notify(ErrorManager.INFORMATIONAL, e);
} catch (Exception e2) {
ErrorManager.getDefault().notify(ErrorManager.INFORMATIONAL, e2);
}
ConfigBeanTopComponent tc = ConfigBeanTopComponent.findByConfigStorage(ConfigurationStorage.this);
if (tc != null) {
tc.refresh();
}
}
}
}
|
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.