modules/enterprise/binding/src/main/java/org/rhq/bindings/client/RhqManager.java
| 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/PluginFileUploadServlet.java
| 15 -
modules/enterprise/gui/rest-examples-war/src/main/webapp/index.html
| 2
modules/enterprise/gui/rest-examples-war/src/main/webapp/js/rhq.js
| 2
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/TestServerPluginService.java
| 6
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/alert/AlertDefinitionWithComplexNotificationsTest.java
| 4
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/alert/TestAlertSenderPluginService.java
| 5
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
| 2
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/bundle/TestBundleServerPluginService.java
| 5
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/core/plugin/DatabaseAndFilePluginDeploymentTest.java
| 7
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/drift/AbstractDriftServerTest.java
| 2
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/drift/DriftManagerBeanTest.java
| 2
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/drift/DriftServerPluginService.java
| 5
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/measurement/MeasurementDataManagerBeanTest.java
| 2
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/measurement/MeasurementOOBManagerBeanTest.java
| 2
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/measurement/test/AvailabilityManagerTest.java
| 2
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/ServerPluginsBeanTest.java
| 2
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/content/TestContentServerPluginService.java
| 7
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/generic/GenericServerPluginTest.java
| 2
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/generic/TestGenericServerPluginService.java
| 15 -
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/group/test/LdapGroupManagerBeanTest.java
| 2
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/MetadataBeanTest.java
| 2
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest.java
| 14 -
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/test/UpdatePluginMetadataTestBase.java
| 2
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/test/ResourceFactoryManagerBeanTest.java
| 2
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/scheduler/jobs/DataPurgeJobTest.java
| 2
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/sync/test/SynchronizationManagerBeanTest.java
| 2
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/system/SystemManagerBeanTest.java
| 2
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/AbstractEJB3Test.java
| 23 +
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/StandardServerPluginService.java
| 11
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/TestServerPluginService.java
| 5
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/discovery/DiscoveryBossBean.java
| 12 -
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/definition/GroupDefinitionManagerBean.java
| 7
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/definition/GroupDefinitionManagerRemote.java
| 120 ++++++++++
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBean.java
| 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerBean.java
| 81 +++++-
modules/integration-tests/rest-api/src/test/java/org/rhq/modules/integrationTests/restApi/ResourcesTest.java
| 110 ++++++++-
modules/integration-tests/rest-api/src/test/java/org/rhq/modules/integrationTests/restApi/d/Resource.java
| 76 ++++++
38 files changed, 460 insertions(+), 106 deletions(-)
New commits:
commit a74896a61f3b8ad1b9372469368c86f115f80b28
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Wed Jan 30 17:31:12 2013 -0500
Fix test failure, when I beefed up type removal checking I neglected to
notice a dependent test that also needed updating.
diff --git
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest.java
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest.java
index dd5311b..7392758 100644
---
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest.java
+++
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest.java
@@ -385,6 +385,7 @@ public class ResourceMetadataManagerBeanTest extends MetadataBeanTest
{
resourcesServiceE1.get(0));
List<Resource> resourcesServiceE3 = createResources(2,
"RemoveTypesPlugin", "ServiceE3",
resourcesServiceE2.get(0));
+ // Intentionally greater than 200 to test an issue with Criteria fetch defaults
List<Resource> resourcesServiceE4 = createResources(205,
"RemoveTypesPlugin", "ServiceE4",
resourcesServiceE3.get(0));
@@ -426,6 +427,7 @@ public class ResourceMetadataManagerBeanTest extends MetadataBeanTest
{
@Test(dependsOnMethods = { "upgradePluginWithTypesRemoved" }, groups = {
"plugin.resource.metadata.test",
"RemoveTypes" })
public void deleteParent() throws Exception {
+
SubjectManagerLocal subjectMgr = LookupUtil.getSubjectManager();
ResourceTypeManagerLocal resourceTypeMgr = LookupUtil.getResourceTypeManager();
@@ -459,12 +461,16 @@ public class ResourceMetadataManagerBeanTest extends
MetadataBeanTest {
@Test(dependsOnMethods = { "upgradePluginWithTypesRemoved" }, groups = {
"plugin.resource.metadata.test",
"RemoveTypes" })
- public void deleteTypeAndAllItsDescedantTypes() throws Exception {
+ public void deleteTypeAndAllItsDescendantTypes() throws Exception {
+
List<?> typesNotRemoved = getEntityManager()
.createQuery("from ResourceType t where t.plugin = :plugin and t.name in
(:resourceTypes)")
.setParameter("plugin", "RemoveTypesPlugin")
- .setParameter("resourceTypes", asList("ServerE",
"ServerE1", "ServerE2", "ServerE3", "ServerE4"))
- .getResultList();
+ // the types that should have been removed, if any show up we have a problem
+ .setParameter(
+ "resourceTypes",
+ asList("ServerC", "ServiceC1", "ServiceE4",
"ServerF", "ServiceF1", "ServiceF2", "ServiceF3",
+ "ServiceF4")).getResultList();
assertEquals("Failed to delete resource type or one or more of its
descendant types", 0, typesNotRemoved.size());
}
commit e8fd5fbf7013a34fa75c761e26a86d9a1956da99
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Wed Jan 30 17:30:28 2013 -0500
More test interaction work for the server itests. Many tests need a work area on
disk. The test area being used was typically ${java.io.tmpdir}/rhq/testClassName.
There were two issues with this:
- Different test jobs running concurrently would end up using the same work
directory. This is something that may have been happening on Jenkins.
- An mvn clean had no effect on anything hanging around in those directories,
so if test cleanup was poor it may have left legacy data that could possibly
impact future test runs.
This commit moves all of the tmpdir generation under itests-2/target/test-tmpdir/
diff --git
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/TestServerPluginService.java
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/TestServerPluginService.java
index 796a562..5bfff2d 100644
---
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/TestServerPluginService.java
+++
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/TestServerPluginService.java
@@ -51,10 +51,8 @@ public abstract class TestServerPluginService extends
ServerPluginService implem
public TestMasterServerPluginContainer master;
public MasterServerPluginContainerConfiguration masterConfig;
- protected TestServerPluginService() {
- // build the config at constructor time so tests have it even before the PC is
initialized
- File dir = new File(System.getProperty("java.io.tmpdir") +
"/rhq", this.getClass().getSimpleName());
- this.masterConfig = new MasterServerPluginContainerConfiguration(dir, dir, dir,
null);
+ protected TestServerPluginService(File tmpdir) {
+ this.masterConfig = new MasterServerPluginContainerConfiguration(tmpdir, tmpdir,
tmpdir, null);
}
@Override
diff --git
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/alert/AlertDefinitionWithComplexNotificationsTest.java
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/alert/AlertDefinitionWithComplexNotificationsTest.java
index 7e43862..69ffc44 100644
---
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/alert/AlertDefinitionWithComplexNotificationsTest.java
+++
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/alert/AlertDefinitionWithComplexNotificationsTest.java
@@ -224,7 +224,7 @@ public class AlertDefinitionWithComplexNotificationsTest extends
AbstractEJB3Tes
em.persist(resourceAlertDefinition);
//only need this for a short time now, so that we can precreate the
plugin structure
- alertSenderService = new TestAlertSenderPluginService();
+ alertSenderService = new TestAlertSenderPluginService(getTempDir());
prepareCustomServerPluginService(alertSenderService);
alertSenderService.masterConfig.getPluginDirectory().mkdirs();
unprepareServerPluginService();
@@ -247,7 +247,7 @@ public class AlertDefinitionWithComplexNotificationsTest extends
AbstractEJB3Tes
//@BeforeMethod
private void containerSetup() {
- alertSenderService = new TestAlertSenderPluginService();
+ alertSenderService = new TestAlertSenderPluginService(getTempDir());
prepareCustomServerPluginService(alertSenderService);
alertSenderService.masterConfig.getPluginDirectory().mkdirs();
diff --git
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/alert/TestAlertSenderPluginService.java
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/alert/TestAlertSenderPluginService.java
index 9aae985..ac04276 100644
---
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/alert/TestAlertSenderPluginService.java
+++
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/alert/TestAlertSenderPluginService.java
@@ -19,6 +19,7 @@
package org.rhq.enterprise.server.alert;
+import java.io.File;
import java.util.Collections;
import java.util.List;
@@ -38,6 +39,10 @@ import
org.rhq.enterprise.server.plugin.pc.alert.AlertServerPluginContainer;
*/
public class TestAlertSenderPluginService extends TestServerPluginService {
+ protected TestAlertSenderPluginService(File tmpdir) {
+ super(tmpdir);
+ }
+
@Override
protected List<AbstractTypeServerPluginContainer>
createPluginContainers(MasterServerPluginContainer master) {
return Collections.<AbstractTypeServerPluginContainer>singletonList(new
TestAlertServerPluginContainer(master));
diff --git
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
index c411671..062d91a 100644
---
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
+++
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
@@ -116,7 +116,7 @@ public class BundleManagerBeanTest extends AbstractEJB3Test {
agentServiceContainer = prepareForTestAgents();
agentServiceContainer.bundleService = new TestAgentClient(null,
agentServiceContainer);
- this.ps = new TestBundleServerPluginService();
+ this.ps = new TestBundleServerPluginService(getTempDir());
prepareCustomServerPluginService(this.ps);
bundleManager = LookupUtil.getBundleManager();
resourceManager = LookupUtil.getResourceManager();
diff --git
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/bundle/TestBundleServerPluginService.java
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/bundle/TestBundleServerPluginService.java
index 45f210c..7481496 100644
---
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/bundle/TestBundleServerPluginService.java
+++
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/bundle/TestBundleServerPluginService.java
@@ -66,10 +66,9 @@ public class TestBundleServerPluginService extends ServerPluginService
implement
public RecipeParseResults parseRecipe_returnValue = null;
public BundleDistributionInfo processBundleDistributionFile_returnValue;
- public TestBundleServerPluginService() {
+ public TestBundleServerPluginService(File tmpdir) {
// build the config at constructor time so tests have it even before the PC is
initialized
- File dir = new File(System.getProperty("java.io.tmpdir") +
"/rhq", this.getClass().getSimpleName());
- this.masterConfig = new MasterServerPluginContainerConfiguration(dir, dir, dir,
null);
+ this.masterConfig = new MasterServerPluginContainerConfiguration(tmpdir, tmpdir,
tmpdir, null);
}
@Override
diff --git
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/core/plugin/DatabaseAndFilePluginDeploymentTest.java
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/core/plugin/DatabaseAndFilePluginDeploymentTest.java
index d031926..b594f61 100644
---
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/core/plugin/DatabaseAndFilePluginDeploymentTest.java
+++
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/core/plugin/DatabaseAndFilePluginDeploymentTest.java
@@ -53,8 +53,8 @@ public class DatabaseAndFilePluginDeploymentTest extends
AbstractEJB3Test {
private static final String PLUGIN_NAME = "DeployTest"; // as defined in
our test descriptors
private static final String DESCRIPTORS_LOCATION = "test/deployment/";
- private static final String TEST_DIR = System.getProperty("java.io.tmpdir")
+ "/rhq/"
- + DatabaseAndFilePluginDeploymentTest.class.getName() + "/";
+ private static final String TEST_DIR = tmpdirRoot + "/" +
DatabaseAndFilePluginDeploymentTest.class.getName()
+ + "/";
private static final String JARS_LOCATION = TEST_DIR + "jars";
private static final String DEPLOY_LOCATION = TEST_DIR + "deploy";
private static final String TESTPLUGIN_1_0_FEB = "1.0-feb";
@@ -199,7 +199,8 @@ public class DatabaseAndFilePluginDeploymentTest extends
AbstractEJB3Test {
buildPluginJar(descriptor, file);
assert file.exists();
- PluginDescriptor pluginDescriptor =
AgentPluginDescriptorUtil.loadPluginDescriptorFromUrl(file.toURI().toURL());
+ PluginDescriptor pluginDescriptor =
AgentPluginDescriptorUtil.loadPluginDescriptorFromUrl(file.toURI()
+ .toURL());
testPluginDescriptors.put(entry.getKey(), pluginDescriptor);
Plugin pluginPojo = new Plugin(PLUGIN_NAME, file.getName());
diff --git
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/drift/AbstractDriftServerTest.java
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/drift/AbstractDriftServerTest.java
index 5f7d95c..a95079b 100644
---
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/drift/AbstractDriftServerTest.java
+++
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/drift/AbstractDriftServerTest.java
@@ -82,7 +82,7 @@ public abstract class AbstractDriftServerTest extends AbstractEJB3Test
{
}
private void initDriftServer() throws Exception {
- driftServerPluginService = new DriftServerPluginService();
+ driftServerPluginService = new DriftServerPluginService(getTempDir());
prepareCustomServerPluginService(driftServerPluginService);
driftServerPluginService.masterConfig.getPluginDirectory().mkdirs();
diff --git
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/drift/DriftManagerBeanTest.java
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/drift/DriftManagerBeanTest.java
index aa42a11..fe2ced3 100644
---
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/drift/DriftManagerBeanTest.java
+++
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/drift/DriftManagerBeanTest.java
@@ -94,7 +94,7 @@ public class DriftManagerBeanTest extends AbstractEJB3Test {
prepareScheduler();
- DriftServerPluginService driftServerPluginService = new
DriftServerPluginService();
+ DriftServerPluginService driftServerPluginService = new
DriftServerPluginService(getTempDir());
prepareCustomServerPluginService(driftServerPluginService);
driftServerPluginService.masterConfig.getPluginDirectory().mkdirs();
diff --git
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/drift/DriftServerPluginService.java
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/drift/DriftServerPluginService.java
index 46d725f..de206d4 100644
---
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/drift/DriftServerPluginService.java
+++
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/drift/DriftServerPluginService.java
@@ -19,6 +19,7 @@
package org.rhq.enterprise.server.drift;
+import java.io.File;
import java.util.Collections;
import java.util.List;
@@ -33,6 +34,10 @@ import
org.rhq.enterprise.server.plugin.pc.drift.DriftServerPluginManager;
public class DriftServerPluginService extends TestServerPluginService {
+ public DriftServerPluginService(File tmpDir) {
+ super(tmpDir);
+ }
+
@Override
protected List<AbstractTypeServerPluginContainer>
createPluginContainers(MasterServerPluginContainer master) {
return Collections.<AbstractTypeServerPluginContainer>singletonList(new
TestDriftServerPluginContainer(master));
diff --git
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/measurement/MeasurementDataManagerBeanTest.java
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/measurement/MeasurementDataManagerBeanTest.java
index 9e8b4e3..1c4b780 100644
---
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/measurement/MeasurementDataManagerBeanTest.java
+++
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/measurement/MeasurementDataManagerBeanTest.java
@@ -122,7 +122,7 @@ public class MeasurementDataManagerBeanTest extends AbstractEJB3Test
{
// MeasurementDataManagerUtility looks up config settings from
SystemManagerBean.
// SystemManagerBean.getDriftServerPluginManager method requires drift server
plugin.
- DriftServerPluginService driftServerPluginService = new
DriftServerPluginService();
+ DriftServerPluginService driftServerPluginService = new
DriftServerPluginService(getTempDir());
prepareCustomServerPluginService(driftServerPluginService);
driftServerPluginService.masterConfig.getPluginDirectory().mkdirs();
diff --git
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/measurement/MeasurementOOBManagerBeanTest.java
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/measurement/MeasurementOOBManagerBeanTest.java
index 067614e..a7f16ef 100644
---
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/measurement/MeasurementOOBManagerBeanTest.java
+++
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/measurement/MeasurementOOBManagerBeanTest.java
@@ -110,7 +110,7 @@ public class MeasurementOOBManagerBeanTest extends AbstractEJB3Test {
protected void beforeMethod() throws Exception {
// MeasurementDataManagerUtility looks up config settings from
SystemManagerBean.
// SystemManagerBean.getDriftServerPluginManager method requires drift server
plugin.
- DriftServerPluginService driftServerPluginService = new
DriftServerPluginService();
+ DriftServerPluginService driftServerPluginService = new
DriftServerPluginService(getTempDir());
prepareCustomServerPluginService(driftServerPluginService);
driftServerPluginService.masterConfig.getPluginDirectory().mkdirs();
diff --git
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/measurement/test/AvailabilityManagerTest.java
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/measurement/test/AvailabilityManagerTest.java
index ff1193d..d6ac8b2 100644
---
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/measurement/test/AvailabilityManagerTest.java
+++
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/measurement/test/AvailabilityManagerTest.java
@@ -90,7 +90,7 @@ public class AvailabilityManagerTest extends AbstractEJB3Test {
this.overlord = LookupUtil.getSubjectManager().getOverlord();
additionalResources = new ArrayList<Resource>();
- testServerPluginService = new TestServerPluginService();
+ testServerPluginService = new TestServerPluginService(getTempDir());
prepareCustomServerPluginService(testServerPluginService);
testServerPluginService.masterConfig.getPluginDirectory().mkdirs();
testServerPluginService.startMasterPluginContainer();
diff --git
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/ServerPluginsBeanTest.java
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/ServerPluginsBeanTest.java
index b12d90c..e7f9da5 100644
---
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/ServerPluginsBeanTest.java
+++
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/ServerPluginsBeanTest.java
@@ -54,7 +54,7 @@ public class ServerPluginsBeanTest extends AbstractEJB3Test {
@Override
protected void beforeMethod() {
TestGenericServerPluginService pluginService;
- pluginService = new TestGenericServerPluginService();
+ pluginService = new TestGenericServerPluginService(getTempDir());
prepareCustomServerPluginService(pluginService);
serverPluginsBean = LookupUtil.getServerPlugins();
diff --git
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/content/TestContentServerPluginService.java
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/content/TestContentServerPluginService.java
index 5850985..7642ec1 100644
---
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/content/TestContentServerPluginService.java
+++
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/content/TestContentServerPluginService.java
@@ -42,6 +42,7 @@ public class TestContentServerPluginService extends ServerPluginService
implemen
private Map<Integer, ContentProvider> providers = new HashMap<Integer,
ContentProvider>();
private TestContentProvider defaultTestContentProvider;
+ private File tmpdir;
/**
* Creates and initializes the content server plugin container for use with the given
test case.
@@ -50,6 +51,7 @@ public class TestContentServerPluginService extends ServerPluginService
implemen
*/
public TestContentServerPluginService(AbstractEJB3Test testContainer) {
super();
+ tmpdir = testContainer.getTempDir();
testContainer.prepareCustomServerPluginService(this);
startMasterPluginContainer();
@@ -86,9 +88,8 @@ public class TestContentServerPluginService extends ServerPluginService
implemen
protected MasterServerPluginContainer createMasterPluginContainer() {
MasterServerPluginContainer master = new TestMasterServerPluginContainer();
- File dir = new File(System.getProperty("java.io.tmpdir") +
"/rhq", this.getClass().getSimpleName());
- MasterServerPluginContainerConfiguration config = new
MasterServerPluginContainerConfiguration(dir, dir, dir,
- null);
+ MasterServerPluginContainerConfiguration config = new
MasterServerPluginContainerConfiguration(tmpdir, tmpdir,
+ tmpdir, null);
master.initialize(config);
return master;
}
diff --git
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/generic/GenericServerPluginTest.java
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/generic/GenericServerPluginTest.java
index e8ece2e..1bbe447 100644
---
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/generic/GenericServerPluginTest.java
+++
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/generic/GenericServerPluginTest.java
@@ -55,7 +55,7 @@ public class GenericServerPluginTest extends AbstractEJB3Test {
@Override
protected void beforeMethod() throws Exception {
- this.pluginService = new TestGenericServerPluginService();
+ this.pluginService = new TestGenericServerPluginService(getTempDir());
deleteAllTestPluginJars(); // remove any old server plugins that might be still
around
prepareCustomServerPluginService(this.pluginService);
}
diff --git
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/generic/TestGenericServerPluginService.java
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/generic/TestGenericServerPluginService.java
index 85f45d0..736b615 100644
---
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/generic/TestGenericServerPluginService.java
+++
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/generic/TestGenericServerPluginService.java
@@ -55,10 +55,9 @@ public class TestGenericServerPluginService extends ServerPluginService
implemen
public TestGenericServerPluginContainer genericPC;
public MasterServerPluginContainerConfiguration masterConfig;
- public TestGenericServerPluginService() {
+ public TestGenericServerPluginService(File tmpdir) {
// build the config at constructor time so tests have it even before the PC is
initialized
- File dir = new File(System.getProperty("java.io.tmpdir" +
"/rhq"), this.getClass().getSimpleName());
- this.masterConfig = new MasterServerPluginContainerConfiguration(dir, dir, dir,
null);
+ this.masterConfig = new MasterServerPluginContainerConfiguration(tmpdir, tmpdir,
tmpdir, null);
}
@Override
@@ -197,11 +196,11 @@ public class TestGenericServerPluginService extends
ServerPluginService implemen
File pluginFile = new File(env.getPluginUrl().toURI());
ServerPlugin plugin = new ServerPlugin(0,
env.getPluginKey().getPluginName(), pluginFile.getName(),
- pluginDescriptor.getDisplayName(), true, PluginStatusType.INSTALLED,
pluginDescriptor
- .getDescription(), "",
MessageDigestGenerator.getDigestString(pluginFile), pluginDescriptor
- .getVersion(), pluginDescriptor.getVersion(), pluginConfig,
scheduledJobsConfig,
- new ServerPluginType(pluginDescriptor).stringify(),
System.currentTimeMillis(), System
- .currentTimeMillis());
+ pluginDescriptor.getDisplayName(), true, PluginStatusType.INSTALLED,
+ pluginDescriptor.getDescription(), "",
MessageDigestGenerator.getDigestString(pluginFile),
+ pluginDescriptor.getVersion(), pluginDescriptor.getVersion(),
pluginConfig, scheduledJobsConfig,
+ new ServerPluginType(pluginDescriptor).stringify(),
System.currentTimeMillis(),
+ System.currentTimeMillis());
return plugin;
} catch (Exception e) {
throw new RuntimeException(e);
diff --git
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/group/test/LdapGroupManagerBeanTest.java
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/group/test/LdapGroupManagerBeanTest.java
index 6f8c497..6c0fd5e 100644
---
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/group/test/LdapGroupManagerBeanTest.java
+++
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/group/test/LdapGroupManagerBeanTest.java
@@ -101,7 +101,7 @@ public class LdapGroupManagerBeanTest extends AbstractEJB3Test {
ldapGroupManager = LookupUtil.getLdapGroupManager();
//we need this because the drift plugins are referenced from the system settings
that we use in our tests
- testServerPluginService = new TestServerPluginService();
+ testServerPluginService = new TestServerPluginService(getTempDir());
prepareCustomServerPluginService(testServerPluginService);
testServerPluginService.startMasterPluginContainer();
diff --git
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/MetadataBeanTest.java
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/MetadataBeanTest.java
index 5d3bf77..8afabf2 100644
---
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/MetadataBeanTest.java
+++
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/MetadataBeanTest.java
@@ -79,7 +79,7 @@ public class MetadataBeanTest extends AbstractEJB3Test {
setupDB();
- TestBundleServerPluginService bundleService = new
TestBundleServerPluginService();
+ TestBundleServerPluginService bundleService = new
TestBundleServerPluginService(getTempDir());
prepareCustomServerPluginService(bundleService);
bundleService.startMasterPluginContainerWithoutSchedulingJobs();
prepareScheduler();
diff --git
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/test/UpdatePluginMetadataTestBase.java
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/test/UpdatePluginMetadataTestBase.java
index f05e079..23e8efe 100644
---
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/test/UpdatePluginMetadataTestBase.java
+++
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/test/UpdatePluginMetadataTestBase.java
@@ -79,7 +79,7 @@ public class UpdatePluginMetadataTestBase extends AbstractEJB3Test {
preparePluginScannerService();
// we perform lookups of config settings from SystemManagerBean.
// SystemManagerBean.getDriftServerPluginManager method requires drift server
plugin.
- DriftServerPluginService driftServerPluginService = new
DriftServerPluginService();
+ DriftServerPluginService driftServerPluginService = new
DriftServerPluginService(getTempDir());
prepareCustomServerPluginService(driftServerPluginService);
driftServerPluginService.masterConfig.getPluginDirectory().mkdirs();
diff --git
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/test/ResourceFactoryManagerBeanTest.java
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/test/ResourceFactoryManagerBeanTest.java
index 7036dc5..e835a2e 100644
---
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/test/ResourceFactoryManagerBeanTest.java
+++
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/test/ResourceFactoryManagerBeanTest.java
@@ -100,7 +100,7 @@ public class ResourceFactoryManagerBeanTest extends AbstractEJB3Test
{
agentServiceContainer.resourceFactoryService = mockAgentService;
//the server plugins are in play when package types are involved
- StandardServerPluginService serverPluginService = new
StandardServerPluginService();
+ StandardServerPluginService serverPluginService = new
StandardServerPluginService(getTempDir());
prepareCustomServerPluginService(serverPluginService);
serverPluginService.startMasterPluginContainer();
diff --git
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/scheduler/jobs/DataPurgeJobTest.java
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/scheduler/jobs/DataPurgeJobTest.java
index 2d37c66..9cc4bc9 100644
---
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/scheduler/jobs/DataPurgeJobTest.java
+++
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/scheduler/jobs/DataPurgeJobTest.java
@@ -98,7 +98,7 @@ public class DataPurgeJobTest extends AbstractEJB3Test {
protected void beforeMethod() throws Exception {
try {
//we need this because the drift plugins are referenced from the system
settings that we use in our tests
- testServerPluginService = new TestServerPluginService();
+ testServerPluginService = new TestServerPluginService(getTempDir());
prepareCustomServerPluginService(testServerPluginService);
testServerPluginService.startMasterPluginContainer();
diff --git
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/sync/test/SynchronizationManagerBeanTest.java
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/sync/test/SynchronizationManagerBeanTest.java
index f00fe27..c870dc9 100644
---
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/sync/test/SynchronizationManagerBeanTest.java
+++
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/sync/test/SynchronizationManagerBeanTest.java
@@ -299,7 +299,7 @@ public class SynchronizationManagerBeanTest extends AbstractEJB3Test
{
}
//we need this because the drift plugins are referenced from the system settings
that we use in our tests
- testData.testServerPluginService = new TestServerPluginService();
+ testData.testServerPluginService = new TestServerPluginService(getTempDir());
prepareCustomServerPluginService(testData.testServerPluginService);
testData.testServerPluginService.startMasterPluginContainer();
diff --git
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/system/SystemManagerBeanTest.java
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/system/SystemManagerBeanTest.java
index 557c787..104ff85 100644
---
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/system/SystemManagerBeanTest.java
+++
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/system/SystemManagerBeanTest.java
@@ -45,7 +45,7 @@ public class SystemManagerBeanTest extends AbstractEJB3Test {
overlord = LookupUtil.getSubjectManager().getOverlord();
//we need this because the drift plugins are referenced from the system settings
that we use in our tests
- testServerPluginService = new TestServerPluginService();
+ testServerPluginService = new TestServerPluginService(getTempDir());
prepareCustomServerPluginService(testServerPluginService);
testServerPluginService.startMasterPluginContainer();
}
diff --git
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/AbstractEJB3Test.java
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/AbstractEJB3Test.java
index e4dbc4b..270b053 100644
---
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/AbstractEJB3Test.java
+++
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/AbstractEJB3Test.java
@@ -78,6 +78,8 @@ public abstract class AbstractEJB3Test extends Arquillian {
protected static final String JNDI_RHQDS = "java:jboss/datasources/RHQDS";
+ protected static File tmpdirRoot = new File("./target/test-tmpdir");
+
private TestServerCommunicationsService agentService;
private SchedulerService schedulerService;
private ServerPluginService serverPluginService;
@@ -90,16 +92,19 @@ public abstract class AbstractEJB3Test extends Arquillian {
protected InitialContext initialContext;
// We originally (in 4.2.3 days) ran these tests as "unit" tests in the
server/jar module using
- // the embedded conatiner. With Arquillian it makes sense to actually deploy an EAR
because
+ // the embedded container. With Arquillian it makes sense to actually deploy an EAR
because
// we need a way to deploy dependent ears needed to support the server/jar classes.
But
// building this jar up (as is done in core/domain) was too difficult due to the huge
number
- // of dependencies. It was easier, and probably more sensical, to use the already
built rhq.ear
+ // of dependencies. It was easier, and made sense, to use the already built rhq.ear
// and run as true integration tests. We do thin rhq.ear by removing all of the WAR
files, and
// deploy only the EJB jars, and the services, which are really the objects under
test.
@Deployment
protected static EnterpriseArchive getBaseDeployment() {
+ // Ensure the test working dir exists
+ tmpdirRoot.mkdirs();
+
// deploy the test classes in their own jar, under /lib
JavaArchive testClassesJar = ShrinkWrap.create(JavaArchive.class,
"test-classes.jar");
testClassesJar = addClasses(testClassesJar, new
File("target/test-classes/org"), null);
@@ -122,8 +127,7 @@ public abstract class AbstractEJB3Test extends Arquillian {
testClassesJar.addAsResource("test-ldap.properties");
testClassesJar.addAsResource("test-scheduler.properties");
testClassesJar
- .addAsResource(
-
"org/rhq/enterprise/server/configuration/metadata/configuration_metadata_manager_bean_test_v1.xml");
+
.addAsResource("org/rhq/enterprise/server/configuration/metadata/configuration_metadata_manager_bean_test_v1.xml");
testClassesJar
.addAsResource("org/rhq/enterprise/server/configuration/metadata/configuration_metadata_manager_bean_test_v2.xml");
testClassesJar.addAsResource("org/rhq/enterprise/server/discovery/DiscoveryBossBeanTest.xml");
@@ -321,8 +325,7 @@ public abstract class AbstractEJB3Test extends Arquillian {
testEar.add(new ClassAsset(StrippedDownStartupBeanPreparation.class),
ArchivePaths
.create("/rhq-enterprise-server-ejb3.jar/org/rhq/enterprise/server/test/"
+ "StrippedDownStartupBeanPreparation.class"));
- testEar.addAsManifestResource(new
ByteArrayAsset("<beans/>".getBytes()),
- ArchivePaths.create("beans.xml"));
+ testEar.addAsManifestResource(new
ByteArrayAsset("<beans/>".getBytes()),
ArchivePaths.create("beans.xml"));
// add the test classes to the deployment
testEar.addAsLibrary(testClassesJar);
@@ -1105,11 +1108,11 @@ public abstract class AbstractEJB3Test extends Arquillian {
return file.delete();
}
- /**
- * @return a temp directory for testing that is specific to this test class.
+ /**
+ * @return a temp directory for testing that is specific to this test class.
Specifically tmpdirRoot/this.getClass().getSimpleName().
*/
- protected File getTempDir() {
- return new File(System.getProperty("java.io.tmpdir") +
"/rhq", this.getClass().getSimpleName());
+ public File getTempDir() {
+ return new File(tmpdirRoot, this.getClass().getSimpleName());
}
}
diff --git
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/StandardServerPluginService.java
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/StandardServerPluginService.java
index adcde42..6b938fd 100644
---
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/StandardServerPluginService.java
+++
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/StandardServerPluginService.java
@@ -50,10 +50,10 @@ public class StandardServerPluginService extends ServerPluginService
implements
public static class TestMasterServerPluginContainer extends
MasterServerPluginContainer {
private List<AbstractTypeServerPluginContainer> serverPluginContainers =
new ArrayList<AbstractTypeServerPluginContainer>();
-
+
public TestMasterServerPluginContainer(
List<Class<? extends AbstractTypeServerPluginContainer>>
pluginContainerClasses) {
-
+
for (Class<? extends AbstractTypeServerPluginContainer> cls :
pluginContainerClasses) {
try {
Constructor<? extends AbstractTypeServerPluginContainer> ctor =
cls
@@ -65,7 +65,7 @@ public class StandardServerPluginService extends ServerPluginService
implements
}
}
}
-
+
@Override
protected List<AbstractTypeServerPluginContainer> createPluginContainers()
{
return serverPluginContainers;
@@ -83,9 +83,8 @@ public class StandardServerPluginService extends ServerPluginService
implements
*/
public List<Class<? extends AbstractTypeServerPluginContainer>>
pluginContainerClasses;
- public StandardServerPluginService() {
- File dir = new File(System.getProperty("java.io.tmpdir") +
"/rhq", this.getClass().getSimpleName());
- this.masterConfig = new MasterServerPluginContainerConfiguration(dir, dir, dir,
null);
+ public StandardServerPluginService(File tmpdir) {
+ this.masterConfig = new MasterServerPluginContainerConfiguration(tmpdir, tmpdir,
tmpdir, null);
pluginContainerClasses = new ArrayList<Class<? extends
AbstractTypeServerPluginContainer>>();
pluginContainerClasses.add(AlertServerPluginContainer.class);
pluginContainerClasses.add(BundleServerPluginContainer.class);
diff --git
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/TestServerPluginService.java
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/TestServerPluginService.java
index a8b134e..6e62b99 100644
---
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/TestServerPluginService.java
+++
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/TestServerPluginService.java
@@ -44,10 +44,9 @@ public class TestServerPluginService extends ServerPluginService
implements Test
public TestMasterServerPluginContainer master;
public MasterServerPluginContainerConfiguration masterConfig;
- public TestServerPluginService() {
+ public TestServerPluginService(File tmpdir) {
// build the config at constructor time so tests have it even before the PC is
initialized
- File dir = new File(System.getProperty("java.io.tmpdir") +
"/rhq", this.getClass().getSimpleName());
- this.masterConfig = new MasterServerPluginContainerConfiguration(dir, dir, dir,
null);
+ this.masterConfig = new MasterServerPluginContainerConfiguration(tmpdir, tmpdir,
tmpdir, null);
}
@Override
commit 4d29e0578a879ecd56d4339c2be58ba96ab5111a
Author: JÃŒrgen Hoffmann <jhoffmann(a)redhat.com>
Date: Wed Jan 30 17:27:01 2013 +0100
Improving the way the Dashboard view is displayed (correct row/column alignment).
diff --git a/modules/enterprise/gui/rest-examples-war/src/main/webapp/index.html
b/modules/enterprise/gui/rest-examples-war/src/main/webapp/index.html
index e42628a..041dbb7 100644
--- a/modules/enterprise/gui/rest-examples-war/src/main/webapp/index.html
+++ b/modules/enterprise/gui/rest-examples-war/src/main/webapp/index.html
@@ -30,7 +30,7 @@ an empty database (meaning resource ids and schedule ids starting at
10001).
<li><a href="/rest-examples/stacked3.html">Metrics as stacked
bars</a> in pure HTML + (a little) CSS</li>
<li><a href="/rest-examples/stacked2.html">Metrics as rects
using stacked bars from above</a></li>
<li><a href="/rest-examples/whisker.html">Whisker chart
1</a></li>
- <li><a href="/rest-examples/whisker2.html">Multiple Whisker
charts</a></li>
+ <li><a href="/rest-examples/whisker2.html">Multiple Whisker
charts ("Dashboard")</a></li>
<li><a href="/rest-examples/tree.html">Resource
tree</a></li>
<li><a href="/rest-examples/raw_graph.html">7 days of raw
metrics as dot- or line- chart</a></li>
<li><a href="/rest-examples/raw_graph7.html">7 days of raw
metrics as dot- or line- chart - comparing daily values</a></li>
diff --git a/modules/enterprise/gui/rest-examples-war/src/main/webapp/js/rhq.js
b/modules/enterprise/gui/rest-examples-war/src/main/webapp/js/rhq.js
index 870c423..67b1b17 100644
--- a/modules/enterprise/gui/rest-examples-war/src/main/webapp/js/rhq.js
+++ b/modules/enterprise/gui/rest-examples-war/src/main/webapp/js/rhq.js
@@ -2,7 +2,7 @@ var rhq = {
dashboard : function() {
// get all platforms
- $.get('/rest/resource/platforms', function(data) {
+ $.get('/rest/resource/platforms.json', function(data) {
var table = $("#table");
for (var i = 0; i < data.length ; i++ ) {
commit 74dfd37db100de71128db47eb83962c686c8c925
Author: Jirka Kremser <jkremser(a)redhat.com>
Date: Wed Jan 30 17:08:46 2013 +0100
[Bug 880819 - RFE: expose GroupDefinitionManager remotely] Subset of methods defined
in the local intercace has been exposed via the remote intercase and registered in the
RhqManager.
diff --git
a/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/RhqManager.java
b/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/RhqManager.java
index d374324..32832b2 100644
--- a/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/RhqManager.java
+++ b/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/RhqManager.java
@@ -40,6 +40,7 @@ import
org.rhq.enterprise.server.measurement.MeasurementDefinitionManagerRemote;
import org.rhq.enterprise.server.measurement.MeasurementScheduleManagerRemote;
import org.rhq.enterprise.server.operation.OperationManagerRemote;
import org.rhq.enterprise.server.report.DataAccessManagerRemote;
+import org.rhq.enterprise.server.resource.group.definition.GroupDefinitionManagerRemote;
import org.rhq.enterprise.server.resource.ResourceFactoryManagerRemote;
import org.rhq.enterprise.server.resource.ResourceManagerRemote;
import org.rhq.enterprise.server.resource.ResourceTypeManagerRemote;
@@ -70,6 +71,7 @@ public enum RhqManager {
DriftTemplateManager(DriftTemplateManagerRemote.class,
"${DriftTemplateManager}"), //
DiscoveryBoss(DiscoveryBossRemote.class, "${DiscoveryBoss}"), //
EventManager(EventManagerRemote.class, "${EventManager}"), //
+ GroupDefinitionManager(GroupDefinitionManagerRemote.class,
"${GroupDefinitionManager}"), //
MeasurementBaselineManager(MeasurementBaselineManagerRemote.class,
"${MeasurementBaselineManager}"), //
MeasurementDataManager(MeasurementDataManagerRemote.class,
"${MeasurementDataManager}"), //
MeasurementDefinitionManager(MeasurementDefinitionManagerRemote.class,
"${MeasurementDefinitionManager}"), //
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/definition/GroupDefinitionManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/definition/GroupDefinitionManagerBean.java
index 190a169..9d5251b 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/definition/GroupDefinitionManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/definition/GroupDefinitionManagerBean.java
@@ -69,7 +69,7 @@ import org.rhq.enterprise.server.util.CriteriaQueryGenerator;
import org.rhq.enterprise.server.util.CriteriaQueryRunner;
@Stateless
-public class GroupDefinitionManagerBean implements GroupDefinitionManagerLocal {
+public class GroupDefinitionManagerBean implements GroupDefinitionManagerLocal,
GroupDefinitionManagerRemote {
private final Log log = LogFactory.getLog(GroupDefinitionManagerBean.class);
@PersistenceContext(unitName = RHQConstants.PERSISTENCE_UNIT_NAME)
@@ -415,15 +415,14 @@ public class GroupDefinitionManagerBean implements
GroupDefinitionManagerLocal {
public PageList<GroupDefinition> findGroupDefinitionsByCriteria(Subject
subject,
ResourceGroupDefinitionCriteria criteria) {
- CriteriaQueryGenerator generator = new CriteriaQueryGenerator(subject,
criteria);
- ;
if (authorizationManager.isInventoryManager(subject) == false) {
if (criteria.isInventoryManagerRequired()) {
throw new PermissionException("Subject [" + subject.getName()
+ "] requires InventoryManager permission for requested query
criteria.");
}
}
-
+
+ CriteriaQueryGenerator generator = new CriteriaQueryGenerator(subject,
criteria);
CriteriaQueryRunner<GroupDefinition> queryRunner = new
CriteriaQueryRunner<GroupDefinition>(criteria,
generator, entityManager);
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/definition/GroupDefinitionManagerRemote.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/definition/GroupDefinitionManagerRemote.java
new file mode 100644
index 0000000..70e3f88
--- /dev/null
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/definition/GroupDefinitionManagerRemote.java
@@ -0,0 +1,120 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2013 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+package org.rhq.enterprise.server.resource.group.definition;
+
+import javax.ejb.Remote;
+
+import org.rhq.core.domain.auth.Subject;
+import org.rhq.core.domain.criteria.ResourceGroupDefinitionCriteria;
+import org.rhq.core.domain.resource.group.GroupDefinition;
+import org.rhq.core.domain.resource.group.InvalidExpressionException;
+import org.rhq.core.domain.util.PageControl;
+import org.rhq.core.domain.util.PageList;
+import org.rhq.enterprise.server.resource.group.ResourceGroupDeleteException;
+import org.rhq.enterprise.server.resource.group.ResourceGroupUpdateException;
+import
org.rhq.enterprise.server.resource.group.definition.exception.GroupDefinitionAlreadyExistsException;
+import
org.rhq.enterprise.server.resource.group.definition.exception.GroupDefinitionCreateException;
+import
org.rhq.enterprise.server.resource.group.definition.exception.GroupDefinitionDeleteException;
+import
org.rhq.enterprise.server.resource.group.definition.exception.GroupDefinitionNotFoundException;
+import
org.rhq.enterprise.server.resource.group.definition.exception.GroupDefinitionUpdateException;
+
+
+/**
+ * The remote interface to the SLSB GroupDefinitionManager.
+ *
+ * @author Jirka Kremser
+ */
+@Remote
+public interface GroupDefinitionManagerRemote {
+
+ /**
+ * Finds the group definition by id
+ *
+ * @param groupDefinitionId the id
+ * @return instance of <code>GroupDefinition</code>
+ * @throws GroupDefinitionNotFoundException in case the group definition has not been
found
+ */
+ GroupDefinition getById(int groupDefinitionId) throws
GroupDefinitionNotFoundException;
+
+ /**
+ * Creates a new group definiton.
+ * The subject needs to have MANAGE_INVENTORY and MANAGE_SETTINGS permissions.
+ *
+ * @param subject the user who is asking create the group definition
+ * @param newGroupDefinition the object defining the group definition
+ * @return instance of <code>GroupDefinition</code>
+ * @throws GroupDefinitionAlreadyExistsException
+ * @throws GroupDefinitionCreateException
+ */
+ GroupDefinition createGroupDefinition(Subject subject, GroupDefinition
newGroupDefinition)
+ throws GroupDefinitionAlreadyExistsException, GroupDefinitionCreateException;
+
+ /**
+ * Fetches the group definitions based on provided criteria.
+ * The subject needs to have MANAGE_INVENTORY and MANAGE_SETTINGS permissions.
+ *
+ * @param subject the user who is asking to find the group definitions
+ * @param criteria the criteria
+ * @return instance of <code>GroupDefinition</code>
+ */
+ PageList<GroupDefinition> findGroupDefinitionsByCriteria(Subject subject,
ResourceGroupDefinitionCriteria criteria);
+
+ /**
+ * Deletes the given group definition.
+ * The subject needs to have MANAGE_INVENTORY and MANAGE_SETTINGS permissions.
+ *
+ * @param subject the user who is asking to remove the group definition
+ * @param groupDefinitionId the id of a group definition to be deleted
+ * @throws GroupDefinitionNotFoundException
+ * @throws GroupDefinitionDeleteException
+ */
+ void removeGroupDefinition(Subject subject, Integer groupDefinitionId) throws
GroupDefinitionNotFoundException,
+ GroupDefinitionDeleteException;
+
+ /**
+ * Updates the given group definition.
+ * The subject needs to have MANAGE_INVENTORY and MANAGE_SETTINGS permissions.
+ *
+ * @param subject the user who is asking to update the group definition
+ * @param updated the object defining the group definition to be changed (based on
its id)
+ * @return the updated group definition
+ * @throws GroupDefinitionAlreadyExistsException
+ * @throws GroupDefinitionUpdateException
+ * @throws InvalidExpressionException
+ * @throws ResourceGroupUpdateException
+ */
+ GroupDefinition updateGroupDefinition(Subject subject, GroupDefinition updated)
+ throws GroupDefinitionAlreadyExistsException, GroupDefinitionUpdateException,
InvalidExpressionException,
+ ResourceGroupUpdateException;
+
+ /**
+ * Explicitly recalculates the group membership, depending on the
GroupDefinition's expression.
+ * The subject needs to have MANAGE_INVENTORY and MANAGE_SETTINGS permissions.
+ *
+ * @param subject the user who is asking to recalculate the group membership
+ * @param groupDefinitionId the id of a group definition to be recalculated
+ * @throws ResourceGroupDeleteException
+ * @throws GroupDefinitionDeleteException
+ * @throws GroupDefinitionNotFoundException
+ * @throws InvalidExpressionException
+ */
+ void calculateGroupMembership(Subject subject, int groupDefinitionId) throws
ResourceGroupDeleteException,
+ GroupDefinitionDeleteException, GroupDefinitionNotFoundException,
InvalidExpressionException;
+
+}
\ No newline at end of file
commit bfc0a46761e3a13e17da91dd68be47c32952874e
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Tue Jan 29 18:42:09 2013 -0500
Hopefully final tweeks to MergeInventoryReport
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/discovery/DiscoveryBossBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/discovery/DiscoveryBossBean.java
index cea1f6e..d5d7128 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/discovery/DiscoveryBossBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/discovery/DiscoveryBossBean.java
@@ -859,7 +859,6 @@ public class DiscoveryBossBean implements DiscoveryBossLocal,
DiscoveryBossRemot
log.debug("getExistingResource processing for [" + resource +
"]");
}
- // We perform this query a lot during a large inventory merge, so minimize
overhead by using it directly
Resource existingResource = null;
if (resource.getId() != 0) {
@@ -867,7 +866,8 @@ public class DiscoveryBossBean implements DiscoveryBossLocal,
DiscoveryBossRemot
log.debug("Agent claims resource is already in inventory. Id="
+ resource.getId());
}
- existingResource = entityManager.getReference(Resource.class,
resource.getId());
+ // This maybe could be more efficient using a named query that pulls some
lazy data, but this should be fine
+ existingResource = entityManager.find(Resource.class, resource.getId());
if (isDebugEnabled) {
if (null != existingResource) {
log.debug("Found resource already in inventory. Id=" +
resource.getId());
@@ -889,9 +889,10 @@ public class DiscoveryBossBean implements DiscoveryBossLocal,
DiscoveryBossRemot
+ ", key=" + resource.getResourceKey());
}
- // (jshaughn) I'm not 100% sure I understand the need for this while
loop, but I believe it has to
- // do with handling the case in which a resource type has moved (see
f74b22044) and trying to
- // relocate the parent. Anyway, I'm not going to touch it even though it
slows things down.
+ // (jshaughn) I'm not 100% sure but I believe this loop has to do with
either or both of:
+ // - protecting against the agent merging a resource it thinks is new but
actually exists
+ // - handling the case in which a resource type has moved (see f74b22044) and
trying to relocate the parent.
+ // Anyway, I'm not going to touch it even though it slows things down.
ResourceType resourceType = resource.getResourceType();
Resource parent = resource;
@@ -914,6 +915,7 @@ public class DiscoveryBossBean implements DiscoveryBossLocal,
DiscoveryBossRemot
}
if (null == existingParent) {
+ // I think getReference may be slightly faster here but it's
likely negligible
existingParent = entityManager.getReference(Resource.class,
parentId);
if (null != existingParent) {
if (null != parentMap) {
commit 9e70606deeb4654ae6117a8d36c322372ac63a27
Author: Simeon Pinder <spinder(a)fulliautomatix.conchfritter.com>
Date: Tue Jan 29 15:11:15 2013 -0500
[BZ 905632] fix MetadataManager query to use unlimited criteria queries.
diff --git
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest.java
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest.java
index 5beb643..dd5311b 100644
---
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest.java
+++
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest.java
@@ -385,7 +385,7 @@ public class ResourceMetadataManagerBeanTest extends MetadataBeanTest
{
resourcesServiceE1.get(0));
List<Resource> resourcesServiceE3 = createResources(2,
"RemoveTypesPlugin", "ServiceE3",
resourcesServiceE2.get(0));
- List<Resource> resourcesServiceE4 = createResources(2,
"RemoveTypesPlugin", "ServiceE4",
+ List<Resource> resourcesServiceE4 = createResources(205,
"RemoveTypesPlugin", "ServiceE4",
resourcesServiceE3.get(0));
ResourceGroup rgRecursive = createResourceGroup("ServerE Group",
"ServerE", "RemoveTypesPlugin", true);
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBean.java
index 2c8a925..9d844e4 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBean.java
@@ -56,6 +56,7 @@ import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.ResourceSubCategory;
import org.rhq.core.domain.resource.ResourceType;
import org.rhq.core.domain.resource.group.ResourceGroup;
+import org.rhq.core.domain.util.PageControl;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.auth.SubjectManagerLocal;
import org.rhq.enterprise.server.authz.RequiredPermission;
@@ -268,6 +269,7 @@ public class ResourceMetadataManagerBean implements
ResourceMetadataManagerLocal
ResourceCriteria c = new ResourceCriteria();
c.addFilterResourceTypeId(existingType.getId());
c.addFilterInventoryStatus(null);
+ c.setPageControl(PageControl.getUnlimitedInstance());
List<Resource> resources = resourceManager.findResourcesByCriteria(subject,
c);
if (resources != null) {
Iterator<Resource> resIter = resources.iterator();
commit 977ff337c997c2f5d63d19d46ada868eed4d9624
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue Jan 29 21:30:06 2013 +0100
Use a real UUID for resource creation. Deprecate the endpoints for platform and
resource creation.
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerBean.java
index be28d92..8142f17 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerBean.java
@@ -27,6 +27,7 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Set;
+import java.util.UUID;
import javax.ejb.EJB;
import javax.ejb.Stateless;
@@ -529,15 +530,39 @@ public class ResourceHandlerBean extends AbstractRestBean {
@ApiOperation(value = "Create a new platform in the Server. If the platform
already exists, this is a no-op." +
"The platform internally has a special name so that it will not clash
with one that was generated" +
- "via a normal RHQ agent")
+ "via a normal RHQ agent. DEPRECATED Use POST /platforms instead")
@POST
@Path("platform/{name}")
- public Response createPlatform(
+ public Response createPlatformOLD(
@ApiParam(value = "Name of the platform")
@PathParam("name") String name,
@ApiParam(value = "Type of the platform", allowableValues =
"Linux,Windows,... TODO") StringValue typeValue,
@Context UriInfo uriInfo) {
+
String typeName = typeValue.getValue();
+ return createPlatformInternal(name, typeName, uriInfo);
+
+ }
+
+ @POST
+ @Path("platforms")
+ @ApiOperation(value = "Create a new platform in the Server. If the platform
already exists, this is a no-op." +
+ "The platform internally has a special name so that it will not clash
with one that was generated" +
+ "via a normal RHQ agent. Only resourceName and typeName need to be
supplied in the passed object")
+ public Response createPlatform(
+ @ApiParam("The info about the platform. Only type name and resource name
need to be supplied") ResourceWithType resource,
+ @Context UriInfo uriInfo)
+ {
+
+ String typeName = resource.getTypeName();
+ String resourceName = resource.getResourceName();
+
+ return createPlatformInternal(resourceName,typeName,uriInfo);
+ }
+
+
+ private Response createPlatformInternal(String name, String typeName, UriInfo
uriInfo) {
+
ResourceType type =
resourceTypeManager.getResourceTypeByNameAndPlugin(typeName,"Platforms");
if (type==null) {
throw new StuffNotFoundException("Platform with type [" + typeName
+ "]");
@@ -565,10 +590,8 @@ public class ResourceHandlerBean extends AbstractRestBean {
agent = new
Agent("dummy-agent:name"+name,"-dummy-p:"+name,12345,...;
agentMgr.createAgent(agent);
-
-
Resource platform = new Resource(resourceKey,name,type);
- platform.setUuid(resourceKey);
+ platform.setUuid(UUID.randomUUID().toString());
platform.setAgent(agent);
platform.setInventoryStatus(InventoryStatus.COMMITTED);
platform.setModifiedBy(caller.getName());
@@ -595,40 +618,44 @@ public class ResourceHandlerBean extends AbstractRestBean {
} catch (Exception e) {
throw new RuntimeException(e);
}
-
}
- private void createSchedules(Resource resource) {
- ResourceType rt = resource.getResourceType();
- Set<MeasurementDefinition> definitions = rt.getMetricDefinitions ();
- for (MeasurementDefinition definition : definitions) {
- MeasurementSchedule schedule = new MeasurementSchedule(definition,resource);
- schedule.setEnabled(definition.isDefaultOn());
- schedule.setInterval(definition.getDefaultInterval());
- entityManager.persist(schedule);
- }
- }
- @ApiOperation(value = "Create a resource with a given type below a certain
parent")
+ @ApiOperation(value = "Create a resource with a given type below a certain
parent. DEPRECATED Use POST / instead")
@POST
@Path("{name}")
- public Response createResource(
+ public Response createResourceOLD(
@ApiParam("Name of the new resource") @PathParam("name")
String name,
@ApiParam("Name of the Resource type") StringValue typeValue,
@ApiParam("Name of the plugin providing the type")
@QueryParam("plugin") String plugin,
@ApiParam("Id of the future parent to attach this to")
@QueryParam("parentId") int parentId,
@Context UriInfo uriInfo) {
+ String typeName = typeValue.getValue();
+
+ return createResourceInternal(name, plugin, parentId, typeName, uriInfo);
+ }
+
+ @POST
+ @Path("/")
+ @ApiOperation("Create a new resource as a child of an existing resource¡")
+ public Response createResource(
+ @ApiParam("THe info about the resource. You need to supply resource name,
resource type name, plugin name, id of the parent") ResourceWithType resource,
+ @Context UriInfo uriInfo)
+ {
+ return
createResourceInternal(resource.getResourceName(),resource.getPluginName(),resource.getParentId(),resource.getTypeName(),uriInfo);
+ }
+
+ private Response createResourceInternal(String name, String plugin, int parentId,
String typeName,
+ UriInfo uriInfo) {
Resource parent = resMgr.getResourceById(caller,parentId);
- String typeName = typeValue.getValue();
ResourceType resType =
resourceTypeManager.getResourceTypeByNameAndPlugin(typeName,plugin);
if (resType==null)
throw new StuffNotFoundException("ResourceType with name [" +
typeName + "] and plugin [" + plugin + "]");
String resourceKey = "res:" + name + ":" + parentId;
-
Resource r =
resMgr.getResourceByParentAndKey(caller,parent,resourceKey,plugin,typeName);
if (r!=null) {
// resource exists - return it
@@ -644,7 +671,7 @@ public class ResourceHandlerBean extends AbstractRestBean {
}
Resource res = new Resource(resourceKey,name,resType);
- res.setUuid(resourceKey);
+ res.setUuid(UUID.randomUUID().toString());
res.setAgent(parent.getAgent());
res.setParentResource(parent);
res.setInventoryStatus(InventoryStatus.COMMITTED);
@@ -683,4 +710,16 @@ public class ResourceHandlerBean extends AbstractRestBean {
return Response.status(Response.Status.NO_CONTENT).build();
}
+
+ private void createSchedules(Resource resource) {
+ ResourceType rt = resource.getResourceType();
+ Set<MeasurementDefinition> definitions = rt.getMetricDefinitions ();
+ for (MeasurementDefinition definition : definitions) {
+ MeasurementSchedule schedule = new MeasurementSchedule(definition,resource);
+ schedule.setEnabled(definition.isDefaultOn());
+ schedule.setInterval(definition.getDefaultInterval());
+ entityManager.persist(schedule);
+ }
+ }
+
}
diff --git
a/modules/integration-tests/rest-api/src/test/java/org/rhq/modules/integrationTests/restApi/ResourcesTest.java
b/modules/integration-tests/rest-api/src/test/java/org/rhq/modules/integrationTests/restApi/ResourcesTest.java
index e8066bc..6899995 100644
---
a/modules/integration-tests/rest-api/src/test/java/org/rhq/modules/integrationTests/restApi/ResourcesTest.java
+++
b/modules/integration-tests/rest-api/src/test/java/org/rhq/modules/integrationTests/restApi/ResourcesTest.java
@@ -25,12 +25,16 @@ package org.rhq.modules.integrationTests.restApi;
import com.jayway.restassured.http.ContentType;
import com.jayway.restassured.path.json.JsonPath;
+import com.jayway.restassured.path.xml.XmlPath;
+import com.jayway.restassured.path.xml.element.Node;
import com.jayway.restassured.response.Response;
import org.apache.http.HttpStatus;
import org.hamcrest.CoreMatchers;
import org.junit.Test;
+import org.rhq.modules.integrationTests.restApi.d.Resource;
+
import static com.jayway.restassured.RestAssured.expect;
import static com.jayway.restassured.RestAssured.get;
import static com.jayway.restassured.RestAssured.given;
@@ -129,7 +133,7 @@ public class ResourcesTest extends AbstractBase {
@Test
public void testGetPlatformXml() {
given()
- .header("Accept","application/xml")
+ .header("Accept", "application/xml")
.expect()
.statusCode(200)
.contentType(ContentType.XML)
@@ -140,7 +144,7 @@ public class ResourcesTest extends AbstractBase {
@Test
public void testGetPlatformSchedules() {
given()
- .header("Accept","application/json")
+ .header("Accept", "application/json")
.expect()
.statusCode(200)
.when()
@@ -158,18 +162,66 @@ public class ResourcesTest extends AbstractBase {
}
@Test
- public void testCreatePlatform() throws Exception {
+ public void testCreatePlatformOld() throws Exception {
given().body("{\"value\":\"Linux\"}")
- .header("Content-Type","application/json")
- .header("Accept","application/json")
+ .header("Content-Type", "application/json")
+ .header("Accept", "application/json")
.expect().statusCode(201)
.when().post("/resource/platform/api-test-dummy");
}
@Test
+ public void testCreatePlatform() throws Exception {
+
+ Resource resource = new Resource();
+ resource.setResourceName("dummy-test");
+ resource.setTypeName("Linux");
+
+ given()
+ .header(acceptXml)
+ .contentType(ContentType.JSON)
+ .body(resource)
+ .expect()
+ .statusCode(201)
+ .log().ifError()
+ .when()
+ .post("/resource/platforms");
+
+ }
+
+ @Test
public void testCreatePlatformAndRemove() throws Exception {
+ Resource resource = new Resource();
+ resource.setResourceName("dummy-test");
+ resource.setTypeName("Linux");
+
+ Response response =
+ given()
+ .header(acceptXml)
+ .contentType(ContentType.JSON)
+ .body(resource)
+ .expect()
+ .statusCode(201)
+ .log().ifError()
+ .when()
+ .post("/resource/platforms");
+
+ XmlPath xmlPath = response.xmlPath();
+ Node resource1 = xmlPath.get("resource");
+ Node platformIdNode = resource1.get("resourceId");
+ String platformId = platformIdNode.value();
+
+ given().pathParam("id", platformId)
+ .expect().statusCode(HttpStatus.SC_NO_CONTENT)
+ .when().delete("/resource/{id}");
+
+ }
+
+ @Test
+ public void testCreatePlatformOLDAndRemove() throws Exception {
+
Response response =
with().body("{\"value\":\"Linux\"}")
.header("Content-Type","application/json")
@@ -185,12 +237,12 @@ public class ResourcesTest extends AbstractBase {
}
@Test
- public void testCreatePlatformWithChildAndRemove() throws Exception {
+ public void testCreatePlatformOLDWithChildOLDAndRemove() throws Exception {
Response response =
with().body("{\"value\":\"Linux\"}")
.header("Content-Type","application/json")
- .header("Accept","application/json")
+ .header("Accept", "application/json")
.expect()
.statusCode(201)
.when()
@@ -219,6 +271,50 @@ public class ResourcesTest extends AbstractBase {
}
@Test
+ public void testCreatePlatformWithChildAndRemove() throws Exception {
+
+ Resource platform = new Resource();
+ platform.setResourceName("dummy-test");
+ platform.setTypeName("Linux");
+
+ Response response =
+ with().body(platform)
+ .header("Content-Type","application/json")
+ .header("Accept","application/json")
+ .expect()
+ .statusCode(201)
+ .log().ifError()
+ .when()
+ .post("/resource/platforms");
+
+ String platformId = response.jsonPath().getString("resourceId");
+
+ Resource child = new Resource();
+ child.setResourceName("test");
+ child.setTypeName("CPU");
+ child.setPluginName("Platforms");
+ child.setParentId(Integer.valueOf(platformId));
+
+ try {
+
+ with()
+ .body(child)
+ .header("Content-Type", "application/json")
+ .header("Accept", "application/json")
+ .expect()
+ .statusCode(201)
+ .log().ifError()
+ .when()
+ .post("/resource");
+ }
+ finally {
+ given().pathParam("id",platformId)
+ .expect().statusCode(HttpStatus.SC_NO_CONTENT)
+ .when().delete("/resource/{id}");
+ }
+ }
+
+ @Test
public void testDoubleChildCreate() throws Exception {
// a resource can be created again and again
diff --git
a/modules/integration-tests/rest-api/src/test/java/org/rhq/modules/integrationTests/restApi/d/Resource.java
b/modules/integration-tests/rest-api/src/test/java/org/rhq/modules/integrationTests/restApi/d/Resource.java
new file mode 100644
index 0000000..9c3c1a3
--- /dev/null
+++
b/modules/integration-tests/rest-api/src/test/java/org/rhq/modules/integrationTests/restApi/d/Resource.java
@@ -0,0 +1,76 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2013 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+package org.rhq.modules.integrationTests.restApi.d;
+
+/**
+ * A resource for testing purposes
+ * @author Heiko W. Rupp
+ */
+public class Resource {
+
+ String resourceName;
+ int resourceId;
+ String typeName;
+ String pluginName;
+ Integer parentId;
+
+ public Resource() {
+ }
+
+ public String getResourceName() {
+ return resourceName;
+ }
+
+ public void setResourceName(String resourceName) {
+ this.resourceName = resourceName;
+ }
+
+ public Integer getParentId() {
+ return parentId;
+ }
+
+ public void setParentId(Integer parentId) {
+ this.parentId = parentId;
+ }
+
+ public String getPluginName() {
+ return pluginName;
+ }
+
+ public void setPluginName(String pluginName) {
+ this.pluginName = pluginName;
+ }
+
+ public int getResourceId() {
+ return resourceId;
+ }
+
+ public void setResourceId(int resourceId) {
+ this.resourceId = resourceId;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+}
commit 75903fd6abdef24ac5bab17f35f3b83ba2b1033c
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue Jan 29 20:06:17 2013 +0100
Do not assume everything is a jar - we also support jar-less plugins.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/PluginFileUploadServlet.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/PluginFileUploadServlet.java
index adc870a..3263d19 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/PluginFileUploadServlet.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/PluginFileUploadServlet.java
@@ -66,13 +66,16 @@ public class PluginFileUploadServlet extends FileUploadServlet {
File file = files.values().iterator().next();
String newPluginFilename = fileNames.values().iterator().next();
- // make sure its a .jar file and strip off any temp file suffix (in case the
browser set the name to something odd)
- int jarExtension = newPluginFilename.lastIndexOf(".jar");
- if (jarExtension < 0) {
- newPluginFilename = newPluginFilename + ".jar"; // make sure it
ends with ".jar" in case it is some tmp filename
- jarExtension = newPluginFilename.lastIndexOf(".jar");
+ // see if it is a jar-less plugin descriptor and if not check for .jar
+ if (!newPluginFilename.endsWith("-rhq-plugin.xml")) {
+ // make sure its a .jar file and strip off any temp file suffix (in case
the browser set the name to something odd)
+ int jarExtension = newPluginFilename.lastIndexOf(".jar");
+ if (jarExtension < 0) {
+ newPluginFilename = newPluginFilename + ".jar"; // make
sure it ends with ".jar" in case it is some tmp filename
+ jarExtension = newPluginFilename.lastIndexOf(".jar");
+ }
+ newPluginFilename = newPluginFilename.substring(0, jarExtension +
".jar".length());
}
- newPluginFilename = newPluginFilename.substring(0, jarExtension +
".jar".length());
log.info("A new plugin [" + newPluginFilename + "] has been
uploaded to [" + file + "]");
if (file == null || !file.exists()) {