modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBean.java
| 1
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBeanTest.java
| 16 ++++++++++
modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/PluginManagerBeanTest/plugin_3.1.xml
| 8 +++++
3 files changed, 25 insertions(+)
New commits:
commit 2f891cc677965f56de4d143e0e3a41aa16eca99c
Author: John Sanda <jsanda(a)redhat.com>
Date: Tue Nov 6 23:49:37 2012 -0500
[BZ 845700] Do not use SQL LIKE operator when checking if plugin is ready for purge
The query used in PluginManagerBean.isReadyForPurge used the LIKE operator to
make sure all resource types have been deleted. This is problematic with the
jboss-as (JBoss 4) plugin. Its name is JBossAS and the jboss-as-5 plugin name
is JBossAS5. When using the LIKE operator on the plugin name, both plugin names
match which prevents the purge from happening. The LIKE operator is no longer
used to prevent this problem. A test has been added to PluginManagerBeanTest
for this scenario.
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBean.java
index 09563df..22fc2ce 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBean.java
@@ -104,6 +104,7 @@ public class PluginManagerBean implements PluginManagerLocal {
ResourceTypeCriteria criteria = new ResourceTypeCriteria();
criteria.addFilterPluginName(plugin.getName());
criteria.setRestriction(Criteria.Restriction.COUNT_ONLY);
+ criteria.setStrict(true);
PageList results =
resourceTypeMgr.findResourceTypesByCriteria(subjectMgr.getOverlord(), criteria);
return results.getTotalSize() == 0;
diff --git
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBeanTest.java
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBeanTest.java
index ec0fcd4..4112da0 100644
---
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBeanTest.java
+++
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBeanTest.java
@@ -32,6 +32,8 @@ import org.rhq.core.domain.plugin.Plugin;
import org.rhq.core.domain.plugin.PluginStatusType;
import org.rhq.enterprise.server.auth.SubjectManagerLocal;
import org.rhq.enterprise.server.core.plugin.PluginDeploymentScanner;
+import org.rhq.enterprise.server.inventory.InventoryManagerLocal;
+import org.rhq.enterprise.server.resource.ResourceTypeManagerLocal;
import org.rhq.enterprise.server.scheduler.jobs.PurgePluginsJob;
import org.rhq.enterprise.server.scheduler.jobs.PurgeResourceTypesJob;
import org.rhq.enterprise.server.util.LookupUtil;
@@ -82,6 +84,7 @@ public class PluginManagerBeanTest extends MetadataBeanTest {
createPlugin("test-plugin1", "1.0",
"plugin_1.xml");
createPlugin("test-plugin2", "1.0",
"plugin_2.xml");
createPlugin("test-plugin3", "1.0",
"plugin_3.xml");
+ createPlugin("test-plugin3.1", "1.0",
"plugin_3.1.xml");
}
@Test(dependsOnMethods = { "registerPlugins" })
@@ -170,6 +173,19 @@ public class PluginManagerBeanTest extends MetadataBeanTest {
assertTrue("Expected plugin status to be set to DELETED",
plugin2.getStatus() == PluginStatusType.DELETED);
}
+ @Test(dependsOnMethods = { "registerPlugins" })
+ public void isPluginReadyForDeletion() {
+ Plugin plugin3 = getPlugin("PluginManagerBeanTestPlugin3");
+
+ ResourceTypeManagerLocal resourceTypeManager =
LookupUtil.getResourceTypeManager();
+ List<Integer> ids =
resourceTypeManager.getResourceTypeIdsByPlugin(plugin3.getName());
+ InventoryManagerLocal inventoryManager = LookupUtil.getInventoryManager();
+ inventoryManager.markTypesDeleted(ids);
+
+ assertTrue("Expected " + plugin3 + " to be ready for purge since
all its resource types have been marked " +
+ "deleted", pluginMgr.isReadyForPurge(plugin3));
+ }
+
@Test(enabled = false, dependsOnMethods = { "deletePlugins" })
public void purgePlugins() throws Exception {
Plugin plugin1 = getPlugin("PluginManagerBeanTestPlugin1",
diff --git
a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/PluginManagerBeanTest/plugin_3.1.xml
b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/PluginManagerBeanTest/plugin_3.1.xml
new file mode 100644
index 0000000..e885167
--- /dev/null
+++
b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/PluginManagerBeanTest/plugin_3.1.xml
@@ -0,0 +1,8 @@
+<plugin name="PluginManagerBeanTestPlugin3.1"
+ package="org.rhq.plugins.test"
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="urn:xmlns:rhq-plugin"
+ xmlns:c="urn:xmlns:rhq-configuration">
+
+ <server name="TestServer3.1"/>
+</plugin>
\ No newline at end of file