modules/core/dbutils/src/main/java/org/rhq/core/db/upgrade/CustomAlertSenderUpgradeTask.java
| 133
++++
modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml
| 34
-
modules/core/domain/src/main/java/org/rhq/core/domain/alert/Alert.java
| 15
modules/core/domain/src/main/java/org/rhq/core/domain/alert/AlertDefinition.java
| 17
modules/core/domain/src/main/java/org/rhq/core/domain/alert/notification/AlertNotification.java
| 3
modules/core/domain/src/main/java/org/rhq/core/domain/content/PackageBits.java
| 7
modules/core/domain/src/main/java/org/rhq/core/domain/criteria/ResourceGroupCriteria.java
| 13
modules/core/domain/src/main/java/org/rhq/core/domain/resource/group/GroupDefinition.java
| 58
-
modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/admin/DownloadsUIBean.java
| 54 +
modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/alert/common/AlertNotificationsUIBean.java
| 2
modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/alert/common/CustomContentUIBean.java
| 2
modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/definition/group/GroupDefinitionUIBean.java
| 26
modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/action/resource/common/monitor/alerts/ViewAlertAction.java
| 10
modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/action/resource/common/monitor/alerts/config/EditDefinitionControlActionAction.java
| 2
modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/action/resource/common/monitor/alerts/config/EditDefinitionControlActionFormPrepareAction.java
| 2
modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/action/resource/common/monitor/alerts/config/ViewDefinitionAction.java
| 4
modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/subsystem/SubsystemAlertHistoryUIBean.java
| 10
modules/enterprise/gui/portal-war/src/main/webapp/rhq/admin/downloads.xhtml
| 21
modules/enterprise/gui/portal-war/src/main/webapp/rhq/definition/group/view.xhtml
| 8
modules/enterprise/gui/portal-war/src/main/webapp/rhq/inventory/browseResources.xhtml
| 53
-
modules/enterprise/server/container/src/main/scripts/rhq-container.build.xml
| 8
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/job/AbstractGroupConfigurationUpdateJob.java
| 18
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java
| 303 ++++++++--
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerLocal.java
| 11
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/plugin/pc/alert/CustomAlertSenderBackingBean.java
| 14
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java
| 102 +--
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerLocal.java
| 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/definition/GroupDefinitionManagerBean.java
| 181 -----
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/definition/GroupDefinitionManagerLocal.java
| 12
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/search/execution/SearchAssistManager.java
| 8
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/search/translation/GroupSearchTranslator.java
| 3
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/search/translation/ResourceSearchTranslator.java
| 3
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/content/test/ContentUIManagerBeanTest.java
| 97 +++
modules/enterprise/server/plugins/alert-operations/src/main/java/org/rhq/enterprise/server/plugins/alertOperations/OperationInfo.java
| 4
modules/enterprise/server/plugins/alert-operations/src/main/java/org/rhq/enterprise/server/plugins/alertOperations/OperationsBackingBean.java
| 3
modules/plugins/apache/src/main/java/org/rhq/plugins/apache/ApacheServerComponent.java
| 2
modules/plugins/apache/src/main/java/org/rhq/plugins/apache/ApacheServerDiscoveryComponent.java
| 2
modules/plugins/apache/src/main/java/org/rhq/plugins/apache/ApacheVirtualHostServiceComponent.java
| 29
modules/plugins/apache/src/main/java/org/rhq/plugins/apache/ApacheVirtualHostServiceDiscoveryComponent.java
| 34 +
modules/plugins/apache/src/main/java/org/rhq/plugins/apache/util/HttpdAddressUtility.java
| 281
+++++----
modules/plugins/augeas/pom.xml
| 17
modules/plugins/augeas/src/main/java/org/rhq/rhqtransform/impl/PluginDescriptorBasedAugeasConfiguration.java
| 2
42 files changed, 998 insertions(+), 612 deletions(-)
New commits:
commit 6c1b4651fdedbfb0900f2440c17e0887f0d6ba61
Merge: dcf8ac0... 6f4eb03...
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Fri Jun 25 16:28:53 2010 -0400
Merge branch 'release-3.0.0' into master-jay
commit 6f4eb034b12085258f98c92713af8a499ea78261
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Fri Jun 25 15:53:16 2010 -0400
unit test fix for blob.
diff --git
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/content/test/ContentUIManagerBeanTest.java
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/content/test/ContentUIManagerBeanTest.java
index 7fae6e0..5f73b89 100644
---
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/content/test/ContentUIManagerBeanTest.java
+++
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/content/test/ContentUIManagerBeanTest.java
@@ -284,7 +284,7 @@ public class ContentUIManagerBeanTest extends AbstractEJB3Test {
}
FileInputStream fos = new FileInputStream(originalBinary);
- contentManager.updateBlobStream(fos, packageBits);
+ contentManager.updateBlobStream(fos, packageBits, null);
packageBits = em.find(PackageBits.class, packageBits.getId());
// test that the bits are available and stored in the DB: Reading the Blob
commit 17b0f8bb1a60583a0d1ea24bd894cc9a3dbd5c42
Merge: 863201f... bfd6f7d...
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Fri Jun 25 15:50:49 2010 -0400
Merge branch 'release-3.0.0' of ssh://spinder@git.fedorahosted.org/git/rhq/rhq
into release-3.0.0
commit bfd6f7dbff8de49c9ad47712499f106945002127
Merge: 14cad58... eb5d619...
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Fri Jun 25 15:47:19 2010 -0400
Merge branch 'release-3.0.0' into release-3.0.0-jay
commit 14cad58515eb7b4787e607df428d01702f31468c
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Fri Jun 25 15:46:21 2010 -0400
[BZ 600543] An interim solution that hopefully will bridge the gap until we
impl BZ 608135. Try to ensure that all plugin config updates in a group
update get a chance to complete (barring a server loss).
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/job/AbstractGroupConfigurationUpdateJob.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/job/AbstractGroupConfigurationUpdateJob.java
index 2efe429..7b92b40 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/job/AbstractGroupConfigurationUpdateJob.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/job/AbstractGroupConfigurationUpdateJob.java
@@ -82,7 +82,15 @@ public abstract class AbstractGroupConfigurationUpdateJob implements
Job {
}
for (Integer childUpdateId : pagedChildUpdateIds) {
- executeConfigurationUpdate(configurationManager, childUpdateId,
subject);
+ // failing one update request is not reason to fail all of the
remaining updates
+ // so, wrap in a try catch and gather up the errors to subsequently
fail the group update. This
+ // will especially benefit group plugin config, which currently
executes synchronously.
+ try {
+ executeConfigurationUpdate(configurationManager, childUpdateId,
subject);
+ } catch (Exception e) {
+ errorMessages = appendErrorMessages(errorMessages, "Failed
Member Update Id=" + childUpdateId,
+ e.toString());
+ }
}
rowsProcessed += pagedChildUpdateIds.size();
@@ -93,12 +101,18 @@ public abstract class AbstractGroupConfigurationUpdateJob implements
Job {
pc.setPageNumber(pc.getPageNumber() + 1);
}
} catch (Exception e) {
- errorMessages = ThrowableUtil.getAllMessages(e);
+ errorMessages = appendErrorMessages(errorMessages, "Failed Group Update
Id=" + groupConfigurationUpdateId,
+ ThrowableUtil.getAllMessages(e));
} finally {
completeGroupConfigurationUpdate(configurationManager,
groupConfigurationUpdateId, errorMessages);
}
}
+ private String appendErrorMessages(String currentMessages, String header, String
newMessages) {
+ currentMessages = (null == currentMessages) ? "" : currentMessages +
"\n";
+ return currentMessages.concat(" [" + header + ": " +
newMessages);
+ }
+
private static String createUniqueJobName(ResourceGroup group, Subject subject,
String jobNamePrefix) {
return createJobGroupName(group, jobNamePrefix) + "-" +
subject.getName().hashCode() + "-"
+ System.currentTimeMillis();
commit eb5d619298ef5aa1d38c10cf308cca8e119403d3
Author: Joseph Marques <joseph(a)redhat.com>
Date: Fri Jun 25 15:07:25 2010 -0400
BZ-535671: remove compatible group constructs if dynagroup recalculation converts
compat->mixed
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java
index b944b6e..5e7707d 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java
@@ -91,7 +91,6 @@ import org.rhq.enterprise.server.operation.GroupOperationSchedule;
import org.rhq.enterprise.server.operation.OperationManagerLocal;
import org.rhq.enterprise.server.resource.ResourceManagerLocal;
import org.rhq.enterprise.server.resource.ResourceTypeManagerLocal;
-import org.rhq.enterprise.server.resource.ResourceTypeNotFoundException;
import org.rhq.enterprise.server.util.CriteriaQueryGenerator;
import org.rhq.enterprise.server.util.CriteriaQueryRunner;
import org.rhq.enterprise.server.util.QueryUtility;
@@ -252,35 +251,6 @@ public class ResourceGroupManagerBean implements
ResourceGroupManagerLocal, Reso
ResourceGroupDeleteException {
ResourceGroup group = getResourceGroupById(subject, groupId, null);
- // for compatible groups, first recursively remove any referring backing groups
for auto-clusters
- if (group.getGroupCategory() == GroupCategory.COMPATIBLE) {
- for (ResourceGroup referringGroup : group.getClusterBackingGroups()) {
- deleteResourceGroup(subject, referringGroup.getId());
- }
- }
-
- // unschedule all jobs for this group (only compatible groups have operations,
mixed do not)
- if (group.getGroupCategory() == GroupCategory.COMPATIBLE) {
- Subject overlord = subjectManager.getOverlord();
- try {
- List<GroupOperationSchedule> ops =
operationManager.findScheduledGroupOperations(overlord, groupId);
-
- for (GroupOperationSchedule schedule : ops) {
- try {
- operationManager.unscheduleGroupOperation(overlord,
schedule.getJobId().toString(), groupId);
- } catch (UnscheduleException e) {
- log.warn("Failed to unschedule job [" + schedule +
"] for a group being deleted [" + group
- + "]", e);
- }
- }
- } catch (Exception e) {
- log.warn("Failed to get jobs for a group being deleted [" +
group
- + "]; will not attempt to unschedule anything", e);
- }
- }
-
- groupAlertDefinitionManager.purgeAllGroupAlertDefinitions(subject, groupId);
-
for (Role doomedRoleRelationship : group.getRoles()) {
group.removeRole(doomedRoleRelationship);
entityManager.merge(doomedRoleRelationship);
@@ -289,20 +259,64 @@ public class ResourceGroupManagerBean implements
ResourceGroupManagerLocal, Reso
// remove all resources in the group
resourceGroupManager.removeAllResourcesFromGroup(subject, groupId);
+ if (group.getGroupCategory() == GroupCategory.COMPATIBLE) {
+ removeCompatibleGroupConstructs(subject, group);
+ }
+
// break resource and plugin configuration update links in order to preserve
individual change history
Query q = null;
q =
entityManager.createNamedQuery(ResourceConfigurationUpdate.QUERY_DELETE_GROUP_UPDATES_FOR_GROUP);
- q.setParameter("groupId", groupId);
+ q.setParameter("groupId", group.getId());
q.executeUpdate();
q =
entityManager.createNamedQuery(PluginConfigurationUpdate.QUERY_DELETE_GROUP_UPDATES_FOR_GROUP);
- q.setParameter("groupId", groupId);
+ q.setParameter("groupId", group.getId());
q.executeUpdate();
entityManager.remove(group);
}
+ /*
+ * TODO: Deletion of all associated group data (except implicit/explicit resource
members) should be moved here.
+ * in other words, we don't want Hibernate cascade annotations to remove
that history upon deletion of an
+ * entity anymore because there are now two cases where group constructs need
to be destroyed:
+ *
+ * 1) compatible group deletion - a group is deleted, all history removed,
entity is gone from the system
+ * 2) dynagroup recomputation - a group definition is recalculation, a
compatible group turns into a mixed
+ * group, compatible constructs need to be
removed, but the entity survives
+ *
+ * For now, this implementation should suffice for --
https://bugzilla.redhat.com/show_bug.cgi?id=535671
+ */
+ private void removeCompatibleGroupConstructs(Subject subject, ResourceGroup group)
+ throws ResourceGroupDeleteException {
+
+ // for compatible groups, first recursively remove any referring backing groups
for auto-clusters
+ for (ResourceGroup referringGroup : group.getClusterBackingGroups()) {
+ deleteResourceGroup(subject, referringGroup.getId());
+ }
+
+ Subject overlord = subjectManager.getOverlord();
+ try {
+ List<GroupOperationSchedule> ops =
operationManager.findScheduledGroupOperations(overlord, group.getId());
+
+ for (GroupOperationSchedule schedule : ops) {
+ try {
+ operationManager.unscheduleGroupOperation(overlord,
schedule.getJobId().toString(), group.getId());
+ } catch (UnscheduleException e) {
+ log
+ .warn("Failed to unschedule job [" + schedule + "]
for a group being deleted [" + group + "]",
+ e);
+ }
+ }
+ } catch (Exception e) {
+ log.warn("Failed to get jobs for a group being deleted [" + group
+ + "]; will not attempt to unschedule anything", e);
+ }
+
+ groupAlertDefinitionManager.purgeAllGroupAlertDefinitions(subject,
group.getId());
+ }
+
public ResourceGroup getResourceGroupById(Subject user, int id, GroupCategory
category)
throws ResourceGroupNotFoundException {
ResourceGroup group = entityManager.find(ResourceGroup.class, id);
@@ -909,7 +923,7 @@ public class ResourceGroupManagerBean implements
ResourceGroupManagerLocal, Reso
}
@SuppressWarnings("unchecked")
- public void setResourceType(int resourceGroupId) {
+ public void setResourceType(int resourceGroupId) throws ResourceGroupDeleteException
{
Query query =
entityManager.createNamedQuery(ResourceType.QUERY_GET_EXPLICIT_RESOURCE_TYPE_COUNTS_BY_GROUP);
query.setParameter("groupId", resourceGroupId);
@@ -921,16 +935,14 @@ public class ResourceGroupManagerBean implements
ResourceGroupManagerLocal, Reso
Object[] info = (Object[]) results.get(0);
int resourceTypeId = (Integer) info[0];
- try {
- ResourceType type = resourceTypeManager.getResourceTypeById(overlord,
resourceTypeId);
-
- resourceGroup.setResourceType(type);
- } catch (ResourceTypeNotFoundException rtnfe) {
- // we just got the resourceTypeId from the database, so it will exist
- // but let's set some reasonable implementation anyway
- resourceGroup.setResourceType(null);
- }
+ ResourceType flyWeightType = new ResourceType();
+ flyWeightType.setId(resourceTypeId);
+ resourceGroup.setResourceType(flyWeightType);
} else {
+ if (resourceGroup.getResourceType() != null) {
+ // converting compatible group to mixed group, remove all corresponding
compatible constructs
+ removeCompatibleGroupConstructs(overlord, resourceGroup);
+ }
resourceGroup.setResourceType(null);
}
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerLocal.java
index afac418..5975099 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerLocal.java
@@ -93,7 +93,7 @@ public interface ResourceGroupManagerLocal {
ResourceGroup getByGroupDefinitionAndGroupByClause(int groupDefinitionId, String
groupByClause);
- void setResourceType(int resourceGroupId);
+ void setResourceType(int resourceGroupId) throws ResourceGroupDeleteException;
int getExplicitGroupMemberCount(int resourceGroupId);
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 ee0dae9..9a11216 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
@@ -52,6 +52,7 @@ import org.rhq.enterprise.server.authz.PermissionException;
import org.rhq.enterprise.server.authz.RequiredPermission;
import org.rhq.enterprise.server.resource.ResourceManagerLocal;
import org.rhq.enterprise.server.resource.group.RecursivityChangeType;
+import org.rhq.enterprise.server.resource.group.ResourceGroupDeleteException;
import org.rhq.enterprise.server.resource.group.ResourceGroupManagerLocal;
import org.rhq.enterprise.server.resource.group.ResourceGroupUpdateException;
import
org.rhq.enterprise.server.resource.group.definition.exception.GroupDefinitionAlreadyExistsException;
@@ -254,8 +255,9 @@ public class GroupDefinitionManagerBean implements
GroupDefinitionManagerLocal {
@RequiredPermission(Permission.MANAGE_INVENTORY)
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
// required for the recalculation thread
- public void calculateGroupMembership(Subject subject, int groupDefinitionId) throws
GroupDefinitionDeleteException,
- GroupDefinitionNotFoundException, InvalidExpressionException,
ResourceGroupUpdateException {
+ public void calculateGroupMembership(Subject subject, int groupDefinitionId) throws
ResourceGroupDeleteException,
+ GroupDefinitionDeleteException, GroupDefinitionNotFoundException,
InvalidExpressionException,
+ ResourceGroupUpdateException {
/*
* even though this method declares to throw it, it should never generate an
InvalidExpressionException because
* the definition's expression set was validated before it was persisted.
conceivably, if the group definition
@@ -329,7 +331,8 @@ public class GroupDefinitionManagerBean implements
GroupDefinitionManagerLocal {
@RequiredPermission(Permission.MANAGE_INVENTORY)
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public Integer calculateGroupMembership_helper(Subject overlord, int
groupDefinitionId,
- ExpressionEvaluator.Result result) throws GroupDefinitionNotFoundException,
GroupDefinitionNotFoundException {
+ ExpressionEvaluator.Result result) throws ResourceGroupDeleteException,
GroupDefinitionNotFoundException,
+ GroupDefinitionNotFoundException {
long startTime = System.currentTimeMillis();
GroupDefinition groupDefinition = getById(groupDefinitionId);
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/definition/GroupDefinitionManagerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/definition/GroupDefinitionManagerLocal.java
index b57a35e..d83c77c 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/definition/GroupDefinitionManagerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/definition/GroupDefinitionManagerLocal.java
@@ -25,6 +25,7 @@ import org.rhq.core.domain.criteria.ResourceGroupDefinitionCriteria;
import org.rhq.core.domain.resource.group.GroupDefinition;
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;
@@ -48,11 +49,11 @@ public interface GroupDefinitionManagerLocal {
throws GroupDefinitionAlreadyExistsException, GroupDefinitionUpdateException,
InvalidExpressionException,
ResourceGroupUpdateException;
- void calculateGroupMembership(Subject subject, int groupDefinitionId) throws
GroupDefinitionDeleteException,
- GroupDefinitionNotFoundException, InvalidExpressionException;
+ void calculateGroupMembership(Subject subject, int groupDefinitionId) throws
ResourceGroupDeleteException,
+ GroupDefinitionDeleteException, GroupDefinitionNotFoundException,
InvalidExpressionException;
Integer calculateGroupMembership_helper(Subject subject, int groupDefinitionId,
ExpressionEvaluator.Result result)
- throws GroupDefinitionNotFoundException, GroupDefinitionNotFoundException;
+ throws ResourceGroupDeleteException, GroupDefinitionNotFoundException,
GroupDefinitionNotFoundException;
PageList<GroupDefinition> getGroupDefinitions(Subject subject, PageControl
pc);
commit 749156f88d2e834ab5ec835eec4eb4ce3d68aedb
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri Jun 25 13:27:50 2010 -0400
make sure augeas 0.0.2 jar, not 0.0.1 jar, is copied into plugin jar's lib dir
diff --git a/modules/plugins/augeas/pom.xml b/modules/plugins/augeas/pom.xml
index 531df2c..915106a 100644
--- a/modules/plugins/augeas/pom.xml
+++ b/modules/plugins/augeas/pom.xml
@@ -17,6 +17,10 @@
<name>RHQ Augeas Plugin</name>
<description>An abstract plugin for configuring resources via
Augeas</description>
+ <properties>
+ <augeas.version>0.0.2</augeas.version>
+ </properties>
+
<dependencies>
<dependency>
@@ -30,11 +34,13 @@
<artifactId>rhq-platform-plugin</artifactId>
<version>${project.version}</version>
</dependency>
- <dependency>
+
+ <dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.4</version>
</dependency>
+
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
@@ -45,7 +51,7 @@
<dependency>
<groupId>net.augeas</groupId>
<artifactId>augeas</artifactId>
- <version>0.0.2</version>
+ <version>${augeas.version}</version>
</dependency>
<dependency>
@@ -79,7 +85,7 @@
<artifactItem>
<groupId>net.augeas</groupId>
<artifactId>augeas</artifactId>
- <version>0.0.1</version>
+ <version>${augeas.version}</version>
</artifactItem>
</artifactItems>
@@ -122,7 +128,6 @@
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.1</version>
<executions>
<execution>
commit 7d42b8feaa0bd3071cf36cf79ea58b07bf7673c9
Merge: ed7b01a... d79a2a8...
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri Jun 25 13:25:49 2010 -0400
Merge branch 'release-3.0.0' of
ssh://git.fedorahosted.org/git/rhq/rhq into
release-3.0.0
commit d79a2a881d4a5c7356ce1cef41845c0612cfab4b
Merge: e0efd15... 3617607...
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Jun 25 18:13:35 2010 +0200
Merge branch 'release-3.0.0' of
ssh://git.fedorahosted.org/git/rhq/rhq into
release-3.0.0
commit e0efd154e0eac23bb2299b6d0f2241a84fe79522
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Jun 25 18:12:10 2010 +0200
BZ 583833 - re-show the Events icon in the MICA section.
diff --git
a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/inventory/browseResources.xhtml
b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/inventory/browseResources.xhtml
index d492ad6..ea8017a 100644
---
a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/inventory/browseResources.xhtml
+++
b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/inventory/browseResources.xhtml
@@ -27,7 +27,7 @@
<ui:param name="pageTitle" value="Browse Resources"/>
<ui:param name="selectedTabName"
value="Resources.#{param.subtab}" />
<ui:define name="content">
-
+
<a4j:keepAlive beanName="BrowseResourcesUIBean"/>
<a4j:form>
@@ -37,7 +37,7 @@
</a4j:form>
<h:form id="browseResourcesForm">
<input type="hidden" name="subtab"
value="${param.subtab}" />
-
+
<p/>
<h:panelGrid columns="3">
<h:outputText value="Search: " />
@@ -48,7 +48,7 @@
<ui:param name="defaultSavedSearchPattern"
value="#{param.searchId}" />
</ui:include>
- <a4j:commandButton id="searchButtonJSF" value="GO"
+ <a4j:commandButton id="searchButtonJSF" value="GO"
reRender="browseResourcesDataTable,
browseResourcesDataTableScroller"
status="commonStatus"
actionListener="#{BrowseResourcesUIBean.clearDataModel}"
@@ -85,42 +85,47 @@
<onc:select name="selectedItems"
value="#{item.original.resource.id}" />
</rich:column>
-
+
<rich:column>
<onc:quickNav>
<f:param name="id"
value="#{item.original.resource.id}"/>
-
+
<onc:icon name="Monitor"
- url="/rhq/resource/monitor/graphs.xhtml"
+ url="/rhq/resource/monitor/graphs.xhtml"
alt="Monitor"
visible="#{monitorEnabled}">
</onc:icon>
-
+
<onc:icon name="Inventory"
- url="/rhq/resource/inventory/view.xhtml"
+ url="/rhq/resource/inventory/view.xhtml"
alt="Inventory"/>
-
+
<onc:icon name="Alert"
-
url="/rhq/resource/alert/listAlertDefinitions.xhtml"
- alt="Alerts"
+
url="/rhq/resource/alert/listAlertDefinitions.xhtml"
+ alt="Alerts"
visible="#{monitorEnabled}"/>
-
+
<onc:icon name="Configure"
- url="/rhq/resource/configuration/view.xhtml"
- alt="Configure"
+ url="/rhq/resource/configuration/view.xhtml"
+ alt="Configure"
visible="#{item.original.resourceFacets.configuration}"/>
-
+
<onc:icon name="Operation"
-
url="/rhq/resource/operation/resourceOperationScheduleNew.xhtml"
- alt="Operations"
+
url="/rhq/resource/operation/resourceOperationScheduleNew.xhtml"
+ alt="Operations"
visible="#{item.original.resourceFacets.operation}"/>
-
- <onc:icon name="Content"
- url="/rhq/resource/content/view.xhtml"
+
+ <onc:icon name="Events"
+ url="/rhq/resource/events/history.xhtml"
+ alt="Events"
+
visible="#{item.original.resourceFacets.event}"/>
+
+ <onc:icon name="Content"
+ url="/rhq/resource/content/view.xhtml"
alt="Content"
visible="#{item.original.resourceFacets.content}"/>
-
- <!-- Is this necessary? It's being passed for all quick nav
urls. -->
+
+ <!-- Is this necessary? It's being passed for all quick nav
urls. -->
<f:param name="mode" value="list"/>
</onc:quickNav>
</rich:column>
@@ -132,10 +137,10 @@
</onc:sortableColumnHeader>
</f:facet>
- <onc:disambiguatedResourceName
resourceName="#{item.original.resource.name}"
+ <onc:disambiguatedResourceName
resourceName="#{item.original.resource.name}"
resourceId="#{item.original.resource.id}"
disambiguationReport="#{item}"/>
</rich:column>
-<!--
+<!--
<rich:column>
<f:facet name="header">
<onc:sortableColumnHeader
sort="r.resourceType.name">
commit ed7b01ad0a995bd10219031bc19be268109d1610
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri Jun 25 11:25:46 2010 -0400
use augeas.version prop rather than hard-coding Augeas version
diff --git a/modules/plugins/augeas/pom.xml b/modules/plugins/augeas/pom.xml
index 963223b..531df2c 100644
--- a/modules/plugins/augeas/pom.xml
+++ b/modules/plugins/augeas/pom.xml
@@ -60,7 +60,6 @@
<plugins>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
- <version>2.0</version>
<executions>
<execution>
<id>copy-plugin-libs</id>
@@ -74,7 +73,7 @@
<artifactItem>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
- <version>3.2.2</version>
+ <version>${jna.version}</version>
</artifactItem>
<artifactItem>
@@ -180,7 +179,6 @@
</plugin>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
- <version>2.0</version>
<executions>
<execution>
<id>copy-commons-io-jar</id>
commit 863201f8b91e01632ec7453940f4b08fd3d0dda7
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Fri Jun 25 09:53:02 2010 -0400
BZ-597246: fixing errors, modified loadPackageBits to calculate digest and file length
as well.
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java
index b2cac05..6ee805e 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java
@@ -18,6 +18,7 @@
*/
package org.rhq.enterprise.server.content;
+import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
@@ -945,7 +946,7 @@ public class ContentManagerBean implements ContentManagerLocal,
ContentManagerRe
pkgName = packageVersion.getGeneralPackage().getName();
}
bits = loadPackageBits(bitStream, packageVersion.getId(), pkgName,
packageVersion.getVersion(),
- bits);
+ bits, null);
entityManager.merge(bits);
} finally {
@@ -1235,17 +1236,13 @@ public class ContentManagerBean implements ContentManagerLocal,
ContentManagerRe
PackageVersion newPackageVersion = new PackageVersion(existingPackage, version,
architecture);
newPackageVersion.setDisplayName(existingPackage.getName());
- PackageBits bits = loadPackageBits(packageBitStream, newPackageVersion.getId(),
packageName, version, null);
+ Map<String, String> contentDetails = new HashMap<String, String>();
+ PackageBits bits = loadPackageBits(packageBitStream, newPackageVersion.getId(),
packageName, version, null,
+ contentDetails);
newPackageVersion.setPackageBits(bits);
- //TODO: write down to file system to calculate length and calculate hash.
- newPackageVersion.setFileSize((long) bits.getBits().length);
- try {
- newPackageVersion.setSHA256(new
MessageDigestGenerator(MessageDigestGenerator.SHA_256)
- .calcDigestString(bits.getBits()));
- } catch (IOException e) {
- newPackageVersion.setSHA256(null);
- }
+
newPackageVersion.setFileSize(Long.valueOf(contentDetails.get(UPLOAD_FILE_SIZE)).longValue());
+ newPackageVersion.setSHA256(contentDetails.get(UPLOAD_SHA256));
newPackageVersion = persistOrMergePackageVersionSafely(newPackageVersion);
existingPackage.addVersion(newPackageVersion);
@@ -1559,7 +1556,7 @@ public class ContentManagerBean implements ContentManagerLocal,
ContentManagerRe
}
//get the data
- PackageBits bits = loadPackageBits(packageBitStream, packageVersion.getId(),
packageName, version, null);
+ PackageBits bits = loadPackageBits(packageBitStream, packageVersion.getId(),
packageName, version, null, null);
packageVersion.setPackageBits(bits);
@@ -1583,11 +1580,12 @@ public class ContentManagerBean implements ContentManagerLocal,
ContentManagerRe
*
* @param packageBitStream
* @param packageVersionId
+ * @param contentDetails
* @return PackageBits ref populated.
*/
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
private PackageBits loadPackageBits(InputStream packageBitStream, int
packageVersionId, String packageName,
- String packageVersion, PackageBits existingPkgBits) {
+ String packageVersion, PackageBits existingPkgBits, Map<String, String>
contentDetails) {
PackageBits bits = null;
//use or instantiate PackageBits instance.
@@ -1608,7 +1606,7 @@ public class ContentManagerBean implements ContentManagerLocal,
ContentManagerRe
bits = entityManager.find(PackageBits.class, bits.getId());
//write data from stream into db using Hibernate Blob mechanism
- updateBlobStream(packageBitStream, bits);
+ updateBlobStream(packageBitStream, bits, contentDetails);
return bits;
}
@@ -1617,8 +1615,9 @@ public class ContentManagerBean implements ContentManagerLocal,
ContentManagerRe
* Blob mechanism with PreparedStatements. As all content into Bits are not stored
as type OID, t
*
* @param stream
+ * @param contentDetails Map to store content details in used in PackageVersioning
*/
- public void updateBlobStream(InputStream stream, PackageBits bits) {
+ public void updateBlobStream(InputStream stream, PackageBits bits, Map<String,
String> contentDetails) {
//TODO: are there any db specific limits that we should check/verify here before
stuffing
// the contents of a stream into the db? Should we just let the db complain and
take care of
@@ -1632,7 +1631,7 @@ public class ContentManagerBean implements ContentManagerLocal,
ContentManagerRe
//persist to db if not already
if (bits.getId() <= 0) {
- entityManager.persist(this);
+ entityManager.persist(bits);
}
//locate the existing PackageBits instance
@@ -1647,7 +1646,6 @@ public class ContentManagerBean implements ContentManagerLocal,
ContentManagerRe
Connection conn = null;
PreparedStatement ps = null;
PreparedStatement ps2 = null;
- DataSource ds = null;
try {
conn = dataSource.getConnection();
@@ -1666,7 +1664,7 @@ public class ContentManagerBean implements ContentManagerLocal,
ContentManagerRe
Blob blb = rs.getBlob(1);
//copy the stream to the Blob
- long transferred = StreamUtil.copy(stream, blb.setBinaryStream(1),
false);
+ long transferred = copyAndDigest(stream, blb.setBinaryStream(1),
false, contentDetails);
stream.close();
//populate the prepared statement for update
@@ -1687,6 +1685,37 @@ public class ContentManagerBean implements ContentManagerLocal,
ContentManagerRe
log.error("An error occurred while updating Blob with stream for
PackageBits[" + bits.getId() + "], "
+ e.getMessage());
e.printStackTrace();
+ } finally {
+ if (ps != null) {
+ try {
+ ps.close();
+ } catch (Exception e) {
+ log.warn("Failed to close prepared statement for package bits
[" + bits.getId() + "]");
+ }
+ }
+
+ if (ps2 != null) {
+ try {
+ ps2.close();
+ } catch (Exception e) {
+ log.warn("Failed to close prepared statement for package bits
[" + bits.getId() + "]");
+ }
+ }
+
+ if (conn != null) {
+ try {
+ conn.close();
+ } catch (Exception e) {
+ log.warn("Failed to close connection for package bits [" +
bits.getId() + "]");
+ }
+ }
+ if (stream != null) {
+ try {
+ stream.close();
+ } catch (Exception e) {
+ log.warn("Failed to close stream to package bits located at
[" + +bits.getId() + "]");
+ }
+ }
}
entityManager.merge(bits);
@@ -1717,7 +1746,6 @@ public class ContentManagerBean implements ContentManagerLocal,
ContentManagerRe
ps.setInt(1, bits.getId());
ResultSet results = ps.executeQuery();
if (results.next()) {
- // results.next();
//retrieve the Blob
Blob blob = results.getBlob(1);
//now copy the contents to the stream passed in
@@ -1728,4 +1756,63 @@ public class ContentManagerBean implements ContentManagerLocal,
ContentManagerRe
ex.printStackTrace();
}
}
+
+ /** Functions same as StreamUtil.copy(), but calculates SHA hash and file size and
write it to
+ * the Map<String,String> passed in.
+ *
+ * @param input
+ * @param output
+ * @param closeStreams
+ * @param contentDetails
+ * @return
+ * @throws RuntimeException
+ */
+ private long copyAndDigest(InputStream input, OutputStream output, boolean
closeStreams,
+ Map<String, String> contentDetails) throws RuntimeException {
+ long numBytesCopied = 0;
+ int bufferSize = 32768;
+ MessageDigestGenerator digestGenerator = null;
+ if (contentDetails != null) {
+ digestGenerator = new
MessageDigestGenerator(MessageDigestGenerator.SHA_256);
+ }
+ try {
+ // make sure we buffer the input
+ input = new BufferedInputStream(input, bufferSize);
+
+ byte[] buffer = new byte[bufferSize];
+
+ for (int bytesRead = input.read(buffer); bytesRead != -1; bytesRead =
input.read(buffer)) {
+ output.write(buffer, 0, bytesRead);
+ numBytesCopied += bytesRead;
+ if (digestGenerator != null) {
+ digestGenerator.add(buffer, 0, bytesRead);
+ }
+ }
+
+ if (contentDetails != null) {//if we're calculating a digest as well
+ contentDetails.put(UPLOAD_FILE_SIZE, String.valueOf(numBytesCopied));
+ contentDetails.put(UPLOAD_SHA256, digestGenerator.getDigestString());
+ }
+ output.flush();
+ } catch (IOException ioe) {
+ throw new RuntimeException("Stream data cannot be copied", ioe);
+ } finally {
+ if (closeStreams) {
+ try {
+ output.close();
+ } catch (IOException ioe2) {
+ log.warn("Streams could not be closed", ioe2);
+ }
+
+ try {
+ input.close();
+ } catch (IOException ioe2) {
+ log.warn("Streams could not be closed", ioe2);
+ }
+ }
+ }
+
+ return numBytesCopied;
+ }
+
}
\ No newline at end of file
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerLocal.java
index 65b0365..0b0e5a5 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerLocal.java
@@ -349,6 +349,6 @@ public interface ContentManagerLocal {
void writeBlobOutToStream(OutputStream stream, PackageBits bits, boolean
closeStreams);
- void updateBlobStream(InputStream stream, PackageBits bits);
+ void updateBlobStream(InputStream stream, PackageBits bits, Map<String, String>
contentDetails);
}
\ No newline at end of file
commit 3617607ac9b93a68a790a8c465679cb74f9f11f1
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Fri Jun 25 13:56:43 2010 +0200
BZ 601176 - Adding support for '*' as both host and port spec in Listen, and
VirtualHost directives.
Enhanced the detection of the address a server or vhost is reachable on, thus
improving the out-of-the-box availability detection.
diff --git
a/modules/plugins/apache/src/main/java/org/rhq/plugins/apache/ApacheServerComponent.java
b/modules/plugins/apache/src/main/java/org/rhq/plugins/apache/ApacheServerComponent.java
index 38ce9dc..0e98116 100644
---
a/modules/plugins/apache/src/main/java/org/rhq/plugins/apache/ApacheServerComponent.java
+++
b/modules/plugins/apache/src/main/java/org/rhq/plugins/apache/ApacheServerComponent.java
@@ -390,7 +390,7 @@ public class ApacheServerComponent implements
AugeasRHQComponent<PlatformCompone
ApacheParser parser = new
ApacheParserImpl(parserTree,getServerRoot().getAbsolutePath());
ApacheConfigReader.buildTree(getHttpdConfFile().getAbsolutePath(),
parser);
- addr = getAddressUtility().getVirtualHostSampleAddress(parserTree,
vhostDefs[0], serverName);
+ addr = getAddressUtility().getVirtualHostSampleAddress(parserTree,
vhostDefs[0], serverName, false);
} catch (Exception e) {
report.setStatus(CreateResourceStatus.FAILURE);
report.setErrorMessage("Wrong format of virtual host resource
name.");
diff --git
a/modules/plugins/apache/src/main/java/org/rhq/plugins/apache/ApacheServerDiscoveryComponent.java
b/modules/plugins/apache/src/main/java/org/rhq/plugins/apache/ApacheServerDiscoveryComponent.java
index 8f6deb7..edffb23 100644
---
a/modules/plugins/apache/src/main/java/org/rhq/plugins/apache/ApacheServerDiscoveryComponent.java
+++
b/modules/plugins/apache/src/main/java/org/rhq/plugins/apache/ApacheServerDiscoveryComponent.java
@@ -235,7 +235,7 @@ public class ApacheServerDiscoveryComponent implements
ResourceDiscoveryComponen
* @throws Exception
*/
private static String getUrl(ApacheDirectiveTree serverConfig, String version) throws
Exception {
- Address addr =
HttpdAddressUtility.get(version).getMainServerSampleAddress(serverConfig);
+ Address addr =
HttpdAddressUtility.get(version).getMainServerSampleAddress(serverConfig, null, 0);
return addr == null ? null : "http://" + addr.host + ":" +
addr.port + "/";
}
diff --git
a/modules/plugins/apache/src/main/java/org/rhq/plugins/apache/ApacheVirtualHostServiceComponent.java
b/modules/plugins/apache/src/main/java/org/rhq/plugins/apache/ApacheVirtualHostServiceComponent.java
index 533ebd4..e44fef5 100644
---
a/modules/plugins/apache/src/main/java/org/rhq/plugins/apache/ApacheVirtualHostServiceComponent.java
+++
b/modules/plugins/apache/src/main/java/org/rhq/plugins/apache/ApacheVirtualHostServiceComponent.java
@@ -516,11 +516,17 @@ public class ApacheVirtualHostServiceComponent implements
ResourceComponent<Apac
ApacheServerComponent parent = resourceContext.getParentResourceComponent();
if (vhostAddressStrings.length == 1 &&
MAIN_SERVER_RESOURCE_KEY.equals(vhostAddressStrings[0])) {
-
vhostAddresses.add(parent.getAddressUtility().getMainServerSampleAddress(tree));
+ HttpdAddressUtility.Address serverAddr =
parent.getAddressUtility().getMainServerSampleAddress(tree, null, 0);
+ if (serverAddr != null) {
+ vhostAddresses.add(serverAddr);
+ }
} else {
for (int i = 0; i < vhostAddressStrings.length; ++i) {
-
vhostAddresses.add(parent.getAddressUtility().getVirtualHostSampleAddress(tree,
vhostAddressStrings[i],
- vhostServerName));
+ HttpdAddressUtility.Address vhostAddr =
parent.getAddressUtility().getVirtualHostSampleAddress(tree, vhostAddressStrings[i],
+ vhostServerName, true);
+ if (vhostAddr != null) {
+ vhostAddresses.add(vhostAddr);
+ }
}
}
@@ -540,7 +546,10 @@ public class ApacheVirtualHostServiceComponent implements
ResourceComponent<Apac
String fullPort = portValue.toString();
int snmpPort =
Integer.parseInt(fullPort.substring(fullPort.lastIndexOf(".") + 1));
- if (snmpPort == 0) snmpPort = 80;
+
+ //the snmp represent wildcard ports as 0 and so does
HttpdAddressUtility.Address class
+ //we can therefore match the Address generated from the snmp values and
the Addresses
+ //stored for this vhost directly.
HttpdAddressUtility.Address snmpAddress = new
HttpdAddressUtility.Address(snmpHost, snmpPort);
@@ -562,8 +571,10 @@ public class ApacheVirtualHostServiceComponent implements
ResourceComponent<Apac
}
private int matchRate(List<HttpdAddressUtility.Address> addresses,
HttpdAddressUtility.Address addressToCheck) throws UnknownHostException {
- if (addresses.contains(addressToCheck)) {
- return 3;
+ for(HttpdAddressUtility.Address a : addresses) {
+ if (HttpdAddressUtility.isAddressConforming(addressToCheck, a.host, a.port))
{
+ return 3;
+ }
}
//try to get the IP of the address to check
@@ -572,8 +583,10 @@ public class ApacheVirtualHostServiceComponent implements
ResourceComponent<Apac
for(InetAddress ip : ipAddresses) {
HttpdAddressUtility.Address newCheck = new
HttpdAddressUtility.Address(ip.getHostAddress(), addressToCheck.port);
- if (addresses.contains(newCheck)) {
- return 2;
+ for(HttpdAddressUtility.Address a : addresses) {
+ if (HttpdAddressUtility.isAddressConforming(newCheck, a.host, a.port)) {
+ return 2;
+ }
}
}
diff --git
a/modules/plugins/apache/src/main/java/org/rhq/plugins/apache/ApacheVirtualHostServiceDiscoveryComponent.java
b/modules/plugins/apache/src/main/java/org/rhq/plugins/apache/ApacheVirtualHostServiceDiscoveryComponent.java
index 75e9f35..b308dd4 100644
---
a/modules/plugins/apache/src/main/java/org/rhq/plugins/apache/ApacheVirtualHostServiceDiscoveryComponent.java
+++
b/modules/plugins/apache/src/main/java/org/rhq/plugins/apache/ApacheVirtualHostServiceDiscoveryComponent.java
@@ -49,6 +49,8 @@ import org.rhq.plugins.apache.util.HttpdAddressUtility.Address;
*/
public class ApacheVirtualHostServiceDiscoveryComponent implements
ResourceDiscoveryComponent<ApacheServerComponent> {
+ private static final String COULD_NOT_DETERMINE_THE_VIRTUAL_HOST_ADDRESS = "***
Could not determine the virtual host address ***";
+
public static final String LOGS_DIRECTORY_NAME = "logs";
private static final String RT_LOG_FILE_NAME_SUFFIX = "_rt.log";
@@ -97,12 +99,38 @@ public class ApacheVirtualHostServiceDiscoveryComponent implements
ResourceDisco
Configuration pluginConfiguration = context.getDefaultPluginConfiguration();
- Address address =
serverComponent.getAddressUtility().getVirtualHostSampleAddress(tree, firstAddress,
serverName);
+ Address address =
serverComponent.getAddressUtility().getVirtualHostSampleAddress(tree, firstAddress,
serverName, false);
if (address != null) {
- String url = "http://" + address.host + ":" +
address.port + "/";
+ String hostToPing = address.host;
+ int portToPing = address.port;
+ if (address.isPortWildcard()) {
+ Address serverAddress =
serverComponent.getAddressUtility().getMainServerSampleAddress(tree, hostToPing, 0);
+ if (serverAddress != null) {
+ portToPing = serverAddress.port;
+ } else {
+ portToPing = Address.PORT_WILDCARD_VALUE;
+ }
+ }
+ if (address.isHostDefault() || address.isHostWildcard()) {
+ Address serverAddress =
serverComponent.getAddressUtility().getMainServerSampleAddress(tree, null, portToPing);
+
+ if (serverAddress != null) {
+ hostToPing = serverAddress.host;
+ } else {
+ hostToPing = null;
+ }
+ }
+
+ String url;
+ if (hostToPing != null && portToPing !=
Address.PORT_WILDCARD_VALUE && portToPing != Address.NO_PORT_SPECIFIED_VALUE) {
+ url = "http://" + hostToPing + ":" + portToPing +
"/";
+ } else {
+ url = COULD_NOT_DETERMINE_THE_VIRTUAL_HOST_ADDRESS;
+ }
PropertySimple urlProp = new
PropertySimple(ApacheVirtualHostServiceComponent.URL_CONFIG_PROP, url);
pluginConfiguration.put(urlProp);
+
}
File rtLogFile = new File(logsDir, address.host + address.port +
RT_LOG_FILE_NAME_SUFFIX);
@@ -113,7 +141,7 @@ public class ApacheVirtualHostServiceDiscoveryComponent implements
ResourceDisco
String resourceName;
if (serverName != null) {
- resourceName = address.host + ":" + address.port;
+ resourceName = address.toString();
} else {
resourceName = resourceKey;
}
diff --git
a/modules/plugins/apache/src/main/java/org/rhq/plugins/apache/util/HttpdAddressUtility.java
b/modules/plugins/apache/src/main/java/org/rhq/plugins/apache/util/HttpdAddressUtility.java
index 1aea3b2..261c446 100644
---
a/modules/plugins/apache/src/main/java/org/rhq/plugins/apache/util/HttpdAddressUtility.java
+++
b/modules/plugins/apache/src/main/java/org/rhq/plugins/apache/util/HttpdAddressUtility.java
@@ -25,11 +25,11 @@ package org.rhq.plugins.apache.util;
import java.net.InetAddress;
import java.net.UnknownHostException;
+import java.util.ArrayList;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.rhq.augeas.node.AugeasNode;
import org.rhq.plugins.apache.parser.ApacheDirective;
import org.rhq.plugins.apache.parser.ApacheDirectiveTree;
@@ -41,71 +41,54 @@ import org.rhq.plugins.apache.parser.ApacheDirectiveTree;
public enum HttpdAddressUtility {
APACHE_1_3 {
- public Address getMainServerSampleAddress(ApacheDirectiveTree ag) {
+ public Address getMainServerSampleAddress(ApacheDirectiveTree ag, String
limitToHost, int limitToPort) {
try {
- Address addr = null;
+ List<ApacheDirective> ports = ag.search("/Port");
+ List<ApacheDirective> bindAddresses =
ag.search("/BindAddress");
+ List<ApacheDirective> listens = ag.search("/Listen");
- //check if there is a ServerName directive
- List<ApacheDirective> serverNameNodes =
ag.search("/ServerName");
-
- if (serverNameNodes.size() > 0) {
- String serverName = serverNameNodes.get(0).getValuesAsString();
- addr = Address.parse(serverName);
- } else {
- List<ApacheDirective> ports = ag.search("/Port");
- List<ApacheDirective> bindAddresses =
ag.search("/BindAddress");
- List<ApacheDirective> listens =
ag.search("/Listen");
-
- String port = null;
- String bindAddress = null;
- String listen = null;
-
- if (ports.size() > 0) {
- List<String>values = ports.get(0).getValues();
- if (values.size()>0)
- port = values.get(0);
- }
-
- if (bindAddresses.size() > 0) {
- List<String>values = bindAddresses.get(0).getValues();
- if (values.size()>0)
- bindAddress = values.get(0);
- }
-
- if (listens.size() > 0) {
- List<String>values = listens.get(0).getValues();
- if (values.size()>0)
- listen = values.get(0);
- }
-
- String host = null;
- int portToUse = -1;
-
- if (bindAddress != null &&
!"*".equals(bindAddress)) {
- host = bindAddress;
- }
-
- if (port != null) {
- portToUse = Integer.parseInt(port);
+ String port = "80"; //this is the default in apache 1.3
+ String bindAddress = null;
+
+ List<Address> addressesToMatch = new ArrayList<Address>();
+
+ if (ports.size() > 0) {
+ List<String>values = ports.get(0).getValues();
+ if (values.size()>0)
+ port = values.get(0);
+ }
+
+ if (bindAddresses.size() > 0) {
+ List<String>values = bindAddresses.get(0).getValues();
+ if (values.size()>0)
+ bindAddress = values.get(0);
+ }
+
+ //listen directives take precedence over port/bindaddress combo
+ if (listens.size() > 0) {
+ for(ApacheDirective l : listens) {
+ addressesToMatch.add(parseListen(l.getValues().get(0)));
}
-
- if (listen != null) {
- Address tmp = Address.parse(listen);
- host = tmp.host;
- portToUse = tmp.port;
- if (portToUse == -1) {
- host = null;
- portToUse = Integer.parseInt(tmp.host);
+ } else {
+ addressesToMatch.add(new Address(bindAddress,
Integer.parseInt(port)));
+ }
+
+ for (Address address : addressesToMatch) {
+ if (isAddressConforming(address, limitToHost, limitToPort)) {
+ if (!address.isPortDefined() || address.isPortWildcard()) {
+ address.port = 80;
}
+ if (address.host == null || address.isHostDefault() ||
address.isHostWildcard()) {
+ address = getLocalhost(address.port);
+ }
+
+ updateWithServerName(address, ag);
+
+ return address;
}
-
- if (host == null) {
- host = InetAddress.getLocalHost().getHostName();
- }
-
- addr = new Address(host, portToUse);
}
- return addr;
+
+ return null;
} catch (Exception e) {
log.info("Failed to obtain main server address. Is augeas installed
and correct lens in use?");
@@ -114,34 +97,23 @@ public enum HttpdAddressUtility {
}
},
APACHE_2_x {
- public Address getMainServerSampleAddress(ApacheDirectiveTree ag) {
+ public Address getMainServerSampleAddress(ApacheDirectiveTree ag, String
limitToHost, int limitToPort) {
try {
- Address addr = null;
-
- //check if there is a ServerName directive
- List<ApacheDirective> serverNameNodes =
ag.search("/ServerName");
-
- if (serverNameNodes.size() > 0) {
- String serverName = serverNameNodes.get(0).getValuesAsString();
- addr = Address.parse(serverName);
- } else {
- //there has to be at least one Listen directive
- ApacheDirective listen = ag.search("/Listen").get(0);
-
- String address = listen.getValues().get(0);
-
- addr = Address.parse(address);
-
- if (addr.port == -1) {
- addr.port = Integer.parseInt(addr.host);
- try {
- addr.host = InetAddress.getLocalHost().getHostName();
- } catch (UnknownHostException e) {
- throw new IllegalStateException("Unable to get the
localhost address.", e);
+ for(ApacheDirective n : ag.search("/Listen")) {
+ Address addr = parseListen(n.getValues().get(0));
+ if (isAddressConforming(addr, limitToHost, limitToPort)) {
+ if (addr.host == null || addr.isHostDefault() ||
addr.isHostWildcard()) {
+ addr = getLocalhost(addr.port);
}
+
+ updateWithServerName(addr, ag);
+
+ return addr;
}
}
- return addr;
+
+ //there has to be at least one Listen directive
+ throw new IllegalStateException("Could find a listen address on port
" + limitToPort);
} catch (Exception e) {
log.info("Failed to obtain main server address. Is augeas installed
and correct lens in use?");
@@ -159,7 +131,12 @@ public enum HttpdAddressUtility {
public static class Address {
public String host;
public int port = -1;
-
+
+ public static final String WILDCARD = "*";
+ public static final String DEFAULT_HOST = "_default_";
+ public static final int PORT_WILDCARD_VALUE = 0;
+ public static final int NO_PORT_SPECIFIED_VALUE = -1;
+
public Address(String host, int port) {
this.host = host;
this.port = port;
@@ -174,21 +151,45 @@ public enum HttpdAddressUtility {
*/
public static Address parse(String address) {
int lastColonIdx = address.lastIndexOf(':');
- if (lastColonIdx == -1) {
+ if (lastColonIdx == NO_PORT_SPECIFIED_VALUE) {
return new Address(address, -1);
} else {
int lastRightBracketPos = address.lastIndexOf(']');
if (lastColonIdx > lastRightBracketPos) {
String host = address.substring(0, lastColonIdx);
- int port = Integer.parseInt(address.substring(lastColonIdx + 1));
+ String portSpec = address.substring(lastColonIdx + 1);
+
+ int port = NO_PORT_SPECIFIED_VALUE;
+ if (WILDCARD.equals(portSpec)) {
+ port = PORT_WILDCARD_VALUE;
+ } else {
+ port = Integer.parseInt(portSpec);
+ }
+
return new Address(host, port);
} else {
//this is an IP6 address without a port spec
- return new Address(address, -1);
+ return new Address(address, NO_PORT_SPECIFIED_VALUE);
}
}
}
+ public boolean isPortWildcard() {
+ return port == PORT_WILDCARD_VALUE;
+ }
+
+ public boolean isPortDefined() {
+ return port != NO_PORT_SPECIFIED_VALUE;
+ }
+
+ public boolean isHostWildcard() {
+ return WILDCARD.equals(host);
+ }
+
+ public boolean isHostDefault() {
+ return DEFAULT_HOST.equals(host);
+ }
+
@Override
public int hashCode() {
int hash = port;
@@ -210,15 +211,28 @@ public enum HttpdAddressUtility {
return this.host.equals(o.host) && this.port == o.port;
}
}
+
+ @Override
+ public String toString() {
+ if (port == NO_PORT_SPECIFIED_VALUE) return host;
+ else {
+ String portSpec = port == PORT_WILDCARD_VALUE ? WILDCARD :
String.valueOf(port);
+
+ return host + ":" + portSpec;
+ }
+ }
}
/**
* This just constructs a first available address under which the server or one of
its virtual hosts can be reached.
*
* @param ag the tree of the httpd configuration
+ * @param limitToHost if non-null and different from {@link Address#DEFAULT_HOST} and
{@link Address#WILDCARD},
+ * the sample address is looked for only for the given host
+ * @param limitToPort if > 0, the sample address is looked for only for the given
port
* @return the address or null on failure
*/
- public abstract Address getMainServerSampleAddress(ApacheDirectiveTree ag);
+ public abstract Address getMainServerSampleAddress(ApacheDirectiveTree ag, String
limitToHost, int limitToPort);
/**
* This constructs an address on which given virtual host can be accessed.
@@ -226,29 +240,22 @@ public enum HttpdAddressUtility {
* @param ag the augeas tree of the httpd configuration
* @param virtualHost the port or address:port of the virtual host
* @param serverName the server name for the namebased virtual hosts (or null if the
virtual host is ip based)
- *
+ * @param snmpModuleCompatibleMode if true, generates a sample address in the same
way as snmp module. Namely
+ * deals with the host name wildcard the same way as snmp module (i.e. by assuming it
means "localhost", even though it doesn't have to).
* @return the address on which the virtual host can be accessed or null on error
*/
- public Address getVirtualHostSampleAddress(ApacheDirectiveTree ag, String
virtualHost, String serverName) {
+ public Address getVirtualHostSampleAddress(ApacheDirectiveTree ag, String
virtualHost, String serverName, boolean snmpModuleCompatibleMode) {
Address addr = Address.parse(virtualHost);
- if (addr.port == -1) {
- //just port specified
- Address serverAddr = getMainServerSampleAddress(ag);
-
+ if (addr.isHostDefault() || addr.isHostWildcard()) {
+ Address serverAddr = null;
+ if (snmpModuleCompatibleMode) {
+ serverAddr = getLocalhost(addr.port);
+ } else {
+ serverAddr = getMainServerSampleAddress(ag, null, addr.port);
+ }
if (serverAddr == null)
return null;
-
- addr.port = Integer.parseInt(addr.host);
addr.host = serverAddr.host;
- } else {
- String host = addr.host;
- if ("*".equals(host) || "_default_".equals(host)) {
- Address serverAddr = getMainServerSampleAddress(ag);
- if (serverAddr == null)
- return null;
- host = serverAddr.host;
- }
- addr.host = host;
}
if (serverName != null) {
@@ -259,9 +266,69 @@ public enum HttpdAddressUtility {
} else {
addr.host = serverName;
}
- addr.host = addr.host.replaceAll("\\*",
"replaced-wildcard");
}
return addr;
}
+
+ private static Address parseListen(String listenValue) {
+ Address ret = Address.parse(listenValue);
+ if (!ret.isPortDefined()) {
+ try {
+ ret.port = Integer.parseInt(ret.host);
+ } catch (NumberFormatException e) {
+ return null;
+ }
+ ret.host = null;
+ }
+
+ return ret;
+ }
+
+ public static boolean isAddressConforming(Address listen, String limitingHost, int
limitingPort) {
+ if (Address.DEFAULT_HOST.equals(limitingHost) ||
Address.WILDCARD.equals(limitingHost)) {
+ limitingHost = null;
+ }
+
+ boolean hostOk = limitingHost == null;
+ boolean portOk = limitingPort <= 0;
+
+ //listen.host == null means that server listens on all addresses
+ if (!hostOk && (listen.host == null || limitingHost.equals(listen.host)))
{
+ hostOk = true;
+ }
+
+ if (!portOk && limitingPort == listen.port) {
+ portOk = true;
+ }
+
+ return hostOk && portOk;
+ }
+
+ private static Address getLocalhost(int port) {
+ try {
+ return new Address(InetAddress.getLocalHost().getHostAddress(), port);
+ } catch (UnknownHostException e) {
+ //well, this is bad, we can get address of the localhost. let's use the
force...
+ return new Address("127.0.0.1", port);
+ }
+ }
+
+ private static void updateWithServerName(Address address, ApacheDirectiveTree config)
throws UnknownHostException {
+ //check if there is a ServerName directive
+ List<ApacheDirective> serverNameNodes =
config.search("/ServerName");
+
+ //if there is a ServerName directive, check that the address
+ //we're returning indeed corresponds to it. This might not
+ //be the case if the server listens on more than one interfaces.
+ if (serverNameNodes.size() > 0) {
+ String serverName = serverNameNodes.get(0).getValuesAsString();
+ InetAddress addrFromServerName = InetAddress.getByName(serverName);
+ InetAddress addrFromAddress = InetAddress.getByName(address.host);
+
+ if (addrFromAddress.equals(addrFromServerName)) {
+ address.host = serverName;
+ }
+ }
+ }
}
diff --git
a/modules/plugins/augeas/src/main/java/org/rhq/rhqtransform/impl/PluginDescriptorBasedAugeasConfiguration.java
b/modules/plugins/augeas/src/main/java/org/rhq/rhqtransform/impl/PluginDescriptorBasedAugeasConfiguration.java
index 8f3e470..cd15ef2 100644
---
a/modules/plugins/augeas/src/main/java/org/rhq/rhqtransform/impl/PluginDescriptorBasedAugeasConfiguration.java
+++
b/modules/plugins/augeas/src/main/java/org/rhq/rhqtransform/impl/PluginDescriptorBasedAugeasConfiguration.java
@@ -129,7 +129,7 @@ public class PluginDescriptorBasedAugeasConfiguration implements
AugeasConfigura
}
public static List<String> getGlobList(PropertySimple list) {
- if (list != null) {
+ if (list != null && list.getStringValue() != null) {
return Arrays.asList(list.getStringValue().split("\\s*\\|\\s*"));
} else {
return Collections.emptyList();
commit 4876619ad4df851263624fcf54687c23559b8eaf
Author: Joseph Marques <joseph(a)redhat.com>
Date: Fri Jun 25 00:43:57 2010 -0400
BZ-597174: make category filter more lenient for group-based searching
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/search/translation/GroupSearchTranslator.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/search/translation/GroupSearchTranslator.java
index a754f43..5a603ed 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/search/translation/GroupSearchTranslator.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/search/translation/GroupSearchTranslator.java
@@ -1,5 +1,6 @@
package org.rhq.enterprise.server.search.translation;
+import org.rhq.core.domain.resource.ResourceCategory;
import org.rhq.enterprise.server.search.translation.antlr.RHQLAdvancedTerm;
import org.rhq.enterprise.server.search.translation.antlr.RHQLComparisonOperator;
import org.rhq.enterprise.server.search.translation.jpql.SearchFragment;
@@ -41,7 +42,7 @@ public class GroupSearchTranslator extends AbstractSearchTranslator {
} else if (path.equals("category")) {
return new SearchFragment(SearchFragmentType.WHERE_CLAUSE, //
- getJPQLForString(alias + ".resourceType.category", op,
filter));
+ getJPQLForEnum(alias + ".resourceType.category", op, filter,
ResourceCategory.class, false));
} else if (path.equals("type")) {
return new SearchFragment(SearchFragmentType.WHERE_CLAUSE, //
commit cba42b61bc8ba3b9b2aaf1afe76754f0f398d850
Author: Joseph Marques <joseph(a)redhat.com>
Date: Fri Jun 25 00:38:22 2010 -0400
BZ-597174: make category filter more lenient for resource-based searching
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/search/translation/ResourceSearchTranslator.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/search/translation/ResourceSearchTranslator.java
index 4ed1607..579184b 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/search/translation/ResourceSearchTranslator.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/search/translation/ResourceSearchTranslator.java
@@ -2,6 +2,7 @@ package org.rhq.enterprise.server.search.translation;
import org.rhq.core.domain.alert.AlertPriority;
import org.rhq.core.domain.measurement.AvailabilityType;
+import org.rhq.core.domain.resource.ResourceCategory;
import org.rhq.core.domain.search.assist.AlertSearchAssistParam;
import org.rhq.enterprise.server.search.translation.antlr.RHQLAdvancedTerm;
import org.rhq.enterprise.server.search.translation.antlr.RHQLComparisonOperator;
@@ -24,7 +25,7 @@ public class ResourceSearchTranslator extends AbstractSearchTranslator
{
} else if (path.equals("category")) {
return new SearchFragment(SearchFragmentType.WHERE_CLAUSE, //
- getJPQLForString(alias + ".resourceType.category", op,
filter));
+ getJPQLForEnum(alias + ".resourceType.category", op, filter,
ResourceCategory.class, false));
} else if (path.equals("type")) {
return new SearchFragment(SearchFragmentType.WHERE_CLAUSE, //
commit 9da7f8614a2aceceba960fee8a876e4b0b98df3a
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri Jun 25 00:26:37 2010 -0400
include command-line Ant bundle deployer zipfile in rhq-downloads dir and add download
link on downloads.xhtml page
diff --git
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/admin/DownloadsUIBean.java
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/admin/DownloadsUIBean.java
index 56e38db..bad2170 100644
---
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/admin/DownloadsUIBean.java
+++
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/admin/DownloadsUIBean.java
@@ -1,6 +1,6 @@
/*
* RHQ Management Platform
- * Copyright (C) 2005-2008 Red Hat, Inc.
+ * Copyright (C) 2005-2010 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
@@ -29,8 +29,8 @@ import java.util.Properties;
import org.rhq.enterprise.server.util.LookupUtil;
/**
- * Provides data to the page that allows a user to download the agent update binary,
client distribution
- * or connector binaries.
+ * Provides data to the page that allows a user to download the agent update binary,
client distribution,
+ * connector binaries, or command-line bundle deployer.
*
* @author Greg Hinkle
*/
@@ -38,32 +38,22 @@ public class DownloadsUIBean implements Serializable {
private static final long serialVersionUID = 1L;
public Properties getAgentVersionProperties() {
-
try {
File file = LookupUtil.getAgentManager().getAgentUpdateVersionFile();
- Properties p = new Properties();
- p.load(new FileInputStream(file));
+ Properties props = new Properties();
+ props.load(new FileInputStream(file));
- return p;
+ return props;
} catch (Exception e) {
throw new RuntimeException("Agent download information not
available", e);
}
-
}
public List<File> getConnectorDownloadFiles() throws Exception {
File downloadDir = getConnectorDownloadsDir();
- File[] filesArray = downloadDir.listFiles();
- List<File> files = new ArrayList<File>();
- if (filesArray != null) {
- for (File file : filesArray) {
- if (file.isFile()) {
- files.add(file);
- }
- }
- }
+ List<File> files = getFiles(downloadDir);
return files;
}
@@ -71,7 +61,7 @@ public class DownloadsUIBean implements Serializable {
File serverHomeDir = LookupUtil.getCoreServer().getJBossServerHomeDir();
File downloadDir = new File(serverHomeDir,
"deploy/rhq.ear/rhq-downloads/connectors");
if (!downloadDir.exists()) {
- throw new FileNotFoundException("Missing connectors downloads directory
at [" + downloadDir + "]");
+ throw new FileNotFoundException("Missing connectors download directory
at [" + downloadDir + "]");
}
return downloadDir;
}
@@ -96,4 +86,32 @@ public class DownloadsUIBean implements Serializable {
}
}
+ public String getBundleDeployerDownloadFileName() throws Exception {
+ File downloadDir = getBundleDeployerDownloadDir();
+ List<File> files = getFiles(downloadDir);
+ File file = files.get(0);
+ return file.getName();
+ }
+
+ private File getBundleDeployerDownloadDir() throws Exception {
+ File serverHomeDir = LookupUtil.getCoreServer().getJBossServerHomeDir();
+ File downloadDir = new File(serverHomeDir,
"deploy/rhq.ear/rhq-downloads/bundle-deployer");
+ if (!downloadDir.exists()) {
+ throw new FileNotFoundException("Missing bundle deployer download
directory at [" + downloadDir + "]");
+ }
+ return downloadDir;
+ }
+
+ private static List<File> getFiles(File downloadDir) {
+ File[] filesArray = downloadDir.listFiles();
+ List<File> files = new ArrayList<File>();
+ if (filesArray != null) {
+ for (File file : filesArray) {
+ if (file.isFile()) {
+ files.add(file);
+ }
+ }
+ }
+ return files;
+ }
}
diff --git a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/admin/downloads.xhtml
b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/admin/downloads.xhtml
index 9ad82f4..834158c 100644
--- a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/admin/downloads.xhtml
+++ b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/admin/downloads.xhtml
@@ -28,7 +28,6 @@
<ui:define name="body">
-
<rich:panel>
<f:facet name="header">
<h:outputText value="Agent Download"/>
@@ -51,8 +50,6 @@
</h:panelGroup>
-
-
<h3>Agent Install</h3>
<p>
@@ -75,7 +72,6 @@
where the existing agent is, the default is:
rhq-agent
This is mutually exclusive of --install
-
</p>
@@ -113,6 +109,21 @@
</rich:panel>
+ <rich:panel>
+ <f:facet name="header">
+ <h:outputText value="Bundle Deployer Download"/>
+ </f:facet>
+
+ <h:panelGrid columns="1" width="100%">
+
+ <h:outputLink
value="/downloads/bundle-deployer/#{DownloadsUIBean.bundleDeployerDownloadFileName}">
+ <h:graphicImage value="/images/icons/Save_32.png"/>
+ <h:outputText value="Download Bundle Deployer"/>
+ </h:outputLink>
+
+ </h:panelGrid>
+ </rich:panel>
+
</ui:define>
</ui:composition>
-</html>
\ No newline at end of file
+</html>
diff --git a/modules/enterprise/server/container/src/main/scripts/rhq-container.build.xml
b/modules/enterprise/server/container/src/main/scripts/rhq-container.build.xml
index 4e7a944..238f6d2 100644
--- a/modules/enterprise/server/container/src/main/scripts/rhq-container.build.xml
+++ b/modules/enterprise/server/container/src/main/scripts/rhq-container.build.xml
@@ -351,6 +351,7 @@
<mkdir
dir="${jboss.deploy.dir}/${rhq.earName}/rhq-downloads/rhq-client" />
<mkdir
dir="${jboss.deploy.dir}/${rhq.earName}/rhq-downloads/rhq-plugins" />
<mkdir
dir="${jboss.deploy.dir}/${rhq.earName}/rhq-downloads/connectors" />
+ <mkdir
dir="${jboss.deploy.dir}/${rhq.earName}/rhq-downloads/bundle-deployer" />
<!-- deploy the agent update binary to the downloads location -->
<echo>Deploying the latest agent update binary and renaming it
rhq-enterprise-agent-${rhq.version}.jar</echo>
@@ -366,6 +367,13 @@
verbose="true"
failonerror="false"/>
+ <!-- deploy the command-line bundle deployer (Ant launcher) to the downloads
location. -->
+ <echo>Deploying the latest command-line bundle deployer</echo>
+ <copy
file="${settings.localRepository}/org/rhq/rhq-ant-bundle-common/${rhq.version}/rhq-ant-bundle-common-${rhq.version}.zip"
+
tofile="${jboss.deploy.dir}/${rhq.earName}/rhq-downloads/bundle-deployer/rhq-bundle-deployer-${rhq.version}.zip"
+ verbose="true"
+ failonerror="false"/>
+
<!-- optionally package the connectors -->
<antcall target="package-connectors" />
commit 31ae5bb82c7c47f807e6c9bb209dbe649d97ea3b
Author: Joseph Marques <joseph(a)redhat.com>
Date: Thu Jun 24 22:26:33 2010 -0400
remove unnecessary reloading of the group definition during updates
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 ebfeccd..ee0dae9 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
@@ -269,6 +269,7 @@ public class GroupDefinitionManagerBean implements
GroupDefinitionManagerLocal {
long startTime = System.currentTimeMillis();
GroupDefinition groupDefinition = getById(groupDefinitionId);
+ groupDefinition.setLastCalculationTime(System.currentTimeMillis()); // we're
calculating now
ExpressionEvaluator evaluator = new ExpressionEvaluator();
for (String expression : groupDefinition.getExpressionAsList()) {
@@ -320,10 +321,6 @@ public class GroupDefinitionManagerBean implements
GroupDefinitionManagerLocal {
groupDefinitionManager.removeManagedResource_helper(subject,
groupDefinitionId, doomedGroupId);
}
- // re-attach the group, because it was cleared from the session during the
callout to the helper
- groupDefinition = getById(groupDefinitionId);
- groupDefinition.setLastCalculationTime(System.currentTimeMillis());
-
long endTime = System.currentTimeMillis();
log.debug("calculateGroupMembership took " + (endTime - startTime) +
" millis");
commit 5705abb4352b142bfe840c0dc55e6d02d82de761
Author: Joseph Marques <joseph(a)redhat.com>
Date: Thu Jun 24 18:22:40 2010 -0400
BZ-601240: more graceful handling of exceptional conditions when loading
SearchSuggestions
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/search/execution/SearchAssistManager.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/search/execution/SearchAssistManager.java
index 435e073..34eed0e 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/search/execution/SearchAssistManager.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/search/execution/SearchAssistManager.java
@@ -358,6 +358,14 @@ public class SearchAssistManager {
public List<SearchSuggestion> getSuggestions(String expression, int caretPos)
{
List<SearchSuggestion> results = new ArrayList<SearchSuggestion>();
+ if (subject == null) {
+ // likely a client's misuse of the API, but gracefully return no saved
searches if the user is not found
+ SearchSuggestion footerMessage = new
SearchSuggestion(Kind.InstructionalTextComment,
+ "Error retrieving saved searches, please refresh page");
+ results.add(footerMessage);
+ return results;
+ }
+
try {
if (expression == null) {
expression = "";
commit e2d53dc7bc6b28181bf93392229a49b8df516f71
Author: Joseph Marques <joseph(a)redhat.com>
Date: Thu Jun 24 17:22:00 2010 -0400
get rid of massive (now obsolete) native SQL solution for retrieving
ResourceGroupComposites for some GroupDefinition
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/group/GroupDefinition.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/group/GroupDefinition.java
index d4c7ada..48e35cd 100644
---
a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/group/GroupDefinition.java
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/group/GroupDefinition.java
@@ -52,10 +52,6 @@ import org.rhq.core.domain.util.StringUtils;
+ "SELECT gd " //
+ " FROM GroupDefinition AS gd " //
+ " WHERE LOWER(gd.name) = LOWER(:name)"), //
- @NamedQuery(name = GroupDefinition.QUERY_FIND_MEMBERS_count, query = "" //
- + "SELECT COUNT(rg) " //
- + " FROM ResourceGroup rg " //
- + " WHERE rg.groupDefinition.id = :groupDefinitionId "), //
@NamedQuery(name = GroupDefinition.QUERY_FIND_ALL_MEMBERS, query = "" //
+ "SELECT rg " //
+ " FROM ResourceGroup rg " //
@@ -96,66 +92,12 @@ public class GroupDefinition implements Serializable {
public static final String QUERY_FIND_ALL = "GroupDefinition.findAll";
public static final String QUERY_FIND_BY_NAME =
"GroupDefinition.findByName";
public static final String QUERY_FIND_MEMBERS =
"GroupDefinition.findMembers";
- public static final String QUERY_FIND_MEMBERS_count =
"GroupDefinition.findMembers_count";
public static final String QUERY_FIND_ALL_MEMBERS =
"GroupDefinition.findAllMembers_admin";
public static final String QUERY_FIND_MANAGED_RESOURCE_GROUP_IDS_ADMIN =
"GroupDefinition.findManagedResourceGroupIds_admin";
public static final String QUERY_FIND_MANAGED_RESOURCE_GROUP_SIZE_ADMIN =
"GroupDefinition.findManagedResourceGroupSize_admin";
public static final String QUERY_FIND_IDS_FOR_RECALCULATION =
"GroupDefinition.findIdsForRecalculation_admin";
public static final String QUERY_FIND_ALL_RECALCULATING =
"GroupDefinition.findAllRecalculating_admin";
- public static final String QUERY_NATIVE_FIND_MEMBERS = "" //
- + " SELECT "
- + " ( SELECT COUNT(eresAvail.ID) "
- + " FROM rhq_resource_avail eresAvail "
- + " INNER JOIN rhq_resource eres "
- + " ON eresAvail.resource_id = eres.id "
- + " INNER JOIN rhq_resource_group_res_exp_map expMap "
- + " ON eres.id = expMap.resource_id "
- + " WHERE expMap.resource_group_id = rg.id "
- + " ) as explicitCount, "
- + "" //
- + " ( SELECT AVG(eresAvail.availability_type) "
- + " FROM rhq_resource_avail eresAvail "
- + " INNER JOIN rhq_resource eres "
- + " ON eresAvail.resource_id = eres.id "
- + " INNER JOIN rhq_resource_group_res_exp_map expMap "
- + " ON eres.id = expMap.resource_id "
- + " WHERE expMap.resource_group_id = rg.id "
- + " ) as explicitAvail, "
- + "" //
- + " ( SELECT COUNT(iresAvail.ID) "
- + " FROM rhq_resource_avail iresAvail "
- + " INNER JOIN rhq_resource ires "
- + " ON iresAvail.resource_id = ires.id "
- + " INNER JOIN rhq_resource_group_res_imp_map impMap "
- + " ON ires.id = impMap.resource_id "
- + " WHERE impMap.resource_group_id = rg.id "
- + " ) as implicitCount, "
- + "" //
- + " ( SELECT AVG(iresAvail.availability_type) "
- + " FROM rhq_resource_avail iresAvail "
- + " INNER JOIN rhq_resource ires "
- + " ON iresAvail.resource_id = ires.id "
- + " INNER JOIN rhq_resource_group_res_imp_map impMap "
- + " ON ires.id = impMap.resource_id "
- + " WHERE impMap.resource_group_id = rg.id "
- + " ) as implicitAvail, "
- + "" //
- + " rg.id as groupId, "
- + " rg.name as groupName, "
- + " rg.category as groupCategory, "
- + " rg.group_by as groupedBy "
- + "" //
- + " FROM rhq_resource_group rg "
- + "LEFT OUTER JOIN rhq_resource_group_res_imp_map memberMap "
- + " ON rg.id = memberMap.resource_group_id "
- + "LEFT OUTER JOIN rhq_resource res "
- + " ON memberMap.resource_id = res.id "
- + "LEFT OUTER JOIN rhq_resource_avail resAvail "
- + " ON res.id = resAvail.resource_id "
- + " WHERE rg.group_definition_id = ? "
- + " GROUP BY rg.id, rg.category, rg.name, rg.group_by ";
-
@Column(name = "ID", nullable = false)
@GeneratedValue(strategy = GenerationType.AUTO, generator = "id")
@Id
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 9dc3430..ebfeccd 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
@@ -18,18 +18,12 @@
*/
package org.rhq.enterprise.server.resource.group.definition;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
-import java.util.Map;
import java.util.Set;
-import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
@@ -38,39 +32,25 @@ import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
-import javax.sql.DataSource;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.rhq.core.db.DatabaseType;
-import org.rhq.core.db.DatabaseTypeFactory;
-import org.rhq.core.db.H2DatabaseType;
-import org.rhq.core.db.OracleDatabaseType;
-import org.rhq.core.db.PostgresqlDatabaseType;
-import org.rhq.core.db.SQLServerDatabaseType;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.authz.Permission;
import org.rhq.core.domain.criteria.ResourceGroupDefinitionCriteria;
-import org.rhq.core.domain.resource.Resource;
-import org.rhq.core.domain.resource.ResourceType;
-import org.rhq.core.domain.resource.composite.ResourceFacets;
import org.rhq.core.domain.resource.group.GroupDefinition;
import org.rhq.core.domain.resource.group.ResourceGroup;
-import org.rhq.core.domain.resource.group.composite.ResourceGroupComposite;
-import org.rhq.core.domain.util.OrderingField;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.core.server.PersistenceUtility;
import org.rhq.core.util.collection.ArrayUtils;
-import org.rhq.core.util.jdbc.JDBCUtil;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.auth.SubjectManagerLocal;
import org.rhq.enterprise.server.authz.AuthorizationManagerLocal;
import org.rhq.enterprise.server.authz.PermissionException;
import org.rhq.enterprise.server.authz.RequiredPermission;
import org.rhq.enterprise.server.resource.ResourceManagerLocal;
-import org.rhq.enterprise.server.resource.ResourceTypeManagerLocal;
import org.rhq.enterprise.server.resource.group.RecursivityChangeType;
import org.rhq.enterprise.server.resource.group.ResourceGroupManagerLocal;
import org.rhq.enterprise.server.resource.group.ResourceGroupUpdateException;
@@ -88,17 +68,12 @@ import org.rhq.enterprise.server.util.CriteriaQueryGenerator;
import org.rhq.enterprise.server.util.CriteriaQueryRunner;
@Stateless
-(a)javax.annotation.Resource(name = "RHQ_DS", mappedName =
RHQConstants.DATASOURCE_JNDI_NAME)
public class GroupDefinitionManagerBean implements GroupDefinitionManagerLocal {
private final Log log = LogFactory.getLog(GroupDefinitionManagerBean.class);
@PersistenceContext(unitName = RHQConstants.PERSISTENCE_UNIT_NAME)
private EntityManager entityManager;
- @javax.annotation.Resource(name = "RHQ_DS")
- private DataSource rhqDs;
- private DatabaseType dbType;
-
@EJB
private GroupDefinitionManagerLocal groupDefinitionManager; // self, for xactional
purposes
@@ -106,9 +81,6 @@ public class GroupDefinitionManagerBean implements
GroupDefinitionManagerLocal {
private ResourceGroupManagerLocal resourceGroupManager;
@EJB
- private ResourceTypeManagerLocal resourceTypeManager;
-
- @EJB
private ResourceManagerLocal resourceManager;
@EJB
@@ -117,19 +89,6 @@ public class GroupDefinitionManagerBean implements
GroupDefinitionManagerLocal {
@EJB
private AuthorizationManagerLocal authorizationManager;
- @PostConstruct
- public void init() {
- Connection conn = null;
- try {
- conn = rhqDs.getConnection();
- dbType = DatabaseTypeFactory.getDatabaseType(conn);
- } catch (Exception e) {
- throw new RuntimeException(e);
- } finally {
- JDBCUtil.safeClose(conn);
- }
- }
-
@SuppressWarnings("unchecked")
@RequiredPermission(Permission.MANAGE_INVENTORY)
public void recalculateDynaGroups(Subject subject) {
@@ -370,7 +329,6 @@ public class GroupDefinitionManagerBean implements
GroupDefinitionManagerLocal {
log.debug("calculateGroupMembership took " + (endTime - startTime) +
" millis");
}
- @SuppressWarnings("unchecked")
@RequiredPermission(Permission.MANAGE_INVENTORY)
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public Integer calculateGroupMembership_helper(Subject overlord, int
groupDefinitionId,
@@ -418,9 +376,6 @@ public class GroupDefinitionManagerBean implements
GroupDefinitionManagerLocal {
resourceGroupManager.setResourceType(resourceGroupId);
- entityManager.flush();
- entityManager.clear();
-
long endTime = System.currentTimeMillis();
log.debug("calculateGroupMembership_helper took " + (endTime -
startTime) + " millis");
@@ -428,122 +383,6 @@ public class GroupDefinitionManagerBean implements
GroupDefinitionManagerLocal {
return resourceGroupId;
}
- @SuppressWarnings("unchecked")
- private Map<Integer, ResourceGroup> getIdGroupMap(List<Integer> groupIds)
{
- if (groupIds == null || groupIds.size() == 0) {
- return new HashMap<Integer, ResourceGroup>();
- }
-
- Query query =
entityManager.createNamedQuery(ResourceGroup.QUERY_FIND_BY_IDS_admin);
- query.setParameter("ids", groupIds);
- List<ResourceGroup> groups = query.getResultList();
-
- Map<Integer, ResourceGroup> results = new HashMap<Integer,
ResourceGroup>();
- for (ResourceGroup group : groups) {
- results.put(group.getId(), group);
- }
- return results;
- }
-
- @RequiredPermission(Permission.MANAGE_INVENTORY)
- public PageList<ResourceGroupComposite> getManagedResourceGroups(Subject
subject, int groupDefinitionId,
- PageControl pc) throws GroupDefinitionException {
-
- pc.initDefaultOrderingField("groupName");
- pc.truncateOrderingFields(1); // remove all but the primary sort
- OrderingField primary = pc.getOrderingFields().get(0);
- String field = primary.getField();
- if (field.endsWith("Avail")) {
- String prefix = field.substring(0, field.length() - 5);
- String secondaryField = prefix + "Count";
- pc.addDefaultOrderingField(secondaryField, primary.getOrdering());
- }
- if (field.equals("groupName") == false) {
- pc.addDefaultOrderingField("groupName");
- }
-
- Connection conn = null;
- PreparedStatement stmt = null;
- ResultSet rs = null;
-
- List<Object[]> rawResults = new ArrayList<Object[]>();
- try {
- conn = rhqDs.getConnection();
-
- String query = GroupDefinition.QUERY_NATIVE_FIND_MEMBERS;
-
- if (this.dbType instanceof PostgresqlDatabaseType) {
- query = PersistenceUtility.addPostgresNativePagingSortingToQuery(query,
pc);
- } else if (this.dbType instanceof OracleDatabaseType) {
- query = PersistenceUtility.addOracleNativePagingSortingToQuery(query,
pc);
- } else if (this.dbType instanceof H2DatabaseType) {
- query = PersistenceUtility.addH2NativePagingSortingToQuery(query, pc);
- } else if (this.dbType instanceof SQLServerDatabaseType) {
- query = PersistenceUtility.addSQLServerNativePagingSortingToQuery(query,
pc);
- } else {
- throw new RuntimeException("Unknown database type: " +
this.dbType);
- }
-
- stmt = conn.prepareStatement(query);
- stmt.setInt(1, groupDefinitionId);
-
- rs = stmt.executeQuery();
- while (rs.next()) {
- long explicitCount = rs.getLong(1);
- double explicitAvail = rs.getDouble(2);
- long implicitCount = rs.getLong(3);
- double implicitAvail = rs.getDouble(4);
- int groupId = rs.getInt(5);
- Object[] next = new Object[] { explicitCount, explicitAvail,
implicitCount, implicitAvail, groupId };
- rawResults.add(next);
- }
- } catch (Throwable t) {
- throw new GroupDefinitionException(t);
- } finally {
- JDBCUtil.safeClose(conn, stmt, rs);
- }
-
- //Query query = PersistenceUtility.createQueryWithOrderBy(entityManager,
GroupDefinition.QUERY_FIND_MEMBERS, pc);
- Query queryCount =
entityManager.createNamedQuery(GroupDefinition.QUERY_FIND_MEMBERS_count);
-
- //query.setParameter("groupDefinitionId", groupDefinitionId);
- queryCount.setParameter("groupDefinitionId", groupDefinitionId);
-
- //List<Object[]> rawResults = (List<Object[]>)
query.getResultList();
- long count = (Long) queryCount.getSingleResult();
-
- List<Integer> groupIds = new ArrayList<Integer>();
- for (Object[] row : rawResults) {
- groupIds.add(((Number) row[4]).intValue());
- }
- Map<Integer, ResourceGroup> groupMap = getIdGroupMap(groupIds);
-
- List<ResourceGroupComposite> results = new
ArrayList<ResourceGroupComposite>(rawResults.size());
- int i = 0;
- for (Object[] row : rawResults) {
- long explicitCount = (Long) row[0];
- double explicitAvail = (Double) row[1];
- long implicitCount = (Long) row[2];
- double implicitAvail = (Double) row[3];
-
- ResourceGroup group = groupMap.get(groupIds.get(i++));
- ResourceType type = group.getResourceType();
- ResourceFacets facets;
- if (type == null) {
- // mixed group
- facets = ResourceFacets.NONE;
- } else {
- // compatible group
- facets =
resourceTypeManager.getResourceFacets(group.getResourceType().getId());
- }
- ResourceGroupComposite composite = new ResourceGroupComposite(explicitCount,
explicitAvail, implicitCount,
- implicitAvail, group, facets);
- results.add(composite);
- }
-
- return new PageList<ResourceGroupComposite>(results, (int) count, pc);
- }
-
@SuppressWarnings( { "unchecked" })
public PageList<GroupDefinition> getGroupDefinitions(Subject subject,
PageControl pc) {
pc.initDefaultOrderingField("gd.name");
@@ -560,7 +399,8 @@ public class GroupDefinitionManagerBean implements
GroupDefinitionManagerLocal {
}
}
- public PageList<GroupDefinition> findGroupDefinitionsByCriteria(Subject
subject, ResourceGroupDefinitionCriteria criteria) {
+ public PageList<GroupDefinition> findGroupDefinitionsByCriteria(Subject
subject,
+ ResourceGroupDefinitionCriteria criteria) {
CriteriaQueryGenerator generator = new CriteriaQueryGenerator(criteria);
if (authorizationManager.isInventoryManager(subject) == false) {
if (criteria.isInventoryManagerRequired()) {
@@ -569,7 +409,8 @@ public class GroupDefinitionManagerBean implements
GroupDefinitionManagerLocal {
}
}
- CriteriaQueryRunner<GroupDefinition> queryRunner = new
CriteriaQueryRunner(criteria, generator, entityManager);
+ CriteriaQueryRunner<GroupDefinition> queryRunner = new
CriteriaQueryRunner<GroupDefinition>(criteria,
+ generator, entityManager);
return queryRunner.execute();
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/definition/GroupDefinitionManagerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/definition/GroupDefinitionManagerLocal.java
index 4738625..b57a35e 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/definition/GroupDefinitionManagerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/definition/GroupDefinitionManagerLocal.java
@@ -23,14 +23,12 @@ import javax.ejb.Local;
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.composite.ResourceGroupComposite;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
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.GroupDefinitionException;
import
org.rhq.enterprise.server.resource.group.definition.exception.GroupDefinitionNotFoundException;
import
org.rhq.enterprise.server.resource.group.definition.exception.GroupDefinitionUpdateException;
import
org.rhq.enterprise.server.resource.group.definition.framework.ExpressionEvaluator;
@@ -56,9 +54,6 @@ public interface GroupDefinitionManagerLocal {
Integer calculateGroupMembership_helper(Subject subject, int groupDefinitionId,
ExpressionEvaluator.Result result)
throws GroupDefinitionNotFoundException, GroupDefinitionNotFoundException;
- PageList<ResourceGroupComposite> getManagedResourceGroups(Subject subject, int
groupDefinitionId, PageControl pc)
- throws GroupDefinitionException;
-
PageList<GroupDefinition> getGroupDefinitions(Subject subject, PageControl
pc);
PageList<GroupDefinition> findGroupDefinitionsByCriteria(Subject subject,
ResourceGroupDefinitionCriteria criteria);
commit 47ea32f7c32a1c7d0fd89b04862e49ef9a69fb69
Author: Joseph Marques <joseph(a)redhat.com>
Date: Thu Jun 24 17:20:35 2010 -0400
re-implement group definition detailed view using ResourceGroupCriteria with groupDef
filter
diff --git
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/definition/group/GroupDefinitionUIBean.java
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/definition/group/GroupDefinitionUIBean.java
index add5a08..2a2aa52 100644
---
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/definition/group/GroupDefinitionUIBean.java
+++
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/definition/group/GroupDefinitionUIBean.java
@@ -18,14 +18,14 @@
*/
package org.rhq.enterprise.gui.definition.group;
-import javax.faces.model.DataModel;
import javax.faces.application.FacesMessage;
+import javax.faces.model.DataModel;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jetbrains.annotations.NotNull;
-import org.rhq.core.domain.auth.Subject;
+import org.rhq.core.domain.criteria.ResourceGroupCriteria;
import org.rhq.core.domain.resource.group.GroupDefinition;
import org.rhq.core.domain.resource.group.composite.ResourceGroupComposite;
import org.rhq.core.domain.util.PageControl;
@@ -35,7 +35,7 @@ import org.rhq.enterprise.gui.common.framework.PagedDataTableUIBean;
import org.rhq.enterprise.gui.common.paging.PageControlView;
import org.rhq.enterprise.gui.common.paging.PagedListDataModel;
import org.rhq.enterprise.gui.legacy.ParamConstants;
-import org.rhq.enterprise.server.resource.group.definition.GroupDefinitionManagerLocal;
+import org.rhq.enterprise.server.resource.group.ResourceGroupManagerLocal;
import
org.rhq.enterprise.server.resource.group.definition.exception.GroupDefinitionException;
import org.rhq.enterprise.server.util.LookupUtil;
@@ -46,8 +46,7 @@ public class GroupDefinitionUIBean extends PagedDataTableUIBean {
private GroupDefinition groupDefinition;
- public GroupDefinitionUIBean() throws GroupDefinitionException
- {
+ public GroupDefinitionUIBean() throws GroupDefinitionException {
this.groupDefinition = lookupGroupDefinition();
}
@@ -110,6 +109,8 @@ public class GroupDefinitionUIBean extends PagedDataTableUIBean {
return dataModel;
}
+ private ResourceGroupManagerLocal resourceGroupManager =
LookupUtil.getResourceGroupManager();
+
private class ListGroupDefinitionMembersDataModel extends
PagedListDataModel<ResourceGroupComposite> {
public ListGroupDefinitionMembersDataModel(PageControlView view, String beanName)
{
super(view, beanName);
@@ -117,17 +118,16 @@ public class GroupDefinitionUIBean extends PagedDataTableUIBean {
@Override
public PageList<ResourceGroupComposite> fetchPage(PageControl pc) {
- Subject user = getSubject();
- int groupDefinitionId = groupDefinition.getId();
-
- GroupDefinitionManagerLocal groupDefinitionManager =
LookupUtil.getGroupDefinitionManager();
+ ResourceGroupCriteria criteria = new ResourceGroupCriteria();
+ criteria.addFilterGroupDefinitionId(groupDefinition.getId());
+ criteria.setPageControl(pc);
try {
- return groupDefinitionManager.getManagedResourceGroups(user,
groupDefinitionId, pc);
- } catch (GroupDefinitionException gde) {
+ return
resourceGroupManager.findResourceGroupCompositesByCriteria(getSubject(), criteria);
+ } catch (Throwable t) {
FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR, "Failed
to retrieve managed groups: "
- + gde.getMessage());
- log.error("Failed to retrieve managed groups", gde);
+ + t.getMessage());
+ log.error("Failed to retrieve managed groups", t);
return new PageList<ResourceGroupComposite>();
}
}
diff --git
a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/definition/group/view.xhtml
b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/definition/group/view.xhtml
index 512dc82..4ecffef 100644
--- a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/definition/group/view.xhtml
+++ b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/definition/group/view.xhtml
@@ -151,7 +151,7 @@
<rich:column>
<f:facet name="header">
- <onc:sortableColumnHeader sort="groupName">
+ <onc:sortableColumnHeader sort="name">
<h:outputText styleClass="headerText"
value="Name" />
</onc:sortableColumnHeader>
</f:facet>
@@ -175,7 +175,7 @@
<rich:column>
<f:facet name="header">
- <onc:sortableColumnHeader sort="groupedBy">
+ <onc:sortableColumnHeader sort="groupByClause">
<h:outputText styleClass="headerText"
value="Grouped By" />
</onc:sortableColumnHeader>
</f:facet>
@@ -186,7 +186,7 @@
<rich:column styleClass="resource-availability-cell">
<f:facet name="header">
<h:panelGroup>
- <onc:sortableColumnHeader sort="explicitAvail">
+ <onc:sortableColumnHeader
sort="1"><ui:remove>Use zero-based positional
ordinal</ui:remove>
<h:outputText value="Children" />
</onc:sortableColumnHeader>
</h:panelGroup>
@@ -199,7 +199,7 @@
<rich:column styleClass="resource-availability-cell">
<f:facet name="header">
<h:panelGroup>
- <onc:sortableColumnHeader sort="implicitAvail">
+ <onc:sortableColumnHeader
sort="3"><ui:remove>Use zero-based positional
ordinal</ui:remove>
<h:outputText value="Descendents" />
</onc:sortableColumnHeader>
</h:panelGroup>
commit 50e8098383a1d0fe5f25e503584e20e3457e2dc7
Author: Joseph Marques <joseph(a)redhat.com>
Date: Thu Jun 24 17:19:41 2010 -0400
add the ability to filter ResourceGroupCriteria by its parent group definition
add additional authorization check in ResourceGroupManager.find...ByCriteria method
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/ResourceGroupCriteria.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/ResourceGroupCriteria.java
index bbefbb3..eee833e 100644
---
a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/ResourceGroupCriteria.java
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/ResourceGroupCriteria.java
@@ -54,6 +54,7 @@ public class ResourceGroupCriteria extends TaggedCriteria {
private ResourceCategory filterExplicitResourceCategory; // requires overrides
private Integer filterExplicitResourceTypeId; // requires overrides
private String filterExplicitResourceTypeName; // requires overrides
+ private Integer filterGroupDefinitionId; // requires overrides
private boolean fetchExplicitResources;
private boolean fetchImplicitResources;
@@ -105,6 +106,7 @@ public class ResourceGroupCriteria extends TaggedCriteria {
+ " FROM Resource res " //
+ " JOIN res.explicitGroups explicitGroup " //
+ " WHERE resourcegroup.id = explicitGroup.id AND NOT
res.resourceType.name = ? )");
+ filterOverrides.put("groupDefinitionId", "groupDefinition.id =
?");
sortOverrides.put("resourceTypeName", "resourceType.name");
}
@@ -184,6 +186,10 @@ public class ResourceGroupCriteria extends TaggedCriteria {
this.filterExplicitResourceTypeName = filterExplicitResourceTypeName;
}
+ public void addFilterGroupDefinitionId(Integer filterGroupDefinitionId) {
+ this.filterGroupDefinitionId = filterGroupDefinitionId;
+ }
+
public void fetchExplicitResources(boolean fetchExplicitResources) {
this.fetchExplicitResources = fetchExplicitResources;
}
@@ -227,8 +233,15 @@ public class ResourceGroupCriteria extends TaggedCriteria {
}
/** subclasses should override as necessary */
+ @Override
public boolean isSecurityManagerRequired() {
return this.fetchRoles;
}
+ @Override
+ public boolean isInventoryManagerRequired() {
+ // presently only inventory managers can view/manage group definitions
+ return this.filterGroupDefinitionId != null;
+ }
+
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java
index 16bfb39..b944b6e 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java
@@ -1388,6 +1388,12 @@ public class ResourceGroupManagerBean implements
ResourceGroupManagerLocal, Reso
+ "] requires SecurityManager permission for requested query
criteria.");
}
+ if (criteria.isInventoryManagerRequired()
+ && !authorizationManager.hasGlobalPermission(subject,
Permission.MANAGE_INVENTORY)) {
+ throw new PermissionException("Subject [" + subject.getName()
+ + "] requires InventoryManager permission for requested query
criteria.");
+ }
+
if (authorizationManager.isInventoryManager(subject) == false) {
generator.setAuthorizationResourceFragment(CriteriaQueryGenerator.AuthorizationTokenType.GROUP,
null,
subject.getId());
commit 50294ebe870e04f3673cf075dbf0420dcd083d62
Author: Joseph Marques <joseph(a)redhat.com>
Date: Thu Jun 24 16:16:49 2010 -0400
BZ-607548: prevent NPE when use operation-based alert notifications
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/alert/notification/AlertNotification.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/alert/notification/AlertNotification.java
index 4d5c1f0..27da614 100644
---
a/modules/core/domain/src/main/java/org/rhq/core/domain/alert/notification/AlertNotification.java
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/alert/notification/AlertNotification.java
@@ -225,6 +225,9 @@ public class AlertNotification implements Serializable {
}
public boolean equalsData(AlertNotification other) {
+ if (other == null) {
+ return false;
+ }
boolean results = compare(configuration, other.configuration);
if (results) {
results = compare(extraConfiguration, other.extraConfiguration);
diff --git
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/alert/common/AlertNotificationsUIBean.java
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/alert/common/AlertNotificationsUIBean.java
index 82a1e50..dc65e73 100644
---
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/alert/common/AlertNotificationsUIBean.java
+++
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/alert/common/AlertNotificationsUIBean.java
@@ -216,7 +216,7 @@ public class AlertNotificationsUIBean extends
EnterpriseFacesContextUIBean {
*/
reloadAlertNotifications();
for (AlertNotification nextNotification : this.alertNotifications) {
- if (notificationWithLatestData.equalsData(nextNotification)) {
+ if (nextNotification.equalsData(notificationWithLatestData)) {
this.activeNotification = nextNotification;
this.selectedNotifications.clear();
this.selectedNotifications.add(this.activeNotification);
diff --git
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/alert/common/CustomContentUIBean.java
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/alert/common/CustomContentUIBean.java
index 324a3de..1d9da88 100644
---
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/alert/common/CustomContentUIBean.java
+++
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/alert/common/CustomContentUIBean.java
@@ -108,6 +108,8 @@ public class CustomContentUIBean extends EnterpriseFacesContextUIBean
{
if (customBackingBean.getExtraParameters() != null) {
notification.setExtraConfiguration(customBackingBean.getExtraParameters());
+ } else {
+ notification.setExtraConfiguration(null);
}
int alertDefinitionId = Integer.parseInt(customBackingBean.getContextId());
alertNotificationManager.updateAlertNotification(getSubject(),
alertDefinitionId, notification);
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/plugin/pc/alert/CustomAlertSenderBackingBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/plugin/pc/alert/CustomAlertSenderBackingBean.java
index 612a5fa..0e4f47d 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/plugin/pc/alert/CustomAlertSenderBackingBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/plugin/pc/alert/CustomAlertSenderBackingBean.java
@@ -18,9 +18,6 @@
*/
package org.rhq.enterprise.server.plugin.pc.alert;
-import java.util.Arrays;
-
-import org.rhq.core.domain.alert.notification.AlertNotification;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.PropertySimple;
@@ -164,15 +161,4 @@ public class CustomAlertSenderBackingBean {
return ret;
}
- final protected void deleteExtraParameters() {
- Subject overlord = LookupUtil.getSubjectManager().getOverlord();
- AlertNotification notification =
LookupUtil.getAlertNotificationManager().getAlertNotification(overlord,
- alertNotificationId);
- Configuration extraParameters = notification.getExtraConfiguration();
- notification.setExtraConfiguration(null);
- LookupUtil.getAlertNotificationManager().updateAlertNotification(overlord,
- notification.getAlertDefinition().getId(), notification);
-
LookupUtil.getConfigurationManager().deleteConfigurations(Arrays.asList(extraParameters.getId()));
- }
-
}
diff --git
a/modules/enterprise/server/plugins/alert-operations/src/main/java/org/rhq/enterprise/server/plugins/alertOperations/OperationInfo.java
b/modules/enterprise/server/plugins/alert-operations/src/main/java/org/rhq/enterprise/server/plugins/alertOperations/OperationInfo.java
index 0241db5..5d81bd0 100644
---
a/modules/enterprise/server/plugins/alert-operations/src/main/java/org/rhq/enterprise/server/plugins/alertOperations/OperationInfo.java
+++
b/modules/enterprise/server/plugins/alert-operations/src/main/java/org/rhq/enterprise/server/plugins/alertOperations/OperationInfo.java
@@ -55,7 +55,9 @@ public class OperationInfo {
String descendantName, String operationId, Configuration arguments) {
ResourceSelectionMode selectionMode = null;
try {
- selectionMode = ResourceSelectionMode.valueOf(mode);
+ if (mode != null) {
+ selectionMode = ResourceSelectionMode.valueOf(mode);
+ }
} catch (Throwable t) {
}
this.mode = selectionMode;
diff --git
a/modules/enterprise/server/plugins/alert-operations/src/main/java/org/rhq/enterprise/server/plugins/alertOperations/OperationsBackingBean.java
b/modules/enterprise/server/plugins/alert-operations/src/main/java/org/rhq/enterprise/server/plugins/alertOperations/OperationsBackingBean.java
index 0bf47fa..1552256 100644
---
a/modules/enterprise/server/plugins/alert-operations/src/main/java/org/rhq/enterprise/server/plugins/alertOperations/OperationsBackingBean.java
+++
b/modules/enterprise/server/plugins/alert-operations/src/main/java/org/rhq/enterprise/server/plugins/alertOperations/OperationsBackingBean.java
@@ -230,7 +230,8 @@ public class OperationsBackingBean extends
CustomAlertSenderBackingBean {
if (operationDefinitionId != null &&
!operationDefinitionId.equals("none") && argumentsConfiguration != null)
{
extraParameters = persistConfiguration(argumentsConfiguration);
} else {
- deleteExtraParameters();
+ extraParameters = null;
+ //deleteExtraParameters();
}
alertParameters = persistConfiguration(alertParameters);
commit e8e51188a5f48d8e722700a89e6335654d869c22
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu Jun 24 16:06:24 2010 -0400
provide a new "gc" agent prompt command that lets you examine the
heap/non-heap stats and lets you free up some memory/invoke the garbage collector
diff --git
a/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/AgentMain.java
b/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/AgentMain.java
index ce49fc4..b5d1223 100644
--- a/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/AgentMain.java
+++ b/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/AgentMain.java
@@ -107,6 +107,7 @@ import org.rhq.enterprise.agent.promptcmd.DownloadPromptCommand;
import org.rhq.enterprise.agent.promptcmd.DumpSpoolPromptCommand;
import org.rhq.enterprise.agent.promptcmd.ExitPromptCommand;
import org.rhq.enterprise.agent.promptcmd.FailoverPromptCommand;
+import org.rhq.enterprise.agent.promptcmd.GCPromptCommand;
import org.rhq.enterprise.agent.promptcmd.GetConfigPromptCommand;
import org.rhq.enterprise.agent.promptcmd.HelpPromptCommand;
import org.rhq.enterprise.agent.promptcmd.IdentifyPromptCommand;
@@ -2958,7 +2959,7 @@ public class AgentMain {
new AvailabilityPromptCommand(), new PiqlPromptCommand(), new
IdentifyPromptCommand(),
new LogPromptCommand(), new TimerPromptCommand(), new PingPromptCommand(),
new DownloadPromptCommand(),
new DumpSpoolPromptCommand(), new SenderPromptCommand(), new
FailoverPromptCommand(),
- new UpdatePromptCommand(), new DebugPromptCommand(), new SleepPromptCommand()
};
+ new UpdatePromptCommand(), new DebugPromptCommand(), new
SleepPromptCommand(), new GCPromptCommand() };
// hold the conflicts
StringBuilder conflicts = new StringBuilder();
diff --git
a/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/i18n/AgentI18NResourceKeys.java
b/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/i18n/AgentI18NResourceKeys.java
index d520904..7967b47 100644
---
a/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/i18n/AgentI18NResourceKeys.java
+++
b/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/i18n/AgentI18NResourceKeys.java
@@ -1619,6 +1619,31 @@ public interface AgentI18NResourceKeys {
@I18NMessage("days")
String UNITS_DAYS = "units.days";
+ @I18NMessage("gc")
+ String GC = "PromptCommand.gc";
+
+ @I18NMessage("gc [--dump] [--free] [--verbose={true|false}]")
+ String GC_SYNTAX = "PromptCommand.gc.syntax";
+
+ @I18NMessage("Helps free up memory by invoking the garbage collector")
+ String GC_HELP = "PromptCommand.gc.help";
+
+ @I18NMessage("Provides an interface to the garbage collector and memory
subsystem.\\n\\\n"
+ + "\\ -d, --dump : prints out information on current memory
usage\\n\\\n"
+ + "\\ -f, --free : attempts to free up memory and invokes the garbage
collector\\n\\\n"
+ + "\\ -v, --verbose={true|false} : enables/disables verbose gc
messages")
+ String GC_DETAILED_HELP = "PromptCommand.gc.detailed-help";
+
+ @I18NMessage("Invoking the garbage collector")
+ String GC_INVOKE = "PromptCommand.gc.invoke";
+
+ @I18NMessage("{0} ({1}):\\n\\\n" //
+ + "\\ init={2}\\n\\\n" //
+ + "\\ max={3}\\n\\\n" //
+ + "\\ used={4} ({5,number,##}% of committed)\\n\\\n" //
+ + "\\ commit={6} ({7,number,##}% of max)")
+ String GC_MEM_USAGE = "PromptCommand.gc.mem-usage";
+
@I18NMessage("native")
String NATIVE = "PromptCommand.native";
diff --git
a/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/promptcmd/GCPromptCommand.java
b/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/promptcmd/GCPromptCommand.java
new file mode 100644
index 0000000..1f2de30
--- /dev/null
+++
b/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/promptcmd/GCPromptCommand.java
@@ -0,0 +1,213 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2008 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.agent.promptcmd;
+
+import gnu.getopt.Getopt;
+import gnu.getopt.LongOpt;
+
+import java.beans.Introspector;
+import java.io.PrintWriter;
+import java.lang.management.ManagementFactory;
+import java.lang.management.MemoryMXBean;
+import java.lang.management.MemoryPoolMXBean;
+import java.lang.management.MemoryType;
+import java.lang.management.MemoryUsage;
+import java.util.List;
+
+import mazz.i18n.Msg;
+
+import org.apache.commons.logging.LogFactory;
+
+import org.rhq.enterprise.agent.AgentMain;
+import org.rhq.enterprise.agent.i18n.AgentI18NFactory;
+import org.rhq.enterprise.agent.i18n.AgentI18NResourceKeys;
+
+/**
+ * Provides a way to help the agent clean up memory.
+ *
+ * @author John Mazzitelli
+ */
+public class GCPromptCommand implements AgentPromptCommand {
+ private static final Msg MSG = AgentI18NFactory.getMsg();
+
+ /**
+ * @see AgentPromptCommand#getPromptCommandString()
+ */
+ public String getPromptCommandString() {
+ return MSG.getMsg(AgentI18NResourceKeys.GC);
+ }
+
+ /**
+ * @see AgentPromptCommand#execute(AgentMain, String[])
+ */
+ public boolean execute(AgentMain agent, String[] args) {
+ processArguments(agent, args);
+ return true;
+ }
+
+ /**
+ * @see AgentPromptCommand#getSyntax()
+ */
+ public String getSyntax() {
+ return MSG.getMsg(AgentI18NResourceKeys.GC_SYNTAX);
+ }
+
+ /**
+ * @see AgentPromptCommand#getHelp()
+ */
+ public String getHelp() {
+ return MSG.getMsg(AgentI18NResourceKeys.GC_HELP);
+ }
+
+ /**
+ * @see AgentPromptCommand#getDetailedHelp()
+ */
+ public String getDetailedHelp() {
+ return MSG.getMsg(AgentI18NResourceKeys.GC_DETAILED_HELP);
+ }
+
+ private void processArguments(AgentMain agent, String[] args) {
+ PrintWriter out = agent.getOut();
+
+ String sopts = "dfv:";
+ LongOpt[] lopts = { new LongOpt("verbose", LongOpt.REQUIRED_ARGUMENT,
null, 'v'),
+ new LongOpt("dump", LongOpt.NO_ARGUMENT, null, 'd'), new
LongOpt("free", LongOpt.NO_ARGUMENT, null, 'f') };
+
+ Getopt getopt = new Getopt(getPromptCommandString(), args, sopts, lopts);
+ int code;
+ Boolean verbose = null;
+ Boolean free = null;
+ Boolean dump = null;
+
+ while ((code = getopt.getopt()) != -1) {
+ switch (code) {
+ case ':':
+ case '?':
+ case 1: {
+ out.println(MSG.getMsg(AgentI18NResourceKeys.HELP_SYNTAX_LABEL,
getSyntax()));
+ break;
+ }
+
+ case 'v': {
+ String verboseOpt = getopt.getOptarg();
+ verbose = Boolean.valueOf(Boolean.parseBoolean(verboseOpt));
+ break;
+ }
+
+ case 'd': {
+ dump = Boolean.TRUE;
+ break;
+ }
+
+ case 'f': {
+ free = Boolean.TRUE;
+ break;
+ }
+ }
+ }
+
+ if ((getopt.getOptind() + 1) < args.length) {
+ out.println(MSG.getMsg(AgentI18NResourceKeys.HELP_SYNTAX_LABEL,
getSyntax()));
+ }
+
+ if (Boolean.TRUE.equals(dump)) {
+ printCurrentMemoryUsage(out);
+ }
+
+ if (verbose != null) {
+ setVerbosity(verbose.booleanValue());
+ }
+
+ if (Boolean.TRUE.equals(free)) {
+ freeMemory(out);
+ }
+
+ return;
+ }
+
+ private void setVerbosity(boolean verbose) {
+ final MemoryMXBean memoryMxBean = ManagementFactory.getMemoryMXBean();
+ memoryMxBean.setVerbose(verbose);
+ }
+
+ private void freeMemory(PrintWriter out) {
+ final MemoryMXBean memoryMxBean = ManagementFactory.getMemoryMXBean();
+
+ printGlobalMemoryUsage(out, memoryMxBean);
+
+ // free up some global static caches
+ Introspector.flushCaches();
+ LogFactory.releaseAll();
+
+ // invoke the garbage collector
+ out.println(MSG.getMsg(AgentI18NResourceKeys.GC_INVOKE));
+ memoryMxBean.gc();
+
+ printGlobalMemoryUsage(out, memoryMxBean);
+ return;
+ }
+
+ private void printCurrentMemoryUsage(PrintWriter out) {
+ final MemoryMXBean memoryMxBean = ManagementFactory.getMemoryMXBean();
+ printGlobalMemoryUsage(out, memoryMxBean);
+
+ List<MemoryPoolMXBean> poolMxBeans =
ManagementFactory.getMemoryPoolMXBeans();
+ if (poolMxBeans != null) {
+ for (MemoryPoolMXBean bean : poolMxBeans) {
+ if (bean.isValid()) {
+ String name = bean.getName();
+ MemoryType type = bean.getType();
+ MemoryUsage usage = bean.getUsage();
+ printMemoryUsage(out, name, type, usage);
+ }
+ }
+ }
+
+ return;
+ }
+
+ private void printGlobalMemoryUsage(PrintWriter out, final MemoryMXBean memoryMxBean)
{
+ printMemoryUsage(out, "GLOBAL", MemoryType.HEAP,
memoryMxBean.getHeapMemoryUsage());
+ printMemoryUsage(out, "GLOBAL", MemoryType.NON_HEAP,
memoryMxBean.getNonHeapMemoryUsage());
+ }
+
+ private void printMemoryUsage(PrintWriter out, String name, MemoryType type,
MemoryUsage memUsage) {
+ long init = memUsage.getInit();
+ long max = memUsage.getMax();
+ long used = memUsage.getUsed();
+ long committed = memUsage.getCommitted();
+
+ String typeStr;
+ switch (type) {
+ case HEAP:
+ typeStr = "Heap";
+ break;
+ case NON_HEAP:
+ typeStr = "Non-heap";
+ break;
+ default:
+ typeStr = "?";
+ }
+
+ double usedPercentage = (used * 100.0) / committed;
+ double committedPercentage = (committed * 100.0) / max;
+ out.println(MSG.getMsg(AgentI18NResourceKeys.GC_MEM_USAGE, name, typeStr, init,
max, used, usedPercentage,
+ committed, committedPercentage));
+ }
+}
\ No newline at end of file
commit 8bbfe126b897a21135b21987aefcce1b45e76cb3
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Thu Jun 24 14:33:18 2010 -0400
refactoring BZ-597246 a little.
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/content/PackageBits.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/content/PackageBits.java
index 634ebeb..17ad568 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/content/PackageBits.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/content/PackageBits.java
@@ -95,14 +95,20 @@ public class PackageBits implements Serializable {
* return <code>null</code>. In this case, the content is probably stored
somewhere else on a local file system.
* When <code>null</code> is returned, it is assumed that who ever needs
the content can know where to find it based
* on the {@link PackageVersion} details.
+ *
+ * For large file contents, you should use ContentManager.updateBlobStream() to write
and
+ * ContentManager.writeBlobOutToStream() to read/direct file contents into as no
byte[] is used.
*/
@XmlTransient
public byte[] getBits() {
return bits;
}
+ /** For large file contents, you should use ContentManager.updateBlobStream() to
write and
+ * ContentManager.writeBlobOutToStream() to read/direct file contents into as no
byte[] is used.
+ *
+ */
public void setBits(byte[] bits) {
this.bits = bits;
}
-
}
\ No newline at end of file
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java
index 5bae392..b2cac05 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java
@@ -939,7 +939,6 @@ public class ContentManagerBean implements ContentManagerLocal,
ContentManagerRe
try {
PackageBits bits = entityManager.find(PackageBits.class,
packageBits.getId());
- // bits.setBits(StreamUtil.slurp(bitStream));
String pkgName = "(set packageName)";
if ((packageVersion != null) &&
(packageVersion.getGeneralPackage() != null)) {
//update it to whatever package name is if we can get to it.
@@ -947,7 +946,6 @@ public class ContentManagerBean implements ContentManagerLocal,
ContentManagerRe
}
bits = loadPackageBits(bitStream, packageVersion.getId(), pkgName,
packageVersion.getVersion(),
bits);
- // bits.setBits(StreamUtil.slurp(bitStream));
entityManager.merge(bits);
} finally {
@@ -1237,31 +1235,14 @@ public class ContentManagerBean implements ContentManagerLocal,
ContentManagerRe
PackageVersion newPackageVersion = new PackageVersion(existingPackage, version,
architecture);
newPackageVersion.setDisplayName(existingPackage.getName());
- // PackageBits bits = loadPackageBits(packageBitStream);
PackageBits bits = loadPackageBits(packageBitStream, newPackageVersion.getId(),
packageName, version, null);
- // // TODO: THIS IS VERY BAD - MUST FIX - DO NOT SLURP THE ENTIRE FILE IN
MEMORY - USE JDBC STREAMING
- // // Write the content into the newly created package version. This may
eventually move, but for now we'll just
- // // use the byte array in the package version to store the bits.
- // byte[] packageBits;
- // try {
- // packageBits = StreamUtil.slurp(packageBitStream);
- // } catch (RuntimeException re) {
- // throw new RuntimeException("Error reading in the package
file", re);
- // }
- //
- // PackageBits bits = new PackageBits();
- // try {
- // bits.setBits(packageBits);
- // } catch (Exception e) {
- // log.error("Error saving the package.", e);
- // }
newPackageVersion.setPackageBits(bits);
+ //TODO: write down to file system to calculate length and calculate hash.
newPackageVersion.setFileSize((long) bits.getBits().length);
try {
newPackageVersion.setSHA256(new
MessageDigestGenerator(MessageDigestGenerator.SHA_256)
.calcDigestString(bits.getBits()));
- // .calcDigestString(packageBits));
} catch (IOException e) {
newPackageVersion.setSHA256(null);
}
@@ -1579,23 +1560,6 @@ public class ContentManagerBean implements ContentManagerLocal,
ContentManagerRe
//get the data
PackageBits bits = loadPackageBits(packageBitStream, packageVersion.getId(),
packageName, version, null);
- // // TODO: THIS IS VERY BAD - MUST FIX - DO NOT SLURP THE ENTIRE FILE IN
MEMORY - USE JDBC STREAMING
- // // Write the content into the newly created package version. This may
eventually move, but for now we'll just
- // // use the byte array in the package version to store the bits.
- // byte[] packageBits;
- // try {
- // packageBits = StreamUtil.slurp(packageBitStream);
- // } catch (RuntimeException re) {
- // throw new RuntimeException("Error reading in the package
file", re);
- // }
- //
- // PackageBits bits = new PackageBits();
- // // bits = new PackageBits();
- // try {
- // bits.setBits(packageBits);
- // } catch (Exception e) {
- // log.error("Error savinf the package.", e);
- // }
packageVersion.setPackageBits(bits);
@@ -1643,10 +1607,8 @@ public class ContentManagerBean implements ContentManagerLocal,
ContentManagerRe
bits = entityManager.find(PackageBits.class, bits.getId());
- Subject user = null;
-
//write data from stream into db using Hibernate Blob mechanism
- updateBlobStream(user, packageBitStream, bits);
+ updateBlobStream(packageBitStream, bits);
return bits;
}
@@ -1656,19 +1618,7 @@ public class ContentManagerBean implements ContentManagerLocal,
ContentManagerRe
*
* @param stream
*/
- public void updateBlobStream(Subject user, InputStream stream, PackageBits bits) {
-
- // int resourceId = -1;
- // if (bits != null) {
- // resourceId = bits.getId();
- // }
- // log.info("Updating data for PackageBits [" + bits + "]
with resource ID [" + resourceId + "]");
- //
- // // Check permissions first
- // if (!authorizationManager.hasResourcePermission(user,
Permission.MANAGE_CONTENT, resourceId)) {
- // throw new PermissionException("User [" + user.getName()
- // + "] does not have permission to update packageBits "
+ bits + " with resource ID [" + resourceId + "]");
- // }
+ public void updateBlobStream(InputStream stream, PackageBits bits) {
//TODO: are there any db specific limits that we should check/verify here before
stuffing
// the contents of a stream into the db? Should we just let the db complain and
take care of
@@ -1747,24 +1697,11 @@ public class ContentManagerBean implements ContentManagerLocal,
ContentManagerRe
*
* @param stream non null stream where contents to be written to.
*/
- public void writeBlobOutToStream(Subject user, OutputStream stream, PackageBits bits,
boolean closeStreams) {
-
- // int resourceId = -1;
- // if (bits != null) {
- // resourceId = bits.getId();
- // }
- // log.info("Reading data for PackageBits [" + bits + "]
with resource ID [" + resourceId + "]");
- //
- // // Check permissions first
- // if (!authorizationManager.hasResourcePermission(user,
Permission.MANAGE_CONTENT, resourceId)) {
- // throw new PermissionException("User [" + user.getName() +
"] does not have permission to read packageBits "
- // + bits + " with resource ID [" + resourceId +
"]");
- // }
+ public void writeBlobOutToStream(OutputStream stream, PackageBits bits, boolean
closeStreams) {
if (stream == null) {
return; // no locate to write to
}
- // if ((bits == null) || (bits.getId() <= 0) || bits.getBits() == null)
{
if ((bits == null) || (bits.getId() <= 0)) {
//then PackageBits instance passed in is insufficiently initialized.
log.warn("PackageBits insufficiently initialized. No data to write
out.");
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerLocal.java
index 83c0037..65b0365 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerLocal.java
@@ -347,8 +347,8 @@ public interface ContentManagerLocal {
byte[] getPackageBytes(Subject user, int resourceId, int installedPackageId);
- void writeBlobOutToStream(Subject user, OutputStream stream, PackageBits bits,
boolean closeStreams);
+ void writeBlobOutToStream(OutputStream stream, PackageBits bits, boolean
closeStreams);
- void updateBlobStream(Subject user, InputStream stream, PackageBits bits);
+ void updateBlobStream(InputStream stream, PackageBits bits);
}
\ No newline at end of file
diff --git
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/content/test/ContentUIManagerBeanTest.java
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/content/test/ContentUIManagerBeanTest.java
index c8ac4e3..7fae6e0 100644
---
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/content/test/ContentUIManagerBeanTest.java
+++
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/content/test/ContentUIManagerBeanTest.java
@@ -29,7 +29,6 @@ import org.apache.commons.logging.LogFactory;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
-import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.content.Architecture;
import org.rhq.core.domain.content.Package;
import org.rhq.core.domain.content.PackageBits;
@@ -285,8 +284,7 @@ public class ContentUIManagerBeanTest extends AbstractEJB3Test {
}
FileInputStream fos = new FileInputStream(originalBinary);
- Subject empty = null;
- contentManager.updateBlobStream(empty, fos, packageBits);
+ contentManager.updateBlobStream(fos, packageBits);
packageBits = em.find(PackageBits.class, packageBits.getId());
// test that the bits are available and stored in the DB: Reading the Blob
@@ -298,7 +296,7 @@ public class ContentUIManagerBeanTest extends AbstractEJB3Test {
assert composite.isPackageBitsInDatabase();
FileOutputStream outputStream = new FileOutputStream(retrieved);
- contentManager.writeBlobOutToStream(empty, outputStream, packageBits,
false);
+ contentManager.writeBlobOutToStream(outputStream, packageBits, false);
//Check that db content equal to file system content
String originalDigest = new
MessageDigestGenerator(MessageDigestGenerator.SHA_256)
commit 408bc20049ff0f06738e70b2dbafdbbd83366fdb
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Thu Jun 24 11:03:02 2010 -0400
BZ-597246: changed StreamUtil.slurp to use Hibernate Blob mechanism, and added unit
test for read/write Blob data.
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/content/PackageBits.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/content/PackageBits.java
index 2bf059c..634ebeb 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/content/PackageBits.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/content/PackageBits.java
@@ -104,4 +104,5 @@ public class PackageBits implements Serializable {
public void setBits(byte[] bits) {
this.bits = bits;
}
+
}
\ No newline at end of file
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java
index 244478e..5bae392 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java
@@ -24,8 +24,11 @@ import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.io.OutputStream;
+import java.sql.Blob;
import java.sql.Connection;
import java.sql.PreparedStatement;
+import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
@@ -936,7 +939,15 @@ public class ContentManagerBean implements ContentManagerLocal,
ContentManagerRe
try {
PackageBits bits = entityManager.find(PackageBits.class,
packageBits.getId());
- bits.setBits(StreamUtil.slurp(bitStream));
+ // bits.setBits(StreamUtil.slurp(bitStream));
+ String pkgName = "(set packageName)";
+ if ((packageVersion != null) &&
(packageVersion.getGeneralPackage() != null)) {
+ //update it to whatever package name is if we can get to it.
+ pkgName = packageVersion.getGeneralPackage().getName();
+ }
+ bits = loadPackageBits(bitStream, packageVersion.getId(), pkgName,
packageVersion.getVersion(),
+ bits);
+ // bits.setBits(StreamUtil.slurp(bitStream));
entityManager.merge(bits);
} finally {
@@ -1227,28 +1238,30 @@ public class ContentManagerBean implements ContentManagerLocal,
ContentManagerRe
newPackageVersion.setDisplayName(existingPackage.getName());
// PackageBits bits = loadPackageBits(packageBitStream);
- // TODO: THIS IS VERY BAD - MUST FIX - DO NOT SLURP THE ENTIRE FILE IN MEMORY -
USE JDBC STREAMING
- // Write the content into the newly created package version. This may eventually
move, but for now we'll just
- // use the byte array in the package version to store the bits.
- byte[] packageBits;
- try {
- packageBits = StreamUtil.slurp(packageBitStream);
- } catch (RuntimeException re) {
- throw new RuntimeException("Error reading in the package file",
re);
- }
-
- PackageBits bits = new PackageBits();
- try {
- bits.setBits(packageBits);
- } catch (Exception e) {
- log.error("Error saving the package.", e);
- }
+ PackageBits bits = loadPackageBits(packageBitStream, newPackageVersion.getId(),
packageName, version, null);
+ // // TODO: THIS IS VERY BAD - MUST FIX - DO NOT SLURP THE ENTIRE FILE IN
MEMORY - USE JDBC STREAMING
+ // // Write the content into the newly created package version. This may
eventually move, but for now we'll just
+ // // use the byte array in the package version to store the bits.
+ // byte[] packageBits;
+ // try {
+ // packageBits = StreamUtil.slurp(packageBitStream);
+ // } catch (RuntimeException re) {
+ // throw new RuntimeException("Error reading in the package
file", re);
+ // }
+ //
+ // PackageBits bits = new PackageBits();
+ // try {
+ // bits.setBits(packageBits);
+ // } catch (Exception e) {
+ // log.error("Error saving the package.", e);
+ // }
newPackageVersion.setPackageBits(bits);
newPackageVersion.setFileSize((long) bits.getBits().length);
try {
newPackageVersion.setSHA256(new
MessageDigestGenerator(MessageDigestGenerator.SHA_256)
- .calcDigestString(packageBits));
+ .calcDigestString(bits.getBits()));
+ // .calcDigestString(packageBits));
} catch (IOException e) {
newPackageVersion.setSHA256(null);
}
@@ -1564,24 +1577,25 @@ public class ContentManagerBean implements ContentManagerLocal,
ContentManagerRe
entityManager.persist(packageVersion);
}
- //get the data and persist/merge packageVersion
- // PackageBits bits = loadPackageBits(packageBitStream);
- // TODO: THIS IS VERY BAD - MUST FIX - DO NOT SLURP THE ENTIRE FILE IN MEMORY -
USE JDBC STREAMING
- // Write the content into the newly created package version. This may eventually
move, but for now we'll just
- // use the byte array in the package version to store the bits.
- byte[] packageBits;
- try {
- packageBits = StreamUtil.slurp(packageBitStream);
- } catch (RuntimeException re) {
- throw new RuntimeException("Error reading in the package file",
re);
- }
-
- PackageBits bits = new PackageBits();
- try {
- bits.setBits(packageBits);
- } catch (Exception e) {
- log.error("Error savinf the package.", e);
- }
+ //get the data
+ PackageBits bits = loadPackageBits(packageBitStream, packageVersion.getId(),
packageName, version, null);
+ // // TODO: THIS IS VERY BAD - MUST FIX - DO NOT SLURP THE ENTIRE FILE IN
MEMORY - USE JDBC STREAMING
+ // // Write the content into the newly created package version. This may
eventually move, but for now we'll just
+ // // use the byte array in the package version to store the bits.
+ // byte[] packageBits;
+ // try {
+ // packageBits = StreamUtil.slurp(packageBitStream);
+ // } catch (RuntimeException re) {
+ // throw new RuntimeException("Error reading in the package
file", re);
+ // }
+ //
+ // PackageBits bits = new PackageBits();
+ // // bits = new PackageBits();
+ // try {
+ // bits.setBits(packageBits);
+ // } catch (Exception e) {
+ // log.error("Error savinf the package.", e);
+ // }
packageVersion.setPackageBits(bits);
@@ -1604,26 +1618,177 @@ public class ContentManagerBean implements ContentManagerLocal,
ContentManagerRe
/** Pulls in package bits from the stream. Currently inefficient.
*
* @param packageBitStream
+ * @param packageVersionId
* @return PackageBits ref populated.
*/
- private PackageBits loadPackageBits(InputStream packageBitStream) {
+ @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
+ private PackageBits loadPackageBits(InputStream packageBitStream, int
packageVersionId, String packageName,
+ String packageVersion, PackageBits existingPkgBits) {
PackageBits bits = null;
- // TODO: THIS IS VERY BAD - MUST FIX - DO NOT SLURP THE ENTIRE FILE IN MEMORY -
USE JDBC STREAMING
- // Write the content into the newly created package version. This may eventually
move, but for now we'll just
- // use the byte array in the package version to store the bits.
- byte[] packageBits;
- try {
- packageBits = StreamUtil.slurp(packageBitStream);
- } catch (RuntimeException re) {
- throw new RuntimeException("Error reading in the package file",
re);
+
+ //use or instantiate PackageBits instance.
+ if (existingPkgBits == null) {
+ bits = new PackageBits();
+ entityManager.persist(bits);
+ } else {
+ bits = existingPkgBits;
}
- bits = new PackageBits();
+ //locate related packageVersion
+ PackageVersion pv = entityManager.find(PackageVersion.class, packageVersionId);
+
+ //associate the two
+ pv.setPackageBits(bits);
+ entityManager.flush(); // push the new package bits row to the DB
+
+ bits = entityManager.find(PackageBits.class, bits.getId());
+
+ Subject user = null;
+
+ //write data from stream into db using Hibernate Blob mechanism
+ updateBlobStream(user, packageBitStream, bits);
+
+ return bits;
+ }
+
+ /** Takes an input stream and copies it into the PackageBits table using Hibernate
+ * Blob mechanism with PreparedStatements. As all content into Bits are not stored
as type OID, t
+ *
+ * @param stream
+ */
+ public void updateBlobStream(Subject user, InputStream stream, PackageBits bits) {
+
+ // int resourceId = -1;
+ // if (bits != null) {
+ // resourceId = bits.getId();
+ // }
+ // log.info("Updating data for PackageBits [" + bits + "]
with resource ID [" + resourceId + "]");
+ //
+ // // Check permissions first
+ // if (!authorizationManager.hasResourcePermission(user,
Permission.MANAGE_CONTENT, resourceId)) {
+ // throw new PermissionException("User [" + user.getName()
+ // + "] does not have permission to update packageBits "
+ bits + " with resource ID [" + resourceId + "]");
+ // }
+
+ //TODO: are there any db specific limits that we should check/verify here before
stuffing
+ // the contents of a stream into the db? Should we just let the db complain and
take care of
+ // input validation?
+ if (stream == null) {
+ return; // no stream content to update.
+ }
+ if (bits == null) {
+ bits = new PackageBits();
+ }
+
+ //persist to db if not already
+ if (bits.getId() <= 0) {
+ entityManager.persist(this);
+ }
+
+ //locate the existing PackageBits instance
+ bits = entityManager.find(PackageBits.class, bits.getId());
+
+ ///initialize Bits field so non-empty.
+ bits.setBits(new String("a").getBytes());
+ entityManager.merge(bits);
+ entityManager.flush();
+
+ //Create prepared statements to work with Blobs and hibernate.
+ Connection conn = null;
+ PreparedStatement ps = null;
+ PreparedStatement ps2 = null;
+ DataSource ds = null;
try {
- bits.setBits(packageBits);
+
+ conn = dataSource.getConnection();
+
+ //we are loading the PackageBits saved in the previous step
+ //we need to lock the row which will be updated so we are using FOR UPDATE
+ ps = conn.prepareStatement("SELECT BITS FROM " +
PackageBits.TABLE_NAME + " WHERE ID = ? FOR UPDATE");
+ ps.setInt(1, bits.getId());
+ ResultSet rs = ps.executeQuery();
+ if (rs != null) {
+ while (rs.next()) {
+
+ //We can not create a blob directly because BlobImpl from Hibernate
is not acceptable
+ //for oracle and Connection.createBlob is not working on postgres.
+ //This blob will be not empty because we saved there a bytes from
String("a").
+ Blob blb = rs.getBlob(1);
+
+ //copy the stream to the Blob
+ long transferred = StreamUtil.copy(stream, blb.setBinaryStream(1),
false);
+ stream.close();
+
+ //populate the prepared statement for update
+ ps2 = conn.prepareStatement("UPDATE " +
PackageBits.TABLE_NAME + " SET bits = ? where id = ?");
+ ps2.setBlob(1, blb);
+ ps2.setInt(2, bits.getId());
+
+ //initiate the update.
+ if (ps2.execute()) {
+ throw new Exception("Unable to upload the package bits to
the DB:");
+ }
+ ps2.close();
+ }
+ }
+ ps.close();
+ conn.close();
} catch (Exception e) {
- log.error("Error saving the package.", e);
+ log.error("An error occurred while updating Blob with stream for
PackageBits[" + bits.getId() + "], "
+ + e.getMessage());
+ e.printStackTrace();
+ }
+
+ entityManager.merge(bits);
+ entityManager.flush();
+ }
+
+ /**Writes the contents of a the Blob out to the stream passed in.
+ *
+ * @param stream non null stream where contents to be written to.
+ */
+ public void writeBlobOutToStream(Subject user, OutputStream stream, PackageBits bits,
boolean closeStreams) {
+
+ // int resourceId = -1;
+ // if (bits != null) {
+ // resourceId = bits.getId();
+ // }
+ // log.info("Reading data for PackageBits [" + bits + "]
with resource ID [" + resourceId + "]");
+ //
+ // // Check permissions first
+ // if (!authorizationManager.hasResourcePermission(user,
Permission.MANAGE_CONTENT, resourceId)) {
+ // throw new PermissionException("User [" + user.getName() +
"] does not have permission to read packageBits "
+ // + bits + " with resource ID [" + resourceId +
"]");
+ // }
+
+ if (stream == null) {
+ return; // no locate to write to
+ }
+ // if ((bits == null) || (bits.getId() <= 0) || bits.getBits() == null)
{
+ if ((bits == null) || (bits.getId() <= 0)) {
+ //then PackageBits instance passed in is insufficiently initialized.
+ log.warn("PackageBits insufficiently initialized. No data to write
out.");
+ return;
+ }
+ try {
+ //open connection
+ Connection conn = dataSource.getConnection();
+
+ //prepared statement for retrieval of Blob.bits
+ PreparedStatement ps = conn
+ .prepareStatement("SELECT BITS FROM " + PackageBits.TABLE_NAME
+ " WHERE ID = ?");
+ ps.setInt(1, bits.getId());
+ ResultSet results = ps.executeQuery();
+ if (results.next()) {
+ // results.next();
+ //retrieve the Blob
+ Blob blob = results.getBlob(1);
+ //now copy the contents to the stream passed in
+ StreamUtil.copy(blob.getBinaryStream(), stream, closeStreams);
+ }
+ } catch (Exception ex) {
+ log.error("An error occurred while writing Blob contents out to stream
:" + ex.getMessage());
+ ex.printStackTrace();
}
- return bits;
}
-}
+}
\ No newline at end of file
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerLocal.java
index fc128a4..83c0037 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerLocal.java
@@ -19,6 +19,7 @@
package org.rhq.enterprise.server.content;
import java.io.InputStream;
+import java.io.OutputStream;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -32,6 +33,7 @@ import org.rhq.core.domain.content.Architecture;
import org.rhq.core.domain.content.ContentServiceRequest;
import org.rhq.core.domain.content.InstalledPackage;
import org.rhq.core.domain.content.Package;
+import org.rhq.core.domain.content.PackageBits;
import org.rhq.core.domain.content.PackageDetailsKey;
import org.rhq.core.domain.content.PackageType;
import org.rhq.core.domain.content.PackageVersion;
@@ -211,9 +213,8 @@ public interface ContentManagerLocal {
PackageVersion createPackageVersion(String packageName, int packageTypeId, String
version, int architectureId,
InputStream packageBitStream);
- PackageVersion getUploadedPackageVersion(String packageName, int packageTypeId,
String version,
- int architectureId, InputStream packageBitStream, Map<String, String>
packageUploadDetails,
- int newResourceTypeId);
+ PackageVersion getUploadedPackageVersion(String packageName, int packageTypeId,
String version, int architectureId,
+ InputStream packageBitStream, Map<String, String> packageUploadDetails, int
newResourceTypeId);
/**
* Very simple method that persists the given package version within its own
transaction.
@@ -346,4 +347,8 @@ public interface ContentManagerLocal {
byte[] getPackageBytes(Subject user, int resourceId, int installedPackageId);
+ void writeBlobOutToStream(Subject user, OutputStream stream, PackageBits bits,
boolean closeStreams);
+
+ void updateBlobStream(Subject user, InputStream stream, PackageBits bits);
+
}
\ No newline at end of file
diff --git
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/content/test/ContentUIManagerBeanTest.java
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/content/test/ContentUIManagerBeanTest.java
index b83695f..c8ac4e3 100644
---
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/content/test/ContentUIManagerBeanTest.java
+++
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/content/test/ContentUIManagerBeanTest.java
@@ -18,6 +18,10 @@
*/
package org.rhq.enterprise.server.content.test;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+
import javax.persistence.EntityManager;
import org.apache.commons.logging.Log;
@@ -25,6 +29,7 @@ import org.apache.commons.logging.LogFactory;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
+import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.content.Architecture;
import org.rhq.core.domain.content.Package;
import org.rhq.core.domain.content.PackageBits;
@@ -32,7 +37,9 @@ import org.rhq.core.domain.content.PackageType;
import org.rhq.core.domain.content.PackageVersion;
import org.rhq.core.domain.content.composite.LoadedPackageBitsComposite;
import org.rhq.core.domain.resource.Resource;
+import org.rhq.core.util.MessageDigestGenerator;
import org.rhq.enterprise.server.auth.SubjectManagerLocal;
+import org.rhq.enterprise.server.content.ContentManagerLocal;
import org.rhq.enterprise.server.content.ContentUIManagerLocal;
import org.rhq.enterprise.server.test.AbstractEJB3Test;
import org.rhq.enterprise.server.util.LookupUtil;
@@ -52,6 +59,7 @@ public class ContentUIManagerBeanTest extends AbstractEJB3Test {
private ContentUIManagerLocal contentUIManager;
private SubjectManagerLocal subjectManager;
+ private ContentManagerLocal contentManager;
// Setup --------------------------------------------
@@ -59,6 +67,7 @@ public class ContentUIManagerBeanTest extends AbstractEJB3Test {
public void setupBeforeClass() throws Exception {
contentUIManager = LookupUtil.getContentUIManager();
subjectManager = LookupUtil.getSubjectManager();
+ contentManager = LookupUtil.getContentManager();
}
// Test Cases --------------------------------------------
@@ -214,4 +223,94 @@ public class ContentUIManagerBeanTest extends AbstractEJB3Test {
getTransactionManager().rollback();
}
}
+
+ @Test(enabled = ENABLE_TESTS)
+ public void testPackageBitsBlobStream() throws Throwable {
+ LoadedPackageBitsComposite composite;
+
+ getTransactionManager().begin();
+
+ try {
+ EntityManager em = getEntityManager();
+ Resource resource = SessionTestHelper.createNewResource(em,
"testPkgBitsLargeResource");
+ PackageType pkgType = new PackageType("testPkgBitsLargePT",
resource.getResourceType());
+ org.rhq.core.domain.content.Package pkg = new
Package("testPkgBitsLargeP", pkgType);
+ Architecture arch = new Architecture("testPkgLargeArch");
+ PackageVersion pkgVer = new PackageVersion(pkg, "1", arch);
+
+ em.persist(pkgType);
+ em.persist(pkg);
+ em.persist(arch);
+ em.persist(pkgVer);
+ em.flush();
+
+ // test that no bits are available right now
+ composite = contentUIManager.getLoadedPackageBitsComposite(pkgVer.getId());
+ assert composite != null;
+ assert composite.getPackageVersionId() == pkgVer.getId();
+ assert composite.getPackageBitsId() == null;
+ assert !composite.isPackageBitsAvailable();
+ assert !composite.isPackageBitsInDatabase();
+
+ // pretend we loaded the bits, but we stored them somewhere other then the
DB
+ PackageBits packageBits = new PackageBits();
+ em.persist(packageBits);
+ pkgVer.setPackageBits(packageBits);
+ pkgVer = em.merge(pkgVer);
+ em.flush();
+
+ // test that the bits are available, but are not stored in the DB
+ composite = contentUIManager.getLoadedPackageBitsComposite(pkgVer.getId());
+ assert composite != null;
+ assert composite.getPackageVersionId() == pkgVer.getId();
+ assert composite.getPackageBitsId() == packageBits.getId();
+ assert composite.isPackageBitsAvailable();
+ assert !composite.isPackageBitsInDatabase();
+
+ // let's make sure there really is no data in the DB
+ packageBits = em.find(PackageBits.class, packageBits.getId());
+ assert packageBits != null;
+ assert packageBits.getBits() == null;
+
+ // now lets store some bits in the DB using PreparedStatements and BLOB
mechanism
+ // to simulate large file transfers where streaming is used instead of
reading entire
+ // contents into memory every time.
+
+ //any jar should be fine. Use generated server jar
+ File originalBinary = new
File("./target/rhq-enterprise-server.jar");
+ //destination once pulled from db
+ File retrieved = new File("./target/pulled.jar");
+ if (retrieved.exists()) {
+ assertTrue("Unable to delete ./target/pulled.jar for test
cleanup.", retrieved.delete());
+ }
+ FileInputStream fos = new FileInputStream(originalBinary);
+
+ Subject empty = null;
+ contentManager.updateBlobStream(empty, fos, packageBits);
+ packageBits = em.find(PackageBits.class, packageBits.getId());
+
+ // test that the bits are available and stored in the DB: Reading the Blob
+ composite = contentUIManager.getLoadedPackageBitsComposite(pkgVer.getId());
+ assert composite != null;
+ assert composite.getPackageVersionId() == pkgVer.getId();
+ assert composite.getPackageBitsId() == packageBits.getId();
+ assert composite.isPackageBitsAvailable();
+ assert composite.isPackageBitsInDatabase();
+
+ FileOutputStream outputStream = new FileOutputStream(retrieved);
+ contentManager.writeBlobOutToStream(empty, outputStream, packageBits,
false);
+
+ //Check that db content equal to file system content
+ String originalDigest = new
MessageDigestGenerator(MessageDigestGenerator.SHA_256)
+ .calcDigestString(originalBinary);
+ String newDigest = new
MessageDigestGenerator(MessageDigestGenerator.SHA_256).calcDigestString(retrieved);
+ assertEquals("Uploaded and retrieved digests differ:",
originalDigest, newDigest);
+
+ } catch (Throwable t) {
+ t.printStackTrace();
+ throw t;
+ } finally {
+ getTransactionManager().rollback();
+ }
+ }
}
\ No newline at end of file
commit d9c7b5f73abdf141dce71b4c938e6b4718954e18
Author: Joseph Marques <joseph(a)redhat.com>
Date: Thu Jun 24 10:39:21 2010 -0400
BZ-607672: support upgrading alert notification history
diff --git
a/modules/core/dbutils/src/main/java/org/rhq/core/db/upgrade/CustomAlertSenderUpgradeTask.java
b/modules/core/dbutils/src/main/java/org/rhq/core/db/upgrade/CustomAlertSenderUpgradeTask.java
index 6fd0415..4e2f328 100644
---
a/modules/core/dbutils/src/main/java/org/rhq/core/db/upgrade/CustomAlertSenderUpgradeTask.java
+++
b/modules/core/dbutils/src/main/java/org/rhq/core/db/upgrade/CustomAlertSenderUpgradeTask.java
@@ -23,6 +23,8 @@ import java.sql.SQLException;
import java.util.List;
import org.rhq.core.db.DatabaseType;
+import org.rhq.core.db.OracleDatabaseType;
+import org.rhq.core.db.PostgresqlDatabaseType;
/**
* The introduction of custom alert senders brought with it the denormalization of the
AlertNotification schema.
@@ -57,6 +59,13 @@ public class CustomAlertSenderUpgradeTask implements
DatabaseUpgradeTask {
this.databaseType = databaseType;
this.connection = connection;
+ // upgrade the notification audit trail
+ upgradeSubjectNotificationLogs();
+ upgradeRoleNotificationLogs();
+ upgradeEmailNotificationLogs();
+ upgradeOperationNotificationLogs();
+
+ // upgrade the notification rules
upgradeSubjectNotifications();
upgradeRoleNotifications();
upgradeEmailNotifications();
@@ -64,6 +73,130 @@ public class CustomAlertSenderUpgradeTask implements
DatabaseUpgradeTask {
upgradeOperationNotifications();
}
+ private void upgradeSubjectNotificationLogs() throws SQLException {
+ /*
+ * alert.alertNotificationLog.sender = "System Users"
+ * alert.alertNotificationLog.result_state = "DEFERRED_EMAIL"
+ * alert.alertNotificationLog.message = "Sending to subjects:
[<alert.alertNotificationLog.subjects>]"
+ */
+ String field = "notif.subjects";
+ String message = concat("'Sending to subjects: '", field);
+ String insertSQL = getNotificationLogConversionSQL("'System
Users'", "'DEFERRED_EMAIL'", message, field);
+ System.out.println("Executing: " + insertSQL);
+ databaseType.executeSql(connection, insertSQL);
+ }
+
+ private void upgradeRoleNotificationLogs() throws SQLException {
+ /*
+ * alert.alertNotificationLog.sender = "System Roles"
+ * alert.alertNotificationLog.result_state = "DEFERRED_EMAIL"
+ * alert.alertNotificationLog.message = "Sending to roles:
[<alert.alertNotificationLog.roles>]"
+ */
+ String field = "notif.roles";
+ String message = concat("'Sending to roles: '", field);
+ String insertSQL = getNotificationLogConversionSQL("'System
Roles'", "'DEFERRED_EMAIL'", message, field);
+ System.out.println("Executing: " + insertSQL);
+ databaseType.executeSql(connection, insertSQL);
+ }
+
+ private void upgradeEmailNotificationLogs() throws SQLException {
+ /*
+ * alert.alertNotificationLog.sender = "Direct Emails"
+ * alert.alertNotificationLog.result_state = "DEFERRED_EMAIL"
+ * alert.alertNotificationLog.message = "Sending to subjects:
[<alert.alertNotificationLog.emails>]"
+ */
+ String field = "notif.emails";
+ String message = concat("'Sending to addresses: '", field);
+ String insertSQL = getNotificationLogConversionSQL("'Direct
Emails'", "'DEFERRED_EMAIL'", message, field);
+ System.out.println("Executing: " + insertSQL);
+ databaseType.executeSql(connection, insertSQL);
+ }
+
+ private String getNotificationLogConversionSQL(String sender, String resultState,
String message,
+ String notNullField) {
+ if (databaseType instanceof PostgresqlDatabaseType) {
+ return "INSERT INTO rhq_alert_notif_log ( id, alert_id, sender,
result_state, message )" //
+ + " SELECT nextval('RHQ_ALERT_NOTIF_LOG_ID_SEQ'),
" //
+ + " notif.alert_id AS notifAlertId, " //
+ + " " + sender + " AS notifSender, "//
+ + " " + resultState + " AS notifResultState,
" //
+ + " " + message + " AS notifMessage "//
+ + " FROM rhq_alert_notif_log notif " //
+ + " WHERE " + notNullField + " IS NOT NULL";
+ } else if (databaseType instanceof OracleDatabaseType) {
+ return "INSERT INTO rhq_alert_notif_log ( id, alert_id, sender,
result_state, message )" //
+ + " SELECT RHQ_ALERT_NOTIF_LOG_ID_SEQ.nextval, " //
+ + " notifAlertId, notifSender, notifResultState,
notifMessage "
+ + " FROM ( SELECT notif.alert_id AS notifAlertId, " //
+ + " " + sender + " AS notifSender,
"//
+ + " " + resultState + " AS
notifResultState, " //
+ + " " + message + " AS notifMessage
"//
+ + " FROM rhq_alert_notif_log notif " //
+ + " WHERE " + notNullField + " IS NOT NULL
)";
+ } else {
+ throw new IllegalStateException(this.getClass().getSimpleName() + " does
not support upgrades for "
+ + databaseType.getName());
+ }
+ }
+
+ private void upgradeOperationNotificationLogs() throws SQLException {
+ /*
+ * alert.alertNotificationLog.sender = "Resource Operations"
+ * alert.alertNotificationLog.result_state = "SUCCESS"
+ * alert.alertNotificationLog.message = "Executed
'<alert.triggeredOperation>' on this resource"
+ */
+ String field = "alert.triggered_operation";
+ String message = concat("'Executed \"'", field,
"'\" on this resource'");
+ String insertSQL = getNotificationLogInsertionSQL("'Resource
Operations'", "'SUCCESS'", message, field);
+ System.out.println("Executing: " + insertSQL);
+ databaseType.executeSql(connection, insertSQL);
+ }
+
+ private String getNotificationLogInsertionSQL(String sender, String resultState,
String message, String notNullField) {
+ if (databaseType instanceof PostgresqlDatabaseType) {
+ return "INSERT INTO rhq_alert_notif_log ( id, alert_id, sender,
result_state, message )" //
+ + " SELECT nextval('RHQ_ALERT_NOTIF_LOG_ID_SEQ'),
" //
+ + " alert.id AS notifAlertId, " //
+ + " " + sender + " AS notifSender, "//
+ + " " + resultState + " AS notifResultState,
" //
+ + " " + message + " AS notifMessage "//
+ + " FROM rhq_alert alert " //
+ + " WHERE " + notNullField + " IS NOT NULL";
+ } else if (databaseType instanceof OracleDatabaseType) {
+ return "INSERT INTO rhq_alert_notif_log ( id, alert_id, sender,
result_state, message )" //
+ + " SELECT RHQ_ALERT_NOTIF_LOG_ID_SEQ.nextval, " //
+ + " notifAlertId, notifSender, notifResultState,
notifMessage "
+ + " FROM ( SELECT alert.id AS notifAlertId, " //
+ + " " + sender + " AS notifSender,
"//
+ + " " + resultState + " AS
notifResultState, " //
+ + " " + message + " AS notifMessage
"//
+ + " FROM rhq_alert alert " //
+ + " WHERE " + notNullField + " IS NOT NULL
)";
+ } else {
+ throw new IllegalStateException(this.getClass().getSimpleName() + " does
not support upgrades for "
+ + databaseType.getName());
+ }
+ }
+
+ private String concat(String... elements) {
+ StringBuilder builder = new StringBuilder();
+ if (databaseType instanceof PostgresqlDatabaseType || databaseType instanceof
OracleDatabaseType) {
+ boolean first = true;
+ for (String next : elements) {
+ if (first) {
+ first = false;
+ } else {
+ builder.append("||");
+ }
+ builder.append(next);
+ }
+ } else {
+ throw new IllegalStateException(this.getClass().getSimpleName() + " does
not support upgrades for "
+ + databaseType.getName());
+ }
+ return builder.toString();
+ }
+
private void upgradeSubjectNotifications() throws SQLException {
String dataMapSQL = "" //
+ " SELECT notif.alert_definition_id, notif.subject_id "//
diff --git a/modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml
b/modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml
index d10dcf9..1d3bd04 100644
--- a/modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml
+++ b/modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml
@@ -2082,6 +2082,20 @@
</schema-directSQL>
</schemaSpec>
<schemaSpec version="2.70.2">
+ <schema-addColumn table="RHQ_ALERT_NOTIF_LOG"
column="SENDER" columnType="VARCHAR2" precision="200" />
+ <schema-addColumn table="RHQ_ALERT_NOTIF_LOG"
column="RESULT_STATE" columnType="VARCHAR2" precision="20"
/>
+ <schema-addColumn table="RHQ_ALERT_NOTIF_LOG"
column="MESSAGE" columnType="VARCHAR2" precision="4000"
/>
+ <schema-addColumn table="RHQ_ALERT_NOTIF_LOG"
column="ALL_EMAILS" columnType="VARCHAR2" precision="4000"
/>
+ <schema-addColumn table="RHQ_ALERT_NOTIF_LOG"
column="EMAILS_FAILED" columnType="VARCHAR2"
precision="4000" />
+ </schemaSpec>
+ <schemaSpec version="2.70.3">
+ <schema-directSQL>
+ <statement desc="Dropping unique index
RHQ_ALERT_IDX_ALERT">
+ DROP INDEX RHQ_ALERT_IDX_ALERT
+ </statement>
+ </schema-directSQL>
+ </schemaSpec>
+ <schemaSpec version="2.70.4">
<!-- turn first-class notification data into configuration objects for
custom alert senders -->
<schema-alterColumn table="RHQ_ALERT_NOTIFICATION"
column="NOTIFICATION_TYPE" nullable="TRUE" />
<schema-javaTask className="CustomAlertSenderUpgradeTask"
/>
@@ -2092,7 +2106,7 @@
</schema-directSQL>
<schema-deleteColumn table="RHQ_ALERT_NOTIFICATION"
column="NOTIFICATION_TYPE" />
</schemaSpec>
- <schemaSpec version="2.70.3">
+ <schemaSpec version="2.70.5">
<!-- remove first-class alert notification structures from definition
side of the model-->
<schema-deleteColumn table="RHQ_ALERT_NOTIFICATION"
column="snmp_host" />
<schema-deleteColumn table="RHQ_ALERT_NOTIFICATION"
column="snmp_port" />
@@ -2100,25 +2114,17 @@
<schema-deleteColumn table="RHQ_ALERT_NOTIFICATION"
column="email_address" />
<schema-deleteColumn table="RHQ_ALERT_NOTIFICATION"
column="role_id" />
<schema-deleteColumn table="RHQ_ALERT_NOTIFICATION"
column="subject_id" />
+ <schema-deleteColumn table="RHQ_ALERT_DEFINITION"
column="operation_def_id" />
</schemaSpec>
- <schemaSpec version="2.70.4">
+ <schemaSpec version="2.70.6">
<schema-deleteColumn table="RHQ_ALERT_NOTIF_LOG"
column="roles" />
<schema-deleteColumn table="RHQ_ALERT_NOTIF_LOG"
column="subjects" />
<schema-deleteColumn table="RHQ_ALERT_NOTIF_LOG"
column="emails" />
+ <schema-deleteColumn table="RHQ_ALERT"
column="triggered_operation" />
</schemaSpec>
- <schemaSpec version="2.70.5">
- <schema-addColumn table="RHQ_ALERT_NOTIF_LOG"
column="SENDER" columnType="VARCHAR2" precision="200" />
- <schema-addColumn table="RHQ_ALERT_NOTIF_LOG"
column="RESULT_STATE" columnType="VARCHAR2" precision="20"
/>
- <schema-addColumn table="RHQ_ALERT_NOTIF_LOG"
column="MESSAGE" columnType="VARCHAR2" precision="4000"
/>
- <schema-addColumn table="RHQ_ALERT_NOTIF_LOG"
column="ALL_EMAILS" columnType="VARCHAR2" precision="4000"
/>
- <schema-addColumn table="RHQ_ALERT_NOTIF_LOG"
column="EMAILS_FAILED" columnType="VARCHAR2"
precision="4000" />
- </schemaSpec>
- <schemaSpec version="2.70.6">
+ <schemaSpec version="2.70.7">
<schema-directSQL>
- <statement>
- DROP INDEX RHQ_ALERT_IDX_ALERT
- </statement>
- <statement>
+ <statement desc="Recreating RHQ_ALERT_IDX_ALERT as non-unique
index">
CREATE INDEX RHQ_ALERT_IDX_ALERT ON RHQ_ALERT_NOTIF_LOG
(alert_id)
</statement>
</schema-directSQL>
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/alert/Alert.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/alert/Alert.java
index 593f223..72d705d 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/alert/Alert.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/alert/Alert.java
@@ -238,10 +238,6 @@ public class Alert implements Serializable {
@OneToMany(mappedBy = "alert", cascade = CascadeType.ALL)
private List<AlertNotificationLog> alertNotificationLogs = new
ArrayList<AlertNotificationLog>();
- @Deprecated
- @Column(name = "TRIGGERED_OPERATION", nullable = true)
- private String triggeredOperation;
-
/*
* recoveryId and willRecover==true are mutually exclusive
*
@@ -283,9 +279,6 @@ public class Alert implements Serializable {
// and unnecessary for creating the link
// alertDefinition.addAlert(this);
this.ctime = ctime;
- if (alertDefinition.getOperationDefinition() != null) {
-
setTriggeredOperation(alertDefinition.getOperationDefinition().getDisplayName());
- }
}
public int getId() {
@@ -325,14 +318,6 @@ public class Alert implements Serializable {
this.alertNotificationLogs.add(log);
}
- public String getTriggeredOperation() {
- return triggeredOperation;
- }
-
- public void setTriggeredOperation(String triggeredOperation) {
- this.triggeredOperation = triggeredOperation;
- }
-
public Long getAcknowledgeTime() {
return acknowledgeTime;
}
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/alert/AlertDefinition.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/alert/AlertDefinition.java
index 07739cf..a64de62 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/alert/AlertDefinition.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/alert/AlertDefinition.java
@@ -54,7 +54,6 @@ import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlTransient;
import org.rhq.core.domain.alert.notification.AlertNotification;
-import org.rhq.core.domain.operation.OperationDefinition;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.ResourceType;
import org.rhq.core.domain.resource.group.ResourceGroup;
@@ -361,10 +360,6 @@ public class AlertDefinition implements Serializable {
@org.hibernate.annotations.Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
private List<AlertNotification> alertNotifications = new
ArrayList<AlertNotification>();
- @JoinColumn(name = "OPERATION_DEF_ID", nullable = true)
- @ManyToOne
- private OperationDefinition operationDefinition;
-
/*
* As of Sept 29, 2007 there is no reason to expose this at the java layer. However,
this is required if we want to
* be able to cascade delete the AlertDampeningEvents when an AlertDefinition is
removed from the db, due to
@@ -409,7 +404,7 @@ public class AlertDefinition implements Serializable {
/*
* Don't copy the id, ctime, or mtime.
*/
- this.name = alertDef.name;
+ setName(alertDef.name);
this.description = alertDef.description;
this.priority = alertDef.priority;
this.enabled = alertDef.enabled;
@@ -456,8 +451,6 @@ public class AlertDefinition implements Serializable {
}
this.removeAllAlertNotifications();
this.getAlertNotifications().addAll(copiedNotifications);
-
- this.operationDefinition = alertDef.operationDefinition;
}
public int getId() {
@@ -686,14 +679,6 @@ public class AlertDefinition implements Serializable {
this.alertNotifications.clear();
}
- public OperationDefinition getOperationDefinition() {
- return operationDefinition;
- }
-
- public void setOperationDefinition(OperationDefinition operationDefinition) {
- this.operationDefinition = operationDefinition;
- }
-
public Set<AlertDampeningEvent> getAlertDampeningEvents() {
return alertDampeningEvents;
}
diff --git
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/action/resource/common/monitor/alerts/ViewAlertAction.java
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/action/resource/common/monitor/alerts/ViewAlertAction.java
index 30454a7..01d4bc3 100644
---
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/action/resource/common/monitor/alerts/ViewAlertAction.java
+++
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/action/resource/common/monitor/alerts/ViewAlertAction.java
@@ -45,7 +45,6 @@ import org.rhq.core.domain.alert.AlertDefinition;
import org.rhq.core.domain.alert.notification.AlertNotificationLog;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.measurement.DataType;
-import org.rhq.core.domain.measurement.MeasurementCategory;
import org.rhq.core.domain.measurement.MeasurementDefinition;
import org.rhq.core.server.MeasurementConverter;
import org.rhq.enterprise.gui.legacy.AttrConstants;
@@ -117,7 +116,7 @@ public class ViewAlertAction extends TilesAction {
true);
} catch (Exception e) {
// check if this is Calltime data
- if (definition.getDataType()== DataType.CALLTIME)
+ if (definition.getDataType() == DataType.CALLTIME)
firedValue = condLog.getValue();
else
firedValue = "??";
@@ -142,11 +141,6 @@ public class ViewAlertAction extends TilesAction {
request.setAttribute("aNotifLogs", notificationLogs);
- request.setAttribute("controlEnabled", true); // always display control
result, even if it's "none"
- if (av.getTriggeredOperation() != null) {
- request.setAttribute("controlAction", av.getTriggeredOperation());
- }
-
int recoveryAlertDefId = adv.getRecoveryId();
if (recoveryAlertDefId != 0) {
String recoveryAlertName = getRecoveryAlertName(recoveryAlertDefId,
subject);
diff --git
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/action/resource/common/monitor/alerts/config/EditDefinitionControlActionAction.java
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/action/resource/common/monitor/alerts/config/EditDefinitionControlActionAction.java
index ac19df3..6d080ef 100644
---
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/action/resource/common/monitor/alerts/config/EditDefinitionControlActionAction.java
+++
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/action/resource/common/monitor/alerts/config/EditDefinitionControlActionAction.java
@@ -103,8 +103,6 @@ public class EditDefinitionControlActionAction extends BaseAction {
operationDefinition = operationManager.getOperationDefinition(subject,
operationId);
}
- alertDefinition.setOperationDefinition(operationDefinition);
-
try {
if (context == FormContext.Type) {
alertTemplateManager.updateAlertTemplate(subject, alertDefinition,
false);
diff --git
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/action/resource/common/monitor/alerts/config/EditDefinitionControlActionFormPrepareAction.java
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/action/resource/common/monitor/alerts/config/EditDefinitionControlActionFormPrepareAction.java
index 10fa84e..1086314 100644
---
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/action/resource/common/monitor/alerts/config/EditDefinitionControlActionFormPrepareAction.java
+++
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/action/resource/common/monitor/alerts/config/EditDefinitionControlActionFormPrepareAction.java
@@ -82,12 +82,14 @@ public class EditDefinitionControlActionFormPrepareAction extends
TilesAction {
List<OptionItem> operationNames = AlertDefUtil.getControlActions(subject,
id, formContext);
// drop-downs
+ /* replaced by custom alert senders
operationsForm.setControlActions(operationNames);
if (alertDefinition.getOperationDefinition() != null) {
Integer operationId = alertDefinition.getOperationDefinition().getId();
operationsForm.setControlAction(String.valueOf(operationId));
}
+ */
// properties
// AlertDefinition alertDef = AlertDefUtil.getAlertDefinition(request,
sessionID, eb);
diff --git
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/action/resource/common/monitor/alerts/config/ViewDefinitionAction.java
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/action/resource/common/monitor/alerts/config/ViewDefinitionAction.java
index 4c395fd..1657d08 100644
---
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/action/resource/common/monitor/alerts/config/ViewDefinitionAction.java
+++
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/action/resource/common/monitor/alerts/config/ViewDefinitionAction.java
@@ -68,10 +68,6 @@ public class ViewDefinitionAction extends TilesAction {
request.setAttribute("recoveryAlertName", recoveryAlertName);
}
- if (alertDef.getOperationDefinition() != null) {
- request.setAttribute("controlAction",
alertDef.getOperationDefinition().getDisplayName());
- }
-
// enablement
AlertDefUtil.setAlertDampeningRequestAttributes(request, alertDef);
commit 4e2823ce36628041c3626d8e131ff2f8f9a3b94d
Merge: b324404... 6dc2bab...
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu Jun 24 14:52:30 2010 +0200
Merge branch 'release-3.0.0' of
ssh://git.fedorahosted.org/git/rhq/rhq into
release-3.0.0
commit b324404ad3b91849f12afa57fcd5417521274fd2
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu Jun 24 14:51:20 2010 +0200
BZ 607580 for traits don't try to parse numeric values and just show the
conditions raw value (like for call time data).
diff --git
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/action/resource/common/monitor/alerts/ViewAlertAction.java
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/action/resource/common/monitor/alerts/ViewAlertAction.java
index b3dbb3b..30454a7 100644
---
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/action/resource/common/monitor/alerts/ViewAlertAction.java
+++
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/action/resource/common/monitor/alerts/ViewAlertAction.java
@@ -128,6 +128,8 @@ public class ViewAlertAction extends TilesAction {
|| (category == AlertConditionCategory.EVENT)) {
// TODO: jmarques - add validation to make sure condition is a valid
regex Pattern
alertCondBean.setActualValue(condLog.getValue());
+ } else if (category == AlertConditionCategory.TRAIT) {
+ alertCondBean.setActualValue(condLog.getValue());
} else {
alertCondBean.setActualValue("??");
}
diff --git
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/subsystem/SubsystemAlertHistoryUIBean.java
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/subsystem/SubsystemAlertHistoryUIBean.java
index 208ab29..ca1cd5a 100644
---
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/subsystem/SubsystemAlertHistoryUIBean.java
+++
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/subsystem/SubsystemAlertHistoryUIBean.java
@@ -223,7 +223,8 @@ public class SubsystemAlertHistoryUIBean extends SubsystemView {
String firedValue = log.getValue();
if (condition.getMeasurementDefinition() != null) {
- if (condition.getMeasurementDefinition().getDataType()==
DataType.CALLTIME)
+ DataType type =
condition.getMeasurementDefinition().getDataType();
+ if (type == DataType.CALLTIME || type == DataType.TRAIT)
firedValue = log.getValue();
else
firedValue =
MeasurementConverter.format(Double.valueOf(log.getValue()), condition
commit 3beb63086a3e383b11b5de1f438cb5f7629ec1ec
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu Jun 24 14:17:39 2010 +0200
If this is calltime data, fall back to show the raw codition log and don't try to
parse a numeric value.
diff --git
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/subsystem/SubsystemAlertHistoryUIBean.java
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/subsystem/SubsystemAlertHistoryUIBean.java
index 892b071..208ab29 100644
---
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/subsystem/SubsystemAlertHistoryUIBean.java
+++
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/subsystem/SubsystemAlertHistoryUIBean.java
@@ -28,11 +28,13 @@ import javax.faces.model.DataModel;
import javax.faces.model.SelectItem;
import javax.servlet.http.HttpServletRequest;
+import org.rhq.core.db.DatabaseType;
import org.rhq.core.domain.alert.AlertCondition;
import org.rhq.core.domain.alert.AlertConditionCategory;
import org.rhq.core.domain.alert.AlertConditionLog;
import org.rhq.core.domain.alert.composite.AlertHistoryComposite;
import org.rhq.core.domain.auth.Subject;
+import org.rhq.core.domain.measurement.DataType;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
@@ -221,8 +223,11 @@ public class SubsystemAlertHistoryUIBean extends SubsystemView {
String firedValue = log.getValue();
if (condition.getMeasurementDefinition() != null) {
- firedValue =
MeasurementConverter.format(Double.valueOf(log.getValue()), condition
- .getMeasurementDefinition().getUnits(), true);
+ if (condition.getMeasurementDefinition().getDataType()==
DataType.CALLTIME)
+ firedValue = log.getValue();
+ else
+ firedValue =
MeasurementConverter.format(Double.valueOf(log.getValue()), condition
+ .getMeasurementDefinition().getUnits(), true);
}
history.setConditionText(displayText);
commit 6dc2bab0cc29ff28f82b8a63cb6c4b07222ff17c
Author: hudson auto <wnstb(a)yahoo.com>
Date: Thu Jun 24 02:54:16 2010 -0400
[maven-release-plugin] prepare for next development iteration
diff --git a/modules/common/ant-bundle/pom.xml b/modules/common/ant-bundle/pom.xml
index 6d440ef..eda9133 100644
--- a/modules/common/ant-bundle/pom.xml
+++ b/modules/common/ant-bundle/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-common-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/common/filetemplate-bundle/pom.xml
b/modules/common/filetemplate-bundle/pom.xml
index dbd8dd6..bc7965b 100644
--- a/modules/common/filetemplate-bundle/pom.xml
+++ b/modules/common/filetemplate-bundle/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-common-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/common/jboss-as/pom.xml b/modules/common/jboss-as/pom.xml
index 1077987..2cf950b 100644
--- a/modules/common/jboss-as/pom.xml
+++ b/modules/common/jboss-as/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-common-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/common/pom.xml b/modules/common/pom.xml
index 751726e..ee81a94 100644
--- a/modules/common/pom.xml
+++ b/modules/common/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/core/client-api/pom.xml b/modules/core/client-api/pom.xml
index 78d1f23..d177f9e 100644
--- a/modules/core/client-api/pom.xml
+++ b/modules/core/client-api/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-core-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/core/comm-api/pom.xml b/modules/core/comm-api/pom.xml
index f6fadb5..a51f92b 100644
--- a/modules/core/comm-api/pom.xml
+++ b/modules/core/comm-api/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-core-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/core/dbutils/pom.xml b/modules/core/dbutils/pom.xml
index 84dd23f..92ae1d2 100644
--- a/modules/core/dbutils/pom.xml
+++ b/modules/core/dbutils/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-core-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/core/domain/pom.xml b/modules/core/domain/pom.xml
index 96cbc8e..e0ced84 100644
--- a/modules/core/domain/pom.xml
+++ b/modules/core/domain/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-core-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/core/gui/pom.xml b/modules/core/gui/pom.xml
index 0df3808..0911918 100644
--- a/modules/core/gui/pom.xml
+++ b/modules/core/gui/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-core-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/core/native-system/pom.xml b/modules/core/native-system/pom.xml
index 558b9a2..d47d4c8 100644
--- a/modules/core/native-system/pom.xml
+++ b/modules/core/native-system/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/core/plugin-api/pom.xml b/modules/core/plugin-api/pom.xml
index ba389df..e1ce7ef 100644
--- a/modules/core/plugin-api/pom.xml
+++ b/modules/core/plugin-api/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-core-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/core/plugin-container/pom.xml
b/modules/core/plugin-container/pom.xml
index a570e19..2e58102 100644
--- a/modules/core/plugin-container/pom.xml
+++ b/modules/core/plugin-container/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-core-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/core/plugin-validator/pom.xml
b/modules/core/plugin-validator/pom.xml
index c721f21..7739177 100644
--- a/modules/core/plugin-validator/pom.xml
+++ b/modules/core/plugin-validator/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-core-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/core/plugindoc/pom.xml b/modules/core/plugindoc/pom.xml
index 9e92634..eeb7e81 100644
--- a/modules/core/plugindoc/pom.xml
+++ b/modules/core/plugindoc/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-core-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/core/pom.xml b/modules/core/pom.xml
index 47cb583..7aad64c 100644
--- a/modules/core/pom.xml
+++ b/modules/core/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/core/util/pom.xml b/modules/core/util/pom.xml
index cee7efe..bc41dc5 100644
--- a/modules/core/util/pom.xml
+++ b/modules/core/util/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-core-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/agent/pom.xml b/modules/enterprise/agent/pom.xml
index f917e15..d9f1c1c 100644
--- a/modules/enterprise/agent/pom.xml
+++ b/modules/enterprise/agent/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/agentupdate/pom.xml
b/modules/enterprise/agentupdate/pom.xml
index c569283..8942239 100644
--- a/modules/enterprise/agentupdate/pom.xml
+++ b/modules/enterprise/agentupdate/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/comm/pom.xml b/modules/enterprise/comm/pom.xml
index 88ef26e..8b9da9c 100644
--- a/modules/enterprise/comm/pom.xml
+++ b/modules/enterprise/comm/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/gui/base-perspective-jar/pom.xml
b/modules/enterprise/gui/base-perspective-jar/pom.xml
index 6a09d32..611eb9d 100644
--- a/modules/enterprise/gui/base-perspective-jar/pom.xml
+++ b/modules/enterprise/gui/base-perspective-jar/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/gui/base-perspective-war/pom.xml
b/modules/enterprise/gui/base-perspective-war/pom.xml
index 643d41e..798a8ca 100644
--- a/modules/enterprise/gui/base-perspective-war/pom.xml
+++ b/modules/enterprise/gui/base-perspective-war/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/gui/content_http-war/pom.xml
b/modules/enterprise/gui/content_http-war/pom.xml
index 3068b31..df05645 100644
--- a/modules/enterprise/gui/content_http-war/pom.xml
+++ b/modules/enterprise/gui/content_http-war/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-enterprise-gui-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/gui/coregui/pom.xml
b/modules/enterprise/gui/coregui/pom.xml
index 6cd8f92..ca1b68d 100644
--- a/modules/enterprise/gui/coregui/pom.xml
+++ b/modules/enterprise/gui/coregui/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/gui/installer-war/pom.xml
b/modules/enterprise/gui/installer-war/pom.xml
index e908b75..1beadca 100644
--- a/modules/enterprise/gui/installer-war/pom.xml
+++ b/modules/enterprise/gui/installer-war/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/gui/pom.xml b/modules/enterprise/gui/pom.xml
index f01ec85..0c529ba 100644
--- a/modules/enterprise/gui/pom.xml
+++ b/modules/enterprise/gui/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/gui/portal-war/pom.xml
b/modules/enterprise/gui/portal-war/pom.xml
index a3e6434..783942c 100644
--- a/modules/enterprise/gui/portal-war/pom.xml
+++ b/modules/enterprise/gui/portal-war/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/gui/webdav-war/pom.xml
b/modules/enterprise/gui/webdav-war/pom.xml
index bdef75c..aa880be 100644
--- a/modules/enterprise/gui/webdav-war/pom.xml
+++ b/modules/enterprise/gui/webdav-war/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/pom.xml b/modules/enterprise/pom.xml
index c3fc4fa..3b0dbb8 100644
--- a/modules/enterprise/pom.xml
+++ b/modules/enterprise/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/remoting/cli/pom.xml
b/modules/enterprise/remoting/cli/pom.xml
index 5e0a013..33966bd 100644
--- a/modules/enterprise/remoting/cli/pom.xml
+++ b/modules/enterprise/remoting/cli/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<artifactId>rhq-remoting-cli</artifactId>
diff --git a/modules/enterprise/remoting/client-api/pom.xml
b/modules/enterprise/remoting/client-api/pom.xml
index 57e79e7..605267f 100644
--- a/modules/enterprise/remoting/client-api/pom.xml
+++ b/modules/enterprise/remoting/client-api/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<artifactId>rhq-remoting-client-api</artifactId>
diff --git a/modules/enterprise/remoting/pom.xml b/modules/enterprise/remoting/pom.xml
index 1feb631..910b617 100644
--- a/modules/enterprise/remoting/pom.xml
+++ b/modules/enterprise/remoting/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<artifactId>rhq-remoting-parent</artifactId>
diff --git a/modules/enterprise/remoting/webservices/pom.xml
b/modules/enterprise/remoting/webservices/pom.xml
index a4d9ed6..2ea73ee 100644
--- a/modules/enterprise/remoting/webservices/pom.xml
+++ b/modules/enterprise/remoting/webservices/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<artifactId>rhq-remoting-webservices</artifactId>
diff --git a/modules/enterprise/server/container-lib/pom.xml
b/modules/enterprise/server/container-lib/pom.xml
index c2acfe1..2c98817 100644
--- a/modules/enterprise/server/container-lib/pom.xml
+++ b/modules/enterprise/server/container-lib/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/container/pom.xml
b/modules/enterprise/server/container/pom.xml
index aee0070..3fd11e8 100644
--- a/modules/enterprise/server/container/pom.xml
+++ b/modules/enterprise/server/container/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/ear/pom.xml
b/modules/enterprise/server/ear/pom.xml
index 6956e3c..bf15866 100644
--- a/modules/enterprise/server/ear/pom.xml
+++ b/modules/enterprise/server/ear/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/jar/pom.xml
b/modules/enterprise/server/jar/pom.xml
index 4f2650b..9e7bb24 100644
--- a/modules/enterprise/server/jar/pom.xml
+++ b/modules/enterprise/server/jar/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/plugins/alert-email/pom.xml
b/modules/enterprise/server/plugins/alert-email/pom.xml
index b05532d..dd5bc18 100644
--- a/modules/enterprise/server/plugins/alert-email/pom.xml
+++ b/modules/enterprise/server/plugins/alert-email/pom.xml
@@ -3,7 +3,7 @@
<parent>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/modules/enterprise/server/plugins/alert-irc/pom.xml
b/modules/enterprise/server/plugins/alert-irc/pom.xml
index 988e2e3..c0973f3 100644
--- a/modules/enterprise/server/plugins/alert-irc/pom.xml
+++ b/modules/enterprise/server/plugins/alert-irc/pom.xml
@@ -3,7 +3,7 @@
<parent>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/modules/enterprise/server/plugins/alert-microblog/pom.xml
b/modules/enterprise/server/plugins/alert-microblog/pom.xml
index b9f3d0c..a62fee8 100644
--- a/modules/enterprise/server/plugins/alert-microblog/pom.xml
+++ b/modules/enterprise/server/plugins/alert-microblog/pom.xml
@@ -3,7 +3,7 @@
<parent>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/modules/enterprise/server/plugins/alert-mobicents/pom.xml
b/modules/enterprise/server/plugins/alert-mobicents/pom.xml
index 8a0c7c9..3193539 100644
--- a/modules/enterprise/server/plugins/alert-mobicents/pom.xml
+++ b/modules/enterprise/server/plugins/alert-mobicents/pom.xml
@@ -3,7 +3,7 @@
<parent>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/modules/enterprise/server/plugins/alert-operations/pom.xml
b/modules/enterprise/server/plugins/alert-operations/pom.xml
index bf7fe01..e69bfbc 100644
--- a/modules/enterprise/server/plugins/alert-operations/pom.xml
+++ b/modules/enterprise/server/plugins/alert-operations/pom.xml
@@ -2,7 +2,7 @@
<parent>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/modules/enterprise/server/plugins/alert-roles/pom.xml
b/modules/enterprise/server/plugins/alert-roles/pom.xml
index 466b99a..ca33bb7 100644
--- a/modules/enterprise/server/plugins/alert-roles/pom.xml
+++ b/modules/enterprise/server/plugins/alert-roles/pom.xml
@@ -3,7 +3,7 @@
<parent>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/modules/enterprise/server/plugins/alert-snmp/pom.xml
b/modules/enterprise/server/plugins/alert-snmp/pom.xml
index b743122..af75153 100644
--- a/modules/enterprise/server/plugins/alert-snmp/pom.xml
+++ b/modules/enterprise/server/plugins/alert-snmp/pom.xml
@@ -3,7 +3,7 @@
<parent>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/modules/enterprise/server/plugins/alert-subject/pom.xml
b/modules/enterprise/server/plugins/alert-subject/pom.xml
index 97c50f4..09839b8 100644
--- a/modules/enterprise/server/plugins/alert-subject/pom.xml
+++ b/modules/enterprise/server/plugins/alert-subject/pom.xml
@@ -3,7 +3,7 @@
<parent>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/modules/enterprise/server/plugins/ant-bundle/pom.xml
b/modules/enterprise/server/plugins/ant-bundle/pom.xml
index 8abb60d..73f405e 100644
--- a/modules/enterprise/server/plugins/ant-bundle/pom.xml
+++ b/modules/enterprise/server/plugins/ant-bundle/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/plugins/cobbler/pom.xml
b/modules/enterprise/server/plugins/cobbler/pom.xml
index ce9b430..4c44f10 100644
--- a/modules/enterprise/server/plugins/cobbler/pom.xml
+++ b/modules/enterprise/server/plugins/cobbler/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/modules/enterprise/server/plugins/disk/pom.xml
b/modules/enterprise/server/plugins/disk/pom.xml
index 86a21ef..0033d1b 100644
--- a/modules/enterprise/server/plugins/disk/pom.xml
+++ b/modules/enterprise/server/plugins/disk/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/plugins/filetemplate-bundle/pom.xml
b/modules/enterprise/server/plugins/filetemplate-bundle/pom.xml
index b83824c..61965f2 100644
--- a/modules/enterprise/server/plugins/filetemplate-bundle/pom.xml
+++ b/modules/enterprise/server/plugins/filetemplate-bundle/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/plugins/jboss-software/pom.xml
b/modules/enterprise/server/plugins/jboss-software/pom.xml
index b8bba65..7451668 100644
--- a/modules/enterprise/server/plugins/jboss-software/pom.xml
+++ b/modules/enterprise/server/plugins/jboss-software/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/plugins/perspectives/core/perspective/pom.xml
b/modules/enterprise/server/plugins/perspectives/core/perspective/pom.xml
index a53f3ad..0ac61d3 100644
--- a/modules/enterprise/server/plugins/perspectives/core/perspective/pom.xml
+++ b/modules/enterprise/server/plugins/perspectives/core/perspective/pom.xml
@@ -7,7 +7,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/plugins/perspectives/core/pom.xml
b/modules/enterprise/server/plugins/perspectives/core/pom.xml
index ab30954..5a78451 100644
--- a/modules/enterprise/server/plugins/perspectives/core/pom.xml
+++ b/modules/enterprise/server/plugins/perspectives/core/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/plugins/pom.xml
b/modules/enterprise/server/plugins/pom.xml
index 8b6a170..2b16f4a 100644
--- a/modules/enterprise/server/plugins/pom.xml
+++ b/modules/enterprise/server/plugins/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/plugins/rhnhosted/pom.xml
b/modules/enterprise/server/plugins/rhnhosted/pom.xml
index 9a96ab0..e4ab9b2 100644
--- a/modules/enterprise/server/plugins/rhnhosted/pom.xml
+++ b/modules/enterprise/server/plugins/rhnhosted/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/plugins/url/pom.xml
b/modules/enterprise/server/plugins/url/pom.xml
index 3a96e6d..a6cba32 100644
--- a/modules/enterprise/server/plugins/url/pom.xml
+++ b/modules/enterprise/server/plugins/url/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/plugins/validate-all-serverplugins/pom.xml
b/modules/enterprise/server/plugins/validate-all-serverplugins/pom.xml
index 8bcdcea..9c7cc74 100644
--- a/modules/enterprise/server/plugins/validate-all-serverplugins/pom.xml
+++ b/modules/enterprise/server/plugins/validate-all-serverplugins/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/plugins/yum/pom.xml
b/modules/enterprise/server/plugins/yum/pom.xml
index 2dce331..ebdd3da 100644
--- a/modules/enterprise/server/plugins/yum/pom.xml
+++ b/modules/enterprise/server/plugins/yum/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/safe-invoker/pom.xml
b/modules/enterprise/server/safe-invoker/pom.xml
index 3fd87f6..06c8981 100644
--- a/modules/enterprise/server/safe-invoker/pom.xml
+++ b/modules/enterprise/server/safe-invoker/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/sars/agent-sar/pom.xml
b/modules/enterprise/server/sars/agent-sar/pom.xml
index 7ecbbad..aa278b8 100644
--- a/modules/enterprise/server/sars/agent-sar/pom.xml
+++ b/modules/enterprise/server/sars/agent-sar/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-enterprise-server-sars-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/sars/pom.xml
b/modules/enterprise/server/sars/pom.xml
index cadb656..0cc2084 100644
--- a/modules/enterprise/server/sars/pom.xml
+++ b/modules/enterprise/server/sars/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/xml-schemas/pom.xml
b/modules/enterprise/server/xml-schemas/pom.xml
index 8df64c1..14738d0 100644
--- a/modules/enterprise/server/xml-schemas/pom.xml
+++ b/modules/enterprise/server/xml-schemas/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/helpers/pluginAnnotations/pom.xml
b/modules/helpers/pluginAnnotations/pom.xml
index 031c90d..d056f74 100644
--- a/modules/helpers/pluginAnnotations/pom.xml
+++ b/modules/helpers/pluginAnnotations/pom.xml
@@ -6,7 +6,7 @@
<parent>
<groupId>org.rhq.helpers</groupId>
<artifactId>rhq-helpers</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq.helpers</groupId>
diff --git a/modules/helpers/pluginGen/pom.xml b/modules/helpers/pluginGen/pom.xml
index ba37942..28dc9b1 100644
--- a/modules/helpers/pluginGen/pom.xml
+++ b/modules/helpers/pluginGen/pom.xml
@@ -6,7 +6,7 @@
<parent>
<groupId>org.rhq.helpers</groupId>
<artifactId>rhq-helpers</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq.helpers</groupId>
diff --git a/modules/helpers/pom.xml b/modules/helpers/pom.xml
index 762f318..a0721a9 100644
--- a/modules/helpers/pom.xml
+++ b/modules/helpers/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq.helpers</groupId>
diff --git a/modules/helpers/rtfilter/pom.xml b/modules/helpers/rtfilter/pom.xml
index e17c9d8..5d327ee 100644
--- a/modules/helpers/rtfilter/pom.xml
+++ b/modules/helpers/rtfilter/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq.helpers</groupId>
<artifactId>rhq-helpers</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/aliases/pom.xml b/modules/plugins/aliases/pom.xml
index 7006ed8..c37598e 100644
--- a/modules/plugins/aliases/pom.xml
+++ b/modules/plugins/aliases/pom.xml
@@ -7,7 +7,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/ant-bundle/pom.xml b/modules/plugins/ant-bundle/pom.xml
index 851c129..cc160c9 100644
--- a/modules/plugins/ant-bundle/pom.xml
+++ b/modules/plugins/ant-bundle/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/apache/pom.xml b/modules/plugins/apache/pom.xml
index f2682e9..b4f9208 100644
--- a/modules/plugins/apache/pom.xml
+++ b/modules/plugins/apache/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/augeas/pom.xml b/modules/plugins/augeas/pom.xml
index 48651cb..963223b 100644
--- a/modules/plugins/augeas/pom.xml
+++ b/modules/plugins/augeas/pom.xml
@@ -7,7 +7,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/cobbler/pom.xml b/modules/plugins/cobbler/pom.xml
index 1e8011a..d920440 100644
--- a/modules/plugins/cobbler/pom.xml
+++ b/modules/plugins/cobbler/pom.xml
@@ -7,7 +7,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/cron/pom.xml b/modules/plugins/cron/pom.xml
index 6ee0662..d5aaad5 100644
--- a/modules/plugins/cron/pom.xml
+++ b/modules/plugins/cron/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/database/pom.xml b/modules/plugins/database/pom.xml
index 7d98f84..30889f7 100644
--- a/modules/plugins/database/pom.xml
+++ b/modules/plugins/database/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/filetemplate-bundle/pom.xml
b/modules/plugins/filetemplate-bundle/pom.xml
index 05ac956..b79645d 100644
--- a/modules/plugins/filetemplate-bundle/pom.xml
+++ b/modules/plugins/filetemplate-bundle/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/grub/pom.xml b/modules/plugins/grub/pom.xml
index 1c68b9b..f7cf265 100644
--- a/modules/plugins/grub/pom.xml
+++ b/modules/plugins/grub/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/hibernate/pom.xml b/modules/plugins/hibernate/pom.xml
index 35fd599..acb08ef 100644
--- a/modules/plugins/hibernate/pom.xml
+++ b/modules/plugins/hibernate/pom.xml
@@ -6,7 +6,7 @@
<groupId>org.rhq</groupId>
<!-- Bypass the jopr-plugins-parent which can not have children. It must build
after the plugins in order to execute integration tests on them. -->
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.jboss.on</groupId>
diff --git a/modules/plugins/hosts/pom.xml b/modules/plugins/hosts/pom.xml
index eddd3ed..7dd0fde 100644
--- a/modules/plugins/hosts/pom.xml
+++ b/modules/plugins/hosts/pom.xml
@@ -7,7 +7,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/hudson/pom.xml b/modules/plugins/hudson/pom.xml
index 5d79625..65fa7b8 100644
--- a/modules/plugins/hudson/pom.xml
+++ b/modules/plugins/hudson/pom.xml
@@ -6,7 +6,7 @@
<parent>
<artifactId>rhq-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/iis/pom.xml b/modules/plugins/iis/pom.xml
index 7e17c2b..853c020 100644
--- a/modules/plugins/iis/pom.xml
+++ b/modules/plugins/iis/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/jboss-as-5/pom.xml b/modules/plugins/jboss-as-5/pom.xml
index ceb58be..a0ade77 100644
--- a/modules/plugins/jboss-as-5/pom.xml
+++ b/modules/plugins/jboss-as-5/pom.xml
@@ -9,7 +9,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.jboss.on</groupId>
diff --git a/modules/plugins/jboss-as/pom.xml b/modules/plugins/jboss-as/pom.xml
index 54536d9..b9ed2b3 100644
--- a/modules/plugins/jboss-as/pom.xml
+++ b/modules/plugins/jboss-as/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.jboss.on</groupId>
diff --git a/modules/plugins/jboss-cache-v3/pom.xml
b/modules/plugins/jboss-cache-v3/pom.xml
index f276b7d..b3846fa 100644
--- a/modules/plugins/jboss-cache-v3/pom.xml
+++ b/modules/plugins/jboss-cache-v3/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.jboss.on</groupId>
diff --git a/modules/plugins/jboss-cache/pom.xml b/modules/plugins/jboss-cache/pom.xml
index f1aa8f9..443e524 100644
--- a/modules/plugins/jboss-cache/pom.xml
+++ b/modules/plugins/jboss-cache/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.jboss.on</groupId>
diff --git a/modules/plugins/jmx/pom.xml b/modules/plugins/jmx/pom.xml
index 6bc1bfa..ac9885a 100644
--- a/modules/plugins/jmx/pom.xml
+++ b/modules/plugins/jmx/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/mysql/pom.xml b/modules/plugins/mysql/pom.xml
index e488d56..d0c9053 100644
--- a/modules/plugins/mysql/pom.xml
+++ b/modules/plugins/mysql/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/netservices/pom.xml b/modules/plugins/netservices/pom.xml
index 37d84af..06ae2ae 100644
--- a/modules/plugins/netservices/pom.xml
+++ b/modules/plugins/netservices/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/oracle/pom.xml b/modules/plugins/oracle/pom.xml
index 75a1aff..1acdb0f 100644
--- a/modules/plugins/oracle/pom.xml
+++ b/modules/plugins/oracle/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/perftest/pom.xml b/modules/plugins/perftest/pom.xml
index 4e78da5..39c75da 100644
--- a/modules/plugins/perftest/pom.xml
+++ b/modules/plugins/perftest/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/platform/pom.xml b/modules/plugins/platform/pom.xml
index 87ba78d..97b83b0 100644
--- a/modules/plugins/platform/pom.xml
+++ b/modules/plugins/platform/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/pom.xml b/modules/plugins/pom.xml
index 4873dae..85d6105 100644
--- a/modules/plugins/pom.xml
+++ b/modules/plugins/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/postfix/pom.xml b/modules/plugins/postfix/pom.xml
index 1e95ca3..283ab6a 100644
--- a/modules/plugins/postfix/pom.xml
+++ b/modules/plugins/postfix/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/postgres/pom.xml b/modules/plugins/postgres/pom.xml
index daf3133..5a4466c 100644
--- a/modules/plugins/postgres/pom.xml
+++ b/modules/plugins/postgres/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/rhq-agent/pom.xml b/modules/plugins/rhq-agent/pom.xml
index b0c26a5..a190dcd 100644
--- a/modules/plugins/rhq-agent/pom.xml
+++ b/modules/plugins/rhq-agent/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/rhq-server/pom.xml b/modules/plugins/rhq-server/pom.xml
index 98333bb..8f4e675 100644
--- a/modules/plugins/rhq-server/pom.xml
+++ b/modules/plugins/rhq-server/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.jboss.on</groupId>
diff --git a/modules/plugins/samba/pom.xml b/modules/plugins/samba/pom.xml
index d0d0d63..0d41574 100644
--- a/modules/plugins/samba/pom.xml
+++ b/modules/plugins/samba/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/script/pom.xml b/modules/plugins/script/pom.xml
index 7189f74..7719b14 100644
--- a/modules/plugins/script/pom.xml
+++ b/modules/plugins/script/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/snmptrapd/pom.xml b/modules/plugins/snmptrapd/pom.xml
index fdb421d..2d9d715 100644
--- a/modules/plugins/snmptrapd/pom.xml
+++ b/modules/plugins/snmptrapd/pom.xml
@@ -2,7 +2,7 @@
<parent>
<artifactId>rhq-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/modules/plugins/sshd/pom.xml b/modules/plugins/sshd/pom.xml
index 9c38247..3579496 100644
--- a/modules/plugins/sshd/pom.xml
+++ b/modules/plugins/sshd/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/sudoers/pom.xml b/modules/plugins/sudoers/pom.xml
index 7932012..41df1b8 100644
--- a/modules/plugins/sudoers/pom.xml
+++ b/modules/plugins/sudoers/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/tomcat/pom.xml b/modules/plugins/tomcat/pom.xml
index 03e2df8..205d5b0 100644
--- a/modules/plugins/tomcat/pom.xml
+++ b/modules/plugins/tomcat/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.jboss.on</groupId>
diff --git a/modules/plugins/twitter/pom.xml b/modules/plugins/twitter/pom.xml
index cab4269..e299efa 100644
--- a/modules/plugins/twitter/pom.xml
+++ b/modules/plugins/twitter/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/validate-all-plugins/pom.xml
b/modules/plugins/validate-all-plugins/pom.xml
index 4f886fd..b3d5e87 100644
--- a/modules/plugins/validate-all-plugins/pom.xml
+++ b/modules/plugins/validate-all-plugins/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/pom.xml b/modules/pom.xml
index 9a28ce8..bc96ae3 100644
--- a/modules/pom.xml
+++ b/modules/pom.xml
@@ -6,7 +6,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/test-utils/pom.xml b/modules/test-utils/pom.xml
index 07130df..2235687 100644
--- a/modules/test-utils/pom.xml
+++ b/modules/test-utils/pom.xml
@@ -4,7 +4,7 @@
<parent>
<artifactId>rhq-modules-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
</parent>
<artifactId>test-utils</artifactId>
<name>RHQ Test Utils</name>
diff --git a/pom.xml b/pom.xml
index efc840d..95b0dc6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0.GA_QA</version>
+ <version>3.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>RHQ</name>
commit 647a602bece9c1fae7c083d600a314914245bfe7
Author: hudson auto <wnstb(a)yahoo.com>
Date: Thu Jun 24 02:53:18 2010 -0400
[maven-release-plugin] prepare release RHQ_3_0_0_GA_QA
diff --git a/modules/common/ant-bundle/pom.xml b/modules/common/ant-bundle/pom.xml
index eda9133..6d440ef 100644
--- a/modules/common/ant-bundle/pom.xml
+++ b/modules/common/ant-bundle/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-common-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/common/filetemplate-bundle/pom.xml
b/modules/common/filetemplate-bundle/pom.xml
index bc7965b..dbd8dd6 100644
--- a/modules/common/filetemplate-bundle/pom.xml
+++ b/modules/common/filetemplate-bundle/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-common-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/common/jboss-as/pom.xml b/modules/common/jboss-as/pom.xml
index 2cf950b..1077987 100644
--- a/modules/common/jboss-as/pom.xml
+++ b/modules/common/jboss-as/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-common-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/common/pom.xml b/modules/common/pom.xml
index ee81a94..751726e 100644
--- a/modules/common/pom.xml
+++ b/modules/common/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/core/client-api/pom.xml b/modules/core/client-api/pom.xml
index d177f9e..78d1f23 100644
--- a/modules/core/client-api/pom.xml
+++ b/modules/core/client-api/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-core-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/core/comm-api/pom.xml b/modules/core/comm-api/pom.xml
index a51f92b..f6fadb5 100644
--- a/modules/core/comm-api/pom.xml
+++ b/modules/core/comm-api/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-core-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/core/dbutils/pom.xml b/modules/core/dbutils/pom.xml
index 92ae1d2..84dd23f 100644
--- a/modules/core/dbutils/pom.xml
+++ b/modules/core/dbutils/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-core-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/core/domain/pom.xml b/modules/core/domain/pom.xml
index e0ced84..96cbc8e 100644
--- a/modules/core/domain/pom.xml
+++ b/modules/core/domain/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-core-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/core/gui/pom.xml b/modules/core/gui/pom.xml
index 0911918..0df3808 100644
--- a/modules/core/gui/pom.xml
+++ b/modules/core/gui/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-core-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/core/native-system/pom.xml b/modules/core/native-system/pom.xml
index d47d4c8..558b9a2 100644
--- a/modules/core/native-system/pom.xml
+++ b/modules/core/native-system/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/core/plugin-api/pom.xml b/modules/core/plugin-api/pom.xml
index e1ce7ef..ba389df 100644
--- a/modules/core/plugin-api/pom.xml
+++ b/modules/core/plugin-api/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-core-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/core/plugin-container/pom.xml
b/modules/core/plugin-container/pom.xml
index 2e58102..a570e19 100644
--- a/modules/core/plugin-container/pom.xml
+++ b/modules/core/plugin-container/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-core-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/core/plugin-validator/pom.xml
b/modules/core/plugin-validator/pom.xml
index 7739177..c721f21 100644
--- a/modules/core/plugin-validator/pom.xml
+++ b/modules/core/plugin-validator/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-core-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/core/plugindoc/pom.xml b/modules/core/plugindoc/pom.xml
index eeb7e81..9e92634 100644
--- a/modules/core/plugindoc/pom.xml
+++ b/modules/core/plugindoc/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-core-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/core/pom.xml b/modules/core/pom.xml
index 7aad64c..47cb583 100644
--- a/modules/core/pom.xml
+++ b/modules/core/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/core/util/pom.xml b/modules/core/util/pom.xml
index bc41dc5..cee7efe 100644
--- a/modules/core/util/pom.xml
+++ b/modules/core/util/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-core-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/agent/pom.xml b/modules/enterprise/agent/pom.xml
index d9f1c1c..f917e15 100644
--- a/modules/enterprise/agent/pom.xml
+++ b/modules/enterprise/agent/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/agentupdate/pom.xml
b/modules/enterprise/agentupdate/pom.xml
index 8942239..c569283 100644
--- a/modules/enterprise/agentupdate/pom.xml
+++ b/modules/enterprise/agentupdate/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/comm/pom.xml b/modules/enterprise/comm/pom.xml
index 8b9da9c..88ef26e 100644
--- a/modules/enterprise/comm/pom.xml
+++ b/modules/enterprise/comm/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/gui/base-perspective-jar/pom.xml
b/modules/enterprise/gui/base-perspective-jar/pom.xml
index 611eb9d..6a09d32 100644
--- a/modules/enterprise/gui/base-perspective-jar/pom.xml
+++ b/modules/enterprise/gui/base-perspective-jar/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/gui/base-perspective-war/pom.xml
b/modules/enterprise/gui/base-perspective-war/pom.xml
index 798a8ca..643d41e 100644
--- a/modules/enterprise/gui/base-perspective-war/pom.xml
+++ b/modules/enterprise/gui/base-perspective-war/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/gui/content_http-war/pom.xml
b/modules/enterprise/gui/content_http-war/pom.xml
index df05645..3068b31 100644
--- a/modules/enterprise/gui/content_http-war/pom.xml
+++ b/modules/enterprise/gui/content_http-war/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-enterprise-gui-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/gui/coregui/pom.xml
b/modules/enterprise/gui/coregui/pom.xml
index ca1b68d..6cd8f92 100644
--- a/modules/enterprise/gui/coregui/pom.xml
+++ b/modules/enterprise/gui/coregui/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/gui/installer-war/pom.xml
b/modules/enterprise/gui/installer-war/pom.xml
index 1beadca..e908b75 100644
--- a/modules/enterprise/gui/installer-war/pom.xml
+++ b/modules/enterprise/gui/installer-war/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/gui/pom.xml b/modules/enterprise/gui/pom.xml
index 0c529ba..f01ec85 100644
--- a/modules/enterprise/gui/pom.xml
+++ b/modules/enterprise/gui/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/gui/portal-war/pom.xml
b/modules/enterprise/gui/portal-war/pom.xml
index 783942c..a3e6434 100644
--- a/modules/enterprise/gui/portal-war/pom.xml
+++ b/modules/enterprise/gui/portal-war/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/gui/webdav-war/pom.xml
b/modules/enterprise/gui/webdav-war/pom.xml
index aa880be..bdef75c 100644
--- a/modules/enterprise/gui/webdav-war/pom.xml
+++ b/modules/enterprise/gui/webdav-war/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/pom.xml b/modules/enterprise/pom.xml
index 3b0dbb8..c3fc4fa 100644
--- a/modules/enterprise/pom.xml
+++ b/modules/enterprise/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/remoting/cli/pom.xml
b/modules/enterprise/remoting/cli/pom.xml
index 33966bd..5e0a013 100644
--- a/modules/enterprise/remoting/cli/pom.xml
+++ b/modules/enterprise/remoting/cli/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<artifactId>rhq-remoting-cli</artifactId>
diff --git a/modules/enterprise/remoting/client-api/pom.xml
b/modules/enterprise/remoting/client-api/pom.xml
index 605267f..57e79e7 100644
--- a/modules/enterprise/remoting/client-api/pom.xml
+++ b/modules/enterprise/remoting/client-api/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<artifactId>rhq-remoting-client-api</artifactId>
diff --git a/modules/enterprise/remoting/pom.xml b/modules/enterprise/remoting/pom.xml
index 910b617..1feb631 100644
--- a/modules/enterprise/remoting/pom.xml
+++ b/modules/enterprise/remoting/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<artifactId>rhq-remoting-parent</artifactId>
diff --git a/modules/enterprise/remoting/webservices/pom.xml
b/modules/enterprise/remoting/webservices/pom.xml
index 2ea73ee..a4d9ed6 100644
--- a/modules/enterprise/remoting/webservices/pom.xml
+++ b/modules/enterprise/remoting/webservices/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<artifactId>rhq-remoting-webservices</artifactId>
diff --git a/modules/enterprise/server/container-lib/pom.xml
b/modules/enterprise/server/container-lib/pom.xml
index 2c98817..c2acfe1 100644
--- a/modules/enterprise/server/container-lib/pom.xml
+++ b/modules/enterprise/server/container-lib/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/container/pom.xml
b/modules/enterprise/server/container/pom.xml
index 3fd11e8..aee0070 100644
--- a/modules/enterprise/server/container/pom.xml
+++ b/modules/enterprise/server/container/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/ear/pom.xml
b/modules/enterprise/server/ear/pom.xml
index bf15866..6956e3c 100644
--- a/modules/enterprise/server/ear/pom.xml
+++ b/modules/enterprise/server/ear/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/jar/pom.xml
b/modules/enterprise/server/jar/pom.xml
index 9e7bb24..4f2650b 100644
--- a/modules/enterprise/server/jar/pom.xml
+++ b/modules/enterprise/server/jar/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/plugins/alert-email/pom.xml
b/modules/enterprise/server/plugins/alert-email/pom.xml
index dd5bc18..b05532d 100644
--- a/modules/enterprise/server/plugins/alert-email/pom.xml
+++ b/modules/enterprise/server/plugins/alert-email/pom.xml
@@ -3,7 +3,7 @@
<parent>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/modules/enterprise/server/plugins/alert-irc/pom.xml
b/modules/enterprise/server/plugins/alert-irc/pom.xml
index c0973f3..988e2e3 100644
--- a/modules/enterprise/server/plugins/alert-irc/pom.xml
+++ b/modules/enterprise/server/plugins/alert-irc/pom.xml
@@ -3,7 +3,7 @@
<parent>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/modules/enterprise/server/plugins/alert-microblog/pom.xml
b/modules/enterprise/server/plugins/alert-microblog/pom.xml
index a62fee8..b9f3d0c 100644
--- a/modules/enterprise/server/plugins/alert-microblog/pom.xml
+++ b/modules/enterprise/server/plugins/alert-microblog/pom.xml
@@ -3,7 +3,7 @@
<parent>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/modules/enterprise/server/plugins/alert-mobicents/pom.xml
b/modules/enterprise/server/plugins/alert-mobicents/pom.xml
index 3193539..8a0c7c9 100644
--- a/modules/enterprise/server/plugins/alert-mobicents/pom.xml
+++ b/modules/enterprise/server/plugins/alert-mobicents/pom.xml
@@ -3,7 +3,7 @@
<parent>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/modules/enterprise/server/plugins/alert-operations/pom.xml
b/modules/enterprise/server/plugins/alert-operations/pom.xml
index e69bfbc..bf7fe01 100644
--- a/modules/enterprise/server/plugins/alert-operations/pom.xml
+++ b/modules/enterprise/server/plugins/alert-operations/pom.xml
@@ -2,7 +2,7 @@
<parent>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/modules/enterprise/server/plugins/alert-roles/pom.xml
b/modules/enterprise/server/plugins/alert-roles/pom.xml
index ca33bb7..466b99a 100644
--- a/modules/enterprise/server/plugins/alert-roles/pom.xml
+++ b/modules/enterprise/server/plugins/alert-roles/pom.xml
@@ -3,7 +3,7 @@
<parent>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/modules/enterprise/server/plugins/alert-snmp/pom.xml
b/modules/enterprise/server/plugins/alert-snmp/pom.xml
index af75153..b743122 100644
--- a/modules/enterprise/server/plugins/alert-snmp/pom.xml
+++ b/modules/enterprise/server/plugins/alert-snmp/pom.xml
@@ -3,7 +3,7 @@
<parent>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/modules/enterprise/server/plugins/alert-subject/pom.xml
b/modules/enterprise/server/plugins/alert-subject/pom.xml
index 09839b8..97c50f4 100644
--- a/modules/enterprise/server/plugins/alert-subject/pom.xml
+++ b/modules/enterprise/server/plugins/alert-subject/pom.xml
@@ -3,7 +3,7 @@
<parent>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/modules/enterprise/server/plugins/ant-bundle/pom.xml
b/modules/enterprise/server/plugins/ant-bundle/pom.xml
index 73f405e..8abb60d 100644
--- a/modules/enterprise/server/plugins/ant-bundle/pom.xml
+++ b/modules/enterprise/server/plugins/ant-bundle/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/plugins/cobbler/pom.xml
b/modules/enterprise/server/plugins/cobbler/pom.xml
index 4c44f10..ce9b430 100644
--- a/modules/enterprise/server/plugins/cobbler/pom.xml
+++ b/modules/enterprise/server/plugins/cobbler/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/modules/enterprise/server/plugins/disk/pom.xml
b/modules/enterprise/server/plugins/disk/pom.xml
index 0033d1b..86a21ef 100644
--- a/modules/enterprise/server/plugins/disk/pom.xml
+++ b/modules/enterprise/server/plugins/disk/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/plugins/filetemplate-bundle/pom.xml
b/modules/enterprise/server/plugins/filetemplate-bundle/pom.xml
index 61965f2..b83824c 100644
--- a/modules/enterprise/server/plugins/filetemplate-bundle/pom.xml
+++ b/modules/enterprise/server/plugins/filetemplate-bundle/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/plugins/jboss-software/pom.xml
b/modules/enterprise/server/plugins/jboss-software/pom.xml
index 7451668..b8bba65 100644
--- a/modules/enterprise/server/plugins/jboss-software/pom.xml
+++ b/modules/enterprise/server/plugins/jboss-software/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/plugins/perspectives/core/perspective/pom.xml
b/modules/enterprise/server/plugins/perspectives/core/perspective/pom.xml
index 0ac61d3..a53f3ad 100644
--- a/modules/enterprise/server/plugins/perspectives/core/perspective/pom.xml
+++ b/modules/enterprise/server/plugins/perspectives/core/perspective/pom.xml
@@ -7,7 +7,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/plugins/perspectives/core/pom.xml
b/modules/enterprise/server/plugins/perspectives/core/pom.xml
index 5a78451..ab30954 100644
--- a/modules/enterprise/server/plugins/perspectives/core/pom.xml
+++ b/modules/enterprise/server/plugins/perspectives/core/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/plugins/pom.xml
b/modules/enterprise/server/plugins/pom.xml
index 2b16f4a..8b6a170 100644
--- a/modules/enterprise/server/plugins/pom.xml
+++ b/modules/enterprise/server/plugins/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/plugins/rhnhosted/pom.xml
b/modules/enterprise/server/plugins/rhnhosted/pom.xml
index e4ab9b2..9a96ab0 100644
--- a/modules/enterprise/server/plugins/rhnhosted/pom.xml
+++ b/modules/enterprise/server/plugins/rhnhosted/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/plugins/url/pom.xml
b/modules/enterprise/server/plugins/url/pom.xml
index a6cba32..3a96e6d 100644
--- a/modules/enterprise/server/plugins/url/pom.xml
+++ b/modules/enterprise/server/plugins/url/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/plugins/validate-all-serverplugins/pom.xml
b/modules/enterprise/server/plugins/validate-all-serverplugins/pom.xml
index 9c7cc74..8bcdcea 100644
--- a/modules/enterprise/server/plugins/validate-all-serverplugins/pom.xml
+++ b/modules/enterprise/server/plugins/validate-all-serverplugins/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/plugins/yum/pom.xml
b/modules/enterprise/server/plugins/yum/pom.xml
index ebdd3da..2dce331 100644
--- a/modules/enterprise/server/plugins/yum/pom.xml
+++ b/modules/enterprise/server/plugins/yum/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/safe-invoker/pom.xml
b/modules/enterprise/server/safe-invoker/pom.xml
index 06c8981..3fd87f6 100644
--- a/modules/enterprise/server/safe-invoker/pom.xml
+++ b/modules/enterprise/server/safe-invoker/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/sars/agent-sar/pom.xml
b/modules/enterprise/server/sars/agent-sar/pom.xml
index aa278b8..7ecbbad 100644
--- a/modules/enterprise/server/sars/agent-sar/pom.xml
+++ b/modules/enterprise/server/sars/agent-sar/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-enterprise-server-sars-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/sars/pom.xml
b/modules/enterprise/server/sars/pom.xml
index 0cc2084..cadb656 100644
--- a/modules/enterprise/server/sars/pom.xml
+++ b/modules/enterprise/server/sars/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/xml-schemas/pom.xml
b/modules/enterprise/server/xml-schemas/pom.xml
index 14738d0..8df64c1 100644
--- a/modules/enterprise/server/xml-schemas/pom.xml
+++ b/modules/enterprise/server/xml-schemas/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/helpers/pluginAnnotations/pom.xml
b/modules/helpers/pluginAnnotations/pom.xml
index d056f74..031c90d 100644
--- a/modules/helpers/pluginAnnotations/pom.xml
+++ b/modules/helpers/pluginAnnotations/pom.xml
@@ -6,7 +6,7 @@
<parent>
<groupId>org.rhq.helpers</groupId>
<artifactId>rhq-helpers</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq.helpers</groupId>
diff --git a/modules/helpers/pluginGen/pom.xml b/modules/helpers/pluginGen/pom.xml
index 28dc9b1..ba37942 100644
--- a/modules/helpers/pluginGen/pom.xml
+++ b/modules/helpers/pluginGen/pom.xml
@@ -6,7 +6,7 @@
<parent>
<groupId>org.rhq.helpers</groupId>
<artifactId>rhq-helpers</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq.helpers</groupId>
diff --git a/modules/helpers/pom.xml b/modules/helpers/pom.xml
index a0721a9..762f318 100644
--- a/modules/helpers/pom.xml
+++ b/modules/helpers/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq.helpers</groupId>
diff --git a/modules/helpers/rtfilter/pom.xml b/modules/helpers/rtfilter/pom.xml
index 5d327ee..e17c9d8 100644
--- a/modules/helpers/rtfilter/pom.xml
+++ b/modules/helpers/rtfilter/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq.helpers</groupId>
<artifactId>rhq-helpers</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/aliases/pom.xml b/modules/plugins/aliases/pom.xml
index c37598e..7006ed8 100644
--- a/modules/plugins/aliases/pom.xml
+++ b/modules/plugins/aliases/pom.xml
@@ -7,7 +7,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/ant-bundle/pom.xml b/modules/plugins/ant-bundle/pom.xml
index cc160c9..851c129 100644
--- a/modules/plugins/ant-bundle/pom.xml
+++ b/modules/plugins/ant-bundle/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/apache/pom.xml b/modules/plugins/apache/pom.xml
index b4f9208..f2682e9 100644
--- a/modules/plugins/apache/pom.xml
+++ b/modules/plugins/apache/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/augeas/pom.xml b/modules/plugins/augeas/pom.xml
index 963223b..48651cb 100644
--- a/modules/plugins/augeas/pom.xml
+++ b/modules/plugins/augeas/pom.xml
@@ -7,7 +7,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/cobbler/pom.xml b/modules/plugins/cobbler/pom.xml
index d920440..1e8011a 100644
--- a/modules/plugins/cobbler/pom.xml
+++ b/modules/plugins/cobbler/pom.xml
@@ -7,7 +7,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/cron/pom.xml b/modules/plugins/cron/pom.xml
index d5aaad5..6ee0662 100644
--- a/modules/plugins/cron/pom.xml
+++ b/modules/plugins/cron/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/database/pom.xml b/modules/plugins/database/pom.xml
index 30889f7..7d98f84 100644
--- a/modules/plugins/database/pom.xml
+++ b/modules/plugins/database/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/filetemplate-bundle/pom.xml
b/modules/plugins/filetemplate-bundle/pom.xml
index b79645d..05ac956 100644
--- a/modules/plugins/filetemplate-bundle/pom.xml
+++ b/modules/plugins/filetemplate-bundle/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/grub/pom.xml b/modules/plugins/grub/pom.xml
index f7cf265..1c68b9b 100644
--- a/modules/plugins/grub/pom.xml
+++ b/modules/plugins/grub/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/hibernate/pom.xml b/modules/plugins/hibernate/pom.xml
index acb08ef..35fd599 100644
--- a/modules/plugins/hibernate/pom.xml
+++ b/modules/plugins/hibernate/pom.xml
@@ -6,7 +6,7 @@
<groupId>org.rhq</groupId>
<!-- Bypass the jopr-plugins-parent which can not have children. It must build
after the plugins in order to execute integration tests on them. -->
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.jboss.on</groupId>
diff --git a/modules/plugins/hosts/pom.xml b/modules/plugins/hosts/pom.xml
index 7dd0fde..eddd3ed 100644
--- a/modules/plugins/hosts/pom.xml
+++ b/modules/plugins/hosts/pom.xml
@@ -7,7 +7,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/hudson/pom.xml b/modules/plugins/hudson/pom.xml
index 65fa7b8..5d79625 100644
--- a/modules/plugins/hudson/pom.xml
+++ b/modules/plugins/hudson/pom.xml
@@ -6,7 +6,7 @@
<parent>
<artifactId>rhq-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/iis/pom.xml b/modules/plugins/iis/pom.xml
index 853c020..7e17c2b 100644
--- a/modules/plugins/iis/pom.xml
+++ b/modules/plugins/iis/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/jboss-as-5/pom.xml b/modules/plugins/jboss-as-5/pom.xml
index a0ade77..ceb58be 100644
--- a/modules/plugins/jboss-as-5/pom.xml
+++ b/modules/plugins/jboss-as-5/pom.xml
@@ -9,7 +9,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.jboss.on</groupId>
diff --git a/modules/plugins/jboss-as/pom.xml b/modules/plugins/jboss-as/pom.xml
index b9ed2b3..54536d9 100644
--- a/modules/plugins/jboss-as/pom.xml
+++ b/modules/plugins/jboss-as/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.jboss.on</groupId>
diff --git a/modules/plugins/jboss-cache-v3/pom.xml
b/modules/plugins/jboss-cache-v3/pom.xml
index b3846fa..f276b7d 100644
--- a/modules/plugins/jboss-cache-v3/pom.xml
+++ b/modules/plugins/jboss-cache-v3/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.jboss.on</groupId>
diff --git a/modules/plugins/jboss-cache/pom.xml b/modules/plugins/jboss-cache/pom.xml
index 443e524..f1aa8f9 100644
--- a/modules/plugins/jboss-cache/pom.xml
+++ b/modules/plugins/jboss-cache/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.jboss.on</groupId>
diff --git a/modules/plugins/jmx/pom.xml b/modules/plugins/jmx/pom.xml
index ac9885a..6bc1bfa 100644
--- a/modules/plugins/jmx/pom.xml
+++ b/modules/plugins/jmx/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/mysql/pom.xml b/modules/plugins/mysql/pom.xml
index d0c9053..e488d56 100644
--- a/modules/plugins/mysql/pom.xml
+++ b/modules/plugins/mysql/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/netservices/pom.xml b/modules/plugins/netservices/pom.xml
index 06ae2ae..37d84af 100644
--- a/modules/plugins/netservices/pom.xml
+++ b/modules/plugins/netservices/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/oracle/pom.xml b/modules/plugins/oracle/pom.xml
index 1acdb0f..75a1aff 100644
--- a/modules/plugins/oracle/pom.xml
+++ b/modules/plugins/oracle/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/perftest/pom.xml b/modules/plugins/perftest/pom.xml
index 39c75da..4e78da5 100644
--- a/modules/plugins/perftest/pom.xml
+++ b/modules/plugins/perftest/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/platform/pom.xml b/modules/plugins/platform/pom.xml
index 97b83b0..87ba78d 100644
--- a/modules/plugins/platform/pom.xml
+++ b/modules/plugins/platform/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/pom.xml b/modules/plugins/pom.xml
index 85d6105..4873dae 100644
--- a/modules/plugins/pom.xml
+++ b/modules/plugins/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/postfix/pom.xml b/modules/plugins/postfix/pom.xml
index 283ab6a..1e95ca3 100644
--- a/modules/plugins/postfix/pom.xml
+++ b/modules/plugins/postfix/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/postgres/pom.xml b/modules/plugins/postgres/pom.xml
index 5a4466c..daf3133 100644
--- a/modules/plugins/postgres/pom.xml
+++ b/modules/plugins/postgres/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/rhq-agent/pom.xml b/modules/plugins/rhq-agent/pom.xml
index a190dcd..b0c26a5 100644
--- a/modules/plugins/rhq-agent/pom.xml
+++ b/modules/plugins/rhq-agent/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/rhq-server/pom.xml b/modules/plugins/rhq-server/pom.xml
index 8f4e675..98333bb 100644
--- a/modules/plugins/rhq-server/pom.xml
+++ b/modules/plugins/rhq-server/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.jboss.on</groupId>
diff --git a/modules/plugins/samba/pom.xml b/modules/plugins/samba/pom.xml
index 0d41574..d0d0d63 100644
--- a/modules/plugins/samba/pom.xml
+++ b/modules/plugins/samba/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/script/pom.xml b/modules/plugins/script/pom.xml
index 7719b14..7189f74 100644
--- a/modules/plugins/script/pom.xml
+++ b/modules/plugins/script/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/snmptrapd/pom.xml b/modules/plugins/snmptrapd/pom.xml
index 2d9d715..fdb421d 100644
--- a/modules/plugins/snmptrapd/pom.xml
+++ b/modules/plugins/snmptrapd/pom.xml
@@ -2,7 +2,7 @@
<parent>
<artifactId>rhq-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/modules/plugins/sshd/pom.xml b/modules/plugins/sshd/pom.xml
index 3579496..9c38247 100644
--- a/modules/plugins/sshd/pom.xml
+++ b/modules/plugins/sshd/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/sudoers/pom.xml b/modules/plugins/sudoers/pom.xml
index 41df1b8..7932012 100644
--- a/modules/plugins/sudoers/pom.xml
+++ b/modules/plugins/sudoers/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/tomcat/pom.xml b/modules/plugins/tomcat/pom.xml
index 205d5b0..03e2df8 100644
--- a/modules/plugins/tomcat/pom.xml
+++ b/modules/plugins/tomcat/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.jboss.on</groupId>
diff --git a/modules/plugins/twitter/pom.xml b/modules/plugins/twitter/pom.xml
index e299efa..cab4269 100644
--- a/modules/plugins/twitter/pom.xml
+++ b/modules/plugins/twitter/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/validate-all-plugins/pom.xml
b/modules/plugins/validate-all-plugins/pom.xml
index b3d5e87..4f886fd 100644
--- a/modules/plugins/validate-all-plugins/pom.xml
+++ b/modules/plugins/validate-all-plugins/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/pom.xml b/modules/pom.xml
index bc96ae3..9a28ce8 100644
--- a/modules/pom.xml
+++ b/modules/pom.xml
@@ -6,7 +6,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/test-utils/pom.xml b/modules/test-utils/pom.xml
index 2235687..07130df 100644
--- a/modules/test-utils/pom.xml
+++ b/modules/test-utils/pom.xml
@@ -4,7 +4,7 @@
<parent>
<artifactId>rhq-modules-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
</parent>
<artifactId>test-utils</artifactId>
<name>RHQ Test Utils</name>
diff --git a/pom.xml b/pom.xml
index 95b0dc6..efc840d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.0.0.GA_QA</version>
<packaging>pom</packaging>
<name>RHQ</name>