# This patch file was generated by NetBeans IDE # Following Index: paths are relative to: /home/vbk/release551/serverplugins/sun # This patch can be applied using context Tools: Patch action on respective folder. # It uses platform neutral UTF-8 encoding and \n newlines. # Above lines and this line are ignored by the patching process. Index: appsrvbridge/src/org/netbeans/modules/j2ee/sun/ide/runtime/nodes/DomainRootNode.java *** /home/vbk/release551/serverplugins/sun/appsrvbridge/src/org/netbeans/modules/j2ee/sun/ide/runtime/nodes/DomainRootNode.java Base (1.1.38.3) --- /home/vbk/release551/serverplugins/sun/appsrvbridge/src/org/netbeans/modules/j2ee/sun/ide/runtime/nodes/DomainRootNode.java Locally Modified (Based On 1.1.38.3) *************** *** 69,78 **** --- 69,88 ---- } public void refresh(){ + SunDeploymentManagerInterface sdm=(SunDeploymentManagerInterface)deployMgr; + if (sdm.isSuspended()) { + return; + } + if (sdm.grabInnerDM(true)) { + try { AppserverMgmtController a= ControllerUtil.getAppserverMgmtControllerFromDeployMgr( deployMgr); setAppserverMgmtController(a); super.refresh(); + } finally { + sdm.releaseInnerDM(); } + } + } /** * Return the actions associated with the menu drop down seen when * a user right-clicks on an the node in the plugin. This method here *************** *** 190,196 **** public void propertyChange(PropertyChangeEvent evt) { ! setAppserverMgmtController(ControllerUtil.getAppserverMgmtControllerFromDeployMgr( deployMgr)); javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { refresh(); --- 200,206 ---- public void propertyChange(PropertyChangeEvent evt) { ! //setAppserverMgmtController(ControllerUtil.getAppserverMgmtControllerFromDeployMgr( deployMgr)); javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { refresh(); Index: appsrvbridge/src/org/netbeans/modules/j2ee/sun/bridge/DirectoryDeployment.java *** /home/vbk/release551/serverplugins/sun/appsrvbridge/src/org/netbeans/modules/j2ee/sun/bridge/DirectoryDeployment.java Base (1.1.14.5.2.3) --- /home/vbk/release551/serverplugins/sun/appsrvbridge/src/org/netbeans/modules/j2ee/sun/bridge/DirectoryDeployment.java Locally Modified (Based On 1.1.14.5.2.3) *************** *** 19,24 **** --- 19,27 ---- package org.netbeans.modules.j2ee.sun.bridge; import java.io.File; + import javax.enterprise.deploy.spi.status.DeploymentStatus; + import javax.enterprise.deploy.spi.status.ProgressEvent; + import javax.enterprise.deploy.spi.status.ProgressListener; import org.netbeans.modules.j2ee.deployment.plugins.api.IncrementalDeployment; import org.netbeans.modules.j2ee.deployment.plugins.api.AppChangeDescriptor; *************** *** 149,157 **** * @return a progress object representing the incrmental dpeloy action. */ final public ProgressObject incrementalDeploy( final TargetModuleID tmid, AppChangeDescriptor aCD) { DirectoryDeploymentFacility ddf = new DirectoryDeploymentFacility(dm.getHost(),dm.getPort(),dm.getUserName(),dm.getPassword(),dm.isSecure()); ! return ddf. incrementalDeploy( tmid); } --- 152,172 ---- * @return a progress object representing the incrmental dpeloy action. */ final public ProgressObject incrementalDeploy( final TargetModuleID tmid, AppChangeDescriptor aCD) { + ProgressObject retVal = null; + try { + dm.grabInnerDM(false); DirectoryDeploymentFacility ddf = new DirectoryDeploymentFacility(dm.getHost(),dm.getPort(),dm.getUserName(),dm.getPassword(),dm.isSecure()); ! retVal = ddf.incrementalDeploy(tmid); ! if (null != retVal) { ! retVal.addProgressListener(new Releaser(dm)); ! } ! } finally { ! if (null == retVal) { ! dm.releaseInnerDM(); ! } ! } ! return retVal; //ddf. incrementalDeploy( tmid); } *************** *** 190,208 **** DeployableObject deployableObject, DeploymentConfiguration deploymentConfiguration, File file) { - - // System.out.println("initial Deploy: " +file); - - - DirectoryDeploymentFacility ddf = new DirectoryDeploymentFacility(dm.getHost(),dm.getPort(),dm.getUserName(),dm.getPassword(),dm.isSecure()); SunDeploymentConfigurationInterface s1dc =(SunDeploymentConfigurationInterface) deploymentConfiguration; s1dc.getContextRoot(); String moduleID= getGoodDirNameFromContextRoot(s1dc.getDeploymentModuleName()); ! return ddf. initialDeploy( target, file , moduleID); } --- 205,229 ---- DeployableObject deployableObject, DeploymentConfiguration deploymentConfiguration, File file) { SunDeploymentConfigurationInterface s1dc =(SunDeploymentConfigurationInterface) deploymentConfiguration; s1dc.getContextRoot(); String moduleID= getGoodDirNameFromContextRoot(s1dc.getDeploymentModuleName()); ! ProgressObject retVal = null; ! try { ! ! dm.grabInnerDM(false); ! DirectoryDeploymentFacility ddf = new DirectoryDeploymentFacility(dm.getHost(),dm.getPort(),dm.getUserName(),dm.getPassword(),dm.isSecure()); ! retVal = ddf.initialDeploy( target, file , moduleID); ! if (null != retVal) { ! retVal.addProgressListener(new Releaser(dm)); } + } finally { + if (null == retVal) { + dm.releaseInnerDM(); + } + } + return retVal; + } *************** *** 306,315 **** --- 330,353 ---- return new File("C:\\tmp\\ludo222"); } + private class Releaser implements ProgressListener { + SunDeploymentManagerInterface dm; + Releaser(SunDeploymentManagerInterface dm) { + this.dm = dm; + } + public void handleProgressEvent(ProgressEvent progressEvent) { + DeploymentStatus dms = progressEvent.getDeploymentStatus(); + if (!dms.isRunning()) { + dm.releaseInnerDM(); } + } + } + } + Index: appsrv/src/org/netbeans/modules/j2ee/sun/api/SunDeploymentManagerInterface.java *** /home/vbk/release551/serverplugins/sun/appsrv/src/org/netbeans/modules/j2ee/sun/api/SunDeploymentManagerInterface.java Base (1.1.16.4.2.6) --- /home/vbk/release551/serverplugins/sun/appsrv/src/org/netbeans/modules/j2ee/sun/api/SunDeploymentManagerInterface.java Locally Modified (Based On 1.1.16.4.2.6) *************** *** 111,114 **** --- 111,118 ---- /** Unregister the listener. */ void removePropertyChangeListener(PropertyChangeListener l); + + boolean grabInnerDM(boolean returnInsteadOfWaiting); + + void releaseInnerDM(); } Index: appsrvbridge/src/org/netbeans/modules/j2ee/sun/share/management/ServerMEJB.java *** /home/vbk/release551/serverplugins/sun/appsrvbridge/src/org/netbeans/modules/j2ee/sun/share/management/ServerMEJB.java Base (1.1.14.2.2.4) --- /home/vbk/release551/serverplugins/sun/appsrvbridge/src/org/netbeans/modules/j2ee/sun/share/management/ServerMEJB.java Locally Modified (Based On 1.1.14.2.2.4) *************** *** 138,160 **** public String getWebModuleName(String contextRoot) { String name = null; AppserverMgmtController controller = getController(); ! if(controller != null) name = controller.getWebModuleName(contextRoot); return name; } private AppserverMgmtController getController(){ AppserverMgmtController controller = null; SunDeploymentManagerInterface sunDm = (SunDeploymentManagerInterface)currentDM; - if(sunDm.isRunning()) { controller = ControllerUtil.getAppserverMgmtControllerFromDeployMgr(currentDM); - } return controller; } /* check if the dm is ok in term of user name and password, * throws an IOexception if this is incorrect --- 138,166 ---- public String getWebModuleName(String contextRoot) { String name = null; + SunDeploymentManagerInterface sunDm = (SunDeploymentManagerInterface)currentDM; + if (sunDm.isRunning(false)) { + if (sunDm.grabInnerDM(true)) { + try { AppserverMgmtController controller = getController(); ! if(controller != null) { name = controller.getWebModuleName(contextRoot); + } + } finally { + sunDm.releaseInnerDM(); + } + } + } return name; } private AppserverMgmtController getController(){ AppserverMgmtController controller = null; SunDeploymentManagerInterface sunDm = (SunDeploymentManagerInterface)currentDM; controller = ControllerUtil.getAppserverMgmtControllerFromDeployMgr(currentDM); return controller; } + /* check if the dm is ok in term of user name and password, * throws an IOexception if this is incorrect * oterwise, returns normally Index: appsrv81/src/org/netbeans/modules/j2ee/sun/ide/dm/SunDeploymentManager.java *** /home/vbk/release551/serverplugins/sun/appsrv81/src/org/netbeans/modules/j2ee/sun/ide/dm/SunDeploymentManager.java Base (1.10.4.5.2.17.10.2) --- /home/vbk/release551/serverplugins/sun/appsrv81/src/org/netbeans/modules/j2ee/sun/ide/dm/SunDeploymentManager.java Locally Modified (Based On 1.10.4.5.2.17.10.2) *************** *** 38,43 **** --- 38,44 ---- import java.lang.reflect.Method; import java.util.Map; import java.util.ResourceBundle; + import java.util.concurrent.atomic.AtomicBoolean; import javax.enterprise.deploy.model.DeployableObject; import javax.enterprise.deploy.shared.ActionType; import javax.enterprise.deploy.shared.CommandType; *************** *** 509,515 **** ClassLoader origClassLoader=Thread.currentThread().getContextClassLoader(); Thread.currentThread().setContextClassLoader(ServerLocationManager.getServerOnlyClassLoader(getPlatformRoot())); ! try{ TargetModuleID[] tm = innerDM.getAvailableModules(modType, target); /* System.out.println("in getAvailableModules "+modType); for(int i = 0; i < target.length; i++) { --- 510,518 ---- ClassLoader origClassLoader=Thread.currentThread().getContextClassLoader(); Thread.currentThread().setContextClassLoader(ServerLocationManager.getServerOnlyClassLoader(getPlatformRoot())); ! try { ! try { ! grabInnerDM(false); TargetModuleID[] tm = innerDM.getAvailableModules(modType, target); /* System.out.println("in getAvailableModules "+modType); for(int i = 0; i < target.length; i++) { *************** *** 520,525 **** --- 523,531 ---- } */ return tm; + } finally { + releaseInnerDM(); + } } finally{ Thread.currentThread().setContextClassLoader(origClassLoader); } *************** *** 555,562 **** --- 561,573 ---- ClassLoader origClassLoader=Thread.currentThread().getContextClassLoader(); Thread.currentThread().setContextClassLoader(ServerLocationManager.getServerOnlyClassLoader(getPlatformRoot())); try{ + try { + grabInnerDM(false); TargetModuleID[] ttt= innerDM.getRunningModules(mType, target); return ttt; + } finally { + releaseInnerDM(); + } } finally{ Thread.currentThread().setContextClassLoader(origClassLoader); } *************** *** 587,595 **** --- 598,609 ---- retVal[0] = new FakeTarget(); // return retVal; } else { + try { + grabInnerDM(false); if (isLocal()){// if the server is local, make sure we are talking to the correct one //we do that by testing the server location known by the IDE with the server location known by the // server + try{ Object configDir = getManagement().invoke(new javax.management.ObjectName("com.sun.appserv:type=domain,category=config"),"getConfigDir", null, null); if (configDir==null){ *************** *** 627,634 **** --- 641,651 ---- Thread.currentThread().setContextClassLoader(origClassLoader); } + } finally { + releaseInnerDM(); } } + } return retVal; } *************** *** 666,685 **** Thread.currentThread().setContextClassLoader(ServerLocationManager.getServerOnlyClassLoader(getPlatformRoot())); // File f = getInternalPlanFile(plan); // innerPlan = new FileInputStream(f); ProgressObject retVal = innerDM.redeploy(targetModuleID, archive, innerPlan); ! // retVal.addProgressListener(new FileDeleter(f)); return retVal; } catch (IllegalStateException ise) { ! ise.printStackTrace(); throw ise; } catch (Exception ioe) { - ioe.printStackTrace(); IllegalStateException ise = new IllegalStateException("file handling issues"); ise.initCause(ioe); throw ise; } finally { --- 683,702 ---- Thread.currentThread().setContextClassLoader(ServerLocationManager.getServerOnlyClassLoader(getPlatformRoot())); // File f = getInternalPlanFile(plan); // innerPlan = new FileInputStream(f); + grabInnerDM(false); ProgressObject retVal = innerDM.redeploy(targetModuleID, archive, innerPlan); ! if (null != retVal) { ! retVal.addProgressListener(new ReleaseInnerDMPL(Thread.currentThread())); ! } return retVal; } catch (IllegalStateException ise) { ! releaseInnerDM(); throw ise; } catch (Exception ioe) { IllegalStateException ise = new IllegalStateException("file handling issues"); ise.initCause(ioe); + releaseInnerDM(); throw ise; } finally { Thread.currentThread().setContextClassLoader(origClassLoader); *************** *** 706,716 **** ClassLoader origClassLoader=Thread.currentThread().getContextClassLoader(); Thread.currentThread().setContextClassLoader(ServerLocationManager.getServerOnlyClassLoader(getPlatformRoot())); try{ ! return innerDM.redeploy(targetModuleID, archive, null); ! //return redeploy(targetModuleID, a, p); } finally{ Thread.currentThread().setContextClassLoader(origClassLoader); - } } --- 726,745 ---- ClassLoader origClassLoader=Thread.currentThread().getContextClassLoader(); Thread.currentThread().setContextClassLoader(ServerLocationManager.getServerOnlyClassLoader(getPlatformRoot())); try{ ! grabInnerDM(false); ! ProgressObject retVal = innerDM.redeploy(targetModuleID, archive, null); ! if (null != retVal) { ! retVal.addProgressListener(new ReleaseInnerDMPL(Thread.currentThread())); ! } ! return retVal; ! } catch (IllegalStateException ise) { ! releaseInnerDM(); ! throw ise; } finally{ Thread.currentThread().setContextClassLoader(origClassLoader); } } *************** *** 818,831 **** ClassLoader origClassLoader=Thread.currentThread().getContextClassLoader(); Thread.currentThread().setContextClassLoader(ServerLocationManager.getServerOnlyClassLoader(getPlatformRoot())); try{ ! return innerDM.undeploy(targetModuleID); } finally{ Thread.currentThread().setContextClassLoader(origClassLoader); --- 844,863 ---- ClassLoader origClassLoader=Thread.currentThread().getContextClassLoader(); Thread.currentThread().setContextClassLoader(ServerLocationManager.getServerOnlyClassLoader(getPlatformRoot())); + ProgressObject retVal = null; try{ ! grabInnerDM(false); ! retVal = innerDM.undeploy(targetModuleID); ! if (null != retVal) { ! retVal.addProgressListener(new ReleaseInnerDMPL(Thread.currentThread())); } + return retVal; + } finally{ + if (null == retVal) { + releaseInnerDM(); + } Thread.currentThread().setContextClassLoader(origClassLoader); } *************** *** 1364,1369 **** --- 1399,1454 ---- } + private AtomicBoolean locked = new AtomicBoolean(false); + + public boolean grabInnerDM(boolean returnInsteadOfWait) { + while (true) { + if (locked.compareAndSet(false,true)) { + // I just closed the lock + break; + } else { + try { + if (returnInsteadOfWait) { + return false; + } + synchronized (locked) { //(innerDM) { + //innerDM.wait(); + locked.wait(500); + } + } catch (InterruptedException ie) { + // what do I do now? + } + } + } + return true; + } + + public void releaseInnerDM() { + locked.set(false); + synchronized (locked) { // (innerDM) { + //innerDM.notifyAll(); + locked.notifyAll(); + } + } + + private class ReleaseInnerDMPL implements ProgressListener { + Thread locker; + ReleaseInnerDMPL(Thread locker) { + this.locker = locker; + } + + public void handleProgressEvent(ProgressEvent progressEvent) { + DeploymentStatus dms = progressEvent.getDeploymentStatus(); + if (!dms.isRunning()) { + locked.set(false); + synchronized (locked) { //(innerDM) { + //innerDM.notifyAll(); + locked.notifyAll(); + } + } + } + } + /** put a file inside this progress listener to get rid of it after * it has been used */