|
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.impl; import javax.enterprise.deploy.shared.factories.DeploymentFactoryManager; import javax.enterprise.deploy.spi.factories.DeploymentFactory; import javax.enterprise.deploy.spi.exceptions.DeploymentManagerCreationException; import javax.enterprise.deploy.spi.*; import org.netbeans.modules.j2ee.deployment.impl.gen.nbd.*; import org.netbeans.modules.j2ee.deployment.plugins.api.*; import org.netbeans.modules.j2ee.deployment.impl.ui.RegistryNodeProvider; import org.openide.filesystems.*; import org.openide.loaders.*; import org.openide.util.Lookup; import org.openide.cookies.InstanceCookie; import org.openide.nodes.Node; import org.openide.ErrorManager; import org.openide.util.NbBundle; import java.util.*; import org.netbeans.modules.j2ee.deployment.devmodules.api.J2eeModule; import javax.enterprise.deploy.shared.ModuleType; public class Server implements Node.Cookie { static public final String ATTR_needsFindServerUI = "needsFindServerUI"; final NetbeansDeployment dep; final Class factoryCls; DeploymentFactory factory = null; DeploymentManager manager = null; RegistryNodeProvider nodeProvider = null; final String name; Map configMap; Map customMap; Lookup lkp; boolean needsFindServerUI = false; public Server(FileObject fo) throws Exception { //long t0 = System.currentTimeMillis(); name = fo.getName(); FileObject descriptor = fo.getFileObject("Descriptor"); if(descriptor == null) { String msg = NbBundle.getMessage(Server.class, "MSG_InvalidServerPlugin", name); throw new IllegalStateException(msg); } needsFindServerUI = getBooleanValue(descriptor.getAttribute(ATTR_needsFindServerUI), false); dep = NetbeansDeployment.createGraph(descriptor.getInputStream()); lkp = new FolderLookup (DataFolder.findContainer (fo)).getLookup (); factory = (DeploymentFactory) lkp.lookup (DeploymentFactory.class); if (factory != null) { factoryCls = factory.getClass (); } else { FileObject factoryinstance = fo.getFileObject("Factory.instance"); if(factoryinstance == null) { String msg = NbBundle.getMessage(Server.class, "MSG_NoFactoryInstanceClass", name); ErrorManager.getDefault().log(ErrorManager.ERROR, msg); factoryCls = null; return; } DataObject dobj = DataObject.find(factoryinstance); InstanceCookie cookie = (InstanceCookie) dobj.getCookie(InstanceCookie.class); if(cookie == null) { String msg = NbBundle.getMessage(Server.class, "MSG_FactoryFailed", name, cookie); ErrorManager.getDefault().log(ErrorManager.ERROR, msg); factoryCls = null; return; } factoryCls = cookie.instanceClass(); // speculative code depending on the DF implementation and if it registers // itself with DFM or not try { factory = (DeploymentFactory) cookie.instanceCreate(); } catch (Exception e) { ErrorManager.getDefault().notify(ErrorManager.INFORMATIONAL, e); } } //System.out.println("Create plugin "+name+" in "+(System.currentTimeMillis() - t0)); } private DeploymentFactory getFactory() { if (factory == null) { DeploymentFactoryManager dfm = DeploymentFactoryManager.getInstance(); // System.err.println(dfm); // System.err.println(dfm.getDeploymentFactories().length); // System.err.println(factoryCls); // System.err.println(factoryCls.getName()); try { // System.err.println(Class.forName(factoryCls.getName())); Thread.sleep(5000); } catch (Exception e) {} // System.err.println(dfm.getDeploymentFactories().length); // System.err.println(DeploymentFactoryManager.getInstance()); DeploymentFactory[] factories = DeploymentFactoryManager.getInstance().getDeploymentFactories(); for(int i = 0; i < factories.length; i++) { // System.err.println("Checking factory " + factories[i]); if(factoryCls.isInstance(factories[i])) { factory = factories[i]; break; } } } if(factory == null) { // ServerRegistry.getInstance().removePlugin(sfo); throw new IllegalStateException(); } return factory; } public DeploymentManager getDeploymentManager() { if(manager == null) { getFactory(); if (manager == null) { try { manager = factory.getDisconnectedDeploymentManager(dep.getDisconnectedString()); } catch (Exception e) { ErrorManager.getDefault().notify(ErrorManager.INFORMATIONAL, e); } } } return manager; } public boolean handlesUri(String uri) { try { return getFactory().handlesURI(uri); } catch (Exception e) { ErrorManager.getDefault().notify(ErrorManager.INFORMATIONAL, e); return false; } } public DeploymentManager getDeploymentManager(String uri, String username, String password) throws DeploymentManagerCreationException { return getFactory().getDeploymentManager(uri,username, password); } public String getDisplayName() { return getFactory().getDisplayName(); } public String getShortName() { return name; } public String getIconBase() { return dep.getIcon(); } public boolean canDeployEars() { return dep.getContainerLimitation() == null || dep.getContainerLimitation().isEarDeploy(); } public boolean canDeployWars() { return dep.getContainerLimitation() == null || dep.getContainerLimitation().isWarDeploy(); } public boolean canDeployEjbJars() { return dep.getContainerLimitation() == null || dep.getContainerLimitation().isEjbjarDeploy(); } public ConfigBeanDescriptor getConfigBeanDescriptor(String className) { if(configMap == null) { ConfigBean[] beans = dep.getConfigBean(); configMap = new HashMap(); for(int i = 0; i < beans.length; i++) configMap.put(beans[i].getClassName(),new ConfigBeanDescriptor(beans[i])); } return (ConfigBeanDescriptor) configMap.get(className); } private Object getClassFromPlugin(String className) { if (className == null || "".equals(className.trim())) return null; //NOI18N try { return factory.getClass().getClassLoader().loadClass(className).newInstance(); } catch (Exception e) { ErrorManager.getDefault().log(ErrorManager.INFORMATIONAL, e.getMessage()); return null; } } // PENDING should be cached? public String getHelpId(String beanClass) { ConfigBean[] beans = dep.getConfigBean(); for(int i = 0; i < beans.length; i++) { if(beans[i].getClassName().equals(beanClass)) return beans[i].getHelpid(); } return null; } public DeploymentPlanSplitter getDeploymentPlanSplitter() { DeploymentPlanSplitter o = (DeploymentPlanSplitter) lkp.lookup (DeploymentPlanSplitter.class); if (o != null) { return o; } else { String msg = NbBundle.getMessage(Server.class, "MSG_NoInstance", name, DeploymentPlanSplitter.class); ErrorManager.getDefault().log(ErrorManager.INFORMATIONAL, msg); return null; } } public RegistryNodeProvider getNodeProvider() { if (nodeProvider != null) return nodeProvider; RegistryNodeFactory nodeFact = (RegistryNodeFactory) lkp.lookup(RegistryNodeFactory.class); if (nodeFact == null) { String msg = NbBundle.getMessage(Server.class, "MSG_NoInstance", name, RegistryNodeFactory.class); ErrorManager.getDefault().log(ErrorManager.INFORMATIONAL, msg); } nodeProvider = new RegistryNodeProvider(nodeFact); //null is acceptable return nodeProvider; } public ManagementMapper getManagementMapper() { ManagementMapper o = (ManagementMapper) lkp.lookup (ManagementMapper.class); if (o != null) { return o; } else { String msg = NbBundle.getMessage(Server.class, "MSG_NoInstance", name, ManagementMapper.class); ErrorManager.getDefault().log(ErrorManager.INFORMATIONAL, msg); return null; } } /** returns OptionalDeploymentManagerFactory or null it is not provided by the plugin */ public OptionalDeploymentManagerFactory getOptionalFactory () { OptionalDeploymentManagerFactory o = (OptionalDeploymentManagerFactory) lkp.lookup (OptionalDeploymentManagerFactory.class); return o; } /** returns DConfigBeanUIFactory or null it is not provided by the plugin */ public DConfigBeanUIFactory getDConfigBeanUIFactory () { DConfigBeanUIFactory o = (DConfigBeanUIFactory) lkp.lookup (DConfigBeanUIFactory.class); return o; } public DConfigBeanProperties getDConfigBeanProperties(DConfigBean bean) { DConfigBeanUIFactory beanUIFactory = getDConfigBeanUIFactory(); if (beanUIFactory == null) return null; return beanUIFactory.getUICustomization(bean); } public ServerInstance[] getInstances() { Collection ret = new ArrayList(); for (Iterator i=ServerRegistry.getInstance().getInstances().iterator(); i.hasNext();) { ServerInstance inst = (ServerInstance) i.next(); if (name.equals(inst.getServer().getShortName())) ret.add(inst); } return (ServerInstance[]) ret.toArray(new ServerInstance[ret.size()]); } public WebContextRoot getWebContextRoot() { return dep.getWebContextRoot(); } public DeploymentFactory getDeploymentFactory() { return factory; } static public boolean getBooleanValue(Object v, boolean dvalue) { if (v instanceof Boolean) return ((Boolean)v).booleanValue(); if (v instanceof String) return Boolean.valueOf((String) v).booleanValue(); return dvalue; } public boolean needsFindServerUI() { return needsFindServerUI; } public String toString () { return getShortName (); } public boolean supportsModuleType(ModuleType type) { if (J2eeModule.WAR.equals(type)) { return this.canDeployWars(); } else if (J2eeModule.EJB.equals(type)) { return this.canDeployEjbJars(); } else if (J2eeModule.EAR.equals(type)) { return this.canDeployEars(); } else { // PENDING, precise answer for other module types, for now assume true return true; } } } |
... 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.