Author: rob.stryker(a)jboss.com
Date: 2012-02-08 09:51:28 -0500 (Wed, 08 Feb 2012)
New Revision: 38511
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/IDeployableServer.java
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/DeployableServer.java
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/DeployableServerBehavior.java
trunk/as/tests/org.jboss.ide.eclipse.as.test/src/org/jboss/ide/eclipse/as/test/publishing/v2/ModuleRestartDetectionTest.java
Log:
JBIDE-10464 - max patch, move setting to inside server, adjust tests
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/IDeployableServer.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/IDeployableServer.java 2012-02-08
14:48:24 UTC (rev 38510)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/IDeployableServer.java 2012-02-08
14:51:28 UTC (rev 38511)
@@ -11,6 +11,8 @@
package org.jboss.ide.eclipse.as.core.server;
+import java.util.regex.Pattern;
+
import org.eclipse.wst.server.core.IServer;
import org.jboss.ide.eclipse.as.core.server.internal.ServerAttributeHelper;
@@ -24,6 +26,7 @@
public static final String TEMP_DEPLOY_DIRECTORY =
"org.jboss.ide.eclipse.as.core.server.tempDeployDirectory"; //$NON-NLS-1$
public static final String DEPLOY_DIRECTORY_TYPE =
"org.jboss.ide.eclipse.as.core.server.deployDirectoryType"; //$NON-NLS-1$
public static final String ZIP_DEPLOYMENTS_PREF =
"org.jboss.ide.eclipse.as.core.server.zipDeploymentsPreference"; //$NON-NLS-1$
+ public static final String ORG_JBOSS_TOOLS_AS_RESTART_FILE_PATTERN =
"org.jboss.tools.as.restartFilePattern"; //$NON-NLS-1$
public static final String DEPLOY_METADATA = "metadata"; //$NON-NLS-1$
public static final String DEPLOY_CUSTOM = "custom"; //$NON-NLS-1$
@@ -43,5 +46,8 @@
public ServerAttributeHelper getAttributeHelper();
public IServer getServer();
+ public void setRestartFilePattern(String filepattern);
+ public Pattern getRestartFilePattern();
+
public boolean hasJMXProvider();
}
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/DeployableServer.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/DeployableServer.java 2012-02-08
14:48:24 UTC (rev 38510)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/DeployableServer.java 2012-02-08
14:51:28 UTC (rev 38511)
@@ -10,6 +10,9 @@
******************************************************************************/
package org.jboss.ide.eclipse.as.core.server.internal;
+import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
+
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
@@ -20,6 +23,7 @@
import org.eclipse.wst.server.core.IServerWorkingCopy;
import org.eclipse.wst.server.core.ServerPort;
import org.eclipse.wst.server.core.model.ServerDelegate;
+import org.jboss.ide.eclipse.as.core.JBossServerCorePlugin;
import org.jboss.ide.eclipse.as.core.server.IDeployableServer;
import org.jboss.ide.eclipse.as.core.server.IJBossServerRuntime;
import org.jboss.ide.eclipse.as.core.util.RuntimeUtils;
@@ -113,7 +117,30 @@
return getAttribute(ZIP_DEPLOYMENTS_PREF, false);
}
+ // kept static to avoid overhead of pattern compilation
+ final private static Pattern defaultFilePattern = Pattern.compile("\\.jar$",
Pattern.CASE_INSENSITIVE); //$NON-NLS-1$
+ private Pattern restartFilePattern = null;
+ public void setRestartFilePattern(String filepattern) {
+ setAttribute(ORG_JBOSS_TOOLS_AS_RESTART_FILE_PATTERN, filepattern);
+ this.restartFilePattern = null;
+ }
+ public Pattern getRestartFilePattern() {
+ if( this.restartFilePattern == null ) {
+ // ensure it's set properly from the saved attribute
+ String currentPattern = getAttribute(ORG_JBOSS_TOOLS_AS_RESTART_FILE_PATTERN,
(String)null);
+ try {
+ this.restartFilePattern = currentPattern == null ? defaultFilePattern :
+ Pattern.compile(currentPattern, Pattern.CASE_INSENSITIVE);
+ } catch(PatternSyntaxException pse) {
+ JBossServerCorePlugin.log("Could not set restart file pattern to: " +
currentPattern, pse); //$NON-NLS-1$
+ // avoid errors over and over
+ this.restartFilePattern = defaultFilePattern;
+ }
+ }
+ return this.restartFilePattern;
+ }
+
/*
* (non-Javadoc)
* @see
org.jboss.ide.eclipse.as.core.server.attributes.IDeployableServer#getAttributeHelper()
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/DeployableServerBehavior.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/DeployableServerBehavior.java 2012-02-08
14:48:24 UTC (rev 38510)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/DeployableServerBehavior.java 2012-02-08
14:51:28 UTC (rev 38511)
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007 Red Hat, Inc.
+ * Copyright (c) 2012 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is made available under the terms of the
* Eclipse Public License v1.0 which accompanies this distribution,
@@ -13,7 +13,6 @@
import java.util.HashMap;
import java.util.List;
import java.util.regex.Pattern;
-import java.util.regex.PatternSyntaxException;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -30,43 +29,22 @@
import org.jboss.ide.eclipse.as.core.JBossServerCorePlugin;
import org.jboss.ide.eclipse.as.core.publishers.LocalPublishMethod;
import org.jboss.ide.eclipse.as.core.publishers.patterns.IModulePathFilter;
+import org.jboss.ide.eclipse.as.core.server.IDeployableServer;
import org.jboss.ide.eclipse.as.core.server.IJBossServerPublishMethod;
import org.jboss.ide.eclipse.as.core.server.IJBossServerPublishMethodType;
import org.jboss.ide.eclipse.as.core.server.IJBossServerPublisher;
import
org.jboss.ide.eclipse.as.core.server.internal.launch.DeployableLaunchConfiguration;
import org.jboss.ide.eclipse.as.core.util.DeploymentPreferenceLoader;
+import org.jboss.ide.eclipse.as.core.util.ServerConverter;
/**
* @author Rob Stryker
*/
public class DeployableServerBehavior extends ServerBehaviourDelegate {
- public static final String ORG_JBOSS_TOOLS_AS_RESTART_FILE_PATTERN =
"org.jboss.tools.as.restartFilePattern"; //$NON-NLS-1$
-
- // kept static to avoid overhead of pattern compilation
- final private static Pattern defaultFilePattern = Pattern.compile("\\.jar$",
Pattern.CASE_INSENSITIVE); //$NON-NLS-1$
-
- // contains the pattern to use to recognize if files deployed needs to result in
restart
- // can be set via system property "org.jboss.tools.as.restartFilePattern" but
should eventually be made
- // available via server settings.
- private Pattern restartFilePattern = null;
-
public DeployableServerBehavior() {
- String systemPattern =
System.getProperty(ORG_JBOSS_TOOLS_AS_RESTART_FILE_PATTERN,null);
-
- if(systemPattern == null) {
- restartFilePattern = defaultFilePattern;
- } else {
- try {
- setRestartFilePattern(systemPattern);
- } catch(PatternSyntaxException pse) {
- JBossServerCorePlugin.getDefault();
- JBossServerCorePlugin.log("Could not set restart file pattern to: " +
systemPattern, pse); //$NON-NLS-1$
- }
- }
}
-
public void stop(boolean force) {
setServerStopped(); // simple enough
}
@@ -243,20 +221,14 @@
}
public boolean changedFileRequiresModuleRestart(IModuleFile file) {
+ IDeployableServer ds = ServerConverter.getDeployableServer(getServer());
+ Pattern restartFilePattern = ds.getRestartFilePattern();
if (restartFilePattern != null) {
// using find over matches to make it a substring search by default and avoid having
to specify .*.class$ instead of just .class$
return restartFilePattern.matcher(file.getName()).find();
- } else {
- if (file.getName().toLowerCase().endsWith(".jar")) //$NON-NLS-1$
- return true;
- return false;
}
+ return false;
}
-
- public void setRestartFilePattern(String filepattern) {
- this.restartFilePattern = Pattern.compile(filepattern, Pattern.CASE_INSENSITIVE);
- }
-
/**
* Some projects may request post-processing filtering on
Modified:
trunk/as/tests/org.jboss.ide.eclipse.as.test/src/org/jboss/ide/eclipse/as/test/publishing/v2/ModuleRestartDetectionTest.java
===================================================================
---
trunk/as/tests/org.jboss.ide.eclipse.as.test/src/org/jboss/ide/eclipse/as/test/publishing/v2/ModuleRestartDetectionTest.java 2012-02-08
14:48:24 UTC (rev 38510)
+++
trunk/as/tests/org.jboss.ide.eclipse.as.test/src/org/jboss/ide/eclipse/as/test/publishing/v2/ModuleRestartDetectionTest.java 2012-02-08
14:51:28 UTC (rev 38511)
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2011 Red Hat, Inc.
+ * Copyright (c) 2012 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is made available under the terms of the
* Eclipse Public License v1.0 which accompanies this distribution,
@@ -12,10 +12,16 @@
import junit.framework.TestCase;
+import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
+import org.eclipse.wst.server.core.IServer;
+import org.eclipse.wst.server.core.IServerWorkingCopy;
import org.eclipse.wst.server.core.model.IModuleFile;
+import org.jboss.ide.eclipse.as.core.server.IDeployableServer;
+import org.jboss.ide.eclipse.as.core.server.internal.DeployableServer;
import org.jboss.ide.eclipse.as.core.server.internal.DeployableServerBehavior;
-import org.jboss.ide.eclipse.as.test.publishing.v2.ModuleRestartDetectionTest.MockFile;
+import org.jboss.ide.eclipse.as.core.util.ServerConverter;
+import org.jboss.ide.eclipse.as.test.util.ServerRuntimeUtils;
public class ModuleRestartDetectionTest extends TestCase {
@@ -45,6 +51,7 @@
}
+ private DeployableServer deployableServer;
private DeployableServerBehavior behavior;
private MockFile mixedJar;
private MockFile classyjar;
@@ -53,6 +60,31 @@
private MockFile jarfile;
private MockFile nodotjar;
+ public void setUp() throws CoreException {
+ IServer depServer = ServerRuntimeUtils.createMockDeployOnlyServer();
+ deployableServer = (DeployableServer)ServerConverter.getDeployableServer(depServer);
+ behavior =
(DeployableServerBehavior)depServer.loadAdapter(DeployableServerBehavior.class, null);
+
+ jarfile = new MockFile("blah.jar");
+ classfile = new MockFile("blah.class");
+ nodotjar = new MockFile("nodotjar");
+ htmlfile = new MockFile("blah.html");
+ classyjar = new MockFile("myclassy.jarfile");
+ mixedJar = new MockFile("BLAH.JAr");
+ }
+ private void setRestartFilePattern(String filepattern) {
+ try {
+ IServerWorkingCopy wc = deployableServer.getServer().createWorkingCopy();
+ wc.setAttribute(IDeployableServer.ORG_JBOSS_TOOLS_AS_RESTART_FILE_PATTERN,
filepattern);
+ IServer depServer = wc.save(false, null);
+ deployableServer = (DeployableServer)ServerConverter.getDeployableServer(depServer);
+ behavior =
(DeployableServerBehavior)depServer.loadAdapter(DeployableServerBehavior.class, null);
+ } catch( CoreException ce ) {
+ fail("Could not update the server");
+ }
+ }
+
+
public void testDefaults() {
@@ -67,21 +99,11 @@
}
- public void setUp() {
- behavior = new DeployableServerBehavior();
-
- jarfile = new MockFile("blah.jar");
- classfile = new MockFile("blah.class");
- nodotjar = new MockFile("nodotjar");
- htmlfile = new MockFile("blah.html");
- classyjar = new MockFile("myclassy.jarfile");
- mixedJar = new MockFile("BLAH.JAr");
- }
public void testClassEndOfLine() {
String filepattern = ".class$";
- behavior.setRestartFilePattern(filepattern);
+ setRestartFilePattern(filepattern);
assertFalse(filepattern + " should not restart on .jar",
behavior.changedFileRequiresModuleRestart(jarfile));
assertTrue(filepattern + " should restart on .class",
behavior.changedFileRequiresModuleRestart(classfile));
@@ -91,7 +113,7 @@
public void testBasicOr() {
String filepattern = ".class|.jar";
- behavior.setRestartFilePattern(filepattern);
+ setRestartFilePattern(filepattern);
assertTrue(filepattern + " should restart on .jar",
behavior.changedFileRequiresModuleRestart(jarfile));
assertTrue(filepattern + " should restart on .class",
behavior.changedFileRequiresModuleRestart(classfile));
@@ -103,36 +125,21 @@
public void testCaseInsensitive() {
assertTrue(behavior.changedFileRequiresModuleRestart(new MockFile(".jar")));
-
assertTrue(behavior.changedFileRequiresModuleRestart(new MockFile(".JAR")));
- behavior.setRestartFilePattern(".jar");
+ setRestartFilePattern(".jar");
assertTrue(behavior.changedFileRequiresModuleRestart(new MockFile(".jar")));
-
assertTrue(behavior.changedFileRequiresModuleRestart(new MockFile(".JAR")));
-
}
public void testBasicOrEndOfLine() {
String filepattern = ".class$|.jar$";
- behavior.setRestartFilePattern(filepattern);
+ setRestartFilePattern(filepattern);
assertTrue(filepattern + " should restart on .jar",
behavior.changedFileRequiresModuleRestart(jarfile));
assertTrue(filepattern + " should restart on .class",
behavior.changedFileRequiresModuleRestart(classfile));
assertFalse(filepattern + " should not restart on .html",
behavior.changedFileRequiresModuleRestart(htmlfile));
assertFalse(filepattern + "Default should not restart on file named
classy.jarfile", behavior.changedFileRequiresModuleRestart(classyjar));
-
}
-
- public void testSystemProperty() {
-
- System.setProperty(DeployableServerBehavior.ORG_JBOSS_TOOLS_AS_RESTART_FILE_PATTERN,".blah");
-
- behavior = new DeployableServerBehavior();
-
- assertTrue(behavior.changedFileRequiresModuleRestart(new
MockFile(".blah")));
- assertFalse(behavior.changedFileRequiresModuleRestart(new
MockFile(".jar")));
-
- }
}