Author: rob.stryker(a)jboss.com
Date: 2011-06-28 23:36:48 -0400 (Tue, 28 Jun 2011)
New Revision: 32422
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/descriptors/XPathCategory.java
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/descriptors/XPathModel.java
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/descriptors/XPathQuery.java
Log:
JBIDE-8355 - xpaths need to not hard-code the root folder
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/descriptors/XPathCategory.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/descriptors/XPathCategory.java 2011-06-28
23:54:17 UTC (rev 32421)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/descriptors/XPathCategory.java 2011-06-29
03:36:48 UTC (rev 32422)
@@ -75,7 +75,7 @@
children = new HashMap<String, XPathQuery>();
for( int i = 0; i < queryMementos.length; i++ ) {
String name = queryMementos[i].getString("name");//$NON-NLS-1$
- XPathQuery child = new XPathQuery(queryMementos[i]);
+ XPathQuery child = new XPathQuery(queryMementos[i], server);
children.put(name, child);
child.setCategory(this);
}
@@ -121,16 +121,19 @@
return children == null ? false : true;
}
+ public void clearCache() {
+ if( isLoaded()) {
+ XPathQuery[] allQueries = getQueries();
+ for( int i = 0; i < allQueries.length; i++ ) {
+ allQueries[i].clearCache();
+ }
+ }
+ }
+
/*
* Save these queries to its server object
*/
public void save() {
XPathModel.getDefault().save(server);
}
-
- // FIXME With right implementation
- public void clearCache() {
- // TODO Auto-generated method stub
-
- }
}
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/descriptors/XPathModel.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/descriptors/XPathModel.java 2011-06-28
23:54:17 UTC (rev 32421)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/descriptors/XPathModel.java 2011-06-29
03:36:48 UTC (rev 32422)
@@ -87,7 +87,7 @@
}
private IStatus handleAddJBoss7XPaths(IServer server2) {
- ArrayList<XPathCategory> defaults = loadDefaults(server2,
server2.getRuntime().getLocation().toOSString());
+ ArrayList<XPathCategory> defaults = loadDefaults(server2, "");
//$NON-NLS-1$
serverToCategories.put(server2.getId(), defaults);
save(server2);
return Status.OK_STATUS;
@@ -97,9 +97,9 @@
LocalJBossServerRuntime ajbsr = (LocalJBossServerRuntime)
server2.getRuntime().loadAdapter(LocalJBossServerRuntime.class, null);
if(ajbsr != null ) {
- IPath configFolder = ajbsr.getConfigurationFullPath();
+ String configFolder = "server/${jboss_config}";
//ajbsr.getConfigurationFullPath(); //$NON-NLS-1$
if( configFolder != null ) {
- ArrayList<XPathCategory> defaults = loadDefaults(server2,
configFolder.toOSString());
+ ArrayList<XPathCategory> defaults = loadDefaults(server2, configFolder);
serverToCategories.put(server2.getId(), defaults);
save(server2);
}
@@ -291,7 +291,7 @@
xpath = pr.getProperty(name);
attributeName = pr.getProperty(name+ATTRIBUTE_SUFFIX);
file = pr.getProperty(name + FILE_SUFFIX);
- query = new XPathQuery(name.replace('_', ' '), configFolder, file,
xpath, attributeName);
+ query = new XPathQuery(server, name.replace('_', ' '), configFolder,
file, xpath, attributeName);
ports.addQuery(query);
}
}
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/descriptors/XPathQuery.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/descriptors/XPathQuery.java 2011-06-28
23:54:17 UTC (rev 32421)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/descriptors/XPathQuery.java 2011-06-29
03:36:48 UTC (rev 32422)
@@ -17,8 +17,12 @@
import org.dom4j.Document;
import org.dom4j.Node;
+import org.eclipse.core.internal.variables.StringSubstitutionEngine;
+import org.eclipse.core.internal.variables.StringVariableManager;
+import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
+import org.eclipse.wst.server.core.IServer;
import org.jaxen.JaxenException;
import org.jaxen.SimpleNamespaceContext;
import org.jaxen.XPath;
@@ -55,8 +59,10 @@
protected transient XPathFileResult[] results;
protected transient XPathCategory category;
protected transient XMLDocumentRepository repository = null;
+ protected IServer server; // May be null
- public XPathQuery(IMemento memento) {
+ public XPathQuery(IMemento memento, IServer server) {
+ this.server = server;
this.name = memento.getString("name"); //$NON-NLS-1$
this.baseDir = memento.getString("dir"); //$NON-NLS-1$
this.filePattern = memento.getString("filePattern"); //$NON-NLS-1$
@@ -65,6 +71,11 @@
setEffectiveBaseDir();
}
+ @Deprecated
+ public XPathQuery(IMemento memento) {
+ this(memento, null);
+ }
+
public XPathQuery(String name, List list) {
this.name = name;
this.baseDir = list.get(0).equals(XPathModel.EMPTY_STRING) ? null :
(String)list.get(0);
@@ -74,7 +85,9 @@
setEffectiveBaseDir();
}
- public XPathQuery(String name, String baseDir, String filePattern, String xpathPattern,
String attribute) {
+ public XPathQuery(IServer server, String name, String baseDir,
+ String filePattern, String xpathPattern, String attribute) {
+ this.server = server;
this.name = name;
this.baseDir = baseDir;
this.filePattern = filePattern;
@@ -84,6 +97,11 @@
setEffectiveBaseDir();
}
+ @Deprecated
+ public XPathQuery(String name, String baseDir, String filePattern, String xpathPattern,
String attribute) {
+ this(null, name, baseDir, filePattern, xpathPattern, attribute);
+ }
+
private void setEffectiveBaseDir() {
IPath dir = baseDir == null ? null : new Path(baseDir);
if( dir == null && category != null) {
@@ -91,7 +109,22 @@
}
if( dir != null && !dir.isAbsolute() && category != null)
dir = getCategory().getServer().getRuntime().getLocation().append(dir);
- effectiveBaseDir = dir == null ? null : dir.toString();
+
+ String dir2 = null;
+ String serverName = server == null ? "" : server.getName(); //$NON-NLS-1$
+ if( dir != null ) {
+ dir2 = dir.toString().replace("${jboss_config_dir}", //$NON-NLS-1$
+ "${jboss_config_dir:" + serverName + "}"); //$NON-NLS-1$
//$NON-NLS-2$
+ dir2 = dir2.replace("${jboss_config}", //$NON-NLS-1$
+ "${jboss_config:" + serverName + "}"); //$NON-NLS-1$
//$NON-NLS-2$
+
+ try {
+ StringSubstitutionEngine engine = new StringSubstitutionEngine();
+ dir2 = engine.performStringSubstitution(dir2, true,
+ true, StringVariableManager.getDefault());
+ } catch( CoreException ce ) {}
+ }
+ effectiveBaseDir = dir2 == null ? null : dir2.toString();
}
protected AntFileFilter getFilter() {
@@ -126,6 +159,11 @@
return results;
}
+ public void clearCache() {
+ results = null;
+ setEffectiveBaseDir();
+ }
+
public boolean resultsLoaded() {
return results == null ? false : true;
}