[rhq] modules/enterprise
by Simeon Pinder
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/templates/ResourceTypeTreeView.java | 10 ++--
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableImgButton.java | 23 ++++++++++
2 files changed, 28 insertions(+), 5 deletions(-)
New commits:
commit 8069e7fe667aaca09d61489ac2b5ca06570564a1
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Tue May 10 13:19:19 2011 -0400
modifying floating edit fields in templates to be locatable for selenium automation.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/templates/ResourceTypeTreeView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/templates/ResourceTypeTreeView.java
index fecac0b..f933711 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/templates/ResourceTypeTreeView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/templates/ResourceTypeTreeView.java
@@ -26,7 +26,6 @@ import com.smartgwt.client.types.Alignment;
import com.smartgwt.client.types.SelectionStyle;
import com.smartgwt.client.types.VisibilityMode;
import com.smartgwt.client.widgets.Canvas;
-import com.smartgwt.client.widgets.ImgButton;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.grid.ListGrid;
@@ -59,6 +58,7 @@ import org.rhq.enterprise.gui.coregui.client.components.table.ResourceCategoryCe
import org.rhq.enterprise.gui.coregui.client.components.view.ViewName;
import org.rhq.enterprise.gui.coregui.client.inventory.resource.type.ResourceTypeRepository;
import org.rhq.enterprise.gui.coregui.client.inventory.resource.type.ResourceTypeRepository.TypesLoadedCallback;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableImgButton;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableListGrid;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableTreeGrid;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
@@ -315,7 +315,7 @@ public class ResourceTypeTreeView extends LocatableVLayout implements Bookmarkab
rollOverCanvas.setWidth(50);
rollOverCanvas.setHeight(22);
- ImgButton metricTemplateImg = new ImgButton();
+ LocatableImgButton metricTemplateImg = new LocatableImgButton(extendLocatorId("Metric_" + rowNum));
metricTemplateImg.setShowDown(false);
metricTemplateImg.setShowRollOver(false);
metricTemplateImg.setLayoutAlign(Alignment.CENTER);
@@ -329,7 +329,7 @@ public class ResourceTypeTreeView extends LocatableVLayout implements Bookmarkab
}
});
- ImgButton alertTemplateImg = new ImgButton();
+ LocatableImgButton alertTemplateImg = new LocatableImgButton(extendLocatorId("Alert_" + rowNum));
alertTemplateImg.setShowDown(false);
alertTemplateImg.setShowRollOver(false);
alertTemplateImg.setLayoutAlign(Alignment.CENTER);
@@ -428,7 +428,7 @@ public class ResourceTypeTreeView extends LocatableVLayout implements Bookmarkab
rollOverCanvas.setWidth(50);
rollOverCanvas.setHeight(22);
- ImgButton metricTemplateImg = new ImgButton();
+ LocatableImgButton metricTemplateImg = new LocatableImgButton(extendLocatorId("Metric_" + rowNum));
metricTemplateImg.setShowDown(false);
metricTemplateImg.setShowRollOver(false);
metricTemplateImg.setLayoutAlign(Alignment.CENTER);
@@ -442,7 +442,7 @@ public class ResourceTypeTreeView extends LocatableVLayout implements Bookmarkab
}
});
- ImgButton alertTemplateImg = new ImgButton();
+ LocatableImgButton alertTemplateImg = new LocatableImgButton(extendLocatorId("Alert_" + rowNum));
alertTemplateImg.setShowDown(false);
alertTemplateImg.setShowRollOver(false);
alertTemplateImg.setLayoutAlign(Alignment.CENTER);
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableImgButton.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableImgButton.java
new file mode 100644
index 0000000..f1deb36
--- /dev/null
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableImgButton.java
@@ -0,0 +1,23 @@
+package org.rhq.enterprise.gui.coregui.client.util.selenium;
+
+import com.smartgwt.client.widgets.ImgButton;
+
+/**
+ * Wrapper for com.smartgwt.client.widgets.Img that sets the ID for use with selenium scLocators.
+ *
+ * @author Simeon Pinder
+ */
+public class LocatableImgButton extends ImgButton {
+
+ /**
+ * <pre>
+ * ID Format: "simpleClassname_locatorId"
+ * </pre>
+ * @param locatorId not null.
+ * @param img not null or empty.
+ */
+ public LocatableImgButton(String locatorId) {
+ SeleniumUtility.setID(this, locatorId);
+ }
+
+}
13 years, 1 month
[rhq] modules/plugins
by Heiko W. Rupp
modules/plugins/samba/src/main/java/org/rhq/plugins/samba/SambaServerComponent.java | 24 +++++-----
1 file changed, 13 insertions(+), 11 deletions(-)
New commits:
commit a62f196717a056c1d73967999938ca447818c237
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed May 11 09:17:30 2011 +0200
Prevent NPE if processInfo is null.
diff --git a/modules/plugins/samba/src/main/java/org/rhq/plugins/samba/SambaServerComponent.java b/modules/plugins/samba/src/main/java/org/rhq/plugins/samba/SambaServerComponent.java
index 9bd3859..d50f324 100644
--- a/modules/plugins/samba/src/main/java/org/rhq/plugins/samba/SambaServerComponent.java
+++ b/modules/plugins/samba/src/main/java/org/rhq/plugins/samba/SambaServerComponent.java
@@ -152,16 +152,18 @@ public class SambaServerComponent extends AugeasConfigurationComponent implement
public void getValues(MeasurementReport report, Set<MeasurementScheduleRequest> metrics) throws Exception {
NetworkStats stats = resourceContext.getSystemInformation().getNetworkStats("localhost", PORT);
-
- processInfo.refresh();
-
- for (MeasurementScheduleRequest request : metrics) {
- if (request.getName().startsWith("NetworkStat.")) {
- int val = stats.getByName(request.getName().substring("NetworkStat.".length()));
- report.addData(new MeasurementDataNumeric(request, (double) val));
- } else if (request.getName().startsWith("Process.")) {
- Double value = ObjectUtil.lookupDeepNumericAttributeProperty(processInfo, request.getName().substring("Process.".length()));
- report.addData(new MeasurementDataNumeric(request, value));
+
+ if (processInfo!=null) {
+ processInfo.refresh();
+
+ for (MeasurementScheduleRequest request : metrics) {
+ if (request.getName().startsWith("NetworkStat.")) {
+ int val = stats.getByName(request.getName().substring("NetworkStat.".length()));
+ report.addData(new MeasurementDataNumeric(request, (double) val));
+ } else if (request.getName().startsWith("Process.")) {
+ Double value = ObjectUtil.lookupDeepNumericAttributeProperty(processInfo, request.getName().substring("Process.".length()));
+ report.addData(new MeasurementDataNumeric(request, value));
+ }
}
}
}
@@ -269,7 +271,7 @@ public class SambaServerComponent extends AugeasConfigurationComponent implement
if (args != null) {
processExecution.setArguments(args.split(" "));
}
-
+
processExecution.setCaptureOutput(true);
processExecution.setWaitForCompletion(1000L);
processExecution.setKillOnTimeout(true);
13 years, 1 month
[rhq] Branch 'release-4.0.0' - modules/enterprise
by mazz
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java | 23 ++++++++--
1 file changed, 19 insertions(+), 4 deletions(-)
New commits:
commit f905896731fe32596860ee2a0eed85f5c365ff65
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Mon May 9 17:01:16 2011 -0400
BZ 702748 - be able to revert back multiple deployments
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
index 58093f4..5738c64 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
@@ -915,7 +915,7 @@ public class BundleManagerBean implements BundleManagerLocal, BundleManagerRemot
@RequiredPermission(Permission.MANAGE_BUNDLE)
public BundleDeployment scheduleBundleDeployment(Subject subject, int bundleDeploymentId, boolean isCleanDeployment)
throws Exception {
- return scheduleBundleDeploymentImpl(subject, bundleDeploymentId, isCleanDeployment, false);
+ return scheduleBundleDeploymentImpl(subject, bundleDeploymentId, isCleanDeployment, false, null);
}
@Override
@@ -960,11 +960,13 @@ public class BundleManagerBean implements BundleManagerLocal, BundleManagerRemot
BundleDeployment revertDeployment = bundleManager.createBundleDeploymentInNewTrans(subject, prevDeployment
.getBundleVersion().getId(), bundleDestinationId, name, desc, config);
- return scheduleBundleDeploymentImpl(subject, revertDeployment.getId(), isCleanDeployment, true);
+ return scheduleBundleDeploymentImpl(subject, revertDeployment.getId(), isCleanDeployment, true, prevDeployment
+ .getReplacedBundleDeploymentId());
}
+ // revertedDeploymentReplacedDeployment is only meaningful if isRevert is true
private BundleDeployment scheduleBundleDeploymentImpl(Subject subject, int bundleDeploymentId,
- boolean isCleanDeployment, boolean isRevert) throws Exception {
+ boolean isCleanDeployment, boolean isRevert, Integer revertedDeploymentReplacedDeployment) throws Exception {
BundleDeployment newDeployment = entityManager.find(BundleDeployment.class, bundleDeploymentId);
if (null == newDeployment) {
@@ -998,9 +1000,22 @@ public class BundleManagerBean implements BundleManagerLocal, BundleManagerRemot
for (BundleDeployment d : currentDeployments) {
if (d.isLive()) {
d.setLive(false);
- // you can not revert a revert, it does not logically replace anything
if (!isRevert) {
newDeployment.setReplacedBundleDeploymentId(d.getId());
+ } else {
+ // we are doing a revert; so our "replacedDeployment" should be what the deployment we
+ // are reverting to replaced. For example, assume I deployed three bundles:
+ // Deployment #1 - replaced nothing (hence replacedBundleDeploymentId == null)
+ // Deployment #2 - replaced #1
+ // Deployment #3 - replaced #2
+ // Now do a revert. Reverting the live deployment #3 means we really want to re-deploy #2.
+ // This new deployment gets a new ID of #4, but it is actually a deployment equivalent to #2.
+ // If our deploy #4 is actually a redeploy of #2, we need to prepare for the user wanting
+ // to revert #4 by setting the replacedBundleDeploymentId to that which #2 had - this being #1.
+ // Deployment #4 - replaced #1
+ // Now if we ask to revert #4, we will actually be re-deploying #1, which is what we want.
+ // This allows us to revert back multiple steps.
+ newDeployment.setReplacedBundleDeploymentId(revertedDeploymentReplacedDeployment);
}
break;
}
13 years, 1 month
[rhq] Branch 'release-4.0.0' - 3 commits - modules/core modules/enterprise
by Jay Shaughnessy
modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleDeployment.java | 31 +++----
modules/core/domain/src/main/java/org/rhq/core/domain/criteria/BundleDeploymentCriteria.java | 5 -
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentView.java | 1
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/revert/ConfirmationStep.java | 43 +++++++++-
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java | 12 +-
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java | 4
6 files changed, 65 insertions(+), 31 deletions(-)
New commits:
commit 9c7a504b053f84eb64390e490e1e4babdc9009e8
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Tue May 10 13:42:56 2011 -0400
Related to [BZ 702390 - Large number of BundleDeployments for a single Bundle causes fetch serialization issues]
Revert some of the work done in commit 976c5fc6ed. Add back the LAZY load
on Configuration. Although, I think, it does need to perform additional
querying for the 'null' value determination, it can still proxy a non-null
value on optional XxxToOne associations.
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleDeployment.java b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleDeployment.java
index dcf6c27..637bf22 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleDeployment.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleDeployment.java
@@ -74,8 +74,8 @@ import org.rhq.core.domain.tagging.Tag;
+ " WHERE innerbd.destination.id = :destinationId ) "),
@NamedQuery(name = BundleDeployment.QUERY_UPDATE_FOR_VERSION_REMOVE, query = "" //
+ "UPDATE BundleDeployment bd " //
- + " SET bd.replacedBundleDeploymentId = NULL " //
- + " WHERE bd.replacedBundleDeploymentId IN " //
+ + " SET bd.replacedBundleDeploymentId = NULL " //
+ + " WHERE bd.replacedBundleDeploymentId IN " //
+ " ( SELECT innerbd.id FROM BundleDeployment innerbd " //
+ " WHERE innerbd.bundleVersion.id = :bundleVersionId ) ") })
@SequenceGenerator(name = "SEQ", sequenceName = "RHQ_BUNDLE_DEPLOYMENT_ID_SEQ")
@@ -118,15 +118,15 @@ public class BundleDeployment implements Serializable {
@Column(name = "MTIME")
private Long mtime = System.currentTimeMillis();
- // This is not a join column on purpose. Since it is nullable the OneToOne association would be forced to EAGER
- // fetch. That leads to basically fetching every BundleDeployment every time, in a deeply recursive way if you
- // have a lot deployments.
+ // This is intentionally not annotated as a OneToOne association for a BundleDeployment field. If done that way
+ // then a fetch could result in a very deep recursive fetch of all replaced deployments (for many deployments
+ // to a single destination), which is typically not what we want. And, it can cause fits in HibernateDetach
+ // which does not like extreme depth in its recursive scrubbing [BZ 702390].
@Column(name = "REPLACED_BUNDLE_DEPLOYMENT_ID", nullable = true)
private Integer replacedBundleDeploymentId;
- // note - eager fetch, can not lazy fetch an optional OneToOne
@JoinColumn(name = "CONFIG_ID", referencedColumnName = "ID", nullable = true)
- @OneToOne(cascade = CascadeType.ALL, optional = true)
+ @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY, optional = true)
private Configuration configuration;
@JoinColumn(name = "BUNDLE_VERSION_ID", referencedColumnName = "ID", nullable = false)
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/BundleDeploymentCriteria.java b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/BundleDeploymentCriteria.java
index aa437e3..8449905 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/BundleDeploymentCriteria.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/BundleDeploymentCriteria.java
@@ -49,6 +49,7 @@ public class BundleDeploymentCriteria extends TaggedCriteria {
private String filterSubjectName;
private boolean fetchBundleVersion;
+ private boolean fetchConfiguration;
private boolean fetchDestination;
private boolean fetchResourceDeployments;
@@ -108,6 +109,10 @@ public class BundleDeploymentCriteria extends TaggedCriteria {
this.fetchBundleVersion = fetchBundleVersion;
}
+ public void fetchConfiguration(boolean fetchConfiguration) {
+ this.fetchConfiguration = fetchConfiguration;
+ }
+
public void fetchDestination(boolean fetchDestination) {
this.fetchDestination = fetchDestination;
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/SelectBundleVersionStep.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/SelectBundleVersionStep.java
index b13df74..e1367e8 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/SelectBundleVersionStep.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/SelectBundleVersionStep.java
@@ -143,6 +143,7 @@ public class SelectBundleVersionStep extends AbstractWizardStep {
criteria.addFilterDestinationId(wizard.getDestination().getId());
criteria.addFilterIsLive(true);
criteria.fetchBundleVersion(true);
+ criteria.fetchConfiguration(true);
bundleServer.findBundleDeploymentsByCriteria(criteria, //
new AsyncCallback<PageList<BundleDeployment>>() {
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentView.java
index 73ea70c..3542481 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentView.java
@@ -421,6 +421,7 @@ public class BundleDeploymentView extends LocatableVLayout implements Bookmarkab
BundleDeploymentCriteria criteria = new BundleDeploymentCriteria();
criteria.addFilterId(bundleDeploymentId);
criteria.fetchBundleVersion(true);
+ criteria.fetchConfiguration(true);
criteria.fetchResourceDeployments(true);
criteria.fetchDestination(true);
criteria.fetchTags(true);
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
index 7a6e08a..58093f4 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
@@ -1095,6 +1095,7 @@ public class BundleManagerBean implements BundleManagerLocal, BundleManagerRemot
BundleDeploymentCriteria bdc = new BundleDeploymentCriteria();
bdc.addFilterId(resourceDeployment.getBundleDeployment().getId());
bdc.fetchBundleVersion(true);
+ bdc.fetchConfiguration(true);
bdc.fetchDestination(true);
BundleDeployment deployment = bundleManager.findBundleDeploymentsByCriteria(subject, bdc).get(0);
commit 630c882babfad352992df2b360984d1ee7d48b98
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Thu May 5 17:23:59 2011 -0400
Fix test compile problem
diff --git a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
index 6675c88..624a815 100644
--- a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
+++ b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
@@ -246,7 +246,8 @@ public class BundleManagerBeanTest extends UpdateSubsytemTestBase {
}
// remove ResourceTypes which cascade remove BundleTypes
- q = em.createQuery("SELECT rt FROM ResourceType rt WHERE rt.deleted = false and rt.name LIKE '" + TEST_PREFIX + "%'");
+ q = em.createQuery("SELECT rt FROM ResourceType rt WHERE rt.deleted = false and rt.name LIKE '"
+ + TEST_PREFIX + "%'");
doomed = q.getResultList();
for (Object removeMe : doomed) {
em.remove(em.getReference(ResourceType.class, ((ResourceType) removeMe).getId()));
@@ -788,7 +789,6 @@ public class BundleManagerBeanTest extends UpdateSubsytemTestBase {
BundleDeploymentCriteria bdc = new BundleDeploymentCriteria();
bdc.addFilterId(bd1d.getId());
bdc.fetchBundleVersion(true);
- bdc.fetchConfiguration(true);
bdc.fetchDestination(true);
bdc.fetchResourceDeployments(true);
bdc.fetchTags(true);
commit 1edeacca5b8e25c2b78b5e77e70bf853ef1a5580
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Thu May 5 13:45:09 2011 -0400
[BZ 702390 - Large number of BundleDeployments for a single Bundle causes fetch serialization issues]
Remove self-referring entity association for
BundleDeployment.replacedBundleDeployment. This prevents eager loading of
the entire deployment chain when fetching a BundleDeployment, and in turn
avoids issues with Hibernate class scrubbing when remote fetching deployments.
Instead of using the entity as the field member, just use the ID.
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleDeployment.java b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleDeployment.java
index fc0c72c..dcf6c27 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleDeployment.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleDeployment.java
@@ -68,14 +68,14 @@ import org.rhq.core.domain.tagging.Tag;
+ "SELECT bd FROM BundleDeployment bd "),
@NamedQuery(name = BundleDeployment.QUERY_UPDATE_FOR_DESTINATION_REMOVE, query = "" //
+ "UPDATE BundleDeployment bd " //
- + " SET bd.replacedBundleDeployment = NULL " //
- + " WHERE bd.replacedBundleDeployment.id IN " //
+ + " SET bd.replacedBundleDeploymentId = NULL " //
+ + " WHERE bd.replacedBundleDeploymentId IN " //
+ " ( SELECT innerbd.id FROM BundleDeployment innerbd " //
+ " WHERE innerbd.destination.id = :destinationId ) "),
@NamedQuery(name = BundleDeployment.QUERY_UPDATE_FOR_VERSION_REMOVE, query = "" //
+ "UPDATE BundleDeployment bd " //
- + " SET bd.replacedBundleDeployment = NULL " //
- + " WHERE bd.replacedBundleDeployment.id IN " //
+ + " SET bd.replacedBundleDeploymentId = NULL " //
+ + " WHERE bd.replacedBundleDeploymentId IN " //
+ " ( SELECT innerbd.id FROM BundleDeployment innerbd " //
+ " WHERE innerbd.bundleVersion.id = :bundleVersionId ) ") })
@SequenceGenerator(name = "SEQ", sequenceName = "RHQ_BUNDLE_DEPLOYMENT_ID_SEQ")
@@ -118,20 +118,23 @@ public class BundleDeployment implements Serializable {
@Column(name = "MTIME")
private Long mtime = System.currentTimeMillis();
- @JoinColumn(name = "REPLACED_BUNDLE_DEPLOYMENT_ID", referencedColumnName = "ID", nullable = true)
- @OneToOne(fetch = FetchType.LAZY, optional = true)
- private BundleDeployment replacedBundleDeployment;
+ // This is not a join column on purpose. Since it is nullable the OneToOne association would be forced to EAGER
+ // fetch. That leads to basically fetching every BundleDeployment every time, in a deeply recursive way if you
+ // have a lot deployments.
+ @Column(name = "REPLACED_BUNDLE_DEPLOYMENT_ID", nullable = true)
+ private Integer replacedBundleDeploymentId;
+ // note - eager fetch, can not lazy fetch an optional OneToOne
@JoinColumn(name = "CONFIG_ID", referencedColumnName = "ID", nullable = true)
- @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, optional = true)
+ @OneToOne(cascade = CascadeType.ALL, optional = true)
private Configuration configuration;
@JoinColumn(name = "BUNDLE_VERSION_ID", referencedColumnName = "ID", nullable = false)
- @ManyToOne(fetch = FetchType.LAZY)
+ @ManyToOne(fetch = FetchType.LAZY, optional = false)
private BundleVersion bundleVersion;
@JoinColumn(name = "BUNDLE_DESTINATION_ID", referencedColumnName = "ID", nullable = false)
- @ManyToOne(fetch = FetchType.LAZY)
+ @ManyToOne(fetch = FetchType.LAZY, optional = false)
private BundleDestination destination;
@OneToMany(mappedBy = "bundleDeployment", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@@ -284,12 +287,12 @@ public class BundleDeployment implements Serializable {
/**
* @return The previously "live" BundleDeployment.
*/
- public BundleDeployment getReplacedBundleDeployment() {
- return replacedBundleDeployment;
+ public Integer getReplacedBundleDeploymentId() {
+ return replacedBundleDeploymentId;
}
- public void setReplacedBundleDeployment(BundleDeployment replacedBundleDeployment) {
- this.replacedBundleDeployment = replacedBundleDeployment;
+ public void setReplacedBundleDeploymentId(Integer replacedBundleDeploymentId) {
+ this.replacedBundleDeploymentId = replacedBundleDeploymentId;
}
public Configuration getConfiguration() {
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/BundleDeploymentCriteria.java b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/BundleDeploymentCriteria.java
index 3ad25b8..aa437e3 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/BundleDeploymentCriteria.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/BundleDeploymentCriteria.java
@@ -49,9 +49,7 @@ public class BundleDeploymentCriteria extends TaggedCriteria {
private String filterSubjectName;
private boolean fetchBundleVersion;
- private boolean fetchConfiguration;
private boolean fetchDestination;
- private boolean fetchReplacedBundleDeployment;
private boolean fetchResourceDeployments;
public BundleDeploymentCriteria() {
@@ -110,18 +108,10 @@ public class BundleDeploymentCriteria extends TaggedCriteria {
this.fetchBundleVersion = fetchBundleVersion;
}
- public void fetchConfiguration(boolean fetchConfiguration) {
- this.fetchConfiguration = fetchConfiguration;
- }
-
public void fetchDestination(boolean fetchDestination) {
this.fetchDestination = fetchDestination;
}
- public void fetchReplacedBundleDeployment(boolean fetchReplacedBundleDeployment) {
- this.fetchReplacedBundleDeployment = fetchReplacedBundleDeployment;
- }
-
public void fetchResourceDeployments(boolean fetchResourceDeployments) {
this.fetchResourceDeployments = fetchResourceDeployments;
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/SelectBundleVersionStep.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/SelectBundleVersionStep.java
index e1367e8..b13df74 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/SelectBundleVersionStep.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/SelectBundleVersionStep.java
@@ -143,7 +143,6 @@ public class SelectBundleVersionStep extends AbstractWizardStep {
criteria.addFilterDestinationId(wizard.getDestination().getId());
criteria.addFilterIsLive(true);
criteria.fetchBundleVersion(true);
- criteria.fetchConfiguration(true);
bundleServer.findBundleDeploymentsByCriteria(criteria, //
new AsyncCallback<PageList<BundleDeployment>>() {
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentView.java
index e220cfc..73ea70c 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentView.java
@@ -328,6 +328,7 @@ public class BundleDeploymentView extends LocatableVLayout implements Bookmarkab
return tagEditor;
}
+ @SuppressWarnings("unchecked")
private Table addMemberDeploymentsTable() {
Table table = new Table(extendLocatorId("Deployments"), MSG.view_bundle_deploy_deploymentPlatforms());
@@ -420,7 +421,6 @@ public class BundleDeploymentView extends LocatableVLayout implements Bookmarkab
BundleDeploymentCriteria criteria = new BundleDeploymentCriteria();
criteria.addFilterId(bundleDeploymentId);
criteria.fetchBundleVersion(true);
- criteria.fetchConfiguration(true);
criteria.fetchResourceDeployments(true);
criteria.fetchDestination(true);
criteria.fetchTags(true);
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/revert/ConfirmationStep.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/revert/ConfirmationStep.java
index 3d298c2..00007cb 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/revert/ConfirmationStep.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/revert/ConfirmationStep.java
@@ -69,13 +69,14 @@ public class ConfirmationStep extends AbstractWizardStep {
}
layout.setMembersMargin(10);
+ // Get the Live Deployment
BundleDeploymentCriteria c = new BundleDeploymentCriteria();
c.addFilterDestinationId(this.wizard.getDestination().getId());
c.addFilterIsLive(true);
- c.fetchReplacedBundleDeployment(true);
c.fetchBundleVersion(true);
bundleServer.findBundleDeploymentsByCriteria(c, //
new AsyncCallback<PageList<BundleDeployment>>() {
+
public void onSuccess(PageList<BundleDeployment> liveDeployments) {
if (1 != liveDeployments.size()) {
nextPage = false;
@@ -86,9 +87,11 @@ public class ConfirmationStep extends AbstractWizardStep {
CoreGUI.getMessageCenter().notify(
new Message(messageConcise, message, Message.Severity.Warning));
}
+
wizard.setLiveDeployment(liveDeployments.get(0));
- wizard.setPreviousDeployment(wizard.getLiveDeployment().getReplacedBundleDeployment());
- if (null == wizard.getPreviousDeployment()) {
+ Integer replacedBundleDeploymentId = wizard.getLiveDeployment().getReplacedBundleDeploymentId();
+
+ if (null == replacedBundleDeploymentId) {
nextPage = false;
String messageConcise = MSG
.view_bundle_revertWizard_confirmStep_noPriorDeployment_concise();
@@ -99,7 +102,39 @@ public class ConfirmationStep extends AbstractWizardStep {
new Message(messageConcise, message, Message.Severity.Warning));
}
- setLayout();
+ // Get the Replaced Deployment (the one we want to revert to_
+ BundleDeploymentCriteria c = new BundleDeploymentCriteria();
+ c.addFilterId(replacedBundleDeploymentId);
+ bundleServer.findBundleDeploymentsByCriteria(c, //
+ new AsyncCallback<PageList<BundleDeployment>>() {
+
+ public void onSuccess(PageList<BundleDeployment> replacedBundleDeployments) {
+ if (1 != replacedBundleDeployments.size()) {
+ nextPage = false;
+ String messageConcise = MSG
+ .view_bundle_revertWizard_confirmStep_noPriorDeployment_concise();
+ String message = MSG.view_bundle_revertWizard_confirmStep_noPriorDeployment(
+ wizard.getLiveDeployment().toString(), wizard.getDestination().toString());
+ wizard.getView().showMessage(message);
+ CoreGUI.getMessageCenter().notify(
+ new Message(messageConcise, message, Message.Severity.Warning));
+ }
+
+ wizard.setPreviousDeployment(replacedBundleDeployments.get(0));
+ setLayout();
+ }
+
+ public void onFailure(Throwable caught) {
+ nextPage = false;
+ String messageConcise = MSG
+ .view_bundle_revertWizard_confirmStep_noPriorDeployment_concise();
+ String message = MSG.view_bundle_revertWizard_confirmStep_noPriorDeployment(wizard
+ .getLiveDeployment().toString(), wizard.getDestination().toString());
+ wizard.getView().showMessage(message);
+ CoreGUI.getMessageCenter().notify(
+ new Message(messageConcise, message, Message.Severity.Warning));
+ }
+ });
}
public void onFailure(Throwable caught) {
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
index d0ddc8f..7a6e08a 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
@@ -926,7 +926,6 @@ public class BundleManagerBean implements BundleManagerLocal, BundleManagerRemot
BundleDeploymentCriteria c = new BundleDeploymentCriteria();
c.addFilterDestinationId(bundleDestinationId);
c.addFilterIsLive(true);
- c.fetchReplacedBundleDeployment(true);
c.fetchDestination(true);
List<BundleDeployment> liveDeployments = bundleManager.findBundleDeploymentsByCriteria(subject, c);
if (1 != liveDeployments.size()) {
@@ -934,15 +933,15 @@ public class BundleManagerBean implements BundleManagerLocal, BundleManagerRemot
+ "]");
}
BundleDeployment liveDeployment = liveDeployments.get(0);
- BundleDeployment prevDeployment = liveDeployment.getReplacedBundleDeployment();
- if (null == prevDeployment) {
+ Integer prevDeploymentId = liveDeployment.getReplacedBundleDeploymentId();
+ if (null == prevDeploymentId) {
throw new IllegalArgumentException(
"Live deployment ["
+ liveDeployment
+ "] can not be reverted. The Live deployment is either an initial deployment or a reverted deployment for destinationId ["
+ bundleDestinationId + "]");
}
- prevDeployment = entityManager.find(BundleDeployment.class, prevDeployment.getId());
+ BundleDeployment prevDeployment = entityManager.find(BundleDeployment.class, prevDeploymentId);
if (null == prevDeployment) {
throw new IllegalArgumentException("Live deployment [" + liveDeployment
+ "] can not be reverted. There is no prior deployment for destinationId [" + bundleDestinationId + "]");
@@ -999,9 +998,9 @@ public class BundleManagerBean implements BundleManagerLocal, BundleManagerRemot
for (BundleDeployment d : currentDeployments) {
if (d.isLive()) {
d.setLive(false);
- // you can not revert a revert, it does not logically replace anything, it is
+ // you can not revert a revert, it does not logically replace anything
if (!isRevert) {
- newDeployment.setReplacedBundleDeployment(d);
+ newDeployment.setReplacedBundleDeploymentId(d.getId());
}
break;
}
@@ -1096,7 +1095,6 @@ public class BundleManagerBean implements BundleManagerLocal, BundleManagerRemot
BundleDeploymentCriteria bdc = new BundleDeploymentCriteria();
bdc.addFilterId(resourceDeployment.getBundleDeployment().getId());
bdc.fetchBundleVersion(true);
- bdc.fetchConfiguration(true);
bdc.fetchDestination(true);
BundleDeployment deployment = bundleManager.findBundleDeploymentsByCriteria(subject, bdc).get(0);
@@ -1471,6 +1469,7 @@ public class BundleManagerBean implements BundleManagerLocal, BundleManagerRemot
// to break the FK dependency with nulls.
Query q = entityManager.createNamedQuery(BundleDeployment.QUERY_UPDATE_FOR_VERSION_REMOVE);
q.setParameter("bundleVersionId", bundleVersionId);
+ @SuppressWarnings("unused")
int rowsUpdated = q.executeUpdate();
entityManager.flush();
13 years, 1 month
[rhq] 2 commits - modules/core modules/enterprise
by Jay Shaughnessy
modules/core/domain/src/main/java/org/rhq/core/domain/alert/AlertCondition.java | 8
modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleDeployment.java | 14
modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleVersion.java | 4
modules/core/domain/src/main/java/org/rhq/core/domain/configuration/PluginConfigurationUpdate.java | 4
modules/core/domain/src/main/java/org/rhq/core/domain/content/ContentSource.java | 6
modules/core/domain/src/main/java/org/rhq/core/domain/content/ContentSourceType.java | 2
modules/core/domain/src/main/java/org/rhq/core/domain/content/InstalledPackageHistory.java | 10
modules/core/domain/src/main/java/org/rhq/core/domain/content/PackageType.java | 10
modules/core/domain/src/main/java/org/rhq/core/domain/content/PackageVersion.java | 42
modules/core/domain/src/main/java/org/rhq/core/domain/criteria/BundleDeploymentCriteria.java | 5
modules/core/domain/src/main/java/org/rhq/core/domain/dashboard/Dashboard.java | 10
modules/core/domain/src/main/java/org/rhq/core/domain/discovery/ResourceSyncInfo.java | 4
modules/core/domain/src/main/java/org/rhq/core/domain/event/Event.java | 2
modules/core/domain/src/main/java/org/rhq/core/domain/event/EventDefinition.java | 2
modules/core/domain/src/main/java/org/rhq/core/domain/event/EventSource.java | 2
modules/core/domain/src/main/java/org/rhq/core/domain/measurement/Availability.java | 582 +++++-----
modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementBaseline.java | 2
modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementData.java | 54
modules/core/domain/src/main/java/org/rhq/core/domain/measurement/ResourceAvailability.java | 390 +++---
modules/core/domain/src/main/java/org/rhq/core/domain/measurement/calltime/CallTimeDataKey.java | 218 +--
modules/core/domain/src/main/java/org/rhq/core/domain/operation/OperationHistory.java | 4
modules/core/domain/src/main/java/org/rhq/core/domain/operation/ResourceOperationHistory.java | 8
modules/core/domain/src/main/java/org/rhq/core/domain/plugin/ServerPlugin.java | 8
modules/core/domain/src/main/java/org/rhq/core/domain/resource/Resource.java | 24
modules/core/domain/src/main/java/org/rhq/core/domain/resource/ResourceType.java | 55
modules/core/domain/src/main/java/org/rhq/core/domain/search/SavedSearch.java | 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/SelectBundleVersionStep.java | 1
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentView.java | 1
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java | 1
29 files changed, 734 insertions(+), 741 deletions(-)
New commits:
commit 48bf82fcfaaf7cd9d3aa7549de7d49d793964b5f
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Tue May 10 15:14:44 2011 -0400
Related to [BZ 702390 - Large number of BundleDeployments for a single Bundle causes fetch serialization issues]
Ensure (optional=false) set for LAZY load required (i.e. nullable = false) associations.
This should ensure efficient lazy load.
For clarity, and to give Hibernate as many hints as possible, mark all
XxxToOne associations with the 'optional' attribute, whether true or false,
lazy or not. And set nullable on the JoinColumn annotations as well.
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/alert/AlertCondition.java b/modules/core/domain/src/main/java/org/rhq/core/domain/alert/AlertCondition.java
index 640648b..355c854 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/alert/AlertCondition.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/alert/AlertCondition.java
@@ -299,8 +299,8 @@ public class AlertCondition implements Serializable {
@Enumerated(EnumType.STRING)
private AlertConditionCategory category;
- @JoinColumn(name = "MEASUREMENT_DEFINITION_ID", referencedColumnName = "ID")
- @ManyToOne(fetch = FetchType.LAZY)
+ @JoinColumn(name = "MEASUREMENT_DEFINITION_ID", referencedColumnName = "ID", nullable = true)
+ @ManyToOne(fetch = FetchType.LAZY, optional = true)
@XmlTransient
private MeasurementDefinition measurementDefinition;
@@ -319,8 +319,8 @@ public class AlertCondition implements Serializable {
@Column(name = "TRIGGER_ID")
private Integer triggerId;
- @JoinColumn(name = "ALERT_DEFINITION_ID", referencedColumnName = "ID")
- @ManyToOne(fetch = FetchType.LAZY)
+ @JoinColumn(name = "ALERT_DEFINITION_ID", referencedColumnName = "ID", nullable = true)
+ @ManyToOne(fetch = FetchType.LAZY, optional = true)
@XmlTransient
private AlertDefinition alertDefinition;
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleVersion.java b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleVersion.java
index cfbb9d7..31fc9ab 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleVersion.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleVersion.java
@@ -111,11 +111,11 @@ public class BundleVersion implements Serializable {
private String recipe;
@JoinColumn(name = "BUNDLE_ID", referencedColumnName = "ID", nullable = false)
- @ManyToOne(fetch = FetchType.LAZY)
+ @ManyToOne(fetch = FetchType.LAZY, optional = false)
private Bundle bundle;
@JoinColumn(name = "CONFIG_DEF_ID", referencedColumnName = "ID", nullable = true)
- @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+ @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY, optional = true)
private ConfigurationDefinition configurationDefinition;
@OneToMany(mappedBy = "bundleVersion", fetch = FetchType.LAZY, cascade = CascadeType.REMOVE)
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/configuration/PluginConfigurationUpdate.java b/modules/core/domain/src/main/java/org/rhq/core/domain/configuration/PluginConfigurationUpdate.java
index e7c5845..32a526e 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/configuration/PluginConfigurationUpdate.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/configuration/PluginConfigurationUpdate.java
@@ -139,12 +139,12 @@ public class PluginConfigurationUpdate extends AbstractResourceConfigurationUpda
public static final String QUERY_DELETE_GROUP_UPDATE = "pluginConfigurationUpdate.deleteGroupUpdate";
@JoinColumn(name = "PLUGIN_CONFIG_RES_ID", referencedColumnName = "ID", nullable = true)
- @ManyToOne(cascade = CascadeType.MERGE, fetch = FetchType.LAZY)
+ @ManyToOne(cascade = CascadeType.MERGE, fetch = FetchType.LAZY, optional = true)
@XmlTransient
private Resource resource;
@JoinColumn(name = "AGG_PLUGIN_UPDATE_ID", referencedColumnName = "ID", nullable = true)
- @ManyToOne
+ @ManyToOne(optional = true)
private GroupPluginConfigurationUpdate groupConfigurationUpdate;
protected PluginConfigurationUpdate() {
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/content/ContentSource.java b/modules/core/domain/src/main/java/org/rhq/core/domain/content/ContentSource.java
index 00877bd..a94c4ab 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/content/ContentSource.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/content/ContentSource.java
@@ -59,7 +59,7 @@ import org.rhq.core.domain.configuration.Configuration;
* @author Jason Dobies
*/
@Entity
-@NamedQueries({
+@NamedQueries( {
@NamedQuery(name = ContentSource.QUERY_FIND_ALL, query = "SELECT cs FROM ContentSource cs "),
@NamedQuery(name = ContentSource.QUERY_FIND_ALL_WITH_CONFIG, query = "SELECT cs FROM ContentSource cs LEFT JOIN FETCH cs.configuration"),
@NamedQuery(name = ContentSource.QUERY_FIND_BY_NAME_AND_TYPENAME, query = "SELECT cs " + " FROM ContentSource cs "
@@ -94,7 +94,7 @@ public class ContentSource implements Serializable {
private int id;
@JoinColumn(name = "CONTENT_SOURCE_TYPE_ID", referencedColumnName = "ID", nullable = false)
- @ManyToOne
+ @ManyToOne(optional = false)
private ContentSourceType contentSourceType;
@Column(name = "NAME", nullable = false)
@@ -117,7 +117,7 @@ public class ContentSource implements Serializable {
private String loadErrorMessage;
@JoinColumn(name = "CONFIGURATION_ID", referencedColumnName = "ID", nullable = true)
- @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+ @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY, optional = true)
private Configuration configuration;
@Column(name = "CREATION_TIME", nullable = false)
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/content/ContentSourceType.java b/modules/core/domain/src/main/java/org/rhq/core/domain/content/ContentSourceType.java
index 2c6b41d..52e6cce 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/content/ContentSourceType.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/content/ContentSourceType.java
@@ -100,7 +100,7 @@ public class ContentSourceType implements Serializable {
private String defaultSyncSchedule = "0 0 3 * * ?";
@JoinColumn(name = "SOURCE_CONFIG_DEF_ID", nullable = true)
- @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+ @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY, optional = true)
@XmlTransient
private ConfigurationDefinition contentSourceConfigurationDefinition;
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/content/InstalledPackageHistory.java b/modules/core/domain/src/main/java/org/rhq/core/domain/content/InstalledPackageHistory.java
index 9b21fe2..5d52d7f 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/content/InstalledPackageHistory.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/content/InstalledPackageHistory.java
@@ -54,7 +54,7 @@ import org.rhq.core.domain.resource.Resource;
* @author Jason Dobies
*/
@Entity
-@NamedQueries({
+@NamedQueries( {
@NamedQuery(name = InstalledPackageHistory.QUERY_FIND_CONFIG_BY_PACKAGE_VERSION_AND_REQ, query = "SELECT dcv FROM InstalledPackageHistory iph JOIN iph.deploymentConfigurationValues dcv "
+ "WHERE iph.packageVersion = :packageVersion "
+ "AND iph.contentServiceRequest = :contentServiceRequest "
@@ -92,7 +92,7 @@ public class InstalledPackageHistory implements Serializable {
private int id;
@JoinColumn(name = "PACKAGE_VERSION_ID", referencedColumnName = "ID", nullable = false)
- @ManyToOne
+ @ManyToOne(optional = false)
private PackageVersion packageVersion;
@Column(name = "STATUS", nullable = false)
@@ -115,7 +115,7 @@ public class InstalledPackageHistory implements Serializable {
* case that the package type does not define any deploy time properties.
*/
@JoinColumn(name = "DEPLOYMENT_CONFIG_ID", referencedColumnName = "ID", nullable = true)
- @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
+ @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY, optional = true)
private Configuration deploymentConfigurationValues;
/**
@@ -132,11 +132,11 @@ public class InstalledPackageHistory implements Serializable {
* This history item described a package that was on this resource.
*/
@JoinColumn(name = "RESOURCE_ID", referencedColumnName = "ID", nullable = false)
- @ManyToOne
+ @ManyToOne(optional = false)
private Resource resource;
@JoinColumn(name = "CONTENT_SERVICE_REQUEST_ID", referencedColumnName = "ID", nullable = true)
- @ManyToOne
+ @ManyToOne(optional = true)
private ContentServiceRequest contentServiceRequest;
public int getId() {
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/content/PackageType.java b/modules/core/domain/src/main/java/org/rhq/core/domain/content/PackageType.java
index d9e3ea3..9c78af5 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/content/PackageType.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/content/PackageType.java
@@ -41,7 +41,6 @@ import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
-import javax.xml.bind.Unmarshaller;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlTransient;
@@ -72,8 +71,7 @@ import org.rhq.core.domain.resource.ResourceType;
+ "JOIN pt.resourceType rt "
+ "LEFT JOIN FETCH pt.deploymentConfigurationDefinition cd "
+ "LEFT JOIN FETCH cd.templates cts " + "WHERE rt.id = :typeId AND pt.isCreationData = true"),
- @NamedQuery(name = PackageType.QUERY_DYNAMIC_CONFIG_VALUES, query = "SELECT pt.resourceType.plugin || ' - ' || pt.resourceType.name || ' - ' || pt.displayName, pt.name FROM PackageType AS pt")
-})
+ @NamedQuery(name = PackageType.QUERY_DYNAMIC_CONFIG_VALUES, query = "SELECT pt.resourceType.plugin || ' - ' || pt.resourceType.name || ' - ' || pt.displayName, pt.name FROM PackageType AS pt") })
@SequenceGenerator(name = "SEQ", sequenceName = "RHQ_PACKAGE_TYPE_ID_SEQ")
@Table(name = "RHQ_PACKAGE_TYPE")
@XmlAccessorType(XmlAccessType.FIELD)
@@ -121,18 +119,18 @@ public class PackageType implements Serializable {
private boolean supportsArchitecture;
@JoinColumn(name = "DEPLOYMENT_CONFIG_DEF_ID", referencedColumnName = "ID", nullable = true)
- @OneToOne(fetch = FetchType.LAZY, cascade = { CascadeType.ALL })
+ @OneToOne(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, optional = true)
private ConfigurationDefinition deploymentConfigurationDefinition;
@JoinColumn(name = "PACKAGE_EXTRA_CONFIG_ID", referencedColumnName = "ID", nullable = true)
- @OneToOne(fetch = FetchType.LAZY, cascade = { CascadeType.ALL })
+ @OneToOne(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, optional = true)
private ConfigurationDefinition packageExtraPropertiesDefinition;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "packageType", cascade = { CascadeType.REMOVE })
private Set<Package> packages;
@JoinColumn(name = "RESOURCE_TYPE_ID", referencedColumnName = "ID", nullable = true)
- @ManyToOne
+ @ManyToOne(optional = true)
@XmlTransient
private ResourceType resourceType;
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/content/PackageVersion.java b/modules/core/domain/src/main/java/org/rhq/core/domain/content/PackageVersion.java
index 76dbff4..d64d8a5 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/content/PackageVersion.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/content/PackageVersion.java
@@ -78,7 +78,7 @@ import org.rhq.core.domain.util.OSGiVersionComparator;
+ " WHERE pv.generalPackage.name = :packageName "
+ " AND pv.generalPackage.packageType.name = :packageTypeName "
+ " AND pv.generalPackage.packageType.resourceType = :resourceType "
- + " AND pv.architecture.name = :architectureName " + " AND pv.version = :version "),
+ + " AND pv.architecture.name = :architectureName " + " AND pv.version = :version "),
@NamedQuery(name = PackageVersion.QUERY_FIND_ID_BY_PACKAGE_DETAILS_KEY_AND_RES_ID, query = "SELECT pv.id "
+ " FROM PackageVersion AS pv " + " JOIN pv.generalPackage.packageType.resourceType.resources r "
+ " WHERE pv.generalPackage.name = :packageName "
@@ -251,17 +251,13 @@ import org.rhq.core.domain.util.OSGiVersionComparator;
+ "WHERE p.id IN (SELECT pv.generalPackage.id FROM PackageVersion AS pv WHERE pv.fileName = :rpmName)"),
@NamedQuery(name = PackageVersion.QUERY_FIND_PACKAGEVERSION_BY_FILENAME, query = "SELECT pv FROM PackageVersion AS pv WHERE pv.fileName = :rpmName)"),
@NamedQuery(name = PackageVersion.QUERY_FIND_BY_PACKAGE_AND_REPO_ID, query = "SELECT pv"
- + " FROM PackageVersion pv"
- + " JOIN pv.repoPackageVersions rpv"
- + " WHERE pv.generalPackage.id = :packageId"
+ + " FROM PackageVersion pv" + " JOIN pv.repoPackageVersions rpv" + " WHERE pv.generalPackage.id = :packageId"
+ " AND rpv.repo.id = :repoId"),
- @NamedQuery(name = PackageVersion.QUERY_FIND_DELETEABLE_IDS_IN_REPO, query = "SELECT pv.id FROM PackageVersion pv"
+ @NamedQuery(name = PackageVersion.QUERY_FIND_DELETEABLE_IDS_IN_REPO, query = "SELECT pv.id FROM PackageVersion pv"
+ " WHERE (pv.id, 1) IN"
+ " (SELECT pv2.id, (SELECT COUNT(rpv) FROM RepoPackageVersion rpv WHERE rpv.packageVersion.id = pv2.id)"
- + " FROM PackageVersion pv2"
- + " WHERE pv2.id IN ( :packageVersionIds )"
- + " AND pv2.id IN (SELECT rpv.packageVersion.id FROM RepoPackageVersion rpv WHERE rpv.repo.id = :repoId))")
-})
+ + " FROM PackageVersion pv2" + " WHERE pv2.id IN ( :packageVersionIds )"
+ + " AND pv2.id IN (SELECT rpv.packageVersion.id FROM RepoPackageVersion rpv WHERE rpv.repo.id = :repoId))") })
@SequenceGenerator(name = "SEQ", sequenceName = "RHQ_PACKAGE_VERSION_ID_SEQ")
@Table(name = "RHQ_PACKAGE_VERSION")
public class PackageVersion implements Serializable {
@@ -300,7 +296,7 @@ public class PackageVersion implements Serializable {
public static final String QUERY_FIND_PACKAGE_BY_FILENAME = "PackageVersion.findPackageByFilename";
public static final String QUERY_FIND_PACKAGEVERSION_BY_FILENAME = "PackageVersion.findPackageVersionByFilename";
public static final String QUERY_FIND_DELETEABLE_IDS_IN_REPO = "PackageVersion.findDeleteableVersionIds";
-
+
/**
* This is a default {@link Comparator} implementation for package versions.
* If the package versions being compared both have non-null {@link PackageVersion#getVersion() versions}
@@ -319,9 +315,9 @@ public class PackageVersion implements Serializable {
public int compare(PackageVersion p1, PackageVersion p2) {
String v1 = p1.getVersion();
String v2 = p2.getVersion();
-
+
OSGiVersionComparator c = new OSGiVersionComparator();
-
+
if (v1 != null && v2 != null) {
try {
return c.compare(v1, v2);
@@ -329,23 +325,23 @@ public class PackageVersion implements Serializable {
//well, this can happen.. not all packages have OSGi type versions.
}
}
-
+
if (p1.getFileCreatedDate() != null && p2.getFileCreatedDate() != null) {
return p1.getFileCreatedDate().compareTo(p2.getFileCreatedDate());
}
-
+
//hmm... there's actually nothing we can sort these two by..
//let's compare them by id - the one inserted sooner will have a lower id
-
+
return Integer.valueOf(p1.getId()).compareTo(p2.getId());
}
};
-
+
/**
* @see DefaultPackageVersionComparator
*/
public static final DefaultPackageVersionComparator DEFAULT_COMPARATOR = new DefaultPackageVersionComparator();
-
+
// Attributes --------------------------------------------
@Column(name = "ID", nullable = false)
@@ -354,7 +350,7 @@ public class PackageVersion implements Serializable {
private int id;
@JoinColumn(name = "PACKAGE_ID", referencedColumnName = "ID", nullable = false)
- @ManyToOne(cascade = { CascadeType.MERGE, CascadeType.PERSIST })
+ @ManyToOne(cascade = { CascadeType.MERGE, CascadeType.PERSIST }, optional = false)
private Package generalPackage;
@Column(name = "DISPLAY_NAME", nullable = true)
@@ -373,7 +369,7 @@ public class PackageVersion implements Serializable {
private String displayVersion;
@JoinColumn(name = "ARCHITECTURE_ID", referencedColumnName = "ID", nullable = false)
- @ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.PERSIST)
+ @ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.PERSIST, optional = false)
private Architecture architecture;
@Column(name = "FILE_NAME", nullable = true)
@@ -401,7 +397,7 @@ public class PackageVersion implements Serializable {
private byte[] metadata;
@JoinColumn(name = "CONFIG_ID", referencedColumnName = "ID", nullable = true)
- @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
+ @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY, optional = true)
private Configuration extraProperties;
@OneToMany(mappedBy = "packageVersion", fetch = FetchType.LAZY, cascade = CascadeType.REMOVE)
@@ -415,11 +411,11 @@ public class PackageVersion implements Serializable {
@OneToMany(mappedBy = "packageVersion", fetch = FetchType.LAZY)
private Set<InstalledPackageHistory> installedPackageHistory;
- // No longer use cascade PERSIST on this. We'll associate it manually due to intracacies in blob handling
+ // No longer use cascade PERSIST on this. We'll associate it manually due to intracacies in blob handling
@JoinColumn(name = "PACKAGE_BITS_ID", referencedColumnName = "ID", nullable = true)
- @OneToOne(cascade = { CascadeType.REMOVE }, fetch = FetchType.LAZY)
+ @OneToOne(cascade = { CascadeType.REMOVE }, fetch = FetchType.LAZY, optional = true)
@XmlTransient
- private PackageBits packageBits; // do NOT eager load this - is has the BLOB contents of the package
+ private PackageBits packageBits;
@OneToMany(mappedBy = "packageVersion", cascade = { CascadeType.REMOVE }, fetch = FetchType.LAZY)
private Set<ProductVersionPackageVersion> productVersionPackageVersions;
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/dashboard/Dashboard.java b/modules/core/domain/src/main/java/org/rhq/core/domain/dashboard/Dashboard.java
index 2f5d41e..601d817 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/dashboard/Dashboard.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/dashboard/Dashboard.java
@@ -88,20 +88,20 @@ public class Dashboard implements Serializable {
@Column(name = "SHARED", nullable = false)
private boolean shared = false;
- @JoinColumn(name = "CONFIGURATION_ID", referencedColumnName = "ID")
- @OneToOne(cascade = { CascadeType.ALL })
+ @JoinColumn(name = "CONFIGURATION_ID", referencedColumnName = "ID", nullable = true)
+ @OneToOne(cascade = { CascadeType.ALL }, optional = true)
private Configuration configuration = new Configuration();
@JoinColumn(name = "SUBJECT_ID", nullable = false)
- @ManyToOne(fetch = FetchType.LAZY)
+ @ManyToOne(fetch = FetchType.LAZY, optional = false)
private Subject owner;
@JoinColumn(name = "RESOURCE_ID", nullable = true)
- @ManyToOne(fetch = FetchType.LAZY)
+ @ManyToOne(fetch = FetchType.LAZY, optional = true)
private Resource resource;
@JoinColumn(name = "GROUP_ID", nullable = true)
- @ManyToOne(fetch = FetchType.LAZY)
+ @ManyToOne(fetch = FetchType.LAZY, optional = true)
private ResourceGroup group;
@OneToMany(mappedBy = "dashboard", fetch = FetchType.EAGER)
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/discovery/ResourceSyncInfo.java b/modules/core/domain/src/main/java/org/rhq/core/domain/discovery/ResourceSyncInfo.java
index 4bcc267..eb3b97d 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/discovery/ResourceSyncInfo.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/discovery/ResourceSyncInfo.java
@@ -72,8 +72,8 @@ public class ResourceSyncInfo implements Serializable {
@Enumerated(EnumType.STRING)
private InventoryStatus inventoryStatus;
- @JoinColumn(name = "PARENT_RESOURCE_ID")
- @ManyToOne(fetch = FetchType.LAZY)
+ @JoinColumn(name = "PARENT_RESOURCE_ID", nullable = true)
+ @ManyToOne(fetch = FetchType.LAZY, optional = true)
private ResourceSyncInfo parent;
@OneToMany(mappedBy = "parent", fetch = FetchType.EAGER)
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/event/Event.java b/modules/core/domain/src/main/java/org/rhq/core/domain/event/Event.java
index dfb8d34..f0df086 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/event/Event.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/event/Event.java
@@ -112,7 +112,7 @@ public class Event implements Serializable {
private int id;
@JoinColumn(name = "EVENT_SOURCE_ID", referencedColumnName = "ID", nullable = false)
- @ManyToOne(fetch = FetchType.LAZY)
+ @ManyToOne(fetch = FetchType.LAZY, optional = false)
private EventSource source;
@Column(name = "TIMESTAMP", nullable = false)
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/event/EventDefinition.java b/modules/core/domain/src/main/java/org/rhq/core/domain/event/EventDefinition.java
index 75f7b73..5db91bb 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/event/EventDefinition.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/event/EventDefinition.java
@@ -58,7 +58,7 @@ public class EventDefinition implements Serializable {
private int id;
@JoinColumn(name = "RESOURCE_TYPE_ID", referencedColumnName = "ID", nullable = false)
- @ManyToOne(fetch = FetchType.LAZY)
+ @ManyToOne(fetch = FetchType.LAZY, optional = false)
private ResourceType resourceType;
@Column(name = "RESOURCE_TYPE_ID", insertable = false, updatable = false)
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/event/EventSource.java b/modules/core/domain/src/main/java/org/rhq/core/domain/event/EventSource.java
index 2424edb..f1d8108 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/event/EventSource.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/event/EventSource.java
@@ -74,7 +74,7 @@ public class EventSource implements Serializable {
private EventDefinition eventDefinition;
@JoinColumn(name = "RESOURCE_ID", nullable = false)
- @ManyToOne(fetch = FetchType.LAZY)
+ @ManyToOne(fetch = FetchType.LAZY, optional = false)
private Resource resource;
@Column(name = "RESOURCE_ID", insertable = false, updatable = false)
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/Availability.java b/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/Availability.java
index 260adc5..9647632 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/Availability.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/Availability.java
@@ -1,292 +1,292 @@
-/*
- * 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, version 2, as
- * published by the Free Software Foundation, and/or the GNU Lesser
- * General Public License, version 2.1, also as published by the Free
- * Software Foundation.
- *
- * 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 and the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU General Public License
- * and the GNU Lesser General Public License along with this program;
- * if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.rhq.core.domain.measurement;
-
-import java.io.Serializable;
-import java.util.Date;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.NamedQueries;
-import javax.persistence.NamedQuery;
-import javax.persistence.SequenceGenerator;
-import javax.persistence.Table;
-
-import org.rhq.core.domain.resource.Resource;
-
-/**
- * This Entity Bean stores information about resource availability. The actual data is run-length encoded. This means
- * that the {@link #getAvailabilityType() availability state} (e.g. UP or DOWN) changed at the
- * {@link #getStartTime() start time}.
- *
- * This provides historical data regarding when a resource was up or down. To get the current availability
- * of a resource, it is best to use the {@link ResourceAvailability} entity instead.
- *
- * @see ResourceAvailability
- *
- * @author Heiko W. Rupp
- * @author John Mazzitelli
- */
-@Entity
-@NamedQueries( { @NamedQuery(name = Availability.FIND_CURRENT_BY_RESOURCE, query = "" //
- + " SELECT av " //
- + " FROM Availability av " //
- + " WHERE av.resource.id = :resourceId " //
- + " AND av.endTime IS NULL " //
- + "ORDER BY av.startTime ASC "), // this order by is on purpose - for handling NonUniqueResultException problems
- @NamedQuery(name = Availability.FIND_BY_RESOURCE, query = "" //
- + " SELECT av " //
- + " FROM Availability av " //
- + " WHERE av.resource.id = :resourceId " //
- + "ORDER BY av.startTime ASC"), //
- @NamedQuery(name = Availability.FIND_BY_RESOURCE_NO_SORT, query = "" //
- + "SELECT av " //
- + " FROM Availability av " //
- + " WHERE av.resource.id = :resourceId "), //
-
- // get all current resource availabilities for those that do not match a given availability type
- @NamedQuery(name = Availability.FIND_NONMATCHING_WITH_RESOURCE_ID_BY_AGENT_AND_TYPE, query = "" //
- + "SELECT new org.rhq.core.domain.resource.composite.ResourceIdWithAvailabilityComposite(av.resource.id, av) " //
- + " FROM Availability av " //
- + " WHERE av.resource.agent.id = :agentId " //
- + " AND ((av.availabilityType <> :availabilityType AND :availabilityType IS NOT NULL) " //
- + " OR (av.availabilityType IS NOT NULL AND :availabilityType IS NULL) " //
- + " OR (av.availabilityType IS NULL AND :availabilityType IS NOT NULL))" //
- + " AND av.endTime IS NULL"), //
- @NamedQuery(name = Availability.FIND_FOR_RESOURCE_WITHIN_INTERVAL, query = "" //
- + "SELECT av FROM Availability av " //
- + " WHERE av.resource.id = :resourceId " //
- + " AND ((av.startTime <= :start AND (av.endTime >= :start OR av.endTime IS NULL) ) " /* availability straddles :start */
- + " OR (av.startTime BETWEEN :start AND :end)) " /* interval straddles availability.startTime */
- + "ORDER BY av.startTime ASC"), //
- @NamedQuery(name = Availability.FIND_FOR_RESOURCE_GROUP_WITHIN_INTERVAL, query = "" //
- + "SELECT av FROM Availability av " //
- + " WHERE av.resource.id IN ( SELECT ires.id " //
- + " FROM ResourceGroup rg " //
- + " JOIN rg.implicitResources ires " //
- + " WHERE rg.id = :groupId ) " //
- + " AND ((av.startTime <= :start AND (av.endTime >= :start OR av.endTime IS NULL) ) " /* availability straddles :start */
- + " OR (av.startTime BETWEEN :start AND :end)) " /* interval straddles availability.startTime */
- + "ORDER BY av.startTime ASC"), //
- @NamedQuery(name = Availability.FIND_FOR_AUTO_GROUP_WITHIN_INTERVAL, query = "" //
- + " SELECT av FROM Availability av " //
- + " JOIN av.resource res JOIN res.parentResource parent JOIN res.resourceType type " //
- + " WHERE parent.id = :parentId " //
- + " AND type.id = :typeId " //
- + " AND ((av.startTime <= :start AND (av.endTime >= :start OR av.endTime IS NULL)) " /* availability straddles :start */
- + " OR (av.startTime BETWEEN :start AND :end)) " /* interval straddles availability.startTime */
- + "ORDER BY av.startTime ASC"), //
- @NamedQuery(name = Availability.FIND_BY_RESOURCE_AND_DATE, query = "" //
- + "SELECT av FROM Availability av " //
- + " WHERE av.resource.id = :resourceId " //
- + " AND av.startTime <= :aTime " //
- + " AND ( av.endTime >= :aTime OR av.endTime IS NULL ) "), //
- @NamedQuery(name = Availability.QUERY_DELETE_BY_RESOURCES, query = "" //
- + " DELETE Availability a " //
- + " WHERE a.resource.id IN ( :resourceIds )") })
-@SequenceGenerator(name = "Generator", sequenceName = "RHQ_AVAILABILITY_ID_SEQ")
-@Table(name = "RHQ_AVAILABILITY")
-public class Availability implements Serializable {
- private static final long serialVersionUID = 1L;
-
- public static final String FIND_CURRENT_BY_RESOURCE = "Availability.findCurrentByResource";
- public static final String FIND_BY_RESOURCE = "Availability.findByResource";
- public static final String FIND_BY_RESOURCE_NO_SORT = "Availability.findByResourceNoSort";
- public static final String FIND_NONMATCHING_WITH_RESOURCE_ID_BY_AGENT_AND_TYPE = "Availability.findNonmatchingWithResourceIdByAgentAndType";
- public static final String FIND_FOR_RESOURCE_WITHIN_INTERVAL = "Availability.findForResourceWithinInterval";
- public static final String FIND_FOR_RESOURCE_GROUP_WITHIN_INTERVAL = "Availability.findForResourceGroupWithinInterval";
- public static final String FIND_FOR_AUTO_GROUP_WITHIN_INTERVAL = "Availability.findForAutoGroupWithinInterval";
- public static final String FIND_BY_RESOURCE_AND_DATE = "Availability.findByResourceAndDate";
- public static final String QUERY_DELETE_BY_RESOURCES = "Availability.deleteByResources";
-
- public static final String NATIVE_QUERY_PURGE = "DELETE FROM RHQ_AVAILABILITY WHERE END_TIME < ?";
-
- @Column(name = "ID", nullable = false)
- @GeneratedValue(strategy = GenerationType.AUTO, generator = "Generator")
- @Id
- private int id;
-
- /**
- * Start time of this availability state
- */
- @Column(name = "START_TIME", nullable = false)
- private long startTime;
-
- /**
- * End time of this availability state (which is the start of the next availability time period)
- */
- @Column(name = "END_TIME", nullable = true)
- private Long endTime;
-
- /**
- * Availability state for this time period
- */
- @Column(name = "AVAILABILITY_TYPE", nullable = true)
- @Enumerated(EnumType.ORDINAL)
- private AvailabilityType availabilityType;
-
- @JoinColumn(name = "RESOURCE_ID", referencedColumnName = "ID", nullable = false)
- @ManyToOne(fetch = FetchType.LAZY)
- private Resource resource;
-
- protected Availability() {
- // for JPA use only
- }
-
- /**
- * Constructor for {@link Availability}. If <code>type</code> is <code>null</code>, it will be considered unknown.
- *
- * @param resource
- * @param startTime
- * @param type
- */
- public Availability(Resource resource, Date startTime, AvailabilityType type) {
- if (resource == null) {
- throw new IllegalArgumentException("resource==null");
- }
-
- this.resource = resource;
- this.availabilityType = type;
- this.startTime = (startTime != null) ? startTime.getTime() : new Date().getTime();
- this.endTime = null;
- }
-
- public int getId() {
- return id;
- }
-
- public Resource getResource() {
- return resource;
- }
-
- public Date getStartTime() {
- return new Date(startTime);
- }
-
- public void setStartTime(Date startTime) {
- this.startTime = startTime.getTime();
- }
-
- /**
- * The end time of this availability period. This will be <code>null</code> if this represents the last known
- * availability.
- *
- * @return end of the availability period
- */
- public Date getEndTime() {
- return (endTime != null) ? new Date(endTime.longValue()) : null;
- }
-
- public void setEndTime(Date endTime) {
- this.endTime = (endTime != null) ? endTime.getTime() : null;
- }
-
- /**
- * Indicates the availability status as either UP or DOWN; if <code>null</code> is returned, the status is unknown.
- *
- * @return availability status
- */
- public AvailabilityType getAvailabilityType() {
- return availabilityType;
- }
-
- /**
- * Sets the availability status. This can be <code>null</code> to indicate an "unknown" availability status.
- *
- * @param availabilityType
- */
- public void setAvailabilityType(AvailabilityType availabilityType) {
- this.availabilityType = availabilityType;
- }
-
- @Override
- public String toString() {
- return "Availability[id=" + id + ",type=" + this.availabilityType + ",start-time=" + getStartTime()
- + ",end-time=" + getEndTime() + "]";
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = (prime * result) + ((availabilityType == null) ? 0 : availabilityType.hashCode());
- result = (prime * result) + ((endTime == null) ? 0 : endTime.hashCode());
- result = (prime * result) + ((resource == null) ? 0 : resource.hashCode());
- result = (prime * result) + (int) (startTime ^ (startTime >>> 32));
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
-
- if (obj == null) {
- return false;
- }
-
- if (!(obj instanceof Availability)) {
- return false;
- }
-
- final Availability other = (Availability) obj;
- if (availabilityType == null) {
- if (other.availabilityType != null) {
- return false;
- }
- } else if (!availabilityType.equals(other.availabilityType)) {
- return false;
- }
-
- if (endTime == null) {
- if (other.endTime != null) {
- return false;
- }
- } else if (!endTime.equals(other.endTime)) {
- return false;
- }
-
- if (resource == null) {
- if (other.resource != null) {
- return false;
- }
- } else if (!resource.equals(other.resource)) {
- return false;
- }
-
- if (startTime != other.startTime) {
- return false;
- }
-
- return true;
- }
+/*
+ * 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, version 2, as
+ * published by the Free Software Foundation, and/or the GNU Lesser
+ * General Public License, version 2.1, also as published by the Free
+ * Software Foundation.
+ *
+ * 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 and the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the GNU Lesser General Public License along with this program;
+ * if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.rhq.core.domain.measurement;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+
+import org.rhq.core.domain.resource.Resource;
+
+/**
+ * This Entity Bean stores information about resource availability. The actual data is run-length encoded. This means
+ * that the {@link #getAvailabilityType() availability state} (e.g. UP or DOWN) changed at the
+ * {@link #getStartTime() start time}.
+ *
+ * This provides historical data regarding when a resource was up or down. To get the current availability
+ * of a resource, it is best to use the {@link ResourceAvailability} entity instead.
+ *
+ * @see ResourceAvailability
+ *
+ * @author Heiko W. Rupp
+ * @author John Mazzitelli
+ */
+@Entity
+@NamedQueries( { @NamedQuery(name = Availability.FIND_CURRENT_BY_RESOURCE, query = "" //
+ + " SELECT av " //
+ + " FROM Availability av " //
+ + " WHERE av.resource.id = :resourceId " //
+ + " AND av.endTime IS NULL " //
+ + "ORDER BY av.startTime ASC "), // this order by is on purpose - for handling NonUniqueResultException problems
+ @NamedQuery(name = Availability.FIND_BY_RESOURCE, query = "" //
+ + " SELECT av " //
+ + " FROM Availability av " //
+ + " WHERE av.resource.id = :resourceId " //
+ + "ORDER BY av.startTime ASC"), //
+ @NamedQuery(name = Availability.FIND_BY_RESOURCE_NO_SORT, query = "" //
+ + "SELECT av " //
+ + " FROM Availability av " //
+ + " WHERE av.resource.id = :resourceId "), //
+
+ // get all current resource availabilities for those that do not match a given availability type
+ @NamedQuery(name = Availability.FIND_NONMATCHING_WITH_RESOURCE_ID_BY_AGENT_AND_TYPE, query = "" //
+ + "SELECT new org.rhq.core.domain.resource.composite.ResourceIdWithAvailabilityComposite(av.resource.id, av) " //
+ + " FROM Availability av " //
+ + " WHERE av.resource.agent.id = :agentId " //
+ + " AND ((av.availabilityType <> :availabilityType AND :availabilityType IS NOT NULL) " //
+ + " OR (av.availabilityType IS NOT NULL AND :availabilityType IS NULL) " //
+ + " OR (av.availabilityType IS NULL AND :availabilityType IS NOT NULL))" //
+ + " AND av.endTime IS NULL"), //
+ @NamedQuery(name = Availability.FIND_FOR_RESOURCE_WITHIN_INTERVAL, query = "" //
+ + "SELECT av FROM Availability av " //
+ + " WHERE av.resource.id = :resourceId " //
+ + " AND ((av.startTime <= :start AND (av.endTime >= :start OR av.endTime IS NULL) ) " /* availability straddles :start */
+ + " OR (av.startTime BETWEEN :start AND :end)) " /* interval straddles availability.startTime */
+ + "ORDER BY av.startTime ASC"), //
+ @NamedQuery(name = Availability.FIND_FOR_RESOURCE_GROUP_WITHIN_INTERVAL, query = "" //
+ + "SELECT av FROM Availability av " //
+ + " WHERE av.resource.id IN ( SELECT ires.id " //
+ + " FROM ResourceGroup rg " //
+ + " JOIN rg.implicitResources ires " //
+ + " WHERE rg.id = :groupId ) " //
+ + " AND ((av.startTime <= :start AND (av.endTime >= :start OR av.endTime IS NULL) ) " /* availability straddles :start */
+ + " OR (av.startTime BETWEEN :start AND :end)) " /* interval straddles availability.startTime */
+ + "ORDER BY av.startTime ASC"), //
+ @NamedQuery(name = Availability.FIND_FOR_AUTO_GROUP_WITHIN_INTERVAL, query = "" //
+ + " SELECT av FROM Availability av " //
+ + " JOIN av.resource res JOIN res.parentResource parent JOIN res.resourceType type " //
+ + " WHERE parent.id = :parentId " //
+ + " AND type.id = :typeId " //
+ + " AND ((av.startTime <= :start AND (av.endTime >= :start OR av.endTime IS NULL)) " /* availability straddles :start */
+ + " OR (av.startTime BETWEEN :start AND :end)) " /* interval straddles availability.startTime */
+ + "ORDER BY av.startTime ASC"), //
+ @NamedQuery(name = Availability.FIND_BY_RESOURCE_AND_DATE, query = "" //
+ + "SELECT av FROM Availability av " //
+ + " WHERE av.resource.id = :resourceId " //
+ + " AND av.startTime <= :aTime " //
+ + " AND ( av.endTime >= :aTime OR av.endTime IS NULL ) "), //
+ @NamedQuery(name = Availability.QUERY_DELETE_BY_RESOURCES, query = "" //
+ + " DELETE Availability a " //
+ + " WHERE a.resource.id IN ( :resourceIds )") })
+@SequenceGenerator(name = "Generator", sequenceName = "RHQ_AVAILABILITY_ID_SEQ")
+@Table(name = "RHQ_AVAILABILITY")
+public class Availability implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ public static final String FIND_CURRENT_BY_RESOURCE = "Availability.findCurrentByResource";
+ public static final String FIND_BY_RESOURCE = "Availability.findByResource";
+ public static final String FIND_BY_RESOURCE_NO_SORT = "Availability.findByResourceNoSort";
+ public static final String FIND_NONMATCHING_WITH_RESOURCE_ID_BY_AGENT_AND_TYPE = "Availability.findNonmatchingWithResourceIdByAgentAndType";
+ public static final String FIND_FOR_RESOURCE_WITHIN_INTERVAL = "Availability.findForResourceWithinInterval";
+ public static final String FIND_FOR_RESOURCE_GROUP_WITHIN_INTERVAL = "Availability.findForResourceGroupWithinInterval";
+ public static final String FIND_FOR_AUTO_GROUP_WITHIN_INTERVAL = "Availability.findForAutoGroupWithinInterval";
+ public static final String FIND_BY_RESOURCE_AND_DATE = "Availability.findByResourceAndDate";
+ public static final String QUERY_DELETE_BY_RESOURCES = "Availability.deleteByResources";
+
+ public static final String NATIVE_QUERY_PURGE = "DELETE FROM RHQ_AVAILABILITY WHERE END_TIME < ?";
+
+ @Column(name = "ID", nullable = false)
+ @GeneratedValue(strategy = GenerationType.AUTO, generator = "Generator")
+ @Id
+ private int id;
+
+ /**
+ * Start time of this availability state
+ */
+ @Column(name = "START_TIME", nullable = false)
+ private long startTime;
+
+ /**
+ * End time of this availability state (which is the start of the next availability time period)
+ */
+ @Column(name = "END_TIME", nullable = true)
+ private Long endTime;
+
+ /**
+ * Availability state for this time period
+ */
+ @Column(name = "AVAILABILITY_TYPE", nullable = true)
+ @Enumerated(EnumType.ORDINAL)
+ private AvailabilityType availabilityType;
+
+ @JoinColumn(name = "RESOURCE_ID", referencedColumnName = "ID", nullable = false)
+ @ManyToOne(fetch = FetchType.LAZY, optional = false)
+ private Resource resource;
+
+ protected Availability() {
+ // for JPA use only
+ }
+
+ /**
+ * Constructor for {@link Availability}. If <code>type</code> is <code>null</code>, it will be considered unknown.
+ *
+ * @param resource
+ * @param startTime
+ * @param type
+ */
+ public Availability(Resource resource, Date startTime, AvailabilityType type) {
+ if (resource == null) {
+ throw new IllegalArgumentException("resource==null");
+ }
+
+ this.resource = resource;
+ this.availabilityType = type;
+ this.startTime = (startTime != null) ? startTime.getTime() : new Date().getTime();
+ this.endTime = null;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public Resource getResource() {
+ return resource;
+ }
+
+ public Date getStartTime() {
+ return new Date(startTime);
+ }
+
+ public void setStartTime(Date startTime) {
+ this.startTime = startTime.getTime();
+ }
+
+ /**
+ * The end time of this availability period. This will be <code>null</code> if this represents the last known
+ * availability.
+ *
+ * @return end of the availability period
+ */
+ public Date getEndTime() {
+ return (endTime != null) ? new Date(endTime.longValue()) : null;
+ }
+
+ public void setEndTime(Date endTime) {
+ this.endTime = (endTime != null) ? endTime.getTime() : null;
+ }
+
+ /**
+ * Indicates the availability status as either UP or DOWN; if <code>null</code> is returned, the status is unknown.
+ *
+ * @return availability status
+ */
+ public AvailabilityType getAvailabilityType() {
+ return availabilityType;
+ }
+
+ /**
+ * Sets the availability status. This can be <code>null</code> to indicate an "unknown" availability status.
+ *
+ * @param availabilityType
+ */
+ public void setAvailabilityType(AvailabilityType availabilityType) {
+ this.availabilityType = availabilityType;
+ }
+
+ @Override
+ public String toString() {
+ return "Availability[id=" + id + ",type=" + this.availabilityType + ",start-time=" + getStartTime()
+ + ",end-time=" + getEndTime() + "]";
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = (prime * result) + ((availabilityType == null) ? 0 : availabilityType.hashCode());
+ result = (prime * result) + ((endTime == null) ? 0 : endTime.hashCode());
+ result = (prime * result) + ((resource == null) ? 0 : resource.hashCode());
+ result = (prime * result) + (int) (startTime ^ (startTime >>> 32));
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+
+ if (obj == null) {
+ return false;
+ }
+
+ if (!(obj instanceof Availability)) {
+ return false;
+ }
+
+ final Availability other = (Availability) obj;
+ if (availabilityType == null) {
+ if (other.availabilityType != null) {
+ return false;
+ }
+ } else if (!availabilityType.equals(other.availabilityType)) {
+ return false;
+ }
+
+ if (endTime == null) {
+ if (other.endTime != null) {
+ return false;
+ }
+ } else if (!endTime.equals(other.endTime)) {
+ return false;
+ }
+
+ if (resource == null) {
+ if (other.resource != null) {
+ return false;
+ }
+ } else if (!resource.equals(other.resource)) {
+ return false;
+ }
+
+ if (startTime != other.startTime) {
+ return false;
+ }
+
+ return true;
+ }
}
\ No newline at end of file
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementBaseline.java b/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementBaseline.java
index 9b3e9ec..020eb0b 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementBaseline.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementBaseline.java
@@ -215,7 +215,7 @@ public class MeasurementBaseline implements Serializable {
private long computeTime;
@JoinColumn(name = "SCHEDULE_ID", nullable = false)
- @OneToOne(fetch = FetchType.LAZY)
+ @OneToOne(fetch = FetchType.LAZY, optional = false)
private MeasurementSchedule schedule;
// we need this to support autobaseline insertion queries
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementData.java b/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementData.java
index 2c99f85..d0d26ab 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementData.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementData.java
@@ -1,25 +1,25 @@
- /*
- * 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, version 2, as
- * published by the Free Software Foundation, and/or the GNU Lesser
- * General Public License, version 2.1, also as published by the Free
- * Software Foundation.
- *
- * 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 and the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU General Public License
- * and the GNU Lesser General Public License along with this program;
- * if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
+/*
+ * 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, version 2, as
+ * published by the Free Software Foundation, and/or the GNU Lesser
+ * General Public License, version 2.1, also as published by the Free
+ * Software Foundation.
+ *
+ * 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 and the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the GNU Lesser General Public License along with this program;
+ * if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
package org.rhq.core.domain.measurement;
import java.io.Serializable;
@@ -36,9 +36,9 @@ import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
- /**
- * Represents data that was collected either due to a schedule or an on-demand, live collection.
- */
+/**
+* Represents data that was collected either due to a schedule or an on-demand, live collection.
+*/
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@XmlAccessorType(XmlAccessType.FIELD)
@@ -50,8 +50,8 @@ public abstract class MeasurementData implements Serializable {
@EmbeddedId
MeasurementDataPK id;
- @JoinColumn(name = "SCHEDULE_ID", insertable = false, updatable = false)
- @ManyToOne(fetch = FetchType.LAZY)
+ @JoinColumn(name = "SCHEDULE_ID", insertable = false, updatable = false, nullable = false)
+ @ManyToOne(fetch = FetchType.LAZY, optional = false)
MeasurementSchedule schedule;
@Transient
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/ResourceAvailability.java b/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/ResourceAvailability.java
index 6a9b0fb..4e008f9 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/ResourceAvailability.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/ResourceAvailability.java
@@ -1,196 +1,196 @@
-/*
- * 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, version 2, as
- * published by the Free Software Foundation, and/or the GNU Lesser
- * General Public License, version 2.1, also as published by the Free
- * Software Foundation.
- *
- * 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 and the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU General Public License
- * and the GNU Lesser General Public License along with this program;
- * if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.rhq.core.domain.measurement;
-
-import java.io.Serializable;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.NamedQueries;
-import javax.persistence.NamedQuery;
-import javax.persistence.OneToOne;
-import javax.persistence.SequenceGenerator;
-import javax.persistence.Table;
-
-import org.rhq.core.domain.resource.Resource;
-
-/**
- * This entity represents the latest known availability data for a resource.
- *
- * @author Joseph Marques
- */
-@Entity
-@Table(name = ResourceAvailability.TABLE_NAME)
-@NamedQueries( //
-{ @NamedQuery(name = ResourceAvailability.QUERY_FIND_BY_RESOURCE_ID, query = "" //
- + " SELECT ra FROM ResourceAvailability ra WHERE ra.resourceId = :resourceId "),
- @NamedQuery(name = ResourceAvailability.UPDATE_BY_AGENT_ID, query = "" //
- + " UPDATE ResourceAvailability " //
- + " SET availabilityType = :availabilityType " //
- + " WHERE resourceId IN ( SELECT res.id " //
- + " FROM Resource res " //
- + " WHERE res.agent.id = :agentId ) "),
- @NamedQuery(name = ResourceAvailability.INSERT_BY_RESOURCE_IDS, query = "" //
- + " INSERT INTO ResourceAvailability ( resourceId ) " //
- + " SELECT res.id " //
- + " FROM Resource res " //
- + " LEFT JOIN res.currentAvailability avail " //
- + " WHERE res.id IN ( :resourceIds ) " //
- + " AND avail IS NULL "),
- /*
- * Platform plugins always return up for availability. Platforms are
- * only down if the check-suspect-agent's backfiller sets them down.
- * Thus this agent has been backfilled if it's platform is not up.
- *
- * Returns 0 if the agent has NOT been backfilled, non-zero if it is.
- */
- @NamedQuery(name = ResourceAvailability.QUERY_IS_AGENT_BACKFILLED, query = "" //
- + "SELECT COUNT(avail.id) " // return count of
- + " FROM Resource res " //
- + " JOIN res.currentAvailability avail " // we only want the current availability
- + " WHERE res.agent.id = :agentId " // use id not name to prevent an unnecessary join to agent table
- + " AND res.parentResource IS NULL " // we only want platforms
- + " AND avail.availabilityType <> 1") // get all DOWN or UNKNOWN
-})
-@SequenceGenerator(name = "RHQ_RESOURCE_AVAIL_SEQ", sequenceName = "RHQ_RESOURCE_AVAIL_ID_SEQ", allocationSize = 100)
-public class ResourceAvailability implements Serializable {
- private static final long serialVersionUID = 1L;
-
- public static final String TABLE_NAME = "RHQ_RESOURCE_AVAIL";
-
- public static final String QUERY_FIND_BY_RESOURCE_ID = "ResourceAvailability.findByResourceId";
- public static final String UPDATE_BY_AGENT_ID = "ResourceAvailability.updateByAgentId";
- public static final String INSERT_BY_RESOURCE_IDS = "ResourceAvailability.insertByResourceIds";
- public static final String QUERY_IS_AGENT_BACKFILLED = "ResourceAvailability.isAgentBackfilled";
-
- @SuppressWarnings("unused")
- @Column(name = "ID", nullable = false)
- @GeneratedValue(strategy = GenerationType.AUTO, generator = "RHQ_RESOURCE_AVAIL_SEQ")
- @Id
- private int id;
-
- @JoinColumn(name = "RESOURCE_ID", referencedColumnName = "ID", nullable = false)
- @OneToOne(fetch = FetchType.LAZY)
- private Resource resource;
-
- @Column(name = "RESOURCE_ID", insertable = false, updatable = false)
- private int resourceId;
-
- /**
- * Availability state for this time period
- */
- @Column(name = "AVAILABILITY_TYPE", nullable = true)
- @Enumerated(EnumType.ORDINAL)
- private AvailabilityType availabilityType;
-
- protected ResourceAvailability() {
- // for JPA use only
- }
-
- /**
- * Constructor for {@link ResourceAvailability}. If <code>type</code> is <code>null</code>, it will be
- * considered unknown.
- *
- * @param resource
- * @param type
- */
- public ResourceAvailability(Resource resource, AvailabilityType type) {
- if (resource == null) {
- throw new IllegalArgumentException("resource==null");
- }
-
- this.resource = resource;
- this.resourceId = resource.getId();
- this.availabilityType = type;
- }
-
- public Resource getResource() {
- return resource;
- }
-
- /**
- * Indicates the availability status as either UP or DOWN; if <code>null</code> is returned, the status is unknown.
- *
- * @return availability status
- */
- public AvailabilityType getAvailabilityType() {
- return availabilityType;
- }
-
- /**
- * Sets the availability status. This can be <code>null</code> to indicate an "unknown" availability status.
- *
- * @param availabilityType
- */
- public void setAvailabilityType(AvailabilityType availabilityType) {
- this.availabilityType = availabilityType;
- }
-
- @Override
- public String toString() {
- return "Availability[resourceId=" + resourceId + ", avail=" + this.availabilityType + "]";
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = (prime * result) + ((availabilityType == null) ? 0 : availabilityType.hashCode());
- result = (prime * result) + resourceId;
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
-
- if (obj == null || !(obj instanceof ResourceAvailability)) {
- return false;
- }
-
- final ResourceAvailability other = (ResourceAvailability) obj;
-
- if (resourceId != other.resourceId) {
- return false;
- }
-
- if (availabilityType == null) {
- if (other.availabilityType != null) {
- return false;
- }
- } else if (!availabilityType.equals(other.availabilityType)) {
- return false;
- }
-
- return true;
- }
+/*
+ * 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, version 2, as
+ * published by the Free Software Foundation, and/or the GNU Lesser
+ * General Public License, version 2.1, also as published by the Free
+ * Software Foundation.
+ *
+ * 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 and the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the GNU Lesser General Public License along with this program;
+ * if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.rhq.core.domain.measurement;
+
+import java.io.Serializable;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.OneToOne;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+
+import org.rhq.core.domain.resource.Resource;
+
+/**
+ * This entity represents the latest known availability data for a resource.
+ *
+ * @author Joseph Marques
+ */
+@Entity
+@Table(name = ResourceAvailability.TABLE_NAME)
+@NamedQueries( //
+{ @NamedQuery(name = ResourceAvailability.QUERY_FIND_BY_RESOURCE_ID, query = "" //
+ + " SELECT ra FROM ResourceAvailability ra WHERE ra.resourceId = :resourceId "),
+ @NamedQuery(name = ResourceAvailability.UPDATE_BY_AGENT_ID, query = "" //
+ + " UPDATE ResourceAvailability " //
+ + " SET availabilityType = :availabilityType " //
+ + " WHERE resourceId IN ( SELECT res.id " //
+ + " FROM Resource res " //
+ + " WHERE res.agent.id = :agentId ) "),
+ @NamedQuery(name = ResourceAvailability.INSERT_BY_RESOURCE_IDS, query = "" //
+ + " INSERT INTO ResourceAvailability ( resourceId ) " //
+ + " SELECT res.id " //
+ + " FROM Resource res " //
+ + " LEFT JOIN res.currentAvailability avail " //
+ + " WHERE res.id IN ( :resourceIds ) " //
+ + " AND avail IS NULL "),
+ /*
+ * Platform plugins always return up for availability. Platforms are
+ * only down if the check-suspect-agent's backfiller sets them down.
+ * Thus this agent has been backfilled if it's platform is not up.
+ *
+ * Returns 0 if the agent has NOT been backfilled, non-zero if it is.
+ */
+ @NamedQuery(name = ResourceAvailability.QUERY_IS_AGENT_BACKFILLED, query = "" //
+ + "SELECT COUNT(avail.id) " // return count of
+ + " FROM Resource res " //
+ + " JOIN res.currentAvailability avail " // we only want the current availability
+ + " WHERE res.agent.id = :agentId " // use id not name to prevent an unnecessary join to agent table
+ + " AND res.parentResource IS NULL " // we only want platforms
+ + " AND avail.availabilityType <> 1") // get all DOWN or UNKNOWN
+})
+@SequenceGenerator(name = "RHQ_RESOURCE_AVAIL_SEQ", sequenceName = "RHQ_RESOURCE_AVAIL_ID_SEQ", allocationSize = 100)
+public class ResourceAvailability implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ public static final String TABLE_NAME = "RHQ_RESOURCE_AVAIL";
+
+ public static final String QUERY_FIND_BY_RESOURCE_ID = "ResourceAvailability.findByResourceId";
+ public static final String UPDATE_BY_AGENT_ID = "ResourceAvailability.updateByAgentId";
+ public static final String INSERT_BY_RESOURCE_IDS = "ResourceAvailability.insertByResourceIds";
+ public static final String QUERY_IS_AGENT_BACKFILLED = "ResourceAvailability.isAgentBackfilled";
+
+ @SuppressWarnings("unused")
+ @Column(name = "ID", nullable = false)
+ @GeneratedValue(strategy = GenerationType.AUTO, generator = "RHQ_RESOURCE_AVAIL_SEQ")
+ @Id
+ private int id;
+
+ @JoinColumn(name = "RESOURCE_ID", referencedColumnName = "ID", nullable = false)
+ @OneToOne(fetch = FetchType.LAZY, optional = false)
+ private Resource resource;
+
+ @Column(name = "RESOURCE_ID", insertable = false, updatable = false)
+ private int resourceId;
+
+ /**
+ * Availability state for this time period
+ */
+ @Column(name = "AVAILABILITY_TYPE", nullable = true)
+ @Enumerated(EnumType.ORDINAL)
+ private AvailabilityType availabilityType;
+
+ protected ResourceAvailability() {
+ // for JPA use only
+ }
+
+ /**
+ * Constructor for {@link ResourceAvailability}. If <code>type</code> is <code>null</code>, it will be
+ * considered unknown.
+ *
+ * @param resource
+ * @param type
+ */
+ public ResourceAvailability(Resource resource, AvailabilityType type) {
+ if (resource == null) {
+ throw new IllegalArgumentException("resource==null");
+ }
+
+ this.resource = resource;
+ this.resourceId = resource.getId();
+ this.availabilityType = type;
+ }
+
+ public Resource getResource() {
+ return resource;
+ }
+
+ /**
+ * Indicates the availability status as either UP or DOWN; if <code>null</code> is returned, the status is unknown.
+ *
+ * @return availability status
+ */
+ public AvailabilityType getAvailabilityType() {
+ return availabilityType;
+ }
+
+ /**
+ * Sets the availability status. This can be <code>null</code> to indicate an "unknown" availability status.
+ *
+ * @param availabilityType
+ */
+ public void setAvailabilityType(AvailabilityType availabilityType) {
+ this.availabilityType = availabilityType;
+ }
+
+ @Override
+ public String toString() {
+ return "Availability[resourceId=" + resourceId + ", avail=" + this.availabilityType + "]";
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = (prime * result) + ((availabilityType == null) ? 0 : availabilityType.hashCode());
+ result = (prime * result) + resourceId;
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+
+ if (obj == null || !(obj instanceof ResourceAvailability)) {
+ return false;
+ }
+
+ final ResourceAvailability other = (ResourceAvailability) obj;
+
+ if (resourceId != other.resourceId) {
+ return false;
+ }
+
+ if (availabilityType == null) {
+ if (other.availabilityType != null) {
+ return false;
+ }
+ } else if (!availabilityType.equals(other.availabilityType)) {
+ return false;
+ }
+
+ return true;
+ }
}
\ No newline at end of file
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/calltime/CallTimeDataKey.java b/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/calltime/CallTimeDataKey.java
index 1691a59..6e05fca 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/calltime/CallTimeDataKey.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/calltime/CallTimeDataKey.java
@@ -1,110 +1,110 @@
-/*
- * 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, version 2, as
- * published by the Free Software Foundation, and/or the GNU Lesser
- * General Public License, version 2.1, also as published by the Free
- * Software Foundation.
- *
- * 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 and the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU General Public License
- * and the GNU Lesser General Public License along with this program;
- * if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.rhq.core.domain.measurement.calltime;
-
-import java.io.Serializable;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.NamedQueries;
-import javax.persistence.NamedQuery;
-import javax.persistence.SequenceGenerator;
-import javax.persistence.Table;
-
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import org.rhq.core.domain.measurement.MeasurementSchedule;
-
-/**
- * A key used to lookup all call-time data ((i.e. a set of {@link CallTimeDataValue}s)) for a particular destination
- * (e.g. a URL or an EJB method name).
- *
- * @author Ian Springer
- */
-@Entity
-@NamedQueries( { @NamedQuery(name = CallTimeDataKey.QUERY_DELETE_BY_RESOURCES, query = "DELETE CallTimeDataKey ctdk WHERE ctdk.schedule IN ( SELECT ms FROM MeasurementSchedule ms WHERE ms.resource.id IN ( :resourceIds ) )") })
-@SequenceGenerator(name = "idGenerator", sequenceName = "RHQ_CALLTIME_DATA_KEY_ID_SEQ")
-@Table(name = "RHQ_CALLTIME_DATA_KEY")
-public class CallTimeDataKey implements Serializable {
- private static final long serialVersionUID = 1L;
-
- public static final String QUERY_DELETE_BY_RESOURCES = "CallTimeDataKey.deleteByResources";
-
- public static final int DESTINATION_MAX_LENGTH = 4000;
-
- @GeneratedValue(strategy = GenerationType.AUTO, generator = "idGenerator")
- @Id
- private int id;
-
- @JoinColumn(name = "SCHEDULE_ID", insertable = false, updatable = false, nullable = false)
- @ManyToOne(fetch = FetchType.LAZY)
- private MeasurementSchedule schedule;
-
- @Column(name = "CALL_DESTINATION", length = DESTINATION_MAX_LENGTH, nullable = false)
- private String callDestination;
-
- /**
- * Create a new <code>CallTimeDataKey</code>.
- *
- * @param schedule the collection schedule corresponding to this call-time data
- * @param callDestination the call destination (e.g. a URL or an EJB name)
- */
- public CallTimeDataKey(@NotNull MeasurementSchedule schedule, @NotNull String callDestination) {
- this.schedule = schedule;
- this.callDestination = callDestination;
- }
-
- protected CallTimeDataKey() {
- /* for JPA use only */
- }
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- @Nullable
- public MeasurementSchedule getSchedule() {
- return this.schedule;
- }
-
- @NotNull
- public String getCallDestination() {
- return this.callDestination;
- }
-
- @Override
- public String toString() {
- return "MeasurementCallDestination[" + "id=" + this.id + ", " + "value=" + this.callDestination + "]";
- }
+/*
+ * 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, version 2, as
+ * published by the Free Software Foundation, and/or the GNU Lesser
+ * General Public License, version 2.1, also as published by the Free
+ * Software Foundation.
+ *
+ * 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 and the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the GNU Lesser General Public License along with this program;
+ * if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.rhq.core.domain.measurement.calltime;
+
+import java.io.Serializable;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import org.rhq.core.domain.measurement.MeasurementSchedule;
+
+/**
+ * A key used to lookup all call-time data ((i.e. a set of {@link CallTimeDataValue}s)) for a particular destination
+ * (e.g. a URL or an EJB method name).
+ *
+ * @author Ian Springer
+ */
+@Entity
+@NamedQueries( { @NamedQuery(name = CallTimeDataKey.QUERY_DELETE_BY_RESOURCES, query = "DELETE CallTimeDataKey ctdk WHERE ctdk.schedule IN ( SELECT ms FROM MeasurementSchedule ms WHERE ms.resource.id IN ( :resourceIds ) )") })
+@SequenceGenerator(name = "idGenerator", sequenceName = "RHQ_CALLTIME_DATA_KEY_ID_SEQ")
+@Table(name = "RHQ_CALLTIME_DATA_KEY")
+public class CallTimeDataKey implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ public static final String QUERY_DELETE_BY_RESOURCES = "CallTimeDataKey.deleteByResources";
+
+ public static final int DESTINATION_MAX_LENGTH = 4000;
+
+ @GeneratedValue(strategy = GenerationType.AUTO, generator = "idGenerator")
+ @Id
+ private int id;
+
+ @JoinColumn(name = "SCHEDULE_ID", insertable = false, updatable = false, nullable = false)
+ @ManyToOne(fetch = FetchType.LAZY, optional = false)
+ private MeasurementSchedule schedule;
+
+ @Column(name = "CALL_DESTINATION", length = DESTINATION_MAX_LENGTH, nullable = false)
+ private String callDestination;
+
+ /**
+ * Create a new <code>CallTimeDataKey</code>.
+ *
+ * @param schedule the collection schedule corresponding to this call-time data
+ * @param callDestination the call destination (e.g. a URL or an EJB name)
+ */
+ public CallTimeDataKey(@NotNull MeasurementSchedule schedule, @NotNull String callDestination) {
+ this.schedule = schedule;
+ this.callDestination = callDestination;
+ }
+
+ protected CallTimeDataKey() {
+ /* for JPA use only */
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ @Nullable
+ public MeasurementSchedule getSchedule() {
+ return this.schedule;
+ }
+
+ @NotNull
+ public String getCallDestination() {
+ return this.callDestination;
+ }
+
+ @Override
+ public String toString() {
+ return "MeasurementCallDestination[" + "id=" + this.id + ", " + "value=" + this.callDestination + "]";
+ }
}
\ No newline at end of file
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/operation/OperationHistory.java b/modules/core/domain/src/main/java/org/rhq/core/domain/operation/OperationHistory.java
index 55c0086..d5aee06 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/operation/OperationHistory.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/operation/OperationHistory.java
@@ -168,8 +168,8 @@ public abstract class OperationHistory implements Serializable {
@ManyToOne(fetch = FetchType.EAGER)
private OperationDefinition operationDefinition;
- @JoinColumn(name = "PARAMETERS_CONFIG_ID", referencedColumnName = "ID")
- @OneToOne(cascade = { CascadeType.REMOVE }, fetch = FetchType.LAZY)
+ @JoinColumn(name = "PARAMETERS_CONFIG_ID", referencedColumnName = "ID", nullable = true)
+ @OneToOne(cascade = { CascadeType.REMOVE }, fetch = FetchType.LAZY, optional = true)
private Configuration parameters;
protected OperationHistory() {
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/operation/ResourceOperationHistory.java b/modules/core/domain/src/main/java/org/rhq/core/domain/operation/ResourceOperationHistory.java
index 4b002b1..08c29be 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/operation/ResourceOperationHistory.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/operation/ResourceOperationHistory.java
@@ -115,12 +115,12 @@ public class ResourceOperationHistory extends OperationHistory {
@XmlTransient
private Resource resource;
- @JoinColumn(name = "RESULTS_CONFIG_ID", referencedColumnName = "ID")
- @OneToOne(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY)
+ @JoinColumn(name = "RESULTS_CONFIG_ID", referencedColumnName = "ID", nullable = true)
+ @OneToOne(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, optional = true)
private Configuration results;
- @JoinColumn(name = "GROUP_HISTORY_ID", referencedColumnName = "ID")
- @ManyToOne
+ @JoinColumn(name = "GROUP_HISTORY_ID", referencedColumnName = "ID", nullable = true)
+ @ManyToOne(optional = true)
private GroupOperationHistory groupOperationHistory;
protected ResourceOperationHistory() {
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/plugin/ServerPlugin.java b/modules/core/domain/src/main/java/org/rhq/core/domain/plugin/ServerPlugin.java
index a0b3d3d..34d2f17 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/plugin/ServerPlugin.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/plugin/ServerPlugin.java
@@ -262,12 +262,12 @@ public class ServerPlugin extends AbstractPlugin {
public static final String QUERY_GET_CONFIG_MTIMES = "ServerPlugin.getConfigMTimes";
public static final String UPDATE_PLUGIN_ENABLED_BY_ID = "ServerPlugin.updatePluginEnabledById";
- @JoinColumn(name = "JOBS_CONFIG_ID", referencedColumnName = "ID")
- @OneToOne(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY)
+ @JoinColumn(name = "JOBS_CONFIG_ID", referencedColumnName = "ID", nullable = true)
+ @OneToOne(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, optional = true)
private Configuration scheduledJobsConfiguration;
- @JoinColumn(name = "PLUGIN_CONFIG_ID", referencedColumnName = "ID")
- @OneToOne(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY)
+ @JoinColumn(name = "PLUGIN_CONFIG_ID", referencedColumnName = "ID", nullable = true)
+ @OneToOne(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, optional = true)
private Configuration pluginConfiguration;
@Column(name = "PTYPE")
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/Resource.java b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/Resource.java
index d58abfa..e31b9ef 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/Resource.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/Resource.java
@@ -941,12 +941,11 @@ public class Resource implements Comparable<Resource>, Serializable {
private String location;
@JoinColumn(name = "RESOURCE_TYPE_ID", referencedColumnName = "ID", nullable = false)
- @ManyToOne
+ @ManyToOne(optional = false)
// TODO GH: It would be preferable for this to be lazy, but will need cleanup throughout the app (fetch = FetchType.LAZY)
@Summary(index = 4)
private ResourceType resourceType;
- // LAZY fetch otherwise this will recursively call all parents until null is found
// do not cascade remove - would take forever to delete a full platform hierarchy
// we will manually delete the children ourselves
@OneToMany(mappedBy = "parentResource", fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST })
@@ -954,21 +953,22 @@ public class Resource implements Comparable<Resource>, Serializable {
// primary key
private Set<Resource> childResources = new LinkedHashSet<Resource>();
- @JoinColumn(name = "PARENT_RESOURCE_ID")
- @ManyToOne(fetch = FetchType.LAZY)
+ // LAZY fetch otherwise this will recursively call all parents until null is found
+ @JoinColumn(name = "PARENT_RESOURCE_ID", nullable = true)
+ @ManyToOne(fetch = FetchType.LAZY, optional = true)
@XmlTransient
private Resource parentResource;
- @JoinColumn(name = "RES_CONFIGURATION_ID", referencedColumnName = "ID")
- @OneToOne(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY)
+ @JoinColumn(name = "RES_CONFIGURATION_ID", referencedColumnName = "ID", nullable = true)
+ @OneToOne(cascade = { CascadeType.ALL }, optional = true)
private Configuration resourceConfiguration = new Configuration();
- @JoinColumn(name = "PLUGIN_CONFIGURATION_ID", referencedColumnName = "ID")
- @OneToOne(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY)
+ @JoinColumn(name = "PLUGIN_CONFIGURATION_ID", referencedColumnName = "ID", nullable = true)
+ @OneToOne(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, optional = true)
private Configuration pluginConfiguration = new Configuration();
- @JoinColumn(name = "AGENT_ID", referencedColumnName = "ID")
- @ManyToOne(fetch = FetchType.LAZY)
+ @JoinColumn(name = "AGENT_ID", referencedColumnName = "ID", nullable = true)
+ @ManyToOne(fetch = FetchType.LAZY, optional = true)
private Agent agent;
// bulk delete @OneToMany(mappedBy = "resource", cascade = { CascadeType.ALL })
@@ -1050,8 +1050,8 @@ public class Resource implements Comparable<Resource>, Serializable {
@OneToMany(mappedBy = "resource", fetch = FetchType.LAZY)
private Set<EventSource> eventSources = new HashSet<EventSource>();
- @JoinColumn(name = "PRODUCT_VERSION_ID", referencedColumnName = "ID")
- @ManyToOne(fetch = FetchType.LAZY)
+ @JoinColumn(name = "PRODUCT_VERSION_ID", referencedColumnName = "ID", nullable = true)
+ @ManyToOne(fetch = FetchType.LAZY, optional = true)
private ProductVersion productVersion;
// not currently needed, but could be added if we find a need to get deployment info via the resource
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/ResourceType.java b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/ResourceType.java
index 9e0ce28..0562890 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/ResourceType.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/ResourceType.java
@@ -79,15 +79,15 @@ import org.rhq.core.domain.util.Summary;
@Table(name = ResourceType.TABLE_NAME)
@SequenceGenerator(name = "SEQ", sequenceName = "RHQ_RESOURCE_TYPE_ID_SEQ")
@NamedQueries( {
- @NamedQuery(name = ResourceType.QUERY_FIND_BY_PLUGIN, query = "SELECT rt FROM ResourceType AS rt " +
- "WHERE rt.plugin = :plugin AND rt.deleted = false"),
+ @NamedQuery(name = ResourceType.QUERY_FIND_BY_PLUGIN, query = "SELECT rt FROM ResourceType AS rt "
+ + "WHERE rt.plugin = :plugin AND rt.deleted = false"),
@NamedQuery(name = ResourceType.QUERY_FIND_BY_NAME_AND_PLUGIN, // TODO: QUERY: names are case-sensitive
- query = "SELECT rt FROM ResourceType AS rt WHERE LOWER(rt.name) = LOWER(:name) AND rt.plugin = :plugin " +
- "AND rt.deleted = false"),
+ query = "SELECT rt FROM ResourceType AS rt WHERE LOWER(rt.name) = LOWER(:name) AND rt.plugin = :plugin "
+ + "AND rt.deleted = false"),
@NamedQuery(name = ResourceType.QUERY_FIND_ALL, query = "SELECT rt FROM ResourceType AS rt where rt.deleted = false"),
@NamedQuery(name = ResourceType.QUERY_FIND_BY_PARENT_AND_NAME, // TODO: QUERY: Not looking up by the full key, get rid of this query
- query = "SELECT rt FROM ResourceType AS rt WHERE :parent MEMBER OF rt.parentResourceTypes AND rt.name = :name " +
- "AND rt.deleted = false"),
+ query = "SELECT rt FROM ResourceType AS rt WHERE :parent MEMBER OF rt.parentResourceTypes AND rt.name = :name "
+ + "AND rt.deleted = false"),
/* authz'ed queries for ResourceTypeManagerBean */
@NamedQuery(name = ResourceType.QUERY_FIND_CHILDREN, query = "SELECT c "
@@ -111,8 +111,7 @@ import org.rhq.core.domain.util.Summary;
@NamedQuery(name = ResourceType.QUERY_FIND_UTILIZED_BY_CATEGORY, query = "SELECT DISTINCT res.resourceType "
+ "FROM Resource res, IN (res.implicitGroups) g, IN (g.roles) r, IN (r.subjects) s " //
+ "WHERE s = :subject " //
- + "AND res.resourceType.category = :category "
- + "AND res.resourceType.deleted = false "
+ + "AND res.resourceType.category = :category " + "AND res.resourceType.deleted = false "
+ "AND (UPPER(res.name) LIKE :nameFilter ESCAPE :escapeChar OR :nameFilter is null) "
+ "AND (res.resourceType.plugin = :pluginName OR :pluginName is null) "
+ "AND (:inventoryStatus = res.inventoryStatus OR :inventoryStatus is null) "
@@ -144,8 +143,7 @@ import org.rhq.core.domain.util.Summary;
+ " JOIN rg.resourceType rt" //
+ " JOIN rg.roles r JOIN r.subjects s " //
+ " WHERE s = :subject " //
- + " AND rt.deleted = false "
- + " AND ( rt.plugin = :pluginName OR :pluginName is null ) "),
+ + " AND rt.deleted = false " + " AND ( rt.plugin = :pluginName OR :pluginName is null ) "),
@NamedQuery(name = ResourceType.QUERY_FIND_BY_RESOURCE_GROUP_admin, query = "" //
+ "SELECT DISTINCT rt " //
+ " FROM ResourceGroup rg " //
@@ -153,12 +151,10 @@ import org.rhq.core.domain.util.Summary;
+ " WHERE rt.deleted = false AND ( rt.plugin = :pluginName OR :pluginName is null ) "),
@NamedQuery(name = ResourceType.QUERY_GET_EXPLICIT_RESOURCE_TYPE_COUNTS_BY_GROUP, query = "SELECT type.id, type.name, COUNT(type.id) "
+ "FROM ResourceGroup rg JOIN rg.explicitResources res JOIN res.resourceType type "
- + "WHERE rg.id = :groupId AND res.resourceType.deleted = false "
- + "GROUP BY type.id, type.name "),
+ + "WHERE rg.id = :groupId AND res.resourceType.deleted = false " + "GROUP BY type.id, type.name "),
@NamedQuery(name = ResourceType.QUERY_GET_IMPLICIT_RESOURCE_TYPE_COUNTS_BY_GROUP, query = "SELECT type.id, type.name, COUNT(type.id) "
+ "FROM ResourceGroup rg JOIN rg.implicitResources res JOIN res.resourceType type "
- + "WHERE rg.id = :groupId AND res.resourceType.deleted = false "
- + "GROUP BY type.id, type.name "),
+ + "WHERE rg.id = :groupId AND res.resourceType.deleted = false " + "GROUP BY type.id, type.name "),
@NamedQuery(name = ResourceType.QUERY_FIND_BY_SUBCATEGORY, query = "SELECT rt " + "FROM ResourceType rt "
+ "WHERE rt.subCategory = :subCategory AND rt.deleted = false"),
@NamedQuery(name = ResourceType.QUERY_FIND_BY_ID_WITH_ALL_OPERATIONS, query = "SELECT DISTINCT rt "
@@ -183,18 +179,13 @@ import org.rhq.core.domain.util.Summary;
@NamedQuery(name = ResourceType.QUERY_FIND_DUPLICATE_TYPE_NAMES, query = "" //
+ " SELECT rt.name " //
+ " FROM ResourceType rt " //
- + " WHERE rt.deleted = false "
- + " GROUP BY rt.name " //
+ + " WHERE rt.deleted = false " + " GROUP BY rt.name " //
+ " HAVING COUNT(rt.name) > 1"), //
@NamedQuery(name = ResourceType.QUERY_DYNAMIC_CONFIG_WITH_PLUGIN, query = "" //
+ "SELECT rt.plugin || ' - ' || rt.name, rt.plugin || '-' || rt.name FROM ResourceType rt WHERE rt.deleted = false"), //
- @NamedQuery(name = ResourceType.QUERY_MARK_TYPES_DELETED, query =
- "UPDATE ResourceType t SET t.deleted = true WHERE t.id IN (:resourceTypeIds)"),
- @NamedQuery(name = ResourceType.QUERY_FIND_IDS_BY_PLUGIN, query =
- "SELECT t.id FROM ResourceType t WHERE t.plugin = :plugin AND t.deleted = false"),
- @NamedQuery(name = ResourceType.QUERY_FIND_COUNT_BY_PLUGIN, query =
- "SELECT COUNT(t) FROM ResourceType t WHERE t.plugin = :plugin AND t.deleted = false")
-})
+ @NamedQuery(name = ResourceType.QUERY_MARK_TYPES_DELETED, query = "UPDATE ResourceType t SET t.deleted = true WHERE t.id IN (:resourceTypeIds)"),
+ @NamedQuery(name = ResourceType.QUERY_FIND_IDS_BY_PLUGIN, query = "SELECT t.id FROM ResourceType t WHERE t.plugin = :plugin AND t.deleted = false"),
+ @NamedQuery(name = ResourceType.QUERY_FIND_COUNT_BY_PLUGIN, query = "SELECT COUNT(t) FROM ResourceType t WHERE t.plugin = :plugin AND t.deleted = false") })
@NamedNativeQueries( {
// TODO: Add authz conditions to the below query.
@NamedNativeQuery(name = ResourceType.QUERY_FIND_CHILDREN_BY_CATEGORY, query = "" //
@@ -218,9 +209,9 @@ import org.rhq.core.domain.util.Summary;
+ "AND 0 = "
+ "(SELECT COUNT(rtp2.resource_type_id) "
+ "FROM RHQ_resource_type_parents rtp2 "
- + "WHERE rtp2.resource_type_id = crt2.id) "
- + "AND crt2.deleted = false "
- + "AND crt2.category = ? " + " ) ORDER BY name", resultSetMapping = ResourceType.MAPPING_FIND_CHILDREN_BY_CATEGORY),
+ + "WHERE rtp2.resource_type_id = crt2.id) " + "AND crt2.deleted = false "
+ + "AND crt2.category = ? "
+ + " ) ORDER BY name", resultSetMapping = ResourceType.MAPPING_FIND_CHILDREN_BY_CATEGORY),
@NamedNativeQuery(name = ResourceType.QUERY_FIND_CHILDREN_BY_CATEGORY_admin, query = "" //
+ "(SELECT crt.id, crt.name, crt.category, crt.creation_data_type, crt.create_delete_policy, crt.singleton, crt.supports_manual_add, crt.description, crt.plugin, crt.ctime, crt.mtime, crt.deleted, crt.subcategory_id, crt.plugin_config_def_id, crt.res_config_def_id "
+ "FROM RHQ_resource_type crt, RHQ_resource res, RHQ_resource_type rt, RHQ_resource_type_parents rtp "
@@ -347,18 +338,18 @@ public class ResourceType implements Serializable, Comparable<ResourceType> {
//@Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL)
private Set<ResourceType> parentResourceTypes;
- @JoinColumn(name = "PLUGIN_CONFIG_DEF_ID")
- @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+ @JoinColumn(name = "PLUGIN_CONFIG_DEF_ID", nullable = true)
+ @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY, optional = true)
//@Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL)
private ConfigurationDefinition pluginConfigurationDefinition;
- @JoinColumn(name = "RES_CONFIG_DEF_ID")
- @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+ @JoinColumn(name = "RES_CONFIG_DEF_ID", nullable = true)
+ @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY, optional = true)
//@Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL)
private ConfigurationDefinition resourceConfigurationDefinition;
- @JoinColumn(name = "SUBCATEGORY_ID")
- @ManyToOne(fetch = FetchType.LAZY)
+ @JoinColumn(name = "SUBCATEGORY_ID", nullable = true)
+ @ManyToOne(fetch = FetchType.LAZY, optional = true)
private ResourceSubCategory subCategory;
@OneToMany(mappedBy = "resourceType", cascade = CascadeType.ALL)
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/search/SavedSearch.java b/modules/core/domain/src/main/java/org/rhq/core/domain/search/SavedSearch.java
index b517d59..181e322 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/search/SavedSearch.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/search/SavedSearch.java
@@ -89,7 +89,7 @@ public class SavedSearch implements Serializable {
private Long resultCount;
@JoinColumn(name = "SUBJECT_ID", nullable = false)
- @ManyToOne(fetch = FetchType.LAZY)
+ @ManyToOne(fetch = FetchType.LAZY, optional = false)
private Subject subject;
@Column(name = "SUBJECT_ID", insertable = false, updatable = false)
commit 9ef17a26f0ff774c9bd4fb15e87c215fd8041202
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Tue May 10 13:42:56 2011 -0400
Related to [BZ 702390 - Large number of BundleDeployments for a single Bundle causes fetch serialization issues]
Revert some of the work done in commit 976c5fc6ed. Add back the LAZY load
on Configuration. Although, I think, it does need to perform additional
querying for the 'null' value determination, it can still proxy a non-null
value on optional XxxToOne associations.
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleDeployment.java b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleDeployment.java
index dcf6c27..637bf22 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleDeployment.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleDeployment.java
@@ -74,8 +74,8 @@ import org.rhq.core.domain.tagging.Tag;
+ " WHERE innerbd.destination.id = :destinationId ) "),
@NamedQuery(name = BundleDeployment.QUERY_UPDATE_FOR_VERSION_REMOVE, query = "" //
+ "UPDATE BundleDeployment bd " //
- + " SET bd.replacedBundleDeploymentId = NULL " //
- + " WHERE bd.replacedBundleDeploymentId IN " //
+ + " SET bd.replacedBundleDeploymentId = NULL " //
+ + " WHERE bd.replacedBundleDeploymentId IN " //
+ " ( SELECT innerbd.id FROM BundleDeployment innerbd " //
+ " WHERE innerbd.bundleVersion.id = :bundleVersionId ) ") })
@SequenceGenerator(name = "SEQ", sequenceName = "RHQ_BUNDLE_DEPLOYMENT_ID_SEQ")
@@ -118,15 +118,15 @@ public class BundleDeployment implements Serializable {
@Column(name = "MTIME")
private Long mtime = System.currentTimeMillis();
- // This is not a join column on purpose. Since it is nullable the OneToOne association would be forced to EAGER
- // fetch. That leads to basically fetching every BundleDeployment every time, in a deeply recursive way if you
- // have a lot deployments.
+ // This is intentionally not annotated as a OneToOne association for a BundleDeployment field. If done that way
+ // then a fetch could result in a very deep recursive fetch of all replaced deployments (for many deployments
+ // to a single destination), which is typically not what we want. And, it can cause fits in HibernateDetach
+ // which does not like extreme depth in its recursive scrubbing [BZ 702390].
@Column(name = "REPLACED_BUNDLE_DEPLOYMENT_ID", nullable = true)
private Integer replacedBundleDeploymentId;
- // note - eager fetch, can not lazy fetch an optional OneToOne
@JoinColumn(name = "CONFIG_ID", referencedColumnName = "ID", nullable = true)
- @OneToOne(cascade = CascadeType.ALL, optional = true)
+ @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY, optional = true)
private Configuration configuration;
@JoinColumn(name = "BUNDLE_VERSION_ID", referencedColumnName = "ID", nullable = false)
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/BundleDeploymentCriteria.java b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/BundleDeploymentCriteria.java
index aa437e3..8449905 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/BundleDeploymentCriteria.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/BundleDeploymentCriteria.java
@@ -49,6 +49,7 @@ public class BundleDeploymentCriteria extends TaggedCriteria {
private String filterSubjectName;
private boolean fetchBundleVersion;
+ private boolean fetchConfiguration;
private boolean fetchDestination;
private boolean fetchResourceDeployments;
@@ -108,6 +109,10 @@ public class BundleDeploymentCriteria extends TaggedCriteria {
this.fetchBundleVersion = fetchBundleVersion;
}
+ public void fetchConfiguration(boolean fetchConfiguration) {
+ this.fetchConfiguration = fetchConfiguration;
+ }
+
public void fetchDestination(boolean fetchDestination) {
this.fetchDestination = fetchDestination;
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/SelectBundleVersionStep.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/SelectBundleVersionStep.java
index b13df74..e1367e8 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/SelectBundleVersionStep.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/SelectBundleVersionStep.java
@@ -143,6 +143,7 @@ public class SelectBundleVersionStep extends AbstractWizardStep {
criteria.addFilterDestinationId(wizard.getDestination().getId());
criteria.addFilterIsLive(true);
criteria.fetchBundleVersion(true);
+ criteria.fetchConfiguration(true);
bundleServer.findBundleDeploymentsByCriteria(criteria, //
new AsyncCallback<PageList<BundleDeployment>>() {
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentView.java
index 73ea70c..3542481 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentView.java
@@ -421,6 +421,7 @@ public class BundleDeploymentView extends LocatableVLayout implements Bookmarkab
BundleDeploymentCriteria criteria = new BundleDeploymentCriteria();
criteria.addFilterId(bundleDeploymentId);
criteria.fetchBundleVersion(true);
+ criteria.fetchConfiguration(true);
criteria.fetchResourceDeployments(true);
criteria.fetchDestination(true);
criteria.fetchTags(true);
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
index 7b45a70..5738c64 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
@@ -1110,6 +1110,7 @@ public class BundleManagerBean implements BundleManagerLocal, BundleManagerRemot
BundleDeploymentCriteria bdc = new BundleDeploymentCriteria();
bdc.addFilterId(resourceDeployment.getBundleDeployment().getId());
bdc.fetchBundleVersion(true);
+ bdc.fetchConfiguration(true);
bdc.fetchDestination(true);
BundleDeployment deployment = bundleManager.findBundleDeploymentsByCriteria(subject, bdc).get(0);
13 years, 1 month
[rhq] modules/enterprise
by ips
modules/enterprise/gui/coregui/pom.xml | 4 ++--
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/MenuBarView.java | 3 ++-
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
New commits:
commit 7be4ef4c1438be18625af4ec8c4d62ffecb2beb8
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Tue May 10 16:57:44 2011 -0400
compile "ja" (Japanese) locale by default; fix so Logout link does not have line breaks between characters when in "ja" locale
diff --git a/modules/enterprise/gui/coregui/pom.xml b/modules/enterprise/gui/coregui/pom.xml
index 9352745..abb5ad6 100644
--- a/modules/enterprise/gui/coregui/pom.xml
+++ b/modules/enterprise/gui/coregui/pom.xml
@@ -64,8 +64,8 @@
<gwt.draftCompile>false</gwt.draftCompile>
<!-- Comma-separated list of the locales that should be included during GWT compilation. Currently supported
- locales (i.e. locales for which we have localized message bundles) are "en" and "de". -->
- <gwt.locale>en,de</gwt.locale>
+ locales (i.e. locales for which we have localized message bundles) are "en", "de", and "ja". -->
+ <gwt.locale>en,de,ja</gwt.locale>
</properties>
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/MenuBarView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/MenuBarView.java
index 557042f..f138f6a 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/MenuBarView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/MenuBarView.java
@@ -124,7 +124,8 @@ public class MenuBarView extends LocatableVLayout {
lineLabel.setWidth("12px");
lineLabel.setAlign(Alignment.CENTER);
- String contents = "<a href='#" + LOGOUT_VIEW_ID.getName() + "'>" + LOGOUT_VIEW_ID.getTitle() + "</a>";
+ String contents = "<a href='#" + LOGOUT_VIEW_ID.getName() + "' style='white-space: nowrap'>"
+ + LOGOUT_VIEW_ID.getTitle() + "</a>";
LocatableLabel logoutLink = new LocatableLabel(this.extendLocatorId("LogoutLink"), contents);
logoutLink.setAutoWidth();
diff --git a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml
index 4c2ee34..69db4a5 100644
--- a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml
+++ b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml
@@ -107,7 +107,7 @@
The gwt.locale property is substituted by the Maven resources plugin
during the resources phase. The default value (defined in coregui/pom.xml)
- is "en,de", which are the languages for which we currently have localized
+ is "en,de,ja", which are the languages for which we currently have localized
messages. To override this value, specify the gwt.locale property on the
mvn command line (e.g. -Dgwt.locale=en) or in your ~/.m2/settings.xml.
-->
13 years, 1 month
[rhq] Branch 'as7plugin' - 19 commits - .classpath etc/apt etc/samples modules/cli-tests modules/common modules/core modules/enterprise modules/helpers modules/jopr modules/plugins modules/pom.xml modules/test-utils pom.xml
by Heiko W. Rupp
.classpath | 2
etc/apt/pom.xml | 2
etc/samples/perspectives/sample-perspective/app/pom.xml | 2
etc/samples/perspectives/sample-perspective/perspective/pom.xml | 2
etc/samples/skeleton-plugin/pom.xml | 2
modules/cli-tests/pom.xml | 2
modules/common/ant-bundle/pom.xml | 2
modules/common/filetemplate-bundle/pom.xml | 2
modules/common/jboss-as/pom.xml | 2
modules/common/pom.xml | 2
modules/core/client-api/pom.xml | 2
modules/core/comm-api/pom.xml | 2
modules/core/dbutils/pom.xml | 2
modules/core/domain/pom.xml | 2
modules/core/domain/src/main/java/org/rhq/core/domain/alert/Alert.java | 12
modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleDeployment.java | 31
modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleFile.java | 4
modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeployment.java | 4
modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeploymentHistory.java | 2
modules/core/domain/src/main/java/org/rhq/core/domain/cloud/FailoverList.java | 356 -
modules/core/domain/src/main/java/org/rhq/core/domain/cloud/FailoverListDetails.java | 338 -
modules/core/domain/src/main/java/org/rhq/core/domain/content/ContentSourceSyncResults.java | 2
modules/core/domain/src/main/java/org/rhq/core/domain/content/RepoSyncResults.java | 6
modules/core/domain/src/main/java/org/rhq/core/domain/criteria/BundleDeploymentCriteria.java | 10
modules/core/gui/pom.xml | 2
modules/core/native-system/pom.xml | 2
modules/core/plugin-api/pom.xml | 2
modules/core/plugin-container/pom.xml | 2
modules/core/plugin-validator/pom.xml | 2
modules/core/plugindoc/pom.xml | 2
modules/core/pom.xml | 2
modules/core/util/pom.xml | 2
modules/enterprise/agent/pom.xml | 2
modules/enterprise/agentupdate/pom.xml | 2
modules/enterprise/binding/pom.xml | 4
modules/enterprise/comm/pom.xml | 2
modules/enterprise/gui/base-perspective-jar/pom.xml | 2
modules/enterprise/gui/base-perspective-war/pom.xml | 2
modules/enterprise/gui/content_http-war/pom.xml | 2
modules/enterprise/gui/coregui/pom.xml | 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java | 6
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/SelectBundleVersionStep.java | 1
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentView.java | 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/revert/ConfirmationStep.java | 43
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupContextMenu.java | 213
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ChildHistoryDetails.java | 32
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java | 240 -
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/MenuBarView.java | 143
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableHStack.java | 82
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/FileUploadServlet.java | 15
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml | 4
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/MessageConstants_ja.properties | 52
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties | 1
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties | 2168 ++++++++++
modules/enterprise/gui/coregui/src/main/webapp/CoreGUI.css | 45
modules/enterprise/gui/coregui/src/main/webapp/CoreGUI.html | 1
modules/enterprise/gui/installer-war/pom.xml | 2
modules/enterprise/gui/pom.xml | 2
modules/enterprise/gui/portal-war/pom.xml | 2
modules/enterprise/gui/webdav-war/pom.xml | 2
modules/enterprise/pom.xml | 2
modules/enterprise/remoting/cli/pom.xml | 2
modules/enterprise/remoting/client-api/pom.xml | 2
modules/enterprise/remoting/client-deps/pom.xml | 2
modules/enterprise/remoting/pom.xml | 2
modules/enterprise/remoting/webservices/pom.xml | 2
modules/enterprise/server/client-api/pom.xml | 4
modules/enterprise/server/container-lib/pom.xml | 2
modules/enterprise/server/container/pom.xml | 2
modules/enterprise/server/ear/pom.xml | 2
modules/enterprise/server/jar/pom.xml | 11
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertConditionLogManagerBean.java | 16
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertConditionManagerBean.java | 16
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDampeningManagerBean.java | 16
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java | 16
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/CachedConditionManagerBean.java | 18
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java | 34
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/CloudManagerBean.java | 14
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StatusManagerBean.java | 14
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/instance/CacheConsistencyManagerBean.java | 14
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/instance/ServerManagerBean.java | 14
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemManagerBean.java | 14
modules/enterprise/server/jar/src/main/resources/META-INF/jboss.xml | 3
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java | 4
modules/enterprise/server/plugins/alert-cli/pom.xml | 4
modules/enterprise/server/plugins/alert-email/pom.xml | 4
modules/enterprise/server/plugins/alert-irc/pom.xml | 4
modules/enterprise/server/plugins/alert-log4j/pom.xml | 4
modules/enterprise/server/plugins/alert-microblog/pom.xml | 4
modules/enterprise/server/plugins/alert-mobicents/pom.xml | 4
modules/enterprise/server/plugins/alert-operations/pom.xml | 4
modules/enterprise/server/plugins/alert-roles/pom.xml | 4
modules/enterprise/server/plugins/alert-scriptlang/pom.xml | 2
modules/enterprise/server/plugins/alert-sms/pom.xml | 2
modules/enterprise/server/plugins/alert-snmp/pom.xml | 4
modules/enterprise/server/plugins/alert-subject/pom.xml | 4
modules/enterprise/server/plugins/ant-bundle/pom.xml | 2
modules/enterprise/server/plugins/cloud/pom.xml | 2
modules/enterprise/server/plugins/cobbler/pom.xml | 4
modules/enterprise/server/plugins/disk/pom.xml | 2
modules/enterprise/server/plugins/filetemplate-bundle/pom.xml | 2
modules/enterprise/server/plugins/groovy-script/pom.xml | 4
modules/enterprise/server/plugins/jboss-software/pom.xml | 2
modules/enterprise/server/plugins/packagetype-cli/pom.xml | 4
modules/enterprise/server/plugins/perspectives/core/perspective/pom.xml | 2
modules/enterprise/server/plugins/perspectives/core/pom.xml | 2
modules/enterprise/server/plugins/perspectives/policy/app/pom.xml | 2
modules/enterprise/server/plugins/perspectives/policy/perspective/pom.xml | 2
modules/enterprise/server/plugins/perspectives/policy/pom.xml | 2
modules/enterprise/server/plugins/pom.xml | 2
modules/enterprise/server/plugins/rhnhosted/pom.xml | 2
modules/enterprise/server/plugins/url/pom.xml | 2
modules/enterprise/server/plugins/validate-all-serverplugins/pom.xml | 2
modules/enterprise/server/plugins/yum/pom.xml | 2
modules/enterprise/server/pom.xml | 2
modules/enterprise/server/safe-invoker/pom.xml | 2
modules/enterprise/server/safe-invoker/src/main/java/org/rhq/enterprise/server/util/HibernateDetachUtility.java | 34
modules/enterprise/server/sars/agent-sar/pom.xml | 2
modules/enterprise/server/sars/pom.xml | 2
modules/enterprise/server/xml-schemas/pom.xml | 2
modules/helpers/bundleGen/pom.xml | 4
modules/helpers/perftest-support/pom.xml | 4
modules/helpers/pom.xml | 2
modules/helpers/rtfilter/pom.xml | 2
modules/jopr/pom.xml | 2
modules/jopr/tools/jbas5-plugin-descriptor-gen/pom.xml | 2
modules/plugins/aliases/pom.xml | 2
modules/plugins/ant-bundle/pom.xml | 2
modules/plugins/apache/pom.xml | 2
modules/plugins/augeas/pom.xml | 2
modules/plugins/byteman/pom.xml | 2
modules/plugins/cobbler/pom.xml | 2
modules/plugins/cron/pom.xml | 2
modules/plugins/database/pom.xml | 2
modules/plugins/filetemplate-bundle/pom.xml | 2
modules/plugins/grub/pom.xml | 2
modules/plugins/hadoop/pom.xml | 2
modules/plugins/hardware/pom.xml | 2
modules/plugins/hibernate/pom.xml | 2
modules/plugins/hosts/pom.xml | 2
modules/plugins/hudson/pom.xml | 4
modules/plugins/iis/pom.xml | 2
modules/plugins/iptables/pom.xml | 2
modules/plugins/irc/pom.xml | 2
modules/plugins/jboss-as-5/pom.xml | 2
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java | 29
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java | 1
modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml | 22
modules/plugins/jboss-as/pom.xml | 2
modules/plugins/jboss-cache-v3/pom.xml | 2
modules/plugins/jboss-cache/pom.xml | 2
modules/plugins/jdbctrace/pom.xml | 2
modules/plugins/jira/pom.xml | 2
modules/plugins/jmx/pom.xml | 2
modules/plugins/kickstart/pom.xml | 2
modules/plugins/lsof/pom.xml | 2
modules/plugins/mysql/pom.xml | 2
modules/plugins/netservices/pom.xml | 2
modules/plugins/onewire/pom.xml | 7
modules/plugins/oracle/pom.xml | 2
modules/plugins/pattern-generator/pom.xml | 6
modules/plugins/perftest/pom.xml | 2
modules/plugins/platform/pom.xml | 2
modules/plugins/pom.xml | 2
modules/plugins/postfix/pom.xml | 2
modules/plugins/postgres/pom.xml | 2
modules/plugins/raw-config-test/pom.xml | 2
modules/plugins/rhq-agent/pom.xml | 2
modules/plugins/rhq-server/pom.xml | 2
modules/plugins/samba/pom.xml | 2
modules/plugins/script/pom.xml | 2
modules/plugins/script2/pom.xml | 2
modules/plugins/services/pom.xml | 2
modules/plugins/snmptrapd/pom.xml | 2
modules/plugins/sshd/pom.xml | 2
modules/plugins/sudoers/pom.xml | 2
modules/plugins/tomcat/pom.xml | 2
modules/plugins/twitter/pom.xml | 2
modules/plugins/validate-all-plugins/pom.xml | 2
modules/plugins/virt/pom.xml | 2
modules/pom.xml | 2
modules/test-utils/pom.xml | 2
pom.xml | 8
183 files changed, 3650 insertions(+), 782 deletions(-)
New commits:
commit 5a31be172085a5e029ae9fb0525de7516562042d
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue May 10 21:02:32 2011 +0200
Add datasource metrics and take care of the "no metrics available" response.
diff --git a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index 72ab4dd..a73179a 100644
--- a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++ b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -151,16 +151,17 @@ public class BaseComponent implements ResourceComponent, MeasurementFacet, Confi
if (!res.isSuccess())
continue;
- String val = (String) res.getResult();
+ String val = (String) res.getResult();
if (req.getDataType()== DataType.MEASUREMENT) {
-
- try {
- Double d = Double.parseDouble(val);
- MeasurementDataNumeric data = new MeasurementDataNumeric(req,d);
- report.addData(data);
- } catch (NumberFormatException e) {
- log.warn("Non numeric input for [" + req.getName() + "] : [" + val + "]");
+ if (!val.equals("no metrics available")) { // AS 7 returns this
+ try {
+ Double d = Double.parseDouble(val);
+ MeasurementDataNumeric data = new MeasurementDataNumeric(req,d);
+ report.addData(data);
+ } catch (NumberFormatException e) {
+ log.warn("Non numeric input for [" + req.getName() + "] : [" + val + "]");
+ }
}
} else if (req.getDataType()== DataType.TRAIT) {
MeasurementDataTrait data = new MeasurementDataTrait(req,val);
@@ -196,12 +197,18 @@ public class BaseComponent implements ResourceComponent, MeasurementFacet, Confi
if (propDef instanceof PropertyDefinitionSimple) {
PropertySimple propertySimple;
- if (sub!=null)
+ if (sub!=null) {
+ // Property is non-null -> return it.
propertySimple = new PropertySimple(propDef.getName(),sub.getValueAsText());
+ ret.put(propertySimple);
+ }
else {
- propertySimple = new PropertySimple(propDef.getName(),"- null -"); // TODO store it at all when it is null?
+ // property is null? Check if it is required
+ if (propDef.isRequired()) {
+ propertySimple = new PropertySimple(propDef.getName(),null);
+ ret.put(propertySimple);
+ }
}
- ret.put(propertySimple);
} else if (propDef instanceof PropertyDefinitionList) {
PropertyList propertyList = new PropertyList(propDef.getName());
PropertyDefinition memberDefinition = ((PropertyDefinitionList) propDef).getMemberDefinition();
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 50939ae..3d4f335 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -568,6 +568,28 @@
<c:simple-property name="path" readOnly="true" default="data-source"/>
</plugin-configuration>
+ <metric property="PreparedStatementCacheCurrentSize"
+ description="The number of prepared and callable statements currently cached in the statement cache"/>
+ <metric property="PreparedStatementCacheMissCount"
+ description="The number of times that a statement request could not be satisfied with a statement from the cache"/>
+ <metric property="PreparedStatementCacheAddCount" description="The number of statements added to the statement cache"/>
+ <metric property="PreparedStatementCacheAccessCount" description="The number of times that the statement cache was accessed"/>
+ <metric property="PreparedStatementCacheDeleteCount" description="The number of statements discarded from the cache"/>
+ <metric property="PreparedStatementCacheHitCount" description="The number of times that statements from the cache were used"/>
+ <metric property="AverageBlockingTime" description="The average time spent blocking for a connection"/>
+ <metric property="MaxWaitTime" description="The maximum wait time for a connection"/>
+ <metric property="ActiveCount" description="The active count"/>
+ <metric property="CreatedCount" description="The created count"/>
+ <metric property="MaxCreationTime" description="The maximum time for creating a physical connection"/>
+ <metric property="MaxWaitCount" description="The maximum number of threads waiting for a connection"/>
+ <metric property="TotalCreationTime" description="The total time spent creating physical connections"/>
+ <metric property="AvailableCount" description="The available count"/>
+ <metric property="MaxUsedCount" description="The maximum number of connections used"/>
+ <metric property="TimedOut" description="The timed out count"/>
+ <metric property="TotalBlockingTime" description="The total blocking time"/>
+ <metric property="AverageCreationTime" description="The average time spent creating a physical connection"/>
+ <metric property="DestroyedCount" description="The destroyed count"/>
+
<resource-configuration>
<c:simple-property name="connection-url" required="true" type="string" readOnly="true" description="The JDBC driver connection URL"/>
<c:simple-property name="driver-class" required="true" type="string" readOnly="true"
commit e2d2375fe00d761acf5805255c719bbd01cff397
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue May 10 18:29:33 2011 +0200
Metrics have no type
diff --git a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
index e61ff3c..ab317dc 100644
--- a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
+++ b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
@@ -160,7 +160,6 @@ public class Domain2Descriptor {
doIndent(indent,sb);
sb.append("<metric property=\"");
sb.append(entry.getKey()).append('"');
- sb.append(" type=\"").append(typeString).append("\"");
if (ptype== Type.STRING)
sb.append(" dataType=\"trait\"");
commit 9d9c11e54fcd7fccaac08c5d336aaef83bff8995
Merge: 33f3c42 ae6d42e
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue May 10 18:12:12 2011 +0200
Merge branch 'master' into as7plugin
commit ae6d42eef44bf5c03f1e9d24694ad1adb9d261fc
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Mon May 9 22:59:47 2011 -0400
bump up max size of strict thread pools for the alert SLSBs called by the alert condition consumer MDB, since that MDB can potentially be called quite often if there are a lot of alerts configured (refinement of fix for https://bugzilla.redhat.com/show_bug.cgi?id=693232)
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertConditionLogManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertConditionLogManagerBean.java
index 0804736..8ee77c9 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertConditionLogManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertConditionLogManagerBean.java
@@ -56,10 +56,10 @@ import org.rhq.enterprise.server.RHQConstants;
// gradually leak until the Server eventually ran out of memory. Hence, we must use a {@link StrictMaxPool}, which
// will use a fixed pool of instances of this SLSB, instead of a ThreadlocalPool. Because most of these SLSB's are
// also invoked by other callers (i.e. Agents, GUI's, or CLI's) besides AlertConditionConsumerBean, we set the max
-// pool size to 60, which is double the default value, to minimize the chances of AlertConditionConsumerBean
+// pool size to 100 (30 is the default value), to lower the chances of AlertConditionConsumerBean
// invocations, which are the most critical, from having to block and potentially getting backed up in the queue.
// For more details, see https://bugzilla.redhat.com/show_bug.cgi?id=693232 (ips, 05/05/11).
-@PoolClass(value = StrictMaxPool.class, maxSize = 60)
+@PoolClass(value = StrictMaxPool.class, maxSize = 100)
public class AlertConditionLogManagerBean implements AlertConditionLogManagerLocal {
private final Log log = LogFactory.getLog(AlertConditionLogManagerBean.class);
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertConditionManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertConditionManagerBean.java
index 3d49479..3094fc8 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertConditionManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertConditionManagerBean.java
@@ -60,10 +60,10 @@ import org.rhq.enterprise.server.authz.PermissionException;
// gradually leak until the Server eventually ran out of memory. Hence, we must use a {@link StrictMaxPool}, which
// will use a fixed pool of instances of this SLSB, instead of a ThreadlocalPool. Because most of these SLSB's are
// also invoked by other callers (i.e. Agents, GUI's, or CLI's) besides AlertConditionConsumerBean, we set the max
-// pool size to 60, which is double the default value, to minimize the chances of AlertConditionConsumerBean
+// pool size to 100 (30 is the default value), to lower the chances of AlertConditionConsumerBean
// invocations, which are the most critical, from having to block and potentially getting backed up in the queue.
// For more details, see https://bugzilla.redhat.com/show_bug.cgi?id=693232 (ips, 05/05/11).
-@PoolClass(value = StrictMaxPool.class, maxSize = 60)
+@PoolClass(value = StrictMaxPool.class, maxSize = 100)
public class AlertConditionManagerBean implements AlertConditionManagerLocal {
private static final Log LOG = LogFactory.getLog(AlertConditionManagerBean.class);
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDampeningManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDampeningManagerBean.java
index 5df78c5..8d36704 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDampeningManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDampeningManagerBean.java
@@ -52,10 +52,10 @@ import org.rhq.enterprise.server.RHQConstants;
// gradually leak until the Server eventually ran out of memory. Hence, we must use a {@link StrictMaxPool}, which
// will use a fixed pool of instances of this SLSB, instead of a ThreadlocalPool. Because most of these SLSB's are
// also invoked by other callers (i.e. Agents, GUI's, or CLI's) besides AlertConditionConsumerBean, we set the max
-// pool size to 60, which is double the default value, to minimize the chances of AlertConditionConsumerBean
+// pool size to 100 (30 is the default value), to lower the chances of AlertConditionConsumerBean
// invocations, which are the most critical, from having to block and potentially getting backed up in the queue.
// For more details, see https://bugzilla.redhat.com/show_bug.cgi?id=693232 (ips, 05/05/11).
-@PoolClass(value = StrictMaxPool.class, maxSize = 60)
+@PoolClass(value = StrictMaxPool.class, maxSize = 100)
public class AlertDampeningManagerBean implements AlertDampeningManagerLocal {
private final Log log = LogFactory.getLog(AlertDampeningManagerBean.class);
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java
index ba3b045..828e2bb 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java
@@ -78,10 +78,10 @@ import org.rhq.enterprise.server.util.CriteriaQueryGenerator.AuthorizationTokenT
// gradually leak until the Server eventually ran out of memory. Hence, we must use a {@link StrictMaxPool}, which
// will use a fixed pool of instances of this SLSB, instead of a ThreadlocalPool. Because most of these SLSB's are
// also invoked by other callers (i.e. Agents, GUI's, or CLI's) besides AlertConditionConsumerBean, we set the max
-// pool size to 60, which is double the default value, to minimize the chances of AlertConditionConsumerBean
+// pool size to 100 (30 is the default value), to lower the chances of AlertConditionConsumerBean
// invocations, which are the most critical, from having to block and potentially getting backed up in the queue.
// For more details, see https://bugzilla.redhat.com/show_bug.cgi?id=693232 (ips, 05/05/11).
-@PoolClass(value = StrictMaxPool.class, maxSize = 60)
+@PoolClass(value = StrictMaxPool.class, maxSize = 100)
public class AlertDefinitionManagerBean implements AlertDefinitionManagerLocal, AlertDefinitionManagerRemote {
private static final Log LOG = LogFactory.getLog(AlertDefinitionManagerBean.class);
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/CachedConditionManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/CachedConditionManagerBean.java
index 55aa2a4..685f461 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/CachedConditionManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/CachedConditionManagerBean.java
@@ -54,10 +54,10 @@ import org.rhq.enterprise.server.alert.engine.jms.model.InactiveAlertConditionMe
// gradually leak until the Server eventually ran out of memory. Hence, we must use a {@link StrictMaxPool}, which
// will use a fixed pool of instances of this SLSB, instead of a ThreadlocalPool. Because most of these SLSB's are
// also invoked by other callers (i.e. Agents, GUI's, or CLI's) besides AlertConditionConsumerBean, we set the max
-// pool size to 60, which is double the default value, to minimize the chances of AlertConditionConsumerBean
+// pool size to 100 (30 is the default value), to lower the chances of AlertConditionConsumerBean
// invocations, which are the most critical, from having to block and potentially getting backed up in the queue.
// For more details, see https://bugzilla.redhat.com/show_bug.cgi?id=693232 (ips, 05/05/11).
-@PoolClass(value = StrictMaxPool.class, maxSize = 60)
+@PoolClass(value = StrictMaxPool.class, maxSize = 100)
public class CachedConditionManagerBean implements CachedConditionManagerLocal {
private final Log log = LogFactory.getLog(CachedConditionManagerBean.class);
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/CloudManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/CloudManagerBean.java
index 919149d..35394d6 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/CloudManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/CloudManagerBean.java
@@ -66,10 +66,10 @@ import org.rhq.enterprise.server.util.LookupUtil;
// heap space to gradually leak until the Server eventually ran out of memory. Hence, we must use a
// {@link StrictMaxPool}, which will use a fixed pool of instances of this SLSB, instead of a ThreadlocalPool.
// Because most of these SLSB's are also invoked by other callers (i.e. Agents, GUI's, or CLI's) besides EJB
-// timers, we set the max pool size to 60, which is double the default value, to minimize the chances of EJB
+// timers, we set the max pool size to 50 (the default is 30) to lower the chances of EJB
// timer invocations, which are the most critical, from having to block and potentially getting backed up in the
// queue. For more details, see https://bugzilla.redhat.com/show_bug.cgi?id=693232 (ips, 05/05/11).
-@PoolClass(value = StrictMaxPool.class, maxSize = 60)
+@PoolClass(value = StrictMaxPool.class, maxSize = 50)
public class CloudManagerBean implements CloudManagerLocal {
private final Log log = LogFactory.getLog(CloudManagerBean.class);
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StatusManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StatusManagerBean.java
index 526f801..eeeb812 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StatusManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StatusManagerBean.java
@@ -75,10 +75,10 @@ import org.rhq.enterprise.server.util.LookupUtil;
// heap space to gradually leak until the Server eventually ran out of memory. Hence, we must use a
// {@link StrictMaxPool}, which will use a fixed pool of instances of this SLSB, instead of a ThreadlocalPool.
// Because most of these SLSB's are also invoked by other callers (i.e. Agents, GUI's, or CLI's) besides EJB
-// timers, we set the max pool size to 60, which is double the default value, to minimize the chances of EJB
+// timers, we set the max pool size to 50 (the default is 30) to lower the chances of EJB
// timer invocations, which are the most critical, from having to block and potentially getting backed up in the
// queue. For more details, see https://bugzilla.redhat.com/show_bug.cgi?id=693232 (ips, 05/05/11).
-@PoolClass(value = StrictMaxPool.class, maxSize = 60)
+@PoolClass(value = StrictMaxPool.class, maxSize = 50)
public class StatusManagerBean implements StatusManagerLocal {
private final Log log = LogFactory.getLog(StatusManagerBean.class);
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/instance/CacheConsistencyManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/instance/CacheConsistencyManagerBean.java
index 6cbf361..a8b5499 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/instance/CacheConsistencyManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/instance/CacheConsistencyManagerBean.java
@@ -54,10 +54,10 @@ import org.rhq.enterprise.server.alert.engine.AlertConditionCacheManagerLocal;
// heap space to gradually leak until the Server eventually ran out of memory. Hence, we must use a
// {@link StrictMaxPool}, which will use a fixed pool of instances of this SLSB, instead of a ThreadlocalPool.
// Because most of these SLSB's are also invoked by other callers (i.e. Agents, GUI's, or CLI's) besides EJB
-// timers, we set the max pool size to 60, which is double the default value, to minimize the chances of EJB
+// timers, we set the max pool size to 50 (the default is 30) to lower the chances of EJB
// timer invocations, which are the most critical, from having to block and potentially getting backed up in the
// queue. For more details, see https://bugzilla.redhat.com/show_bug.cgi?id=693232 (ips, 05/05/11).
-@PoolClass(value = StrictMaxPool.class, maxSize = 60)
+@PoolClass(value = StrictMaxPool.class, maxSize = 50)
public class CacheConsistencyManagerBean implements CacheConsistencyManagerLocal {
private final Log log = LogFactory.getLog(CacheConsistencyManagerBean.class);
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/instance/ServerManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/instance/ServerManagerBean.java
index 588d8e8..dd7790b 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/instance/ServerManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/instance/ServerManagerBean.java
@@ -74,10 +74,10 @@ import org.rhq.enterprise.server.core.comm.ServerCommunicationsServiceUtil;
// heap space to gradually leak until the Server eventually ran out of memory. Hence, we must use a
// {@link StrictMaxPool}, which will use a fixed pool of instances of this SLSB, instead of a ThreadlocalPool.
// Because most of these SLSB's are also invoked by other callers (i.e. Agents, GUI's, or CLI's) besides EJB
-// timers, we set the max pool size to 60, which is double the default value, to minimize the chances of EJB
+// timers, we set the max pool size to 50 (the default is 30) to lower the chances of EJB
// timer invocations, which are the most critical, from having to block and potentially getting backed up in the
// queue. For more details, see https://bugzilla.redhat.com/show_bug.cgi?id=693232 (ips, 05/05/11).
-@PoolClass(value = StrictMaxPool.class, maxSize = 60)
+@PoolClass(value = StrictMaxPool.class, maxSize = 50)
public class ServerManagerBean implements ServerManagerLocal {
private final Log log = LogFactory.getLog(ServerManagerBean.class);
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemManagerBean.java
index a03f525..67184cf 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemManagerBean.java
@@ -84,10 +84,10 @@ import org.rhq.enterprise.server.util.SystemDatabaseInformation;
// heap space to gradually leak until the Server eventually ran out of memory. Hence, we must use a
// {@link StrictMaxPool}, which will use a fixed pool of instances of this SLSB, instead of a ThreadlocalPool.
// Because most of these SLSB's are also invoked by other callers (i.e. Agents, GUI's, or CLI's) besides EJB
-// timers, we set the max pool size to 60, which is double the default value, to minimize the chances of EJB
+// timers, we set the max pool size to 50 (the default is 30) to lower the chances of EJB
// timer invocations, which are the most critical, from having to block and potentially getting backed up in the
// queue. For more details, see https://bugzilla.redhat.com/show_bug.cgi?id=693232 (ips, 05/05/11).
-@PoolClass(value = StrictMaxPool.class, maxSize = 60)
+@PoolClass(value = StrictMaxPool.class, maxSize = 50)
public class SystemManagerBean implements SystemManagerLocal, SystemManagerRemote {
private final String SQL_VACUUM = "VACUUM ANALYZE {0}";
diff --git a/modules/enterprise/server/jar/src/main/resources/META-INF/jboss.xml b/modules/enterprise/server/jar/src/main/resources/META-INF/jboss.xml
index 95354d8..eef6d52 100644
--- a/modules/enterprise/server/jar/src/main/resources/META-INF/jboss.xml
+++ b/modules/enterprise/server/jar/src/main/resources/META-INF/jboss.xml
@@ -1,5 +1,6 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0"?>
<jboss>
</jboss>
+
commit dc67f7b6b6750537b253aaf21acbebcc6b72fc0d
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Mon May 9 17:11:45 2011 -0400
[BZ 697751 - ResourcePackageDetails.getFileName() returns "c:\fakepath\xa.rar" when uploading file in Chrome and IE]
IE and Chrome provide an absolute filename for the uploaded item,
which needs to be trimmed down to what FF provides, just the name portion.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/FileUploadServlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/FileUploadServlet.java
index 2c8e514..e8265a6 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/FileUploadServlet.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/FileUploadServlet.java
@@ -179,7 +179,20 @@ public class FileUploadServlet extends HttpServlet {
protected File forceToFile(FileItem fileItem) throws IOException, ServletException {
if (fileItem.isInMemory()) {
- File tmpFile = File.createTempFile("" + fileItem.getName(), null);
+ String name = fileItem.getName();
+
+ if (null == name) {
+ throw new IllegalArgumentException("FileItem has null name");
+ }
+
+ // some browsers (IE, Chrome) pass an absolute filename, we just want the name of the file, no paths
+ name = name.replace('\\', '/');
+ if (name.length() > 2 && name.charAt(1) == ':') {
+ name = name.substring(2);
+ }
+ name = new File(name).getName();
+
+ File tmpFile = File.createTempFile(name, null);
try {
fileItem.write(tmpFile);
return tmpFile;
commit aa5e5ba286997779ba1e735e5680f73c3854fd6d
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Mon May 9 17:06:07 2011 -0400
[BZ 703252 - IE (IE7, IE8) unable to load CoreGUI]
- Add DOCTYPE to CoreGUI.html. This directs IE to use standards mode as
opposed to quirks mode.
- Comment out the gwt standard.css from CoreGUI.gwt.xml. This should not
be here as suggested by smartgwt, seems to not help us, and seemed link
to failed app loads in IE.
diff --git a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml
index c2ba874..4c2ee34 100644
--- a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml
+++ b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml
@@ -10,7 +10,11 @@
<inherits name='com.smartgwt.SmartGwt' />
<inherits name="com.smartgwt.tools.SmartGwtTools"/>
- <!--<inherits name='com.google.gwt.user.theme.standard.Standard'/>-->
+ <!-- removing this, we can add it back if we find something that looks odd. But,
+ 1) it seemed like a trouble spot during initial load for certain IE configurations
+ 2) we probably don't want to be defaulting to GWT standards as opposed to SmartGWT.
+ <inherits name='com.google.gwt.user.theme.standard.Standard'/>
+ -->
<!--
<inherits name="com.smartclient.theme.graphite.Graphite"/>
-->
diff --git a/modules/enterprise/gui/coregui/src/main/webapp/CoreGUI.html b/modules/enterprise/gui/coregui/src/main/webapp/CoreGUI.html
index 5432ecb..1b96d09 100644
--- a/modules/enterprise/gui/coregui/src/main/webapp/CoreGUI.html
+++ b/modules/enterprise/gui/coregui/src/main/webapp/CoreGUI.html
@@ -1,3 +1,4 @@
+<!doctype html>
<html>
<head>
<title>RHQ Core Application</title>
commit 76bd674107fefba2344279cabe256c02344be5ea
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Mon May 9 17:03:40 2011 -0400
Related to [BZ 702390 - Large number of BundleDeployments for a single Bundle causes fetch serialization issues]
Ensure (optional=false) set for LAZY load required (i.e. nullable = false) associations.
This should ensure lazy load.
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 e288428..bc9d927 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
@@ -50,7 +50,7 @@ import org.rhq.core.domain.alert.notification.AlertNotificationLog;
* @author Joseph Marques
*/
@Entity
-@NamedQueries({
+@NamedQueries( {
@NamedQuery(name = Alert.QUERY_FIND_BY_MEASUREMENT_DEFINITION_ID, query = "SELECT a " + " FROM Alert AS a "
+ " JOIN a.alertDefinition definition " + " JOIN definition.conditions condition "
+ " WHERE condition.measurementDefinition.id = :measurementDefinitionId "
@@ -123,10 +123,8 @@ import org.rhq.core.domain.alert.notification.AlertNotificationLog;
+ " FROM AlertDefinition ad " //
+ " JOIN ad.alerts innerA " //
+ " WHERE ad.resource.id IN ( :resourceIds ) )"),
- @NamedQuery(name = Alert.QUERY_DELETE_BY_RESOURCE_TEMPLATE, query =
- "DELETE FROM Alert alert "
- + "WHERE alert.id IN (SELECT innerAlerts.id "
- + " FROM AlertDefinition alertDef "
+ @NamedQuery(name = Alert.QUERY_DELETE_BY_RESOURCE_TEMPLATE, query = "DELETE FROM Alert alert "
+ + "WHERE alert.id IN (SELECT innerAlerts.id " + " FROM AlertDefinition alertDef "
+ " JOIN alertDef.alerts innerAlerts "
+ " WHERE alertDef.resourceType.id = :resourceTypeId)"),
@NamedQuery(name = Alert.QUERY_DELETE_BY_RESOURCE_GROUPS, query = "" //
@@ -272,8 +270,8 @@ public class Alert implements Serializable {
@Column(name = "RECOVERY_ID")
private Integer recoveryId;
- @JoinColumn(name = "RECOVERY_ID", referencedColumnName = "ID", insertable = false, updatable = false)
- @ManyToOne(fetch = FetchType.LAZY)
+ @JoinColumn(name = "RECOVERY_ID", referencedColumnName = "ID", insertable = false, updatable = false, nullable = false)
+ @ManyToOne(fetch = FetchType.LAZY, optional = false)
private AlertDefinition recoveryAlertDefinition;
@Column(name = "WILL_RECOVER", nullable = false)
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleFile.java b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleFile.java
index f6b5c29..dfba7d4 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleFile.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleFile.java
@@ -67,7 +67,7 @@ public class BundleFile implements Serializable {
private int id;
@JoinColumn(name = "BUNDLE_VERSION_ID", referencedColumnName = "ID", nullable = false)
- @ManyToOne(fetch = FetchType.LAZY)
+ @ManyToOne(fetch = FetchType.LAZY, optional = false)
private BundleVersion bundleVersion;
// Note, currently we cascade remove the PackageVersion because BundleVersions do not share
@@ -75,7 +75,7 @@ public class BundleFile implements Serializable {
// the future (e.e reuse of PVs if the sha256 is not different) then this will will have to change
// to reflect the fact that multiple BundleFiles could reference the same PackageVersion.
@JoinColumn(name = "PACKAGE_VERSION_ID", referencedColumnName = "ID", nullable = false)
- @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.REMOVE)
+ @ManyToOne(fetch = FetchType.LAZY, optional = false, cascade = CascadeType.REMOVE)
private PackageVersion packageVersion;
public BundleFile() {
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeployment.java b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeployment.java
index 7cd7b50..fec79da 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeployment.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeployment.java
@@ -78,11 +78,11 @@ public class BundleResourceDeployment implements Serializable {
private int id;
@JoinColumn(name = "BUNDLE_DEPLOYMENT_ID", referencedColumnName = "ID", nullable = false)
- @ManyToOne(fetch = FetchType.LAZY)
+ @ManyToOne(fetch = FetchType.LAZY, optional = false)
private BundleDeployment bundleDeployment;
@JoinColumn(name = "RESOURCE_ID", referencedColumnName = "ID", nullable = false)
- @ManyToOne(fetch = FetchType.LAZY)
+ @ManyToOne(fetch = FetchType.LAZY, optional = false)
private Resource resource;
@Column(name = "STATUS", nullable = false)
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeploymentHistory.java b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeploymentHistory.java
index b04e257..6337c4e 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeploymentHistory.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeploymentHistory.java
@@ -68,7 +68,7 @@ public class BundleResourceDeploymentHistory implements Serializable {
private int id;
@JoinColumn(name = "BUNDLE_RES_DEPLOY_ID", referencedColumnName = "ID", nullable = false)
- @ManyToOne(fetch = FetchType.LAZY)
+ @ManyToOne(fetch = FetchType.LAZY, optional = false)
private BundleResourceDeployment resourceDeployment;
@Column(name = "SUBJECT_NAME", nullable = true)
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/cloud/FailoverList.java b/modules/core/domain/src/main/java/org/rhq/core/domain/cloud/FailoverList.java
index 40dd426..000284d 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/cloud/FailoverList.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/cloud/FailoverList.java
@@ -1,178 +1,178 @@
-/*
- * 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, version 2, as
- * published by the Free Software Foundation, and/or the GNU Lesser
- * General Public License, version 2.1, also as published by the Free
- * Software Foundation.
- *
- * 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 and the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU General Public License
- * and the GNU Lesser General Public License along with this program;
- * if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.rhq.core.domain.cloud;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.NamedQueries;
-import javax.persistence.NamedQuery;
-import javax.persistence.OneToMany;
-import javax.persistence.OrderBy;
-import javax.persistence.PrePersist;
-import javax.persistence.SequenceGenerator;
-import javax.persistence.Table;
-
-import org.rhq.core.domain.resource.Agent;
-
-/**
- * An object to capture a snapshot of the order in which particular agents
- * will fail over to particular servers. The {@link FailoverListDetails}
- * will contain the ordered references back to other {@link Server}s.
- *
- * @author jmarques
- *
- */
-@Entity(name = "FailoverList")
-@NamedQueries( //
-{
- @NamedQuery(name = FailoverList.QUERY_DELETE_VIA_AGENT, query = "DELETE FROM FailoverList fl WHERE fl.agent = :agent"),
- @NamedQuery(name = FailoverList.QUERY_DELETE_VIA_PARTITION_EVENT, query = "DELETE FROM FailoverList fl WHERE fl.partitionEvent = :partitionEvent"),
- @NamedQuery(name = FailoverList.QUERY_GET_VIA_AGENT, query = "SELECT fl FROM FailoverList fl WHERE fl.agent = :agent"),
- @NamedQuery(name = FailoverList.QUERY_TRUNCATE, query = "DELETE FROM FailoverList") })
-@SequenceGenerator(name = "id", sequenceName = "RHQ_FAILOVER_LIST_ID_SEQ")
-@Table(name = "RHQ_FAILOVER_LIST")
-public class FailoverList implements Serializable {
-
- public static final long serialVersionUID = 1L;
-
- public static final String QUERY_DELETE_VIA_AGENT = "FailoverList.deletViaAgent";
- public static final String QUERY_DELETE_VIA_PARTITION_EVENT = "FailoverList.deletViaPartitionEvent";
- public static final String QUERY_GET_VIA_AGENT = "FailoverList.getViaAgent";
- public static final String QUERY_TRUNCATE = "FailoverList.truncate";
-
- @Column(name = "ID", nullable = false)
- @GeneratedValue(strategy = GenerationType.AUTO, generator = "id")
- @Id
- private int id;
-
- @JoinColumn(name = "PARTITION_EVENT_ID", referencedColumnName = "ID", nullable = false)
- @ManyToOne
- protected PartitionEvent partitionEvent;
-
- @JoinColumn(name = "AGENT_ID", referencedColumnName = "ID", nullable = false)
- @ManyToOne(fetch = FetchType.LAZY)
- protected Agent agent;
-
- @Column(name = "AGENT_ID", insertable = false, updatable = false)
- private int agentId;
-
- @Column(name = "CTIME", nullable = false)
- private long ctime;
-
- @OneToMany(mappedBy = "failoverList", cascade = CascadeType.ALL)
- @OrderBy("ordinal ASC")
- private List<FailoverListDetails> serverList = new ArrayList<FailoverListDetails>();
-
- // required for JPA
- protected FailoverList() {
- }
-
- public FailoverList(PartitionEvent event, Agent agent) {
- this.partitionEvent = event;
- this.agent = agent;
- }
-
- public PartitionEvent getPartitionEvent() {
- return partitionEvent;
- }
-
- public void setPartitionEvent(PartitionEvent partitionEvent) {
- this.partitionEvent = partitionEvent;
- }
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public Agent getAgent() {
- return agent;
- }
-
- public void setAgent(Agent agent) {
- this.agent = agent;
- }
-
- public long getCtime() {
- return ctime;
- }
-
- public List<FailoverListDetails> getServerList() {
- return serverList;
- }
-
- public void setServerList(List<FailoverListDetails> serverList) {
- this.serverList = serverList;
- }
-
- @PrePersist
- void onPersist() {
- this.ctime = System.currentTimeMillis();
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + agentId;
- result = prime * result + (int) (ctime ^ (ctime >>> 32));
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
-
- if (obj == null || !(obj instanceof FailoverList)) {
- return false;
- }
-
- final FailoverList other = (FailoverList) obj;
-
- if (agentId != other.agentId) {
- return false;
- }
-
- if (ctime != other.ctime) {
- return false;
- }
-
- return true;
- }
-}
+/*
+ * 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, version 2, as
+ * published by the Free Software Foundation, and/or the GNU Lesser
+ * General Public License, version 2.1, also as published by the Free
+ * Software Foundation.
+ *
+ * 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 and the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the GNU Lesser General Public License along with this program;
+ * if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.rhq.core.domain.cloud;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.OneToMany;
+import javax.persistence.OrderBy;
+import javax.persistence.PrePersist;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+
+import org.rhq.core.domain.resource.Agent;
+
+/**
+ * An object to capture a snapshot of the order in which particular agents
+ * will fail over to particular servers. The {@link FailoverListDetails}
+ * will contain the ordered references back to other {@link Server}s.
+ *
+ * @author jmarques
+ *
+ */
+@Entity(name = "FailoverList")
+@NamedQueries( //
+{
+ @NamedQuery(name = FailoverList.QUERY_DELETE_VIA_AGENT, query = "DELETE FROM FailoverList fl WHERE fl.agent = :agent"),
+ @NamedQuery(name = FailoverList.QUERY_DELETE_VIA_PARTITION_EVENT, query = "DELETE FROM FailoverList fl WHERE fl.partitionEvent = :partitionEvent"),
+ @NamedQuery(name = FailoverList.QUERY_GET_VIA_AGENT, query = "SELECT fl FROM FailoverList fl WHERE fl.agent = :agent"),
+ @NamedQuery(name = FailoverList.QUERY_TRUNCATE, query = "DELETE FROM FailoverList") })
+@SequenceGenerator(name = "id", sequenceName = "RHQ_FAILOVER_LIST_ID_SEQ")
+@Table(name = "RHQ_FAILOVER_LIST")
+public class FailoverList implements Serializable {
+
+ public static final long serialVersionUID = 1L;
+
+ public static final String QUERY_DELETE_VIA_AGENT = "FailoverList.deletViaAgent";
+ public static final String QUERY_DELETE_VIA_PARTITION_EVENT = "FailoverList.deletViaPartitionEvent";
+ public static final String QUERY_GET_VIA_AGENT = "FailoverList.getViaAgent";
+ public static final String QUERY_TRUNCATE = "FailoverList.truncate";
+
+ @Column(name = "ID", nullable = false)
+ @GeneratedValue(strategy = GenerationType.AUTO, generator = "id")
+ @Id
+ private int id;
+
+ @JoinColumn(name = "PARTITION_EVENT_ID", referencedColumnName = "ID", nullable = false)
+ @ManyToOne(optional = false)
+ protected PartitionEvent partitionEvent;
+
+ @JoinColumn(name = "AGENT_ID", referencedColumnName = "ID", nullable = false)
+ @ManyToOne(fetch = FetchType.LAZY, optional = false)
+ protected Agent agent;
+
+ @Column(name = "AGENT_ID", insertable = false, updatable = false)
+ private int agentId;
+
+ @Column(name = "CTIME", nullable = false)
+ private long ctime;
+
+ @OneToMany(mappedBy = "failoverList", cascade = CascadeType.ALL)
+ @OrderBy("ordinal ASC")
+ private List<FailoverListDetails> serverList = new ArrayList<FailoverListDetails>();
+
+ // required for JPA
+ protected FailoverList() {
+ }
+
+ public FailoverList(PartitionEvent event, Agent agent) {
+ this.partitionEvent = event;
+ this.agent = agent;
+ }
+
+ public PartitionEvent getPartitionEvent() {
+ return partitionEvent;
+ }
+
+ public void setPartitionEvent(PartitionEvent partitionEvent) {
+ this.partitionEvent = partitionEvent;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public Agent getAgent() {
+ return agent;
+ }
+
+ public void setAgent(Agent agent) {
+ this.agent = agent;
+ }
+
+ public long getCtime() {
+ return ctime;
+ }
+
+ public List<FailoverListDetails> getServerList() {
+ return serverList;
+ }
+
+ public void setServerList(List<FailoverListDetails> serverList) {
+ this.serverList = serverList;
+ }
+
+ @PrePersist
+ void onPersist() {
+ this.ctime = System.currentTimeMillis();
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + agentId;
+ result = prime * result + (int) (ctime ^ (ctime >>> 32));
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+
+ if (obj == null || !(obj instanceof FailoverList)) {
+ return false;
+ }
+
+ final FailoverList other = (FailoverList) obj;
+
+ if (agentId != other.agentId) {
+ return false;
+ }
+
+ if (ctime != other.ctime) {
+ return false;
+ }
+
+ return true;
+ }
+}
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/cloud/FailoverListDetails.java b/modules/core/domain/src/main/java/org/rhq/core/domain/cloud/FailoverListDetails.java
index 51ae161..53b98b0 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/cloud/FailoverListDetails.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/cloud/FailoverListDetails.java
@@ -1,169 +1,169 @@
-/*
- * 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, version 2, as
- * published by the Free Software Foundation, and/or the GNU Lesser
- * General Public License, version 2.1, also as published by the Free
- * Software Foundation.
- *
- * 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 and the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU General Public License
- * and the GNU Lesser General Public License along with this program;
- * if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.rhq.core.domain.cloud;
-
-import java.io.Serializable;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.NamedQueries;
-import javax.persistence.NamedQuery;
-import javax.persistence.SequenceGenerator;
-import javax.persistence.Table;
-
-/**
- * An object to capture a snapshot of the order in which particular agents
- * will fail over to particular servers. The {@link FailoverListDetails}
- * will contain the ordered references back to other {@link Server}s.
- *
- * @author jmarques
- * @author jshaughnessy
- *
- */
-@Entity(name = "FailoverListDetails")
-@NamedQueries( //
-{
- @NamedQuery(name = FailoverListDetails.QUERY_GET_VIA_AGENT_ID, query = "SELECT fld FROM FailoverListDetails fld WHERE fld.failoverList IN ( SELECT fl FROM FailoverList fl WHERE fl.agent.id = :agentId )"),
- @NamedQuery(name = FailoverListDetails.QUERY_GET_VIA_AGENT_ID_WITH_SERVERS, query = "SELECT fld FROM FailoverListDetails fld JOIN FETCH fld.server WHERE fld.failoverList IN ( SELECT fl FROM FailoverList fl WHERE fl.agent.id = :agentId )"),
- @NamedQuery(name = FailoverListDetails.QUERY_DELETE_VIA_AGENT, query = "DELETE FROM FailoverListDetails fld WHERE fld.failoverList IN ( SELECT fl FROM FailoverList fl WHERE fl.agent = :agent )"),
- @NamedQuery(name = FailoverListDetails.QUERY_DELETE_VIA_SERVER, query = "DELETE FROM FailoverListDetails fld WHERE fld.server.id = :serverId"),
- @NamedQuery(name = FailoverListDetails.QUERY_GET_ASSIGNED_LOADS, query = "SELECT new org.rhq.core.domain.cloud.composite.FailoverListDetailsComposite(fld.ordinal, fld.serverId, COUNT(fld.serverId)) FROM FailoverListDetails fld GROUP BY fld.ordinal, fld.serverId ORDER BY fld.ordinal ASC"),
- @NamedQuery(name = FailoverListDetails.QUERY_TRUNCATE, query = "DELETE FROM FailoverListDetails") })
-@SequenceGenerator(name = "id", sequenceName = "RHQ_FAILOVER_DETAILS_ID_SEQ")
-@Table(name = "RHQ_FAILOVER_DETAILS")
-public class FailoverListDetails implements Serializable {
-
- public static final long serialVersionUID = 1L;
-
- public static final String QUERY_GET_VIA_AGENT_ID = "FailoverListDetails.getViaAgentId";
- public static final String QUERY_GET_VIA_AGENT_ID_WITH_SERVERS = "FailoverListDetails.getViaAgentIdWithServers";
- public static final String QUERY_DELETE_VIA_AGENT = "FailoverListDetails.deleteViaAgent";
- public static final String QUERY_DELETE_VIA_SERVER = "FailoverListDetails.deleteViaServer";
- public static final String QUERY_GET_ASSIGNED_LOADS = "FailoverListDetails.getAssignedLoads";
- public static final String QUERY_TRUNCATE = "FailoverListDetails.truncate";
-
- @Column(name = "ID", nullable = false)
- @GeneratedValue(strategy = GenerationType.AUTO, generator = "id")
- @Id
- private int id;
-
- @JoinColumn(name = "FAILOVER_LIST_ID", referencedColumnName = "ID", nullable = false)
- @ManyToOne
- protected FailoverList failoverList;
-
- @Column(name = "ORDINAL", nullable = false)
- private int ordinal;
-
- @JoinColumn(name = "SERVER_ID", referencedColumnName = "ID", nullable = false)
- @ManyToOne(fetch = FetchType.LAZY)
- protected Server server;
-
- @Column(name = "SERVER_ID", insertable = false, updatable = false)
- private int serverId;
-
- // required for JPA
- protected FailoverListDetails() {
- }
-
- public FailoverListDetails(FailoverList failoverList, int ordinal, Server server) {
- super();
- this.failoverList = failoverList;
- this.ordinal = ordinal;
- this.server = server;
- this.serverId = server.getId();
- }
-
- public FailoverList getFailoverList() {
- return failoverList;
- }
-
- public void setFailoverList(FailoverList failoverList) {
- this.failoverList = failoverList;
- }
-
- public int getOrdinal() {
- return ordinal;
- }
-
- public void setOrdinal(int ordinal) {
- this.ordinal = ordinal;
- }
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public Server getServer() {
- return server;
- }
-
- public void setServer(Server agent) {
- this.server = agent;
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + serverId;
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
-
- if (obj == null || !(obj instanceof FailoverListDetails)) {
- return false;
- }
-
- final FailoverListDetails other = (FailoverListDetails) obj;
-
- if (failoverList == null) {
- if (other.failoverList != null) {
- return false;
- }
- } else if (!failoverList.equals(other.failoverList)) {
- return false;
- }
-
- if (ordinal != other.ordinal) {
- return false;
- }
-
- return true;
- }
-
-}
+/*
+ * 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, version 2, as
+ * published by the Free Software Foundation, and/or the GNU Lesser
+ * General Public License, version 2.1, also as published by the Free
+ * Software Foundation.
+ *
+ * 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 and the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the GNU Lesser General Public License along with this program;
+ * if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.rhq.core.domain.cloud;
+
+import java.io.Serializable;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+
+/**
+ * An object to capture a snapshot of the order in which particular agents
+ * will fail over to particular servers. The {@link FailoverListDetails}
+ * will contain the ordered references back to other {@link Server}s.
+ *
+ * @author jmarques
+ * @author jshaughnessy
+ *
+ */
+@Entity(name = "FailoverListDetails")
+@NamedQueries( //
+{
+ @NamedQuery(name = FailoverListDetails.QUERY_GET_VIA_AGENT_ID, query = "SELECT fld FROM FailoverListDetails fld WHERE fld.failoverList IN ( SELECT fl FROM FailoverList fl WHERE fl.agent.id = :agentId )"),
+ @NamedQuery(name = FailoverListDetails.QUERY_GET_VIA_AGENT_ID_WITH_SERVERS, query = "SELECT fld FROM FailoverListDetails fld JOIN FETCH fld.server WHERE fld.failoverList IN ( SELECT fl FROM FailoverList fl WHERE fl.agent.id = :agentId )"),
+ @NamedQuery(name = FailoverListDetails.QUERY_DELETE_VIA_AGENT, query = "DELETE FROM FailoverListDetails fld WHERE fld.failoverList IN ( SELECT fl FROM FailoverList fl WHERE fl.agent = :agent )"),
+ @NamedQuery(name = FailoverListDetails.QUERY_DELETE_VIA_SERVER, query = "DELETE FROM FailoverListDetails fld WHERE fld.server.id = :serverId"),
+ @NamedQuery(name = FailoverListDetails.QUERY_GET_ASSIGNED_LOADS, query = "SELECT new org.rhq.core.domain.cloud.composite.FailoverListDetailsComposite(fld.ordinal, fld.serverId, COUNT(fld.serverId)) FROM FailoverListDetails fld GROUP BY fld.ordinal, fld.serverId ORDER BY fld.ordinal ASC"),
+ @NamedQuery(name = FailoverListDetails.QUERY_TRUNCATE, query = "DELETE FROM FailoverListDetails") })
+@SequenceGenerator(name = "id", sequenceName = "RHQ_FAILOVER_DETAILS_ID_SEQ")
+@Table(name = "RHQ_FAILOVER_DETAILS")
+public class FailoverListDetails implements Serializable {
+
+ public static final long serialVersionUID = 1L;
+
+ public static final String QUERY_GET_VIA_AGENT_ID = "FailoverListDetails.getViaAgentId";
+ public static final String QUERY_GET_VIA_AGENT_ID_WITH_SERVERS = "FailoverListDetails.getViaAgentIdWithServers";
+ public static final String QUERY_DELETE_VIA_AGENT = "FailoverListDetails.deleteViaAgent";
+ public static final String QUERY_DELETE_VIA_SERVER = "FailoverListDetails.deleteViaServer";
+ public static final String QUERY_GET_ASSIGNED_LOADS = "FailoverListDetails.getAssignedLoads";
+ public static final String QUERY_TRUNCATE = "FailoverListDetails.truncate";
+
+ @Column(name = "ID", nullable = false)
+ @GeneratedValue(strategy = GenerationType.AUTO, generator = "id")
+ @Id
+ private int id;
+
+ @JoinColumn(name = "FAILOVER_LIST_ID", referencedColumnName = "ID", nullable = false)
+ @ManyToOne(optional = false)
+ protected FailoverList failoverList;
+
+ @Column(name = "ORDINAL", nullable = false)
+ private int ordinal;
+
+ @JoinColumn(name = "SERVER_ID", referencedColumnName = "ID", nullable = false)
+ @ManyToOne(fetch = FetchType.LAZY, optional = false)
+ protected Server server;
+
+ @Column(name = "SERVER_ID", insertable = false, updatable = false)
+ private int serverId;
+
+ // required for JPA
+ protected FailoverListDetails() {
+ }
+
+ public FailoverListDetails(FailoverList failoverList, int ordinal, Server server) {
+ super();
+ this.failoverList = failoverList;
+ this.ordinal = ordinal;
+ this.server = server;
+ this.serverId = server.getId();
+ }
+
+ public FailoverList getFailoverList() {
+ return failoverList;
+ }
+
+ public void setFailoverList(FailoverList failoverList) {
+ this.failoverList = failoverList;
+ }
+
+ public int getOrdinal() {
+ return ordinal;
+ }
+
+ public void setOrdinal(int ordinal) {
+ this.ordinal = ordinal;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public Server getServer() {
+ return server;
+ }
+
+ public void setServer(Server agent) {
+ this.server = agent;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + serverId;
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+
+ if (obj == null || !(obj instanceof FailoverListDetails)) {
+ return false;
+ }
+
+ final FailoverListDetails other = (FailoverListDetails) obj;
+
+ if (failoverList == null) {
+ if (other.failoverList != null) {
+ return false;
+ }
+ } else if (!failoverList.equals(other.failoverList)) {
+ return false;
+ }
+
+ if (ordinal != other.ordinal) {
+ return false;
+ }
+
+ return true;
+ }
+
+}
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/content/ContentSourceSyncResults.java b/modules/core/domain/src/main/java/org/rhq/core/domain/content/ContentSourceSyncResults.java
index b72c52a..86521d4 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/content/ContentSourceSyncResults.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/content/ContentSourceSyncResults.java
@@ -67,7 +67,7 @@ public class ContentSourceSyncResults implements ContentSyncResults, Serializabl
private int id;
@JoinColumn(name = "CONTENT_SRC_ID", referencedColumnName = "ID", nullable = false)
- @ManyToOne(fetch = FetchType.LAZY)
+ @ManyToOne(fetch = FetchType.LAZY, optional = false)
private ContentSource contentSource;
@Column(name = "STATUS", nullable = false)
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/content/RepoSyncResults.java b/modules/core/domain/src/main/java/org/rhq/core/domain/content/RepoSyncResults.java
index e37de93..d88ab97 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/content/RepoSyncResults.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/content/RepoSyncResults.java
@@ -66,7 +66,7 @@ public class RepoSyncResults implements Serializable, ContentSyncResults {
private int id;
@JoinColumn(name = "REPO_ID", referencedColumnName = "ID", nullable = false)
- @ManyToOne(fetch = FetchType.LAZY)
+ @ManyToOne(fetch = FetchType.LAZY, optional = false)
private Repo repo;
@Column(name = "STATUS", nullable = false)
@@ -168,7 +168,9 @@ public class RepoSyncResults implements Serializable, ContentSyncResults {
@Override
public String toString() {
- StringBuilder str = new StringBuilder(this.getClass().getName().substring(this.getClass().getName().lastIndexOf(".")+1) + ": ");
+ StringBuilder str = new StringBuilder(this.getClass().getName().substring(
+ this.getClass().getName().lastIndexOf(".") + 1)
+ + ": ");
str.append("start-time=[" + new Date(startTime));
str.append("], end-time=[" + ((endTime != null) ? new Date(endTime) : "---"));
str.append("], percentComplete=[" + status);
commit 310d34c51ab650b47c652d4d8f60846f781c5fb2
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Mon May 9 17:01:16 2011 -0400
BZ 702748 - be able to revert back multiple deployments
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
index 7a6e08a..7b45a70 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
@@ -915,7 +915,7 @@ public class BundleManagerBean implements BundleManagerLocal, BundleManagerRemot
@RequiredPermission(Permission.MANAGE_BUNDLE)
public BundleDeployment scheduleBundleDeployment(Subject subject, int bundleDeploymentId, boolean isCleanDeployment)
throws Exception {
- return scheduleBundleDeploymentImpl(subject, bundleDeploymentId, isCleanDeployment, false);
+ return scheduleBundleDeploymentImpl(subject, bundleDeploymentId, isCleanDeployment, false, null);
}
@Override
@@ -960,11 +960,13 @@ public class BundleManagerBean implements BundleManagerLocal, BundleManagerRemot
BundleDeployment revertDeployment = bundleManager.createBundleDeploymentInNewTrans(subject, prevDeployment
.getBundleVersion().getId(), bundleDestinationId, name, desc, config);
- return scheduleBundleDeploymentImpl(subject, revertDeployment.getId(), isCleanDeployment, true);
+ return scheduleBundleDeploymentImpl(subject, revertDeployment.getId(), isCleanDeployment, true, prevDeployment
+ .getReplacedBundleDeploymentId());
}
+ // revertedDeploymentReplacedDeployment is only meaningful if isRevert is true
private BundleDeployment scheduleBundleDeploymentImpl(Subject subject, int bundleDeploymentId,
- boolean isCleanDeployment, boolean isRevert) throws Exception {
+ boolean isCleanDeployment, boolean isRevert, Integer revertedDeploymentReplacedDeployment) throws Exception {
BundleDeployment newDeployment = entityManager.find(BundleDeployment.class, bundleDeploymentId);
if (null == newDeployment) {
@@ -998,9 +1000,22 @@ public class BundleManagerBean implements BundleManagerLocal, BundleManagerRemot
for (BundleDeployment d : currentDeployments) {
if (d.isLive()) {
d.setLive(false);
- // you can not revert a revert, it does not logically replace anything
if (!isRevert) {
newDeployment.setReplacedBundleDeploymentId(d.getId());
+ } else {
+ // we are doing a revert; so our "replacedDeployment" should be what the deployment we
+ // are reverting to replaced. For example, assume I deployed three bundles:
+ // Deployment #1 - replaced nothing (hence replacedBundleDeploymentId == null)
+ // Deployment #2 - replaced #1
+ // Deployment #3 - replaced #2
+ // Now do a revert. Reverting the live deployment #3 means we really want to re-deploy #2.
+ // This new deployment gets a new ID of #4, but it is actually a deployment equivalent to #2.
+ // If our deploy #4 is actually a redeploy of #2, we need to prepare for the user wanting
+ // to revert #4 by setting the replacedBundleDeploymentId to that which #2 had - this being #1.
+ // Deployment #4 - replaced #1
+ // Now if we ask to revert #4, we will actually be re-deploying #1, which is what we want.
+ // This allows us to revert back multiple steps.
+ newDeployment.setReplacedBundleDeploymentId(revertedDeploymentReplacedDeployment);
}
break;
}
commit 90090e092f59a2e431255defbc16e36a6ece1e2b
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Mon May 9 14:39:24 2011 -0400
switch eclipse to use 4.1.0-snapshot version
diff --git a/.classpath b/.classpath
index 1cb3205..2ca408f 100644
--- a/.classpath
+++ b/.classpath
@@ -115,7 +115,7 @@
<classpathentry exported="true" kind="var" path="M2_REPO/org/unitils/unitils-dbunit/3.1/unitils-dbunit-3.1.jar"/>
<classpathentry exported="true" kind="var" path="M2_REPO/org/unitils/unitils-orm/3.1/unitils-orm-3.1.jar"/>
<classpathentry exported="true" kind="var" path="M2_REPO/org/unitils/unitils-testng/3.1/unitils-testng-3.1.jar"/>
- <classpathentry exported="true" kind="lib" path="modules/enterprise/remoting/webservices/target/rhq-remoting-webservices-4.0.0-SNAPSHOT/wsconsume-output"/>
+ <classpathentry exported="true" kind="lib" path="modules/enterprise/remoting/webservices/target/rhq-remoting-webservices-4.1.0-SNAPSHOT/wsconsume-output"/>
<classpathentry kind="src" path="modules/common/ant-bundle/src/main/java"/>
<classpathentry kind="src" path="modules/common/ant-bundle/src/test/java"/>
<classpathentry kind="src" path="modules/common/filetemplate-bundle/src/main/java"/>
commit de100909221c762ccdbafef47531661379045cf1
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri May 6 17:11:45 2011 -0400
upgrade version from 4.0.0-SNAPSHOT to 4.1.0-SNAPSHOT in all poms
diff --git a/etc/apt/pom.xml b/etc/apt/pom.xml
index 0fe6a92..65136e1 100644
--- a/etc/apt/pom.xml
+++ b/etc/apt/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/etc/samples/perspectives/sample-perspective/app/pom.xml b/etc/samples/perspectives/sample-perspective/app/pom.xml
index 67382f9..ced290d 100644
--- a/etc/samples/perspectives/sample-perspective/app/pom.xml
+++ b/etc/samples/perspectives/sample-perspective/app/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/etc/samples/perspectives/sample-perspective/perspective/pom.xml b/etc/samples/perspectives/sample-perspective/perspective/pom.xml
index 1ffe65f..963a8ca 100644
--- a/etc/samples/perspectives/sample-perspective/perspective/pom.xml
+++ b/etc/samples/perspectives/sample-perspective/perspective/pom.xml
@@ -10,7 +10,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/etc/samples/skeleton-plugin/pom.xml b/etc/samples/skeleton-plugin/pom.xml
index 8055bc5..b72c93d 100644
--- a/etc/samples/skeleton-plugin/pom.xml
+++ b/etc/samples/skeleton-plugin/pom.xml
@@ -15,7 +15,7 @@
<description>A template for building a custom RHQ Agent plugin</description>
<properties>
- <rhq.version>4.0.0-SNAPSHOT</rhq.version>
+ <rhq.version>4.1.0-SNAPSHOT</rhq.version>
</properties>
<dependencies>
diff --git a/modules/cli-tests/pom.xml b/modules/cli-tests/pom.xml
index f714d03..b080025 100644
--- a/modules/cli-tests/pom.xml
+++ b/modules/cli-tests/pom.xml
@@ -8,7 +8,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
diff --git a/modules/common/ant-bundle/pom.xml b/modules/common/ant-bundle/pom.xml
index 71f43e7..1eb86ef 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.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 1c84528..352de33 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.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 110c8a1..184c5ad 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/common/pom.xml b/modules/common/pom.xml
index bb61b03..98d57a7 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
diff --git a/modules/core/client-api/pom.xml b/modules/core/client-api/pom.xml
index e5ea9a1..40201ad 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.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 f52e92d..5a8b356 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/core/dbutils/pom.xml b/modules/core/dbutils/pom.xml
index 64af8e7..063f2ce 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/core/domain/pom.xml b/modules/core/domain/pom.xml
index 2b84a8b..2f7c4be 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/core/gui/pom.xml b/modules/core/gui/pom.xml
index 884e360..bb4dc2c 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.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 eb11f1a..7d83f3d 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../../pom.xml</relativePath>
</parent>
diff --git a/modules/core/plugin-api/pom.xml b/modules/core/plugin-api/pom.xml
index 18846ad..fc78701 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.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 ad82fe0..367e1fa 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.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 5adfabf..f2953a6 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/core/plugindoc/pom.xml b/modules/core/plugindoc/pom.xml
index 2e5c467..24243e3 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/core/pom.xml b/modules/core/pom.xml
index 2bafeac..bc41a9b 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
diff --git a/modules/core/util/pom.xml b/modules/core/util/pom.xml
index a080670..4b50b78 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/agent/pom.xml b/modules/enterprise/agent/pom.xml
index 76c9071..08e6c9f 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../../pom.xml</relativePath>
</parent>
diff --git a/modules/enterprise/agentupdate/pom.xml b/modules/enterprise/agentupdate/pom.xml
index 2d1ea0b..8b7ffe8 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../../pom.xml</relativePath>
</parent>
diff --git a/modules/enterprise/binding/pom.xml b/modules/enterprise/binding/pom.xml
index 5b4ee27..a0497d0 100644
--- a/modules/enterprise/binding/pom.xml
+++ b/modules/enterprise/binding/pom.xml
@@ -3,11 +3,11 @@
<parent>
<artifactId>rhq-enterprise-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-script-bindings</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<name>RHQ Script Bindings</name>
<description>Abstraction of different facilities and default configurations for script bindings</description>
diff --git a/modules/enterprise/comm/pom.xml b/modules/enterprise/comm/pom.xml
index c029f62..f424704 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../../pom.xml</relativePath>
</parent>
diff --git a/modules/enterprise/gui/base-perspective-jar/pom.xml b/modules/enterprise/gui/base-perspective-jar/pom.xml
index 4d79169..cebd439 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../../../pom.xml</relativePath>
</parent>
diff --git a/modules/enterprise/gui/base-perspective-war/pom.xml b/modules/enterprise/gui/base-perspective-war/pom.xml
index 877f9f5..b66da2c 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../../../pom.xml</relativePath>
</parent>
diff --git a/modules/enterprise/gui/content_http-war/pom.xml b/modules/enterprise/gui/content_http-war/pom.xml
index 57a30b9..db7d757 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.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 b93f878..9352745 100644
--- a/modules/enterprise/gui/coregui/pom.xml
+++ b/modules/enterprise/gui/coregui/pom.xml
@@ -6,7 +6,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../../../pom.xml</relativePath>
</parent>
diff --git a/modules/enterprise/gui/installer-war/pom.xml b/modules/enterprise/gui/installer-war/pom.xml
index 7ea2401..47c257c 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../../../pom.xml</relativePath>
</parent>
diff --git a/modules/enterprise/gui/pom.xml b/modules/enterprise/gui/pom.xml
index f81b4c2..8e8cf66 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../../pom.xml</relativePath>
</parent>
diff --git a/modules/enterprise/gui/portal-war/pom.xml b/modules/enterprise/gui/portal-war/pom.xml
index 808b267..4e2ac9f 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../../../pom.xml</relativePath>
</parent>
diff --git a/modules/enterprise/gui/webdav-war/pom.xml b/modules/enterprise/gui/webdav-war/pom.xml
index 2fc4e3f..64e56bf 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../../../pom.xml</relativePath>
</parent>
diff --git a/modules/enterprise/pom.xml b/modules/enterprise/pom.xml
index b6461ea..01fb7f6 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
diff --git a/modules/enterprise/remoting/cli/pom.xml b/modules/enterprise/remoting/cli/pom.xml
index 370f509..df15270 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../../../pom.xml</relativePath>
</parent>
diff --git a/modules/enterprise/remoting/client-api/pom.xml b/modules/enterprise/remoting/client-api/pom.xml
index 872ac37..1a1c88c 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../../../pom.xml</relativePath>
</parent>
diff --git a/modules/enterprise/remoting/client-deps/pom.xml b/modules/enterprise/remoting/client-deps/pom.xml
index 1630e51..3fe07b7 100644
--- a/modules/enterprise/remoting/client-deps/pom.xml
+++ b/modules/enterprise/remoting/client-deps/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../../../pom.xml</relativePath>
</parent>
diff --git a/modules/enterprise/remoting/pom.xml b/modules/enterprise/remoting/pom.xml
index b7a9a46..f4b1866 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../../pom.xml</relativePath>
</parent>
diff --git a/modules/enterprise/remoting/webservices/pom.xml b/modules/enterprise/remoting/webservices/pom.xml
index 097e3c2..0792734 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../../../pom.xml</relativePath>
</parent>
diff --git a/modules/enterprise/server/client-api/pom.xml b/modules/enterprise/server/client-api/pom.xml
index fc4d0e7..c57eaba 100644
--- a/modules/enterprise/server/client-api/pom.xml
+++ b/modules/enterprise/server/client-api/pom.xml
@@ -5,13 +5,13 @@
<parent>
<artifactId>rhq-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../../../pom.xml</relativePath>
</parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-server-client-api</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<name>RHQ Enterprise Server Client API</name>
<description>The implementation of the client API when accessing the server locally</description>
diff --git a/modules/enterprise/server/container-lib/pom.xml b/modules/enterprise/server/container-lib/pom.xml
index 2376311..1aebae1 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../../../pom.xml</relativePath>
</parent>
diff --git a/modules/enterprise/server/container/pom.xml b/modules/enterprise/server/container/pom.xml
index b4116aa..7329bb5 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../../../pom.xml</relativePath>
</parent>
diff --git a/modules/enterprise/server/ear/pom.xml b/modules/enterprise/server/ear/pom.xml
index 220eee6..4d6ee84 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../../../pom.xml</relativePath>
</parent>
diff --git a/modules/enterprise/server/jar/pom.xml b/modules/enterprise/server/jar/pom.xml
index c6ebed5..307570e 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../../../pom.xml</relativePath>
</parent>
diff --git a/modules/enterprise/server/plugins/alert-cli/pom.xml b/modules/enterprise/server/plugins/alert-cli/pom.xml
index 96b129a..b380393 100644
--- a/modules/enterprise/server/plugins/alert-cli/pom.xml
+++ b/modules/enterprise/server/plugins/alert-cli/pom.xml
@@ -3,11 +3,11 @@
<parent>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
<artifactId>alert-cli</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<name>RHQ Enterprise Server CLI Script Alert Plugin</name>
<description>An alert sender able to execute an arbitrary CLI script as a response to an alert</description>
diff --git a/modules/enterprise/server/plugins/alert-email/pom.xml b/modules/enterprise/server/plugins/alert-email/pom.xml
index 54891ae..e1e1890 100644
--- a/modules/enterprise/server/plugins/alert-email/pom.xml
+++ b/modules/enterprise/server/plugins/alert-email/pom.xml
@@ -3,13 +3,13 @@
<parent>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.rhq.server</groupId>
<artifactId>alert-email</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<name>RHQ Enterprise Server Email Alert Plugin</name>
diff --git a/modules/enterprise/server/plugins/alert-irc/pom.xml b/modules/enterprise/server/plugins/alert-irc/pom.xml
index d9e695c..1b609e1 100644
--- a/modules/enterprise/server/plugins/alert-irc/pom.xml
+++ b/modules/enterprise/server/plugins/alert-irc/pom.xml
@@ -3,13 +3,13 @@
<parent>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.rhq</groupId>
<artifactId>alert-irc</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<name>RHQ Enterprise Server IRC Alert Plugin</name>
diff --git a/modules/enterprise/server/plugins/alert-log4j/pom.xml b/modules/enterprise/server/plugins/alert-log4j/pom.xml
index a270432..1a27831 100644
--- a/modules/enterprise/server/plugins/alert-log4j/pom.xml
+++ b/modules/enterprise/server/plugins/alert-log4j/pom.xml
@@ -3,13 +3,13 @@
<parent>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.rhq</groupId>
<artifactId>alert-log4j</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<name>RHQ Enterprise Server Log4J Alert Plugin</name>
diff --git a/modules/enterprise/server/plugins/alert-microblog/pom.xml b/modules/enterprise/server/plugins/alert-microblog/pom.xml
index 3ebc711..ab68d6b 100644
--- a/modules/enterprise/server/plugins/alert-microblog/pom.xml
+++ b/modules/enterprise/server/plugins/alert-microblog/pom.xml
@@ -3,13 +3,13 @@
<parent>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.rhq</groupId>
<artifactId>alert-microblog</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<name>RHQ Enterprise Server Microblog Alert Plugin</name>
diff --git a/modules/enterprise/server/plugins/alert-mobicents/pom.xml b/modules/enterprise/server/plugins/alert-mobicents/pom.xml
index 21a353d..0adccaf 100644
--- a/modules/enterprise/server/plugins/alert-mobicents/pom.xml
+++ b/modules/enterprise/server/plugins/alert-mobicents/pom.xml
@@ -3,13 +3,13 @@
<parent>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.rhq</groupId>
<artifactId>alert-mobicents</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<name>RHQ Enterprise Server Mobicents Alert Plugin</name>
diff --git a/modules/enterprise/server/plugins/alert-operations/pom.xml b/modules/enterprise/server/plugins/alert-operations/pom.xml
index 8be5518..2c9bcfa 100644
--- a/modules/enterprise/server/plugins/alert-operations/pom.xml
+++ b/modules/enterprise/server/plugins/alert-operations/pom.xml
@@ -2,14 +2,14 @@
<parent>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.rhq</groupId>
<artifactId>alert-operations</artifactId>
<packaging>jar</packaging>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<name>RHQ Enterprise Server Opertions Alert Plugin</name>
diff --git a/modules/enterprise/server/plugins/alert-roles/pom.xml b/modules/enterprise/server/plugins/alert-roles/pom.xml
index 390b329..06bab65 100644
--- a/modules/enterprise/server/plugins/alert-roles/pom.xml
+++ b/modules/enterprise/server/plugins/alert-roles/pom.xml
@@ -3,13 +3,13 @@
<parent>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.rhq</groupId>
<artifactId>alert-roles</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<name>RHQ Enterprise Server Roles Alert Plugin</name>
diff --git a/modules/enterprise/server/plugins/alert-scriptlang/pom.xml b/modules/enterprise/server/plugins/alert-scriptlang/pom.xml
index 6bdbfe5..5eb7f65 100644
--- a/modules/enterprise/server/plugins/alert-scriptlang/pom.xml
+++ b/modules/enterprise/server/plugins/alert-scriptlang/pom.xml
@@ -8,7 +8,7 @@
<parent>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/plugins/alert-sms/pom.xml b/modules/enterprise/server/plugins/alert-sms/pom.xml
index 0bd8e5e..097de47 100644
--- a/modules/enterprise/server/plugins/alert-sms/pom.xml
+++ b/modules/enterprise/server/plugins/alert-sms/pom.xml
@@ -8,7 +8,7 @@
<parent>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/plugins/alert-snmp/pom.xml b/modules/enterprise/server/plugins/alert-snmp/pom.xml
index 7b494d7..3763c54 100644
--- a/modules/enterprise/server/plugins/alert-snmp/pom.xml
+++ b/modules/enterprise/server/plugins/alert-snmp/pom.xml
@@ -3,13 +3,13 @@
<parent>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.rhq</groupId>
<artifactId>alert-snmp</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<name>RHQ Enterprise Server SNMP Alert Plugin</name>
diff --git a/modules/enterprise/server/plugins/alert-subject/pom.xml b/modules/enterprise/server/plugins/alert-subject/pom.xml
index 635aa9c..bb595b5 100644
--- a/modules/enterprise/server/plugins/alert-subject/pom.xml
+++ b/modules/enterprise/server/plugins/alert-subject/pom.xml
@@ -3,13 +3,13 @@
<parent>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.rhq</groupId>
<artifactId>alert-subject</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<name>RHQ Enterprise Server Subject Alert Plugin</name>
diff --git a/modules/enterprise/server/plugins/ant-bundle/pom.xml b/modules/enterprise/server/plugins/ant-bundle/pom.xml
index 13260a0..c4e59b2 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/plugins/cloud/pom.xml b/modules/enterprise/server/plugins/cloud/pom.xml
index b66ad28..d7d4b82 100644
--- a/modules/enterprise/server/plugins/cloud/pom.xml
+++ b/modules/enterprise/server/plugins/cloud/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/modules/enterprise/server/plugins/cobbler/pom.xml b/modules/enterprise/server/plugins/cobbler/pom.xml
index b58a7ae..381f64c 100644
--- a/modules/enterprise/server/plugins/cobbler/pom.xml
+++ b/modules/enterprise/server/plugins/cobbler/pom.xml
@@ -4,14 +4,14 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.rhq</groupId>
<artifactId>rhq-serverplugin-cobbler</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<name>RHQ Enterprise Server Cobbler Plugin</name>
diff --git a/modules/enterprise/server/plugins/disk/pom.xml b/modules/enterprise/server/plugins/disk/pom.xml
index 34f0e08..403ef41 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.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 ebf0154..ad1c570 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/plugins/groovy-script/pom.xml b/modules/enterprise/server/plugins/groovy-script/pom.xml
index e3c202b..0d2bf4b 100644
--- a/modules/enterprise/server/plugins/groovy-script/pom.xml
+++ b/modules/enterprise/server/plugins/groovy-script/pom.xml
@@ -4,14 +4,14 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.rhq</groupId>
<artifactId>groovy-script-server-plugin</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<name>RHQ Enterprise Server Groovy Script Plugin</name>
diff --git a/modules/enterprise/server/plugins/jboss-software/pom.xml b/modules/enterprise/server/plugins/jboss-software/pom.xml
index 659622f..dacaec2 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/plugins/packagetype-cli/pom.xml b/modules/enterprise/server/plugins/packagetype-cli/pom.xml
index bb8019d..9a51242 100644
--- a/modules/enterprise/server/plugins/packagetype-cli/pom.xml
+++ b/modules/enterprise/server/plugins/packagetype-cli/pom.xml
@@ -3,13 +3,13 @@
<parent>
<artifactId>rhq-enterprise-server-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.rhq</groupId>
<artifactId>packagetype-cli</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<name>RHQ Enterprise Server CLI Package Type Plugin</name>
diff --git a/modules/enterprise/server/plugins/perspectives/core/perspective/pom.xml b/modules/enterprise/server/plugins/perspectives/core/perspective/pom.xml
index f695982..f73ecb8 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../../../../../../pom.xml</relativePath>
</parent>
diff --git a/modules/enterprise/server/plugins/perspectives/core/pom.xml b/modules/enterprise/server/plugins/perspectives/core/pom.xml
index 287d62e..c2d5c7e 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../../../../../pom.xml</relativePath>
</parent>
diff --git a/modules/enterprise/server/plugins/perspectives/policy/app/pom.xml b/modules/enterprise/server/plugins/perspectives/policy/app/pom.xml
index 2ddc3d6..80180de 100644
--- a/modules/enterprise/server/plugins/perspectives/policy/app/pom.xml
+++ b/modules/enterprise/server/plugins/perspectives/policy/app/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../../../../../../pom.xml</relativePath>
</parent>
diff --git a/modules/enterprise/server/plugins/perspectives/policy/perspective/pom.xml b/modules/enterprise/server/plugins/perspectives/policy/perspective/pom.xml
index f789155..72c885e 100644
--- a/modules/enterprise/server/plugins/perspectives/policy/perspective/pom.xml
+++ b/modules/enterprise/server/plugins/perspectives/policy/perspective/pom.xml
@@ -10,7 +10,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../../../../../../pom.xml</relativePath>
</parent>
diff --git a/modules/enterprise/server/plugins/perspectives/policy/pom.xml b/modules/enterprise/server/plugins/perspectives/policy/pom.xml
index ef5dc7a..28788d8 100644
--- a/modules/enterprise/server/plugins/perspectives/policy/pom.xml
+++ b/modules/enterprise/server/plugins/perspectives/policy/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../../../../../pom.xml</relativePath>
</parent>
diff --git a/modules/enterprise/server/plugins/pom.xml b/modules/enterprise/server/plugins/pom.xml
index 2ebb23e..54b6447 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../../../pom.xml</relativePath>
</parent>
diff --git a/modules/enterprise/server/plugins/rhnhosted/pom.xml b/modules/enterprise/server/plugins/rhnhosted/pom.xml
index 1c8d17c..04df0b8 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.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 56adc17..79ccf2b 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.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 3ec9918..6711905 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.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 f22634e..ce8468c 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/enterprise/server/pom.xml b/modules/enterprise/server/pom.xml
index 701ed39..591642d 100644
--- a/modules/enterprise/server/pom.xml
+++ b/modules/enterprise/server/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../../pom.xml</relativePath>
</parent>
diff --git a/modules/enterprise/server/safe-invoker/pom.xml b/modules/enterprise/server/safe-invoker/pom.xml
index 94b88bb..05cb339 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../../../pom.xml</relativePath>
</parent>
diff --git a/modules/enterprise/server/sars/agent-sar/pom.xml b/modules/enterprise/server/sars/agent-sar/pom.xml
index b1c400f..00344d4 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.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 4ed8677..2377858 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../../../pom.xml</relativePath>
</parent>
diff --git a/modules/enterprise/server/xml-schemas/pom.xml b/modules/enterprise/server/xml-schemas/pom.xml
index 5dfa3a0..90c0da6 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../../../pom.xml</relativePath>
</parent>
diff --git a/modules/helpers/bundleGen/pom.xml b/modules/helpers/bundleGen/pom.xml
index 49b64f7..9e80f1f 100644
--- a/modules/helpers/bundleGen/pom.xml
+++ b/modules/helpers/bundleGen/pom.xml
@@ -3,13 +3,13 @@
<parent>
<artifactId>rhq-helpers</artifactId>
<groupId>org.rhq.helpers</groupId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.rhq.helpers</groupId>
<artifactId>bundleGen</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<build>
<plugins>
diff --git a/modules/helpers/perftest-support/pom.xml b/modules/helpers/perftest-support/pom.xml
index b3085a3..e488bb0 100644
--- a/modules/helpers/perftest-support/pom.xml
+++ b/modules/helpers/perftest-support/pom.xml
@@ -3,11 +3,11 @@
<parent>
<artifactId>rhq-helpers</artifactId>
<groupId>org.rhq.helpers</groupId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq.helpers</groupId>
<artifactId>perftest-support</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<name>Performance Testing Support</name>
<description>To support performance testing, this is a basic tool to support extracting and later reimporting of
data from/to a database.
diff --git a/modules/helpers/pom.xml b/modules/helpers/pom.xml
index 15126b3..8b4892a 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
diff --git a/modules/helpers/rtfilter/pom.xml b/modules/helpers/rtfilter/pom.xml
index 612f9cd..417a3df 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/jopr/pom.xml b/modules/jopr/pom.xml
index 4ee8745..10eba8f 100644
--- a/modules/jopr/pom.xml
+++ b/modules/jopr/pom.xml
@@ -7,7 +7,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
diff --git a/modules/jopr/tools/jbas5-plugin-descriptor-gen/pom.xml b/modules/jopr/tools/jbas5-plugin-descriptor-gen/pom.xml
index daadb99..6a63c06 100644
--- a/modules/jopr/tools/jbas5-plugin-descriptor-gen/pom.xml
+++ b/modules/jopr/tools/jbas5-plugin-descriptor-gen/pom.xml
@@ -9,7 +9,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../../../pom.xml</relativePath>
</parent>
diff --git a/modules/plugins/aliases/pom.xml b/modules/plugins/aliases/pom.xml
index 4e89419..9bf41dc 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.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 887eb25..ff8c753 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/apache/pom.xml b/modules/plugins/apache/pom.xml
index 0cfa72c..0c60643 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/augeas/pom.xml b/modules/plugins/augeas/pom.xml
index 48528ba..66d35d1 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/byteman/pom.xml b/modules/plugins/byteman/pom.xml
index d4111a3..46bcb55 100644
--- a/modules/plugins/byteman/pom.xml
+++ b/modules/plugins/byteman/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/cobbler/pom.xml b/modules/plugins/cobbler/pom.xml
index bfd354f..3c7dcb5 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/cron/pom.xml b/modules/plugins/cron/pom.xml
index eaf87a7..07fed71 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/database/pom.xml b/modules/plugins/database/pom.xml
index 4b0ec48..6c1812b 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.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 32503ea..c1e0a3d 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/grub/pom.xml b/modules/plugins/grub/pom.xml
index 02f0c58..049fa1d 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/hadoop/pom.xml b/modules/plugins/hadoop/pom.xml
index 4179f3d..840e619 100644
--- a/modules/plugins/hadoop/pom.xml
+++ b/modules/plugins/hadoop/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/hardware/pom.xml b/modules/plugins/hardware/pom.xml
index 40133b6..0f54830 100644
--- a/modules/plugins/hardware/pom.xml
+++ b/modules/plugins/hardware/pom.xml
@@ -6,7 +6,7 @@
<parent>
<artifactId>rhq-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/hibernate/pom.xml b/modules/plugins/hibernate/pom.xml
index 1775ae1..e482d30 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.jboss.on</groupId>
diff --git a/modules/plugins/hosts/pom.xml b/modules/plugins/hosts/pom.xml
index e9f147d..6a2019b 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/hudson/pom.xml b/modules/plugins/hudson/pom.xml
index 71c974a..6a55a7d 100644
--- a/modules/plugins/hudson/pom.xml
+++ b/modules/plugins/hudson/pom.xml
@@ -6,12 +6,12 @@
<parent>
<artifactId>rhq-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-hudson-plugin</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>RHQ Hudson Plugin</name>
diff --git a/modules/plugins/iis/pom.xml b/modules/plugins/iis/pom.xml
index b58b28c..2cdc32a 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/iptables/pom.xml b/modules/plugins/iptables/pom.xml
index ce6d7b8..0772067 100644
--- a/modules/plugins/iptables/pom.xml
+++ b/modules/plugins/iptables/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/irc/pom.xml b/modules/plugins/irc/pom.xml
index df8ea6b..edf12ea 100644
--- a/modules/plugins/irc/pom.xml
+++ b/modules/plugins/irc/pom.xml
@@ -5,7 +5,7 @@
<parent>
<artifactId>rhq-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.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 1e9183e..7d0fdcc 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.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 94e111a..57c8bb3 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.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 070ed5e..1d1e3aa 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.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 4d15790..ae06793 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.jboss.on</groupId>
diff --git a/modules/plugins/jdbctrace/pom.xml b/modules/plugins/jdbctrace/pom.xml
index 7ef747c..6e2f30f 100644
--- a/modules/plugins/jdbctrace/pom.xml
+++ b/modules/plugins/jdbctrace/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/jira/pom.xml b/modules/plugins/jira/pom.xml
index 0ab721e..2b7494a 100644
--- a/modules/plugins/jira/pom.xml
+++ b/modules/plugins/jira/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/jmx/pom.xml b/modules/plugins/jmx/pom.xml
index 57d44c0..1daf86d 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/kickstart/pom.xml b/modules/plugins/kickstart/pom.xml
index dd0035e..dc87ed7 100644
--- a/modules/plugins/kickstart/pom.xml
+++ b/modules/plugins/kickstart/pom.xml
@@ -7,7 +7,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/lsof/pom.xml b/modules/plugins/lsof/pom.xml
index 3875676..e5f457e 100644
--- a/modules/plugins/lsof/pom.xml
+++ b/modules/plugins/lsof/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/mysql/pom.xml b/modules/plugins/mysql/pom.xml
index cfbb26e..d8ebb5d 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/netservices/pom.xml b/modules/plugins/netservices/pom.xml
index 1987cfb..f1675e4 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/onewire/pom.xml b/modules/plugins/onewire/pom.xml
index 165ff92..07bec15 100644
--- a/modules/plugins/onewire/pom.xml
+++ b/modules/plugins/onewire/pom.xml
@@ -1,8 +1,11 @@
-<?xml version="1.0"?><project>
+<?xml version="1.0"?>
+
+<project>
+
<parent>
<artifactId>rhq-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/modules/plugins/oracle/pom.xml b/modules/plugins/oracle/pom.xml
index e6d37b9..8a3b3c0 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/pattern-generator/pom.xml b/modules/plugins/pattern-generator/pom.xml
index afd78d2..e3799d8 100644
--- a/modules/plugins/pattern-generator/pom.xml
+++ b/modules/plugins/pattern-generator/pom.xml
@@ -9,7 +9,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>4.0.0-SNAPSHOT</version><!-- TODO adjust RHQ version -->
+ <version>4.1.0-SNAPSHOT</version><!-- TODO adjust RHQ version -->
</parent>
<groupId>org.rhq</groupId>
@@ -21,7 +21,7 @@
<properties>
<scm.module.path>TODO</scm.module.path>
- <rhq.version>4.0.0-SNAPSHOT</rhq.version> <!-- TODO adjust, see above too -->
+ <rhq.version>4.1.0-SNAPSHOT</rhq.version> <!-- TODO adjust, see above too -->
</properties>
<build>
@@ -176,4 +176,4 @@
<!-- TODO add your dependencies here -->
</dependencies>
-</project>
\ No newline at end of file
+</project>
diff --git a/modules/plugins/perftest/pom.xml b/modules/plugins/perftest/pom.xml
index a84f95d..843fe3d 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/platform/pom.xml b/modules/plugins/platform/pom.xml
index ed3f654..99f36d0 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/pom.xml b/modules/plugins/pom.xml
index b1eec53..f51a2ed 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
diff --git a/modules/plugins/postfix/pom.xml b/modules/plugins/postfix/pom.xml
index b4c9c4c..6fe2470 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/postgres/pom.xml b/modules/plugins/postgres/pom.xml
index 0e5b102..365f6c4 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/raw-config-test/pom.xml b/modules/plugins/raw-config-test/pom.xml
index 7489eff..b3a6078 100644
--- a/modules/plugins/raw-config-test/pom.xml
+++ b/modules/plugins/raw-config-test/pom.xml
@@ -6,7 +6,7 @@
<parent>
<artifactId>rhq-plugins-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq.plugins</groupId>
diff --git a/modules/plugins/rhq-agent/pom.xml b/modules/plugins/rhq-agent/pom.xml
index 37dfc09..60471c2 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.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 60c4245..e88b97f 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.jboss.on</groupId>
diff --git a/modules/plugins/samba/pom.xml b/modules/plugins/samba/pom.xml
index 00be871..3f0af95 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/script/pom.xml b/modules/plugins/script/pom.xml
index 3627ab7..d31afb9 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/script2/pom.xml b/modules/plugins/script2/pom.xml
index d6fa9c4..2cf689c 100644
--- a/modules/plugins/script2/pom.xml
+++ b/modules/plugins/script2/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/services/pom.xml b/modules/plugins/services/pom.xml
index fc991d7..416d681 100644
--- a/modules/plugins/services/pom.xml
+++ b/modules/plugins/services/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/snmptrapd/pom.xml b/modules/plugins/snmptrapd/pom.xml
index e0750eb..05ed401 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/modules/plugins/sshd/pom.xml b/modules/plugins/sshd/pom.xml
index f00f113..4e6f17a 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/sudoers/pom.xml b/modules/plugins/sudoers/pom.xml
index 8a88bb4..07c38eb 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/tomcat/pom.xml b/modules/plugins/tomcat/pom.xml
index 37d52a1..f6dfebd 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.jboss.on</groupId>
diff --git a/modules/plugins/twitter/pom.xml b/modules/plugins/twitter/pom.xml
index 1993f61..50ff9b6 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.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 4f1c4c3..6565a7b 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>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/plugins/virt/pom.xml b/modules/plugins/virt/pom.xml
index c16d198..8700a19 100644
--- a/modules/plugins/virt/pom.xml
+++ b/modules/plugins/virt/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/pom.xml b/modules/pom.xml
index f760f66..ef5b009 100644
--- a/modules/pom.xml
+++ b/modules/pom.xml
@@ -6,7 +6,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
diff --git a/modules/test-utils/pom.xml b/modules/test-utils/pom.xml
index cb02492..89fbc3c 100644
--- a/modules/test-utils/pom.xml
+++ b/modules/test-utils/pom.xml
@@ -7,7 +7,7 @@
<parent>
<artifactId>rhq-modules-parent</artifactId>
<groupId>org.rhq</groupId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<artifactId>test-utils</artifactId>
diff --git a/pom.xml b/pom.xml
index 98a9c31..6a1b1f5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
<groupId>org.rhq</groupId>
<artifactId>rhq-parent</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>RHQ</name>
commit 1ab97b2da8e9fc950f18feaaa59f7d3c10020127
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri May 6 12:17:04 2011 -0400
on the 10 SLSB's containing one or methods that are invoked directly or indirectly by an MDB or EJB timer, use the PoolClass annotation to tell the EJB container to use the strict max pool, rather than the threadlocal pool, for those SLSB's; this avoids SLSB instances from accumulating and eventually filling up the entire heap (https://bugzilla.redhat.com/show_bug.cgi?id=693232)
diff --git a/modules/enterprise/server/jar/pom.xml b/modules/enterprise/server/jar/pom.xml
index 5b9ff73..c6ebed5 100644
--- a/modules/enterprise/server/jar/pom.xml
+++ b/modules/enterprise/server/jar/pom.xml
@@ -233,6 +233,15 @@
<scope>provided</scope> <!-- by JBossAS -->
</dependency>
+ <!-- includes the org.jboss.ejb3.StrictMaxPool class, which is needed by the PoolClass annotation used on some
+ of our SLSB's -->
+ <dependency>
+ <groupId>jboss</groupId>
+ <artifactId>jboss-ejb3</artifactId>
+ <!-- NOTE: The version is defined in the root POM's dependencyManagement section. -->
+ <scope>provided</scope> <!-- by JBossAS -->
+ </dependency>
+
<dependency>
<groupId>jboss</groupId>
<artifactId>jboss-j2ee</artifactId>
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertConditionLogManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertConditionLogManagerBean.java
index ba54373..0804736 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertConditionLogManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertConditionLogManagerBean.java
@@ -34,6 +34,8 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.exception.ConstraintViolationException;
+import org.jboss.annotation.ejb.PoolClass;
+import org.jboss.ejb3.StrictMaxPool;
import org.rhq.core.domain.alert.AlertCondition;
import org.rhq.core.domain.alert.AlertConditionLog;
import org.rhq.core.domain.alert.AlertDampeningEvent;
@@ -44,8 +46,20 @@ import org.rhq.enterprise.server.RHQConstants;
/**
* @author Joseph Marques
*/
-
@Stateless
+// NOTE: The AlertConditionLogManagerBean, AlertConditionManagerBean, AlertDampeningManagerBean,
+// AlertDefinitionManagerBean, and CachedConditionManagerBean SLSB's are all invoked, either directly or
+// indirectly, by the AlertConditionConsumerBean MDB. Since MDB invocations are always done in new threads, using
+// the default SLSB pool impl ({@link ThreadlocalPool}) would cause a new instance of this SLSB to be created
+// every time it was invoked by AlertConditionConsumerBean. This would be bad because an existing instance would
+// not be reused, but it is really bad because the instance would also never get destroyed, causing heap space to
+// gradually leak until the Server eventually ran out of memory. Hence, we must use a {@link StrictMaxPool}, which
+// will use a fixed pool of instances of this SLSB, instead of a ThreadlocalPool. Because most of these SLSB's are
+// also invoked by other callers (i.e. Agents, GUI's, or CLI's) besides AlertConditionConsumerBean, we set the max
+// pool size to 60, which is double the default value, to minimize the chances of AlertConditionConsumerBean
+// invocations, which are the most critical, from having to block and potentially getting backed up in the queue.
+// For more details, see https://bugzilla.redhat.com/show_bug.cgi?id=693232 (ips, 05/05/11).
+@PoolClass(value = StrictMaxPool.class, maxSize = 60)
public class AlertConditionLogManagerBean implements AlertConditionLogManagerLocal {
private final Log log = LogFactory.getLog(AlertConditionLogManagerBean.class);
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertConditionManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertConditionManagerBean.java
index 5bb5861..3d49479 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertConditionManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertConditionManagerBean.java
@@ -32,6 +32,8 @@ import javax.persistence.Query;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.jboss.annotation.ejb.PoolClass;
+import org.jboss.ejb3.StrictMaxPool;
import org.rhq.core.domain.alert.AlertCondition;
import org.rhq.core.domain.alert.AlertConditionCategory;
import org.rhq.core.domain.alert.AlertDefinition;
@@ -48,8 +50,20 @@ import org.rhq.enterprise.server.authz.PermissionException;
/**
* @author Joseph Marques
*/
-
@Stateless
+// NOTE: The AlertConditionLogManagerBean, AlertConditionManagerBean, AlertDampeningManagerBean,
+// AlertDefinitionManagerBean, and CachedConditionManagerBean SLSB's are all invoked, either directly or
+// indirectly, by the AlertConditionConsumerBean MDB. Since MDB invocations are always done in new threads, using
+// the default SLSB pool impl ({@link ThreadlocalPool}) would cause a new instance of this SLSB to be created
+// every time it was invoked by AlertConditionConsumerBean. This would be bad because an existing instance would
+// not be reused, but it is really bad because the instance would also never get destroyed, causing heap space to
+// gradually leak until the Server eventually ran out of memory. Hence, we must use a {@link StrictMaxPool}, which
+// will use a fixed pool of instances of this SLSB, instead of a ThreadlocalPool. Because most of these SLSB's are
+// also invoked by other callers (i.e. Agents, GUI's, or CLI's) besides AlertConditionConsumerBean, we set the max
+// pool size to 60, which is double the default value, to minimize the chances of AlertConditionConsumerBean
+// invocations, which are the most critical, from having to block and potentially getting backed up in the queue.
+// For more details, see https://bugzilla.redhat.com/show_bug.cgi?id=693232 (ips, 05/05/11).
+@PoolClass(value = StrictMaxPool.class, maxSize = 60)
public class AlertConditionManagerBean implements AlertConditionManagerLocal {
private static final Log LOG = LogFactory.getLog(AlertConditionManagerBean.class);
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDampeningManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDampeningManagerBean.java
index 1645efc..5df78c5 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDampeningManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDampeningManagerBean.java
@@ -31,6 +31,8 @@ import javax.persistence.Query;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.jboss.annotation.ejb.PoolClass;
+import org.jboss.ejb3.StrictMaxPool;
import org.rhq.core.domain.alert.AlertDampening;
import org.rhq.core.domain.alert.AlertDampeningEvent;
import org.rhq.core.domain.alert.AlertDefinition;
@@ -40,8 +42,20 @@ import org.rhq.enterprise.server.RHQConstants;
/**
* @author Joseph Marques
*/
-
@Stateless
+// NOTE: The AlertConditionLogManagerBean, AlertConditionManagerBean, AlertDampeningManagerBean,
+// AlertDefinitionManagerBean, and CachedConditionManagerBean SLSB's are all invoked, either directly or
+// indirectly, by the AlertConditionConsumerBean MDB. Since MDB invocations are always done in new threads, using
+// the default SLSB pool impl ({@link ThreadlocalPool}) would cause a new instance of this SLSB to be created
+// every time it was invoked by AlertConditionConsumerBean. This would be bad because an existing instance would
+// not be reused, but it is really bad because the instance would also never get destroyed, causing heap space to
+// gradually leak until the Server eventually ran out of memory. Hence, we must use a {@link StrictMaxPool}, which
+// will use a fixed pool of instances of this SLSB, instead of a ThreadlocalPool. Because most of these SLSB's are
+// also invoked by other callers (i.e. Agents, GUI's, or CLI's) besides AlertConditionConsumerBean, we set the max
+// pool size to 60, which is double the default value, to minimize the chances of AlertConditionConsumerBean
+// invocations, which are the most critical, from having to block and potentially getting backed up in the queue.
+// For more details, see https://bugzilla.redhat.com/show_bug.cgi?id=693232 (ips, 05/05/11).
+@PoolClass(value = StrictMaxPool.class, maxSize = 60)
public class AlertDampeningManagerBean implements AlertDampeningManagerLocal {
private final Log log = LogFactory.getLog(AlertDampeningManagerBean.class);
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java
index 1cd2a71..ba3b045 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java
@@ -34,6 +34,8 @@ import org.apache.commons.logging.LogFactory;
import org.jboss.annotation.IgnoreDependency;
+import org.jboss.annotation.ejb.PoolClass;
+import org.jboss.ejb3.StrictMaxPool;
import org.rhq.core.domain.alert.AlertCondition;
import org.rhq.core.domain.alert.AlertConditionCategory;
import org.rhq.core.domain.alert.AlertConditionLog;
@@ -66,8 +68,20 @@ import org.rhq.enterprise.server.util.CriteriaQueryGenerator.AuthorizationTokenT
/**
* @author Joseph Marques
*/
-
@Stateless
+// NOTE: The AlertConditionLogManagerBean, AlertConditionManagerBean, AlertDampeningManagerBean,
+// AlertDefinitionManagerBean, and CachedConditionManagerBean SLSB's are all invoked, either directly or
+// indirectly, by the AlertConditionConsumerBean MDB. Since MDB invocations are always done in new threads, using
+// the default SLSB pool impl ({@link ThreadlocalPool}) would cause a new instance of this SLSB to be created
+// every time it was invoked by AlertConditionConsumerBean. This would be bad because an existing instance would
+// not be reused, but it is really bad because the instance would also never get destroyed, causing heap space to
+// gradually leak until the Server eventually ran out of memory. Hence, we must use a {@link StrictMaxPool}, which
+// will use a fixed pool of instances of this SLSB, instead of a ThreadlocalPool. Because most of these SLSB's are
+// also invoked by other callers (i.e. Agents, GUI's, or CLI's) besides AlertConditionConsumerBean, we set the max
+// pool size to 60, which is double the default value, to minimize the chances of AlertConditionConsumerBean
+// invocations, which are the most critical, from having to block and potentially getting backed up in the queue.
+// For more details, see https://bugzilla.redhat.com/show_bug.cgi?id=693232 (ips, 05/05/11).
+@PoolClass(value = StrictMaxPool.class, maxSize = 60)
public class AlertDefinitionManagerBean implements AlertDefinitionManagerLocal, AlertDefinitionManagerRemote {
private static final Log LOG = LogFactory.getLog(AlertDefinitionManagerBean.class);
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/CachedConditionManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/CachedConditionManagerBean.java
index 9f757e1..55aa2a4 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/CachedConditionManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/CachedConditionManagerBean.java
@@ -28,6 +28,8 @@ import javax.persistence.PersistenceContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.jboss.annotation.ejb.PoolClass;
+import org.jboss.ejb3.StrictMaxPool;
import org.rhq.core.domain.alert.AlertDampeningEvent;
import org.rhq.core.domain.alert.AlertDefinition;
import org.rhq.enterprise.server.RHQConstants;
@@ -36,12 +38,26 @@ import org.rhq.enterprise.server.alert.engine.jms.model.ActiveAlertConditionMess
import org.rhq.enterprise.server.alert.engine.jms.model.InactiveAlertConditionMessage;
/**
- * see {@link CachedConditionManagerLocal#processCachedConditionMessage(AbstractAlertConditionMessage, AlertDefinition)}
+ * see {@link CachedConditionManagerLocal#processCachedConditionMessage(
+ * org.rhq.enterprise.server.alert.engine.jms.model.AbstractAlertConditionMessage, Integer)}
* for more information.
*
* @author Joseph Marques
*/
@Stateless
+// NOTE: The AlertConditionLogManagerBean, AlertConditionManagerBean, AlertDampeningManagerBean,
+// AlertDefinitionManagerBean, and CachedConditionManagerBean SLSB's are all invoked, either directly or
+// indirectly, by the AlertConditionConsumerBean MDB. Since MDB invocations are always done in new threads, using
+// the default SLSB pool impl ({@link ThreadlocalPool}) would cause a new instance of this SLSB to be created
+// every time it was invoked by AlertConditionConsumerBean. This would be bad because an existing instance would
+// not be reused, but it is really bad because the instance would also never get destroyed, causing heap space to
+// gradually leak until the Server eventually ran out of memory. Hence, we must use a {@link StrictMaxPool}, which
+// will use a fixed pool of instances of this SLSB, instead of a ThreadlocalPool. Because most of these SLSB's are
+// also invoked by other callers (i.e. Agents, GUI's, or CLI's) besides AlertConditionConsumerBean, we set the max
+// pool size to 60, which is double the default value, to minimize the chances of AlertConditionConsumerBean
+// invocations, which are the most critical, from having to block and potentially getting backed up in the queue.
+// For more details, see https://bugzilla.redhat.com/show_bug.cgi?id=693232 (ips, 05/05/11).
+@PoolClass(value = StrictMaxPool.class, maxSize = 60)
public class CachedConditionManagerBean implements CachedConditionManagerLocal {
private final Log log = LogFactory.getLog(CachedConditionManagerBean.class);
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/CloudManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/CloudManagerBean.java
index 4b98c67..919149d 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/CloudManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/CloudManagerBean.java
@@ -32,6 +32,8 @@ import org.apache.commons.logging.LogFactory;
import org.jboss.annotation.IgnoreDependency;
+import org.jboss.annotation.ejb.PoolClass;
+import org.jboss.ejb3.StrictMaxPool;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.authz.Permission;
import org.rhq.core.domain.cloud.FailoverListDetails;
@@ -56,6 +58,18 @@ import org.rhq.enterprise.server.util.LookupUtil;
* @author Joseph Marques
*/
@Stateless
+// NOTE: The CacheConsistencyManagerBean, CloudManagerBean, ServerManagerBean, StatusManagerBean, and SystemManagerBean
+// SLSB's are all invoked, either directly or indirectly, by EJB timers. Since EJB timer invocations are always
+// done in new threads, using the default SLSB pool impl ({@link ThreadlocalPool}) would cause a new instance of
+// this SLSB to be created every time it was invoked by an EJB timer. This would be bad because an existing
+// instance would not be reused, but it is really bad because the instance would also never get destroyed, causing
+// heap space to gradually leak until the Server eventually ran out of memory. Hence, we must use a
+// {@link StrictMaxPool}, which will use a fixed pool of instances of this SLSB, instead of a ThreadlocalPool.
+// Because most of these SLSB's are also invoked by other callers (i.e. Agents, GUI's, or CLI's) besides EJB
+// timers, we set the max pool size to 60, which is double the default value, to minimize the chances of EJB
+// timer invocations, which are the most critical, from having to block and potentially getting backed up in the
+// queue. For more details, see https://bugzilla.redhat.com/show_bug.cgi?id=693232 (ips, 05/05/11).
+@PoolClass(value = StrictMaxPool.class, maxSize = 60)
public class CloudManagerBean implements CloudManagerLocal {
private final Log log = LogFactory.getLog(CloudManagerBean.class);
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StatusManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StatusManagerBean.java
index dfd1990..526f801 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StatusManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StatusManagerBean.java
@@ -33,6 +33,8 @@ import org.apache.commons.logging.LogFactory;
import org.jboss.annotation.IgnoreDependency;
+import org.jboss.annotation.ejb.PoolClass;
+import org.jboss.ejb3.StrictMaxPool;
import org.rhq.core.domain.alert.AlertDefinition;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.cloud.Server;
@@ -65,6 +67,18 @@ import org.rhq.enterprise.server.util.LookupUtil;
* require holding these locks as part of their processing.
*/
@Stateless
+// NOTE: The CacheConsistencyManagerBean, CloudManagerBean, ServerManagerBean, StatusManagerBean, and SystemManagerBean
+// SLSB's are all invoked, either directly or indirectly, by EJB timers. Since EJB timer invocations are always
+// done in new threads, using the default SLSB pool impl ({@link ThreadlocalPool}) would cause a new instance of
+// this SLSB to be created every time it was invoked by an EJB timer. This would be bad because an existing
+// instance would not be reused, but it is really bad because the instance would also never get destroyed, causing
+// heap space to gradually leak until the Server eventually ran out of memory. Hence, we must use a
+// {@link StrictMaxPool}, which will use a fixed pool of instances of this SLSB, instead of a ThreadlocalPool.
+// Because most of these SLSB's are also invoked by other callers (i.e. Agents, GUI's, or CLI's) besides EJB
+// timers, we set the max pool size to 60, which is double the default value, to minimize the chances of EJB
+// timer invocations, which are the most critical, from having to block and potentially getting backed up in the
+// queue. For more details, see https://bugzilla.redhat.com/show_bug.cgi?id=693232 (ips, 05/05/11).
+@PoolClass(value = StrictMaxPool.class, maxSize = 60)
public class StatusManagerBean implements StatusManagerLocal {
private final Log log = LogFactory.getLog(StatusManagerBean.class);
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/instance/CacheConsistencyManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/instance/CacheConsistencyManagerBean.java
index 2de7bad..6cbf361 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/instance/CacheConsistencyManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/instance/CacheConsistencyManagerBean.java
@@ -34,6 +34,8 @@ import javax.ejb.TransactionAttributeType;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.jboss.annotation.ejb.PoolClass;
+import org.jboss.ejb3.StrictMaxPool;
import org.rhq.enterprise.server.alert.engine.AlertConditionCacheManagerLocal;
/**
@@ -44,6 +46,18 @@ import org.rhq.enterprise.server.alert.engine.AlertConditionCacheManagerLocal;
* @author Joseph Marques
*/
@Stateless
+// NOTE: The CacheConsistencyManagerBean, CloudManagerBean, ServerManagerBean, StatusManagerBean, and SystemManagerBean
+// SLSB's are all invoked, either directly or indirectly, by EJB timers. Since EJB timer invocations are always
+// done in new threads, using the default SLSB pool impl ({@link ThreadlocalPool}) would cause a new instance of
+// this SLSB to be created every time it was invoked by an EJB timer. This would be bad because an existing
+// instance would not be reused, but it is really bad because the instance would also never get destroyed, causing
+// heap space to gradually leak until the Server eventually ran out of memory. Hence, we must use a
+// {@link StrictMaxPool}, which will use a fixed pool of instances of this SLSB, instead of a ThreadlocalPool.
+// Because most of these SLSB's are also invoked by other callers (i.e. Agents, GUI's, or CLI's) besides EJB
+// timers, we set the max pool size to 60, which is double the default value, to minimize the chances of EJB
+// timer invocations, which are the most critical, from having to block and potentially getting backed up in the
+// queue. For more details, see https://bugzilla.redhat.com/show_bug.cgi?id=693232 (ips, 05/05/11).
+@PoolClass(value = StrictMaxPool.class, maxSize = 60)
public class CacheConsistencyManagerBean implements CacheConsistencyManagerLocal {
private final Log log = LogFactory.getLog(CacheConsistencyManagerBean.class);
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/instance/ServerManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/instance/ServerManagerBean.java
index be91c65..588d8e8 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/instance/ServerManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/instance/ServerManagerBean.java
@@ -38,6 +38,8 @@ import javax.persistence.Query;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.jboss.annotation.ejb.PoolClass;
+import org.jboss.ejb3.StrictMaxPool;
import org.rhq.core.domain.cloud.PartitionEventType;
import org.rhq.core.domain.cloud.Server;
import org.rhq.core.domain.resource.Agent;
@@ -64,6 +66,18 @@ import org.rhq.enterprise.server.core.comm.ServerCommunicationsServiceUtil;
* @author Joseph Marques
*/
@Stateless
+// NOTE: The CacheConsistencyManagerBean, CloudManagerBean, ServerManagerBean, StatusManagerBean, and SystemManagerBean
+// SLSB's are all invoked, either directly or indirectly, by EJB timers. Since EJB timer invocations are always
+// done in new threads, using the default SLSB pool impl ({@link ThreadlocalPool}) would cause a new instance of
+// this SLSB to be created every time it was invoked by an EJB timer. This would be bad because an existing
+// instance would not be reused, but it is really bad because the instance would also never get destroyed, causing
+// heap space to gradually leak until the Server eventually ran out of memory. Hence, we must use a
+// {@link StrictMaxPool}, which will use a fixed pool of instances of this SLSB, instead of a ThreadlocalPool.
+// Because most of these SLSB's are also invoked by other callers (i.e. Agents, GUI's, or CLI's) besides EJB
+// timers, we set the max pool size to 60, which is double the default value, to minimize the chances of EJB
+// timer invocations, which are the most critical, from having to block and potentially getting backed up in the
+// queue. For more details, see https://bugzilla.redhat.com/show_bug.cgi?id=693232 (ips, 05/05/11).
+@PoolClass(value = StrictMaxPool.class, maxSize = 60)
public class ServerManagerBean implements ServerManagerLocal {
private final Log log = LogFactory.getLog(ServerManagerBean.class);
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemManagerBean.java
index 19a454a..a03f525 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemManagerBean.java
@@ -51,7 +51,9 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jboss.annotation.IgnoreDependency;
+import org.jboss.annotation.ejb.PoolClass;
import org.jboss.deployment.MainDeployerMBean;
+import org.jboss.ejb3.StrictMaxPool;
import org.jboss.mx.util.MBeanServerLocator;
import org.rhq.core.db.DatabaseType;
@@ -74,6 +76,18 @@ import org.rhq.enterprise.server.util.LookupUtil;
import org.rhq.enterprise.server.util.SystemDatabaseInformation;
@Stateless
+// NOTE: The CacheConsistencyManagerBean, CloudManagerBean, ServerManagerBean, StatusManagerBean, and SystemManagerBean
+// SLSB's are all invoked, either directly or indirectly, by EJB timers. Since EJB timer invocations are always
+// done in new threads, using the default SLSB pool impl ({@link ThreadlocalPool}) would cause a new instance of
+// this SLSB to be created every time it was invoked by an EJB timer. This would be bad because an existing
+// instance would not be reused, but it is really bad because the instance would also never get destroyed, causing
+// heap space to gradually leak until the Server eventually ran out of memory. Hence, we must use a
+// {@link StrictMaxPool}, which will use a fixed pool of instances of this SLSB, instead of a ThreadlocalPool.
+// Because most of these SLSB's are also invoked by other callers (i.e. Agents, GUI's, or CLI's) besides EJB
+// timers, we set the max pool size to 60, which is double the default value, to minimize the chances of EJB
+// timer invocations, which are the most critical, from having to block and potentially getting backed up in the
+// queue. For more details, see https://bugzilla.redhat.com/show_bug.cgi?id=693232 (ips, 05/05/11).
+@PoolClass(value = StrictMaxPool.class, maxSize = 60)
public class SystemManagerBean implements SystemManagerLocal, SystemManagerRemote {
private final String SQL_VACUUM = "VACUUM ANALYZE {0}";
diff --git a/pom.xml b/pom.xml
index 3c49e2d..98a9c31 100644
--- a/pom.xml
+++ b/pom.xml
@@ -219,6 +219,12 @@
<dependency>
<groupId>jboss</groupId>
+ <artifactId>jboss-ejb3</artifactId>
+ <version>${jboss.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>jboss</groupId>
<artifactId>jboss-ejb3-client</artifactId>
<version>${jboss.version}</version>
</dependency>
commit b4c21e2fc5e99d8886fb4431713c4d548f95de50
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri May 6 11:52:18 2011 -0400
re-implement top menu bar using SmartGWT widgets, rather than raw HTML (part of fix for https://bugzilla.redhat.com/show_bug.cgi?id=697590)
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java
index 09ca49b..85f5e92 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java
@@ -146,7 +146,7 @@ public class CoreGUI implements EntryPoint, ValueChangeHandler<String>, Event.Na
UserSessionManager.login();
- // removing loading image, which can be seen if LoginView doesn't completely cover it
+ // Remove loading image, which can be seen if LoginView doesn't completely cover it.
Element loadingPanel = DOM.getElementById("Loading-Panel");
loadingPanel.removeFromParent();
}
@@ -163,8 +163,8 @@ public class CoreGUI implements EntryPoint, ValueChangeHandler<String>, Event.Na
String url = element.getAttribute("href");
String viewPath = getViewPath(url);
if (viewPath != null) {
- GWT.log("Forcing CoreGUI.goToView(\"" + viewPath + "\")...");
- CoreGUI.goToView(viewPath);
+ GWT.log("Forcing History.newItem(\"" + viewPath + "\")...");
+ History.newItem(viewPath);
nativeEvent.preventDefault();
}
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/MenuBarView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/MenuBarView.java
index 58fd490..557042f 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/MenuBarView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/MenuBarView.java
@@ -1,6 +1,6 @@
/*
* RHQ Management Platform
- * Copyright (C) 2005-2010 Red Hat, Inc.
+ * Copyright (C) 2005-2011 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
@@ -21,14 +21,15 @@ package org.rhq.enterprise.gui.coregui.client.menu;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.user.client.History;
-import com.google.gwt.user.client.ui.Hyperlink;
import com.smartgwt.client.types.Alignment;
+import com.smartgwt.client.types.VerticalAlignment;
import com.smartgwt.client.widgets.Canvas;
-import com.smartgwt.client.widgets.HTMLFlow;
import com.smartgwt.client.widgets.Img;
+import com.smartgwt.client.widgets.Label;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.layout.HLayout;
+import com.smartgwt.client.widgets.layout.VLayout;
import com.smartgwt.client.widgets.toolbar.ToolStrip;
import org.rhq.enterprise.gui.coregui.client.UserSessionManager;
@@ -40,13 +41,17 @@ import org.rhq.enterprise.gui.coregui.client.dashboard.DashboardsView;
import org.rhq.enterprise.gui.coregui.client.help.HelpView;
import org.rhq.enterprise.gui.coregui.client.inventory.InventoryView;
import org.rhq.enterprise.gui.coregui.client.report.ReportTopView;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableHStack;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableLabel;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
-import org.rhq.enterprise.gui.coregui.client.util.selenium.SeleniumUtility;
+
+import java.util.HashMap;
+import java.util.Map;
/**
* @author Greg Hinkle
* @author Joseph Marques
+ * @author Ian Springer
*/
public class MenuBarView extends LocatableVLayout {
@@ -80,7 +85,7 @@ public class MenuBarView extends LocatableVLayout {
markForRedraw();
}
- // When redrawing, ensire the correct session infor is displayed
+ // When redrawing, ensure the correct session info is displayed
@Override
public void markForRedraw() {
String currentDisplayName = userLabel.getContents();
@@ -104,50 +109,7 @@ public class MenuBarView extends LocatableVLayout {
}
private Canvas getLinksSection() {
- final HTMLFlow linksPane = new HTMLFlow();
- linksPane.setContents(setupLinks());
-
- History.addValueChangeHandler(new ValueChangeHandler<String>() {
- public void onValueChange(ValueChangeEvent<String> stringValueChangeEvent) {
- String first = stringValueChangeEvent.getValue().split("/")[0];
-
- if ("Resource".equals(first)) {
- first = "Inventory";
- }
-
- currentlySelectedSection = first;
- linksPane.setContents(setupLinks());
- linksPane.markForRedraw();
- }
- });
- return linksPane;
- }
-
- private String setupLinks() {
- // TODO: Replace the below HTML with SmartGWT widgets.
- StringBuilder headerString = new StringBuilder(
- "<table style=\"height: 34px;\" cellpadding=\"0\" cellspacing=\"0\"><tr>");
-
- headerString.append("<td style=\"width: 1px;\"><img src=\"images/header/header_bg_line.png\"/></td>");
- for (ViewName sectionName : SECTIONS) {
-
- String styleClass = "TopSectionLink";
- if (sectionName.getName().equals(currentlySelectedSection)) {
- styleClass = "TopSectionLinkSelected";
- }
-
- // Set explicit identifiers because the generated scLocator is not getting picked up by Selenium.
- headerString.append("<td style=\"vertical-align:middle\" id=\"").append(sectionName).append("\" class=\"")
- .append(styleClass).append("\" onclick=\"window.location.href='#").append(sectionName).append("'\" >");
- headerString.append(sectionName.getTitle());
- headerString.append("</td>\n");
-
- headerString.append("<td style=\"width: 1px;\"><img src=\"images/header/header_bg_line.png\"/></td>");
- }
-
- headerString.append("</tr></table>");
-
- return headerString.toString();
+ return new LinkBar();
}
private Canvas getActionsSection() {
@@ -158,13 +120,13 @@ public class MenuBarView extends LocatableVLayout {
userLabel = new LocatableLabel(this.extendLocatorId("User"), UserSessionManager.getSessionSubject().getName());
userLabel.setAutoWidth();
- LocatableLabel lineLabel = new LocatableLabel(this.extendLocatorId("Line"), " | ");
- lineLabel.setWidth("10px");
+ Label lineLabel = new Label(" | ");
+ lineLabel.setWidth("12px");
lineLabel.setAlign(Alignment.CENTER);
- Hyperlink logoutLink = SeleniumUtility.setHtmlId(new Hyperlink(LOGOUT_VIEW_ID.getTitle(), LOGOUT_VIEW_ID
- .getName()), LOGOUT_VIEW_ID.getName());
- logoutLink.setWidth("50px");
+ String contents = "<a href='#" + LOGOUT_VIEW_ID.getName() + "'>" + LOGOUT_VIEW_ID.getTitle() + "</a>";
+ LocatableLabel logoutLink = new LocatableLabel(this.extendLocatorId("LogoutLink"), contents);
+ logoutLink.setAutoWidth();
layout.addMember(userLabel);
layout.addMember(lineLabel);
@@ -173,4 +135,77 @@ public class MenuBarView extends LocatableVLayout {
return layout;
}
+ class LinkBar extends LocatableHStack implements ValueChangeHandler<String> {
+ private final Map<String, VLayout> sectionNameToLinkVLayoutMap = new HashMap<String, VLayout>();
+
+ LinkBar() {
+ super(MenuBarView.this.extendLocatorId("LinkBar"));
+
+ setWidth100();
+ setHeight100();
+
+ Img divider = new Img("header/header_bg_line.png");
+ divider.setWidth(1);
+ divider.setHeight100();
+ addMember(divider);
+
+ for (ViewName sectionName : SECTIONS) {
+ VLayout linkVLayout = new VLayout();
+ linkVLayout.setHeight100();
+ linkVLayout.setAlign(VerticalAlignment.CENTER);
+
+ String contents = "<a class='menuBar' href='#" + sectionName.getName() + "'>" + sectionName.getTitle()
+ + "</a>";
+ LocatableLabel link = new LocatableLabel(extendLocatorId(sectionName.getName()), contents);
+ link.setAutoHeight();
+ link.setAlign(Alignment.CENTER);
+ link.setStyleName("inheritColor");
+ linkVLayout.addMember(link);
+
+ this.sectionNameToLinkVLayoutMap.put(sectionName.getName(), linkVLayout);
+ updateLinkStyle(sectionName.getName());
+ addMember(linkVLayout);
+
+ divider = new Img("header/header_bg_line.png");
+ divider.setWidth(1);
+ divider.setHeight100();
+ addMember(divider);
+ }
+
+ History.addValueChangeHandler(this);
+ }
+
+ @Override
+ public void onValueChange(ValueChangeEvent<String> stringValueChangeEvent) {
+ String viewPath = stringValueChangeEvent.getValue();
+ String topViewId = viewPath.split("/")[0];
+ if ("Resource".equals(topViewId)) {
+ topViewId = InventoryView.VIEW_ID.getName();
+ }
+ currentlySelectedSection = topViewId;
+
+ for (String sectionName : this.sectionNameToLinkVLayoutMap.keySet()) {
+ updateLinkStyle(sectionName);
+ }
+ }
+
+ private void updateLinkStyle(String sectionName) {
+ String divStyleClass;
+ String styleClass;
+ if (sectionName.equals(currentlySelectedSection)) {
+ divStyleClass = "TopSectionLinkDivSelected";
+ styleClass = "TopSectionLinkSelected";
+ } else {
+ divStyleClass = "TopSectionLinkDiv";
+ styleClass = "TopSectionLink";
+ }
+ VLayout linkVLayout = this.sectionNameToLinkVLayoutMap.get(sectionName);
+ linkVLayout.setStyleName(divStyleClass);
+ linkVLayout.markForRedraw();
+ Canvas link = linkVLayout.getMember(0);
+ link.setStyleName(styleClass);
+ link.markForRedraw();
+ }
+ }
+
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableHStack.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableHStack.java
new file mode 100644
index 0000000..4ea7bb1
--- /dev/null
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableHStack.java
@@ -0,0 +1,82 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2011 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, version 2, as
+ * published by the Free Software Foundation, and/or the GNU Lesser
+ * General Public License, version 2.1, also as published by the Free
+ * Software Foundation.
+ *
+ * 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 and the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the GNU Lesser General Public License along with this program;
+ * if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.rhq.enterprise.gui.coregui.client.util.selenium;
+
+import com.smartgwt.client.widgets.layout.HStack;
+
+/**
+ * Wrapper for a SmartGWT {@link HStack} that sets the ID for use with Selenium scLocators.
+ *
+ * @author Ian Springer
+ */
+public class LocatableHStack extends HStack implements Locatable {
+
+ private String locatorId;
+
+ /**
+ * <pre>
+ * ID Format: "simpleClassname_locatorId"
+ * </pre>
+ * @param locatorId not null or empty.
+ */
+ public LocatableHStack(String locatorId) {
+ super();
+ init(locatorId);
+ }
+
+ /**
+ * <pre>
+ * ID Format: "simpleClassname_locatorId"
+ * </pre>
+ * @param locatorId not null or empty.
+ * @param membersMargin
+ */
+ public LocatableHStack(String locatorId, int membersMargin) {
+ super(membersMargin);
+ init(locatorId);
+ }
+
+ private void init(String locatorId) {
+ this.locatorId = locatorId;
+ SeleniumUtility.setID(this, locatorId);
+ }
+
+ public String getLocatorId() {
+ return locatorId;
+ }
+
+ public String extendLocatorId(String extension) {
+ return this.locatorId + "_" + extension;
+ }
+
+ public void destroyMembers() {
+ SeleniumUtility.destroyMembers(this);
+ }
+
+ @Override
+ public void destroy() {
+ destroyMembers();
+ super.destroy();
+ }
+
+}
diff --git a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml
index f63dbd9..c2ba874 100644
--- a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml
+++ b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml
@@ -10,7 +10,7 @@
<inherits name='com.smartgwt.SmartGwt' />
<inherits name="com.smartgwt.tools.SmartGwtTools"/>
- <inherits name='com.google.gwt.user.theme.standard.Standard'/>
+ <!--<inherits name='com.google.gwt.user.theme.standard.Standard'/>-->
<!--
<inherits name="com.smartclient.theme.graphite.Graphite"/>
-->
diff --git a/modules/enterprise/gui/coregui/src/main/webapp/CoreGUI.css b/modules/enterprise/gui/coregui/src/main/webapp/CoreGUI.css
index f6befb0..7c86907 100644
--- a/modules/enterprise/gui/coregui/src/main/webapp/CoreGUI.css
+++ b/modules/enterprise/gui/coregui/src/main/webapp/CoreGUI.css
@@ -1,13 +1,8 @@
-/*body {
- background-color: white;
- color: black;
- font-family: Arial, sans-serif;
- font-size: small;
- margin: 8px;
-}*/
+body {
+ color: #010101;
+}
body, p, td, th, option, input, textarea, select {
- color: #000000;
font-family: tahoma, verdana, sans-serif !important;
font-size: 11px !important;
}
@@ -30,6 +25,9 @@ hr {
a, a:link, a:visited, a:hover {
color: #4A5D75 !important;
font-weight: bold !important;
+}
+
+a, a:link, a:visited {
text-decoration: none !important;
}
@@ -37,6 +35,10 @@ a:hover {
text-decoration: underline !important;
}
+a.menuBar, a.menuBar:link, a.menuBar:visited, a.menuBar:hover {
+ color: inherit !important;
+}
+
.backLink {
color: #4A5D75;
@@ -97,22 +99,27 @@ a:hover {
}
-.TopSectionLink, .topsectionlinkselected {
- vertical-align: bottom;
- padding:5px;
- padding-left: 15px;
- padding-right: 15px;
+.inheritColor {
+ color: inherit !important;
+}
- cursor: pointer;
- font-size: 10pt;
- font-weight: bold;
- text-decoration: none;
- color: #4A5D75;
+.TopSectionLink, .TopSectionLinkSelected {
+ font-size: 12px !important;
+}
+
+.TopSectionLink {
+ color: #4A5D75 !important;
}
.TopSectionLinkSelected {
+ color: white !important;
+}
+
+.TopSectionLinkDiv {
+}
+
+.TopSectionLinkDivSelected {
background-image: url('images/header/header_bg_selected.png');
- color: white;
}
.BreadCrumb {
commit b6c0b095b369c87b726f5aefddc54c7ac577cf7e
Author: Fusayuki Minamoto <fminamot(a)redhat.com>
Date: Fri May 6 11:37:49 2011 +0200
Initial batch of Japanese translations.
diff --git a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/MessageConstants_ja.properties b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/MessageConstants_ja.properties
new file mode 100644
index 0000000..8118d46
--- /dev/null
+++ b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/MessageConstants_ja.properties
@@ -0,0 +1,52 @@
+#
+# RHQ GUI i18n Message Constants - Japanese
+# This is used specifically for properties needing lookup by name, at runtime. These
+# constant properties can be localized but can not have arguments.
+###################################
+
+#=================== Help URLs =====================
+# The Help sections and entries are table driven via property lookups. The following property
+# names are expected:
+#
+# The number of help sections:
+#
+# view_help_section_count = numSectionsInteger
+#
+# For each section:
+# N = 1..numSections
+#
+# view_help_section_N_title = localized title for section in the sectionStack
+# view_help_section_N_item_count = numSectionItemsInteger
+#
+# For each url entry in the section N:
+# M = 1..numSectionItems
+#
+# view_help_section_N_propTitle_M = localized title for the help (required)
+# view_help_section_N_propIcon_M = icon path (optional, defaults to document icon)
+# view_help_section_N_propUrl_M = url for the help (required)
+#
+view_help_section_count = 2
+
+view_help_section_1_title = ドキュメンテーション
+view_help_section_1_item_count = 3
+
+view_help_section_1_propTitle_1 = よくある質問 (FAQ)
+view_help_section_1_propUrl_1 = http://www.rhq-project.org/display/JOPR2/FAQ
+view_help_section_1_propTitle_2 = ドキュメンテーションセット
+view_help_section_1_propUrl_2 = http://www.rhq-project.org/display/JOPR2/Home
+view_help_section_1_propTitle_3 = API Javadoc
+view_help_section_1_propUrl_3 = http://www.rhq-project.org/display/JOPR2/API+Documentation
+
+view_help_section_2_title = チュートリアル
+view_help_section_2_item_count = 4
+
+view_help_section_2_propTitle_1 = デモ: すべてのデモ
+view_help_section_2_propUrl_1 = http://www.rhq-project.org/display/JOPR2/Demos
+view_help_section_2_propTitle_2 = デモ: バンドルプロビジョニング
+view_help_section_2_propUrl_2 = http://management-platform.blogspot.com/2011/01/bundle-provisioning-via-r...
+view_help_section_2_propTitle_3 = グループ定義の構築方法
+view_help_section_2_propIcon_3 = [SKIN]/../actions/help.png
+view_help_section_2_propUrl_3 = http://docs.redhat.com/docs/en-US/JBoss_Operations_Network/2.4/html/Basic...
+view_help_section_2_propTitle_4 = 検索バーの使用方法
+view_help_section_2_propIcon_4 = [SKIN]/../actions/help.png
+view_help_section_2_propUrl_4 = http://www.rhq-project.org/display/JOPR2/Search
diff --git a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
new file mode 100644
index 0000000..ae21269
--- /dev/null
+++ b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
@@ -0,0 +1,2168 @@
+#
+# RHQ GUI i18n Messages - Japanese
+###################################
+
+#************************************** SHARED ****************************************
+
+#=================== Common =====================
+
+#
+# Build Info
+#
+common_buildInfo_gwtVersion = ${gwt.version}
+
+# Button Labels
+#--------------
+common_button_ack = 確認
+common_button_ack_all = すべてを確認
+common_button_add = 追加
+common_button_advanced = Advanced...
+common_button_apply = 適用
+common_button_cancel = キャンセル
+common_button_close = 閉じる
+common_button_compare = 比較
+common_button_create_child = 子を作成
+common_button_delete = 削除
+common_button_delete_all = すべてを削除
+common_button_disable = 無効
+common_button_edit = 編集
+common_button_enable = 有効
+common_button_finish = 完了
+common_button_import = インポート
+common_button_new = 新規
+common_button_next = 次へ
+common_button_ok = OK
+common_button_previous = 前へ
+common_button_purgeAll = すべてをパージ
+common_button_refresh = リフレッシュ
+common_button_reset = リセット
+common_button_save = 保存
+common_button_schedule = スケジュール
+common_button_search = 検索
+common_button_set = 設定
+common_button_showDetails = 詳細表示...
+common_button_uninventory = アンインベントリ
+
+# Common Labels
+#------------------------
+common_label_ago=ago
+common_label_all = すべての
+common_label_all_resources = all resources
+common_label_day = day
+common_label_days = days
+common_label_hour = hour
+common_label_hours = hours
+common_label_item = item
+common_label_items = items
+common_label_milliseconds = milliseconds
+common_label_minutes = minutes
+common_label_month = month
+common_label_none = none
+common_label_role = role
+common_label_roles = roles
+common_label_scheduled_operations = scheduled operations
+common_label_seconds = seconds
+common_label_selected_resources = selected resources
+common_label_unlimited = unlimited
+common_label_user = user
+common_label_users = users
+common_label_week = week
+common_label_weeks = weeks
+common_label_yesterday=Yesterday
+
+# Common Units
+#-------------
+common_unit_times = times
+common_unit_milliseconds = milliseconds
+common_unit_seconds = seconds
+common_unit_minutes = minutes
+common_unit_hours = hours
+common_unit_days = days
+common_unit_weeks = weeks
+common_unit_months = months
+common_unit_years = years
+
+# Common Severities
+#------------------
+common_severity_debug = Debug
+common_severity_info = Info
+common_severity_warn = Warn
+common_severity_error = Error
+common_severity_fatal = Fatal
+
+# Common Titles
+#--------------
+common_title_address = アドレス
+common_title_add_column = カラム追加
+common_title_add_portlet = ポートレット追加
+common_title_alert_range = アラートの範囲
+common_title_ancestry = 祖先
+common_title_availability = アベイラビリティ
+common_title_average_metrics = 毎分の平均メトリックス
+common_title_available_resources = 利用可能リソース
+common_title_background = バックグラウンド
+common_title_bundle = バンドル
+common_title_bundles = バンドル
+common_title_category = カテゴリ
+common_title_change_refresh_time=インターバルのリフレッシュ
+common_title_columns = カラム
+common_title_configuration = 構成
+common_title_compare_metrics = メトリックスの比較
+common_title_compatibleGroups = 互換グループ
+common_title_compatibleGroups_total = 互換グループの合計
+common_title_component_errors = コンポーネントエラー
+common_title_config_update_status = 更新状態
+common_title_count = 数
+common_title_custom = カスタム
+common_title_dashboard_name = ダッシュボード名
+common_title_dateCreated = 生成日
+common_title_dateRange = 日付の範囲
+common_title_default = デフォルト
+common_title_description = 説明
+common_title_details = 詳細
+common_title_display = 表示
+common_title_display_name = 表示名
+common_title_duration = 期間
+common_title_edit_mode = 編集モード
+common_title_enabled = 有効?
+common_title_end = 終了
+common_title_error = エラー
+common_title_generalProp = 一般プロパティ
+common_title_group = グループ
+common_title_groups = グループ
+common_title_group_def_total = グループ定義の合計
+common_title_group_member_health = グループメンバーの状態
+common_title_icon =
+common_title_id = ID
+common_title_id_parent = 親のID
+common_title_info = 情報
+common_title_help = ヘルプ
+common_title_host = ホスト
+common_title_inventory = インベントリ
+common_title_inventorySummary = インベントリサマリ
+common_title_lastUpdated = 最終更新
+common_title_lastUpdatedBy = 最終更新(による)
+common_title_ldapGroups = LDAPグループ
+common_title_mashup = マッシュアップ
+common_title_members_reporting = メンバーのリポート
+common_title_message = メッセージ
+common_title_metric = メトリック
+common_title_metric_chart = メトリック図
+common_title_mixedGroups = 混合グループ
+common_title_mixedGroups_total = 混合グループの合計
+common_title_name = 名前
+common_title_new_dashboard = 新規ダッシュボード
+common_title_numeric_metrics = 数値メトリックス
+common_title_numeric_type = 数値型
+common_title_operation_status = オペレーションの状態
+common_title_operations = オペレーション
+common_title_operations_range = オペレーションの範囲
+common_title_over = Over
+common_title_password = パスワード
+common_title_path = パス
+common_title_permissions = パーミッション
+common_title_platform = プラットフォーム
+common_title_platform_total = プラットフォームの合計
+common_title_plugin = プラグイン
+common_title_port = ポート
+common_title_providers = プロバイダ
+common_title_recent_alerts = 最近のアラート
+common_title_recent_bundle_deployments = 最近のバンドルのデプロイ
+common_title_recent_configuration_updates = 最近の構成の更新
+common_title_recent_event_counts = 最近のイベント数
+common_title_recent_measurements = 最近の測定
+common_title_recent_oob_metrics = 最近の境界外のメトリックス
+common_title_recent_operations = 最近のオペレーション
+common_title_recent_pkg_history = 最近のパッケージ履歴
+common_title_recently_added = 最近追加された
+common_title_remove_column = カラムの削除
+common_title_repositories = リポジトリ
+common_title_resource = リソース
+common_title_resources = リソース
+common_title_resource_group = リソースグループ
+common_title_resourceGroups = リソースグループ
+common_title_resource_inventory = リソースインベントリ
+common_title_resource_id = リソースID
+common_title_resource_name = リソース名
+common_title_resource_key = リソースキー
+common_title_resource_type = リソースタイプ
+common_title_results_count = 結果の数
+common_title_results_count_tooltip = 結果の数の表示
+common_title_role = ロール
+common_title_roles = ロール
+common_title_search = 検索
+common_title_scheduled_operations = スケジュールされたオペレーション
+common_title_selected_resources = 選択されたリソース
+common_title_server = サーバー
+common_title_server_total = サーバーの合計
+common_title_service = サービス
+common_title_service_total = サービスの合計
+common_title_settings = 設定
+common_title_show = 表示
+common_title_show_more = 詳細表示...
+common_title_sort_order = ソート順
+common_title_sort_order_tooltip = 結果のソート順を設定
+common_title_start = 開始
+common_title_status = ステータス
+common_title_stop= 停止
+common_title_summary = サマリ
+common_title_tag_cloud = Tag Cloud
+common_title_the = The
+common_title_timestamp = 日付/時間
+common_title_total = 合計
+common_title_type = タイプ
+common_title_units = 単位
+common_title_user = ユーザー
+common_title_users = ユーザー(複数)
+common_title_value = 値
+common_title_version = バージョン
+common_title_view_mode = ビューモード
+common_title_web_address = Webアドレス
+common_title_welcome = ようこそ
+
+# Common Messages
+#--------------
+common_msg_areYouSure = Are You Sure?
+common_msg_changeAutoDetected = Change auto-detected
+common_msg_deleteConfirm = Are you sure you want to delete the # selected {0}?
+common_msg_emphasizedNotePrefix = NOTE:
+common_msg_loading = Loading...
+common_msg_noItemsToShow = No items to show
+common_msg_notYetImplemented = Not Yet Implemented
+common_msg_see_more = see more...
+common_msg_step_x_of_y = Step {0} of {1}
+
+# Common Values
+#--------------
+common_val_for = for
+common_val_no = No
+common_val_no_lower = no
+common_val_yes = Yes
+common_val_yes_lower = yes
+common_val_never = Never
+common_val_na = N/A
+common_val_none = None
+
+# Common Statuses
+common_status_canceled = Canceled
+common_status_deferred = Deferred
+common_status_failed = Failed
+common_status_inprogress = In Progress
+common_status_nochange = No Change
+common_status_success = Success
+common_status_unknown = Unknown
+common_status_timedOut = Timed Out
+common_status_partial = Partial
+
+# 1st, 2nd, 3rd, 4th, etc.
+common_val_n1st = {0}st
+common_val_n2nd = {0}nd
+common_val_n3rd = {0}rd
+common_val_nth = {0}th
+
+# Common Alert Priorities
+#------------------------
+common_alert_high = High
+common_alert_medium = Medium
+common_alert_low = Low
+
+# Common Calendar
+#--------------
+common_calendar_january_short = jan
+common_calendar_february_short = feb
+common_calendar_march_short = mar
+common_calendar_april_short = apr
+common_calendar_may_short = may
+common_calendar_june_short = jun
+common_calendar_july_short = jul
+common_calendar_august_short = aug
+common_calendar_september_short = sept
+common_calendar_october_short = oct
+common_calendar_november_short = nov
+common_calendar_december_short = dec
+
+
+#=================== Widgets =====================
+
+# Favorites
+#--------------
+favorites = お気に入り
+favorites_resources = お気に入りリソース
+favorites_groups = お気に入りグループ
+favorites_recentlyViewed = 最近閲覧した
+
+# Record Editor
+#--------------
+widget_recordEditor_title_view = View {0} [{1}]
+widget_recordEditor_title_edit = Edit {0} [{1}]
+widget_recordEditor_title_new = Create New {0}
+# // dup in common
+widget_recordEditor_label_loading = ロード中...
+widget_recordEditor_error_invalidViewPath = Invalid view path: [{0}]
+widget_recordEditor_error_noRecords = No records were returned - expected exactly one.
+widget_recordEditor_error_multipleRecords = Multiple records were returned - expected exactly one.
+widget_recordEditor_info_recordCreatedConcise = {0} created.
+widget_recordEditor_info_recordCreatedDetailed = {0} [{1}] created.
+widget_recordEditor_info_recordUpdatedConcise = {0} updated.
+widget_recordEditor_info_recordUpdatedDetailed = {0} [{1}] updated.
+widget_recordEditor_info_recordsDeletedConcise = {0} {1} deleted.
+widget_recordEditor_info_recordsDeletedDetailed = {0} {1} deleted: {2}.
+widget_recordEditor_error_operation = Operation failed. An error occurred
+widget_recordEditor_error_operationInvalidValues = Operation failed - one or more fields have invalid values
+widget_recordEditor_error_unsupportedOperationType = Unsupported operation type: [{0}]
+widget_recordEditor_error_permissionCreate = You do not have the permissions required to create a new [{0}]
+widget_recordEditor_warn_validation = One or more fields have invalid values. This [{0}] cannot be saved until these values are corrected
+
+# Resource Selector/Picker
+#--------------------------------
+widget_resourceSelector_selectResource = Select a Resource
+widget_resourceSelector_pleaseSelectResource = Please select a resource
+widget_resourceSelector_selectMultipleResources = Select Resources
+widget_resourceSelector_pleaseSelectMultipleResource = Please select one or more resources
+widget_resourceSelector_groupCategory = Group Category
+
+# Resource Factory Wizard
+#--------------------------------
+widget_resourceFactoryWizard_uploadInProgress = The upload is in progress... This can take several minutes to complete for large distribution files.
+widget_resourceFactoryWizard_uploadFileStepName = Upload Resource Content File
+widget_resourceFactoryWizard_uploadFailure = Failed to upload file
+widget_resourceFactoryWizard_editConfigStepName = Edit Configuration
+widget_resourceFactoryWizard_editConfigStep_nothingToDo = There is no configuration that you need to define for this resource.
+widget_resourceFactoryWizard_infoStepName = Resource Information
+widget_resourceFactoryWizard_infoStep_loadFail = Failed to get available Architectures
+widget_resourceFactoryWizard_namePrompt = New Resource Name
+widget_resourceFactoryWizard_templatePrompt = Connection Settings Template
+widget_resourceFactoryWizard_contentTemplatePrompt = Deployment Time Configuration Templates
+widget_resourceFactoryWizard_configTemplatePrompt = Resource Configuration Templates
+widget_resourceFactoryWizard_archPrompt = Package Architecture
+widget_resourceFactoryWizard_versionPrompt = Package Version
+widget_resourceFactoryWizard_importWizardWindowTitle = Resource Import Wizard
+widget_resourceFactoryWizard_importWizardTitle = Import Resource of Type [{0}]
+widget_resourceFactoryWizard_importFailure = Failed to manually import resource
+widget_resourceFactoryWizard_importSubmitted = A request to import a new resource of type [{0}] has been submitted
+widget_resourceFactoryWizard_createWizardWindowTitle = Resource Create Wizard
+widget_resourceFactoryWizard_createWizardTitle = Create New Resource of Type [{0}]
+widget_resourceFactoryWizard_execute1 = Failed to create a new resource - there is no package version
+widget_resourceFactoryWizard_execute2 = Failed to create a new resource
+widget_resourceFactoryWizard_createSubmitType = A request to create a resource of type [{0}] has been submitted successfully.
+widget_resourceFactoryWizard_createSubmit = A request to create a resource with the name of [{0}] has been submitted successfully.
+widget_resourceFactoryWizard_failedToGetType = Failed to get backing package type for new resource
+widget_resourceFactoryWizard_failedToDeleteVersion = Failed to delete package version while canceling a resource create
+
+widget_typeCache_loadFail = Failed to load resource type metadata
+
+widget_typeTree_badTemplateType = Invalid URL. Unknown template type [{0}]
+widget_typeTree_badTypeId = Invalid URL. Bad resource type ID [{0}]
+widget_typeTree_loadFail = Failed to load resource types
+
+# Color Picker
+#--------------
+widget_colorPicker_tooltip = Click to select a new color
+
+# Job Trigger Editor
+#--------------------
+widget_jobTriggerEditor_field_mode = Schedule using
+widget_jobTriggerEditor_value_calendar = Calendar
+widget_jobTriggerEditor_value_cronExpression = Cron Expression
+widget_jobTriggerEditor_value_now = Now
+widget_jobTriggerEditor_value_nowAndRepeat = Now & Repeat
+widget_jobTriggerEditor_value_later = Later
+widget_jobTriggerEditor_value_laterAndRepeat = Later & Repeat
+widget_jobTriggerEditor_field_cronExpression = Cron Expression
+widget_jobTriggerEditor_tab_format = Format
+widget_jobTriggerEditor_tab_examples = Examples
+widget_jobTriggerEditor_field_repeatInterval_now = Run now and every
+widget_jobTriggerEditor_field_repeatInterval_later = Repeat every
+widget_jobTriggerEditor_fieldHelp_repeatInterval = how often the operation should be executed
+widget_jobTriggerEditor_value_for = For
+widget_jobTriggerEditor_value_until = Until
+widget_jobTriggerEditor_value_indefinitely = Indefinitely
+widget_jobTriggerEditor_fieldHelp_repeatDuration = keep running this operation this many times or until this amount of time has elapsed
+widget_jobTriggerEditor_field_startType = Run
+widget_jobTriggerEditor_value_on = on
+widget_jobTriggerEditor_value_in = in
+widget_jobTriggerEditor_fieldHelp_startDelay = start executing the operation after this amount of time has elapsed
+widget_jobTriggerEditor_message_startTimeMustBeInFuture = Start time must be in the future.
+widget_jobTriggerEditor_message_endTimeMustBeAfterStartTime = End time must be after start time.
+widget_jobTriggerEditor_message_endTimeMustBeInFuture = End time must be in the future.
+
+# Duration Item
+#---------------
+widget_durationItem_inputUnitLessThanTargetUnit = Input unit is less than target unit.
+widget_durationItem_unitTypeNotSupported = Unit type [{0}] is not supported by this DurationItem.
+
+
+#===================== Utils ======================
+
+# Ancestry
+#-------------------------------------------------
+util_ancestry_parentAncestry = Parent Ancestry for:
+
+# Disambiguation Report Decorator
+#-------------------------------------------------
+util_disambiguationReportDecorator_pluginSuffix = ({0} plugin)
+
+# Monitoring Request Callback
+#------------------------------------------
+util_monitoringRequestCallback_error_checkServerStatusFailure = Unable to determine login status - check Server status.
+
+# RPC Manager
+#----------------------
+util_rpcManager_activeRequests = {0} Active Requests
+
+# User Permissions Manager
+#--------------------------
+util_userPerm_loadFailGlobal = Failed to load your global permissions - none granted.
+util_userPerm_loadFailGroup = Failed to load your permissions for Resource Group with id [{0}] - none granted.
+util_userPerm_loadFailResource = Failed to load your permissions for Resource with id [{0}] - none granted.
+
+# User Session Manager
+#--------------------------
+util_userSession_loadFailSubject = UserSessionManager: Failed to load user Subject
+util_userSession_logoutFail = Failed to logout.
+
+# Error Handler
+#--------------------
+util_errorHandler_nullException = exception was null
+
+# Widgets Field
+#---------------------
+util_widgetsField_unlimited = Unlimited
+
+
+#================== DataSources ====================
+
+# RPC (abstract)
+#-----------------------
+dataSource_bundle_loadFailed = Failed to load Bundle data
+
+
+# RPC (abstract)
+#-----------------------
+dataSource_rpc_error_transformRequestFailure = Failure in datasource while processing {0} request.
+dataSource_rpc_error_unsupportedArrayFilterType = No support for passing array filters of type {0}.
+dataSource_rpc_error_unsupportedEnumType = Please add an appropriate code block for enum {0} to RPCDataSource.getEnumArray(Class)
+dataSource_rpc_yes = yes
+dataSource_rpc_no = no
+
+# ContentRepositoryTree
+#------
+dataSource_ContentRepoTree_error_load = Error loading repositories
+dataSource_ContentRepoTree_field_parentId = Parent ID
+
+
+# Users
+#------
+###### dup in common
+dataSource_users_field_id = ID
+dataSource_users_field_name = ユーザー名
+dataSource_users_field_ldap = LDAPログイン?
+dataSource_users_field_password = パスワード
+dataSource_users_field_passwordVerify = パスワードの確認
+dataSource_users_field_firstName = 名前
+dataSource_users_field_lastName = 名字
+dataSource_users_field_emailAddress = Eメールアドレス
+dataSource_users_field_phoneNumber = 電話番号
+dataSource_users_field_department = 部門
+dataSource_users_field_factive = ログインは有効?
+dataSource_users_delete = 削除済みユーザー [{0}]
+dataSource_users_deleteFailed = ユーザー [{0}] の削除に失敗しました
+dataSource_users_passwordsDoNotMatch = パスワードが一致していません
+dataSource_users_invalidEmailAddress = 無効なEメールアドレス
+
+# Roles
+#------
+datasource_roles_field_resourceGroups = リソースグループ
+datasource_roles_field_permissions = パーミッション
+datasource_roles_field_subjects = サブジェクト
+datasource_roles_field_ldapGroups = LDAPグループ
+
+# Platforms
+#-----------
+dataSource_platforms_field_cpu = CPU
+dataSource_platforms_field_memory = メモリ
+dataSource_platforms_field_swap = スワップ
+
+# Traits
+#------
+dataSource_traits_failFetch = Failed to fetch traits for criteria [{0}].
+dataSource_traits_field_primaryKey = Primary Key
+dataSource_traits_field_definitionID = Definition ID
+dataSource_traits_field_lastChanged = Last Changed
+dataSource_traits_field_trait = Trait
+dataSource_traits_group_field_groupId = Group ID
+
+# Measurement OOBs
+#---------------------------------
+dataSource_measurementOob_field_scheduleName = メトリック
+dataSource_measurementOob_field_resourceName = リソース
+dataSource_measurementOob_field_parentName = 親
+dataSource_measurementOob_field_formattedBaseband = バンド
+dataSource_measurementOob_field_formattedOutlier = アウトライナ
+dataSource_measurementOob_field_factor = 範囲外係数 (%)
+dataSource_measurementOob_error_fetchFailure = Failed to load measurement OOB information
+
+# Measurements
+#----------------------
+dataSource_definitions_loadFailed = Failed to load metric definitions
+dataSource_schedules_loadFailed = Failed to load metric schedules
+dataSource_schedules_loadFailedCriteria = Failed to load metric schedules for criteria [{0}]
+dataSource_schedules_loadFailedContext = Failed to load metric schedules for context [{0}]
+dataSource_schedules_field_resourceGroupId = Group ID
+
+dataSource_schedules_enableFailure_resource = Failed to enable the collection of [{0}] metrics for resource with ID [{1}]. The metrics were: [{2}]
+dataSource_schedules_enableFailure_group = Failed to enable the collection of [{0}] metrics for group with ID [{1}]. The metrics were: [{2}]
+
+dataSource_schedules_enableSuccessful_concise = You have enabled the collection of [{0}] measurements
+dataSource_schedules_enableSuccessful_full_resource = You have enabled the collection of [{0}] measurements for the resource with ID [{1}]. The enabled measurements are: [{2}]
+dataSource_schedules_enableSuccessful_full_group = You have enabled the collection of [{0}] measurements for the resource group with ID [{1}]. The enabled measurements are: [{2}]
+
+dataSource_schedules_disableFailure_resource = Failed to disable the collection of [{0}] metrics for resource with ID [{1}]. The metrics were: [{2}]
+dataSource_schedules_disableFailure_group = Failed to disable the collection of [{0}] metrics for resource group with ID [{1}]. The metrics were: [{2}]
+
+dataSource_schedules_disableSuccessful_concise = You have disabled the collection of [{0}] measurements
+dataSource_schedules_disableSuccessful_full_resource = You have disabled the collection of [{0}] measurements for the resource with ID [{1}]. The disabled measurements are: [{2}]
+dataSource_schedules_disableSuccessful_full_group = You have disabled the collection of [{0}] measurements for the resource group with ID [{1}]. The disabled measurements are: [{2}]
+
+dataSource_schedules_updateFailure_resource = Failed to set the collection interval of [{0}] metrics for resource with ID [{1}]. The metrics were: [{2}]. The collection interval was to be [{3}] seconds.
+dataSource_schedules_updateFailure_group = Failed to set the collection interval of [{0}] metrics for resource group with ID [{1}]. The metrics were: [{2}]. The collection interval was to be [{3}] seconds.
+
+dataSource_schedules_updateSuccessful_concise = A new collection interval of [{0}] seconds has been set on [{1}] measurements
+dataSource_schedules_updateSuccessful_full_resource = A new collection interval of [{0}] seconds has been set on [{1}] measurements for resource with ID [{2}]. The updated measurements are: [{3}]
+dataSource_schedules_updateSuccessful_full_group = A new collection interval of [{0}] seconds has been set on [{1}] measurements for resource group with ID [{2}]. The updated measurements are: [{3}]
+
+# Resources
+#-----------------------
+dataSource_resources_field_location = 場所
+dataSource_resources_field_key = キー
+dataSource_resources_field_discoveryTime = 発見時刻
+dataSource_resources_field_importTime = インポート時刻
+dataSource_resources_field_lastModifiedTime = 最終更新時刻
+dataSource_resources_field_lastModifier = 最終更新者
+
+# Resource Groups
+#-----------------------
+dataSource_resourceGroups_loadFailed = Failed to load Resource Groups
+
+# Problem Resources
+#------------------------------
+dataSource_problemResources_field_alerts = アラート
+dataSource_problemResources_field_available = 現在のアベイラビリティ
+dataSource_problemResources_error_fetchFailure = Failed to load Resources with alerts/unavailability.
+
+# Recent Operations
+#----------------------------
+dataSource_recentOperations_field_resource = リソース
+dataSource_recentOperations_field_location = ロケーション
+dataSource_recentOperations_field_operation = オペレーション
+dataSource_recentOperations_field_time = 日付/時刻
+dataSource_recentOperations_field_status = ステータス
+dataSource_recentOperations_error_fetchFailure = Failed to load recently completed operations.
+
+# Scheduled Operations (ResourceOperationScheduleComposites)
+#------------------------------------------------------------
+dataSource_scheduledOperations_field_resource = リソース
+dataSource_scheduledOperations_field_location = 場所
+dataSource_scheduledOperations_field_operation = オペレーション
+dataSource_scheduledOperations_field_time = 日付/時刻
+dataSource_scheduledOperations_error_fetchFailure = Failed to load scheduled operations.
+
+# Operation Schedules
+#--------------------
+dataSource_operationSchedule_field_id = スケジュールID
+dataSource_operationSchedule_field_operationName = オペレーション
+dataSource_operationSchedule_field_operationDisplayName = オペレーション
+dataSource_operationSchedule_field_subject = オーナー
+dataSource_operationSchedule_field_description = ノート
+dataSource_operationSchedule_field_nextFireTime = 次回の実行
+dataSource_operationSchedule_field_timeout = タイムアウト (秒)
+
+# Operation Histories
+#--------------------
+dataSource_operationHistory_field_operationName = オペレーション名
+dataSource_operationHistory_field_createdTime = 生成時刻
+dataSource_operationHistory_field_startedTime = 開始時刻
+dataSource_operationHistory_field_subject = 要求者
+dataSource_operationHistory_error_fetchFailure = Failure loading operation histories.
+
+# Configuration History
+#-------------------------------
+dataSource_configurationHistory_dateSubmitted = 発行日
+dataSource_configurationHistory_dateCompleted = 完了日
+dataSource_configurationHistory_updateType = 更新タイプ
+dataSource_configurationHistory_updateType_individual = 個人
+dataSource_configurationHistory_updateType_group = グループ
+dataSource_configurationHistory_currentConfig = This is the current configuration
+dataSource_configurationHistory_clickToSeeError = Double click to see error message...
+dataSource_configurationHistory_error_fetchFailure = Unable to load configuration history.
+
+# Resource Errors
+#-------------------------
+dataSource_resourceErrors_field_summary = サマリ
+dataSource_resourceErrors_field_errorType = エラータイプ
+dataSource_resourceErrors_field_timeOccured = 時刻
+dataSource_resourceErrors_error_fetchFailure = Failed to find Resource errors for Resource with id [{0}].
+dataSource_resourceErrors_clickStatusIcon = Click the icon for more details
+dataSource_resourceErrors_deleteSuccess = You have successfully deleted [{0}] resource error messages.
+dataSource_resourceErrors_deleteFailure = Failed to delete resource errors
+
+# Template Schedules
+#-------------------------
+datasource_templateSchedules_disabled = Disabled collection of selected metric [{0}].
+datasource_templateSchedules_disabled_detailed = Disabled collection of metric [{0}] [{1}] by default for ResourceType with id [{2}].
+datasource_templateSchedules_disabled_failed = Failed to disable collection of metric [{0}] [{1}] by default for ResourceType with id [{2}].
+datasource_templateSchedules_enabled = Enabled collection of selected metric [{0}].
+datasource_templateSchedules_enabled_detailed = Enabled collection of metric [{0}] [{1}] by default for ResourceType with id [{2}].
+datasource_templateSchedules_enabled_failed = Failed to enable collection of metric [{0}] [{1}] by default for ResourceType with id [{2}].
+datasource_templateSchedules_updated = Updated collection intervals of selected metric [{0}].
+datasource_templateSchedules_updated_detail = Collection interval for metric [{0}] [{1}] by default for ResourceType with id [{2}] set to [{3}] seconds.
+datasource_templateSchedules_updated_failed = Failed to set collection interval to [{0}] seconds for metric [{1}] [{2}] by default for ResourceType with id [{3}].
+
+
+#********************************** VIEW-SPECIFIC *************************************
+
+#================= Administration ==================
+
+view_admin_administration = 管理
+view_admin_landing = このセクションにおいて、RHQグローバル設定が管理されます。これはセキュリティ構成、プラグイン設定、RHQサーバーとエージェントの管理を含みます。
+view_admin_configuration = 構成
+view_admin_security = セキュリティ
+view_admin_topology = トポロジー
+view_admin_content = コンテント
+
+view_adminSecurity_users = ユーザー
+view_adminSecurity_roles = ロール
+
+view_adminTopology_affinityGroups = アフィニティグループ
+view_adminTopology_agents = エージェント
+view_adminTopology_partitionEvents = イベントの分類
+view_adminTopology_remoteAgentInstall = リモートエージェントのインストール
+view_adminTopology_servers = サーバー
+
+view_adminConfig_downloads = ダウンロード
+view_adminConfig_plugins = プラグイン
+view_adminConfig_systemSettings = システム設定
+view_adminConfig_templates = テンプレート
+
+view_adminContent_contentSources = コンテントソース
+view_adminContent_repositories = リポジトリ
+
+# Administration/Templates
+#--------------------------------
+
+view_adminTemplates_platforms = プラットフォーム
+view_adminTemplates_platformServices = プラットフォームサービス
+view_adminTemplates_servers = サービス
+view_adminTemplates_enabledAlertTemplates = 有効なアラートテンプレート
+view_adminTemplates_disabledAlertTemplates = 無効なアラートテンプレート
+view_adminTemplates_enabledMetricTemplates = 有効なメトリックテンプレート
+view_adminTemplates_disabledMetricTemplates = 無効なメトリックテンプレート
+view_adminTemplates_editAlertTemplate = アラートテンプレートの編集
+view_adminTemplates_editMetricTemplate = メトリックテンプレートの編集
+view_adminTemplates_prompt_enabledAlertTemplates = Number of alert templates that are enabled on this resource type
+view_adminTemplates_prompt_disabledAlertTemplates = Number of alert templates that are created but disabled on this resource type
+view_adminTemplates_prompt_enabledMetricTemplates = Number of metric schedules that are enabled by default on this resource type
+view_adminTemplates_prompt_disabledMetricTemplates = Number of metric schedules that are disabled by default on this resource type
+
+# Administration/Security/Users
+#--------------------------------
+view_adminUsersList_dataTypeName = ユーザー
+view_adminUsersList_dataTypeNamePlural = ユーザー
+
+# Administration/Security/Users/#
+#--------------------------------
+view_adminUsersDetails_dataTypeName = ユーザー
+
+# Administration/Security/Roles/#
+#--------------------------------
+view_adminRoles_assignedGroups = Assigned Resource Groups
+view_adminRoles_assignedSubjects = Assigned Subjects
+view_adminRoles_failLdap = Failed to determine if LDAP configured - assuming no LDAP.
+view_adminRoles_failLdapGroups = Failed to retrieve available LDAP groups - assuming no LDAP groups.
+view_adminRoles_failLdapGroupsRole = Failed to load LDAP groups available for role.
+view_adminRoles_failRoles = Failed to fetch roles.
+view_adminRoles_globalPerms = Global Permissions
+view_adminRoles_ldapGroups = LDAP Groups
+view_adminRoles_ldapGroupsReadOnly = LDAP group data is read only
+view_adminRoles_noItems = No items to show
+view_adminRoles_noLdap = The LDAP security integration is not configured. To configure LDAP, go to <a {0}>{1}</a>.
+view_adminRoles_perms = Permissions
+view_adminRoles_resourcePerms = Resource Permissions
+view_adminRoles_roleAdded = Role [{0}] added.
+view_adminRoles_roleDeleteFailed = Failed to delete role [{0}].
+view_adminRoles_roleDeleted = Role [{0}] deleted.
+view_adminRoles_roleUpdateFailed = Failed to update role [{0}].
+view_adminRoles_roleUpdated = Role [{0}] updated.
+view_adminRoles_permissions_globalPermissions = Global Permissions
+view_adminRoles_permissions_resourcePermissions = Resource Permissions
+view_adminRoles_permissions_readAccessImplied = Read access for the {0} permission is implied and cannot be disabled.
+view_adminRoles_permissions_isAuthorized = Authorized?
+view_adminRoles_permissions_isRead = Read?
+view_adminRoles_permissions_isWrite = Write?
+view_adminRoles_permissions_read = Read:
+view_adminRoles_permissions_write = Write:
+view_adminRoles_permissions_perm_manageSecurity = Manage Security
+view_adminRoles_permissions_permDesc_manageSecurity = can create, update, or delete users and roles (viewing is implied for everyone)
+view_adminRoles_permissions_perm_manageInventory = Manage Inventory
+view_adminRoles_permissions_permDesc_manageInventory = has all Resource permissions, as described below, for all Resources; can create, update, and delete groups; and can import auto-discovered or manually discovered Resources
+view_adminRoles_permissions_perm_manageSettings = Manage Settings
+view_adminRoles_permissions_permDesc_manageSettings = can modify the RHQ Server configuration and perform any Server-related functionality
+view_adminRoles_permissions_perm_manageBundles = Manage Bundles
+view_adminRoles_permissions_permDesc_manageBundles = can create, update, or delete provisioning bundles (viewing is implied for everyone)
+view_adminRoles_permissions_perm_manageRepositories = Manage Repositories
+view_adminRoles_permissions_permDesc_manageRepositories = can create, update, or delete repositories of any user (everyone can create their own repositories), can associate content sources to repositories.
+view_adminRoles_permissions_perm_inventory = Inventory
+view_adminRoles_permissions_permReadDesc_inventory = (IMPLIED) view Resource properties (name, description, version, etc.), connection settings, and connection settings history
+view_adminRoles_permissions_permWriteDesc_inventory = update Resource name, version, description, and connection settings; delete connection settings history items
+view_adminRoles_permissions_perm_manageMeasurements = Manage Measurements
+view_adminRoles_permissions_permReadDesc_manageMeasurements = (IMPLIED) view metric data and collection schedules
+view_adminRoles_permissions_permWriteDesc_manageMeasurements = update metric collection schedules
+view_adminRoles_permissions_perm_manageAlerts = Manage Alerts
+view_adminRoles_permissions_permReadDesc_manageAlerts = (IMPLIED) view alert definitions and alert history
+view_adminRoles_permissions_permWriteDesc_manageAlerts = create, update, and delete alert definitions; acknowledge and delete alert history items
+view_adminRoles_permissions_perm_configure = Configure
+view_adminRoles_permissions_permReadDesc_configure = view Resource configuration and Resource configuration revision history
+view_adminRoles_permissions_permWriteDesc_configure = update Resource configuration; delete Resource configuration revision history items
+view_adminRoles_permissions_perm_control = Control
+view_adminRoles_permissions_permReadDesc_control = (IMPLIED) view available operations and operation execution history
+view_adminRoles_permissions_permWriteDesc_control = execute operations; delete operation execution history items
+view_adminRoles_permissions_perm_manageEvents = Manage Events
+view_adminRoles_permissions_permReadDesc_manageEvents = (IMPLIED) view events
+view_adminRoles_permissions_permWriteDesc_manageEvents = delete events
+view_adminRoles_permissions_perm_manageContent = Manage Content
+view_adminRoles_permissions_permReadDesc_manageContent = (IMPLIED) view installed and available packages; view package installation history
+view_adminRoles_permissions_permWriteDesc_manageContent = subscribe to content sources; install and uninstall packages
+view_adminRoles_permissions_perm_createChildResources = Create Child Resources
+view_adminRoles_permissions_permReadDesc_createChildResources = (IMPLIED) view child Resource creation history
+view_adminRoles_permissions_permWriteDesc_createChildResources = create new child Resources (for child Resources of types that are creatable)
+view_adminRoles_permissions_perm_deleteChildResources = Delete Child Resources
+view_adminRoles_permissions_permReadDesc_deleteChildResources = (IMPLIED) view child Resource deletion history
+view_adminRoles_permissions_permWriteDesc_deleteChildResources = uninventory resources; delete Resources (for Resources of types that are deletable)
+view_adminRoles_permissions_autoselecting_manageSecurity_implied = Autoselected unselected permissions, since MANAGE_SECURITY implies all other permissions...
+view_adminRoles_permissions_autoselecting_manageInventory_implied = Autoselected unselected Resource permissions, since MANAGE_INVENTORY implies all Resource permissions...
+view_adminRoles_permissions_autoselecting_configureWrite_implied = Autoselected CONFIGURE_READ permission, since CONFIGURE_WRITE implies it...
+view_adminRoles_permissions_autoselecting_configureRead_implied = Autodeselected CONFIGURE_WRITE permission, since lack of CONFIGURE_READ implies lack of it...
+view_adminRoles_permissions_illegalDeselectionDueToManageSecuritySelection = {0} permission cannot be deselected, unless the Manage Security permission, which implies all other permissions, is deselected first.
+view_adminRoles_permissions_illegalDeselectionDueToManageInventorySelection = {0} permission cannot be deselected, unless Manage Inventory, which implies all Resource permissions, is deselected first.
+view_adminRoles_permissions_illegalDeselectionDueToCorrespondingWritePermSelection = {0} read permission cannot be deselected, unless the {0} write permission, which implies the read permission, is deselected first.
+
+# Administration/Topology/RemoteAgentInstall/#
+#--------------------------------
+view_remoteAgentInstall_agentStatus = エージェントのステータス
+view_remoteAgentInstall_agentStatusDefault = -ステータスの更新ボタンをクリックしてください-
+view_remoteAgentInstall_connInfo = 接続情報
+view_remoteAgentInstall_buttonFindAgent = エージェントの発見
+view_remoteAgentInstall_error_1 = Error occurred while trying to find agent install path
+view_remoteAgentInstall_error_2 = Could not find an agent installed when looking in common locations
+view_remoteAgentInstall_error_3 = Could not find an agent installed at or under [{0}]
+view_remoteAgentInstall_error_4 = Failed to install agent
+view_remoteAgentInstall_error_5 = Failed to start agent
+view_remoteAgentInstall_error_6 = Failed to stop agent
+
+view_remoteAgentInstall_installAgent = エージェントのインストール
+view_remoteAgentInstall_installInfo = エージェントのインストール情報
+view_remoteAgentInstall_installPath = エージェントのインストールパス
+view_remoteAgentInstall_owner = オーナー
+view_remoteAgentInstall_promptInstallPath = Where the agent is or will be installed. If you aren''t sure where an agent is installed, enter a parent directory and click the ''Find Agent'' button to scan that directory and below. If you enter an empty path, common locations are searched on the host for an agent install.
+view_remoteAgentInstall_promptHost = The host where the agent is or will be installed
+view_remoteAgentInstall_promptPassword =The credentials that are used to authenticate the user on the host via SSH
+view_remoteAgentInstall_promptPort = The port the SSH server is listening to. If not specified, the default is 22
+view_remoteAgentInstall_promptUser = The name of the user whose credentials are passed to the host via SSH
+view_remoteAgentInstall_result = Result
+view_remoteAgentInstall_resultCode = ResultCode
+view_remoteAgentInstall_startAgent = エージェントの起動
+view_remoteAgentInstall_startAgentResults = Agent start results: [{0}]
+view_remoteAgentInstall_step = ステップ
+view_remoteAgentInstall_stopAgent = エージェントの停止
+view_remoteAgentInstall_stopAgentResults = Agent stop results: [{0}]
+view_remoteAgentInstall_success = Agent installation complete
+view_remoteAgentInstall_updateStatus = スタータスの更新
+
+# Administration/SystemSettings
+#------------------------------
+view_admin_systemSettings_cannotLoadSettings = Cannot obtain the current system settings
+view_admin_systemSettings_savedSettings = You successfully saved the system properties
+view_admin_systemSettings_saveFailure = Failed to save the system settings
+view_admin_systemSettings_fixBeforeSaving = Please fix the invalid values before saving
+view_admin_systemSettings_group_general = 全体構成プロパティ
+view_admin_systemSettings_group_dataMgr = データマネージャー構成プロパティ
+view_admin_systemSettings_group_baseline = 自動ベースライン構成プロパティ
+view_admin_systemSettings_group_ldap = LDAP 構成プロパティ
+view_admin_systemSettings_cannotLoadServerDetails = Cannot load server details
+view_admin_systemSettings_serverDetails = Server Details
+view_admin_systemSettings_serverDetails_buildNumber = Build Number
+view_admin_systemSettings_serverDetails_tz = Server Time Zone
+view_admin_systemSettings_serverDetails_time = Server Local Time
+view_admin_systemSettings_serverDetails_installDir = Server Installation Directory
+view_admin_systemSettings_serverDetails_dbUrl = Database Connection URL
+view_admin_systemSettings_serverDetails_dbName = Database Product Name
+view_admin_systemSettings_serverDetails_dbVersion = Database Product Version
+view_admin_systemSettings_serverDetails_dbDriverName = Database Driver Name
+view_admin_systemSettings_serverDetails_dbDriverVersion = Database Driver Version
+view_admin_systemSettings_serverDetails_currentTable = Current Measurement Raw Table
+view_admin_systemSettings_serverDetails_nextRotation = Next Measurement Table Rotation
+view_admin_systemSettings_BaseURL_name = GUI Console URL
+view_admin_systemSettings_BaseURL_desc = A URL to the server GUI, used mainly within alert email notifications.
+view_admin_systemSettings_AgentMaxQuietTimeAllowed_name = Agent Max Quiet Time Allowed
+view_admin_systemSettings_AgentMaxQuietTimeAllowed_desc = If this amount of time passes without hearing from an agent, that quiet agent will be considered down. This value is specified in minutes.
+view_admin_systemSettings_EnableAgentAutoUpdate_name = Enable Agent Auto-Updates
+view_admin_systemSettings_EnableAgentAutoUpdate_desc = Determines if the server will allow agents to auto-update themselves. You will not be able to download agent distributions from the server if this is disabled.
+view_admin_systemSettings_EnableDebugMode_name = Enable Debug Mode
+view_admin_systemSettings_EnableDebugMode_desc = If enabled, the server will enter debug mode.
+view_admin_systemSettings_EnableExperimentalFeatures_name = Enable Experimental Features
+view_admin_systemSettings_EnableExperimentalFeatures_desc = If enabled, any experimental features that exist in the current product will be available.
+view_admin_systemSettings_DataMaintenance_name = Database Maintenance Period
+view_admin_systemSettings_DataMaintenance_desc = How often database maintenance is performed (for example, vacuuming if using Postgres). This is specified in hours.
+view_admin_systemSettings_AvailabilityPurge_name = Delete Availability Data Older Than
+view_admin_systemSettings_AvailabilityPurge_desc = How old availability data must be before being purged from the database. This is specified in days.
+view_admin_systemSettings_AlertPurge_name = Delete Alerts Older Than
+view_admin_systemSettings_AlertPurge_desc = How old alert history items must be before being purged from the database. This is specified in days.
+view_admin_systemSettings_TraitPurge_name = Delete Measurement Traits Older Than
+view_admin_systemSettings_TraitPurge_desc = How old measurement trait data must be before being purged from the database. This is specified in days.
+view_admin_systemSettings_RtDataPurge_name = Delete Response Time Data Older Than
+view_admin_systemSettings_RtDataPurge_desc = How old response time data must be before being purged from the database. This is specified in days.
+view_admin_systemSettings_EventPurge_name = Delete Events Older Than
+view_admin_systemSettings_EventPurge_desc = How old event data must be before being purged from the database. This is specified in days.
+view_admin_systemSettings_DataReindex_name = Reindex Data Tables Nightly
+view_admin_systemSettings_DataReindex_desc = If enabled, certain database tables will be re-indexed periodically.
+view_admin_systemSettings_BaselineFrequency_name = Baseline Calculation Frequency
+view_admin_systemSettings_BaselineFrequency_desc = The frequency which the auto-calculation of baselines will be performed. If 0, baseline auto-calculation is disabled. This is specified in days.
+view_admin_systemSettings_BaselineDataSet_name = Baseline Dataset
+view_admin_systemSettings_BaselineDataSet_desc = The amount of past measurement data that is used to determine a baseline. This is specified in days.
+view_admin_systemSettings_JAASProvider_name = Enable LDAP
+view_admin_systemSettings_JAASProvider_desc = Should LDAP be used to determine user identity?
+view_admin_systemSettings_LDAPUrl_name = LDAP URL
+view_admin_systemSettings_LDAPUrl_desc = URL to the LDAP Server
+view_admin_systemSettings_LDAPProtocol_name = SSL
+view_admin_systemSettings_LDAPProtocol_desc = Should communication with the LDAP server be done over SSL?
+view_admin_systemSettings_LDAPLoginProperty_name = Login Property
+view_admin_systemSettings_LDAPLoginProperty_desc = The LDAP property that contains the user name. Defaults to "cn". If multiple matches are found, the first entry found is used.
+view_admin_systemSettings_LDAPFilter_name = Search Filter
+view_admin_systemSettings_LDAPFilter_desc = Any additional filters to apply when doing the LDAP search. This is useful if the population to authenticate can be identified via a given LDAP property, e.g. RHQUser=true
+view_admin_systemSettings_LDAPGroupFilter_name = Group Search Filter
+view_admin_systemSettings_LDAPGroupFilter_desc = LDAP search filter that must return all LDAP groups available for authorization. This is used for LDAP group authorization.
+view_admin_systemSettings_LDAPGroupMember_name = Group Member Filter
+view_admin_systemSettings_LDAPGroupMember_desc = LDAP search filter that is used in conjunction with the group search filter to determine user authorization. This is used for LDAP group authorization.
+view_admin_systemSettings_LDAPBaseDN_name = Search Base
+view_admin_systemSettings_LDAPBaseDN_desc = The base of the directory tree to search for usernames and passwords while authenticating users, e.g. ou=People,dc=redhat,dc=com
+view_admin_systemSettings_LDAPBindDN_name = Username
+view_admin_systemSettings_LDAPBindDN_desc = The username to connect to the LDAP server when querying the LDAP user database. This is typically the full LDAP distinguished name (DN) of a manager user, e.g. cn=Manager,dc=redhat,dc=com
+view_admin_systemSettings_LDAPBindPW_name = Password
+view_admin_systemSettings_LDAPBindPW_desc = The credentials of the user used to connect to the LDAP server when querying the LDAP user database.
+
+# Administration/Downloads
+#------------------------------
+view_admin_downloads_agentDownload = エージェントのダウンロード
+view_admin_downloads_cliDownload = コマンドラインクライアントのダウンロード
+view_admin_downloads_bundleDownload = バンドルデプロイヤのダウンロード
+view_admin_downloads_connectorsDownload = コネクタのダウンロード
+
+view_admin_downloads_agent_loadError = Cannot get agent version info
+view_admin_downloads_agent_version = エージェントバージョン
+view_admin_downloads_agent_buildNumber = エージェントビルド
+view_admin_downloads_agent_md5 = エージェント MD5
+view_admin_downloads_agent_link_label = リンク
+view_admin_downloads_agent_link_value = エージェント {0} ({1}) のダウンロード
+view_admin_downloads_agent_help = <p> \
+ This is the RHQ Agent Update Binary jar file. The purpose of this \
+ jar file is to allow you to install a fresh agent on a machine \
+ where an agent does not yet exist and to allow you to update \
+ an agent that is already installed on a machine. \
+ For more details, run this agent download jar with the --help command line option:<br/> \
+ <b>java -jar <agent-download.jar> --help</b> \
+ </p> \
+ <h3>Agent Install</h3> \
+ <p> \
+ <b>java -jar <agent-download.jar> --install[=<new agent directory>]</b><br/> \
+ This command will install a new agent. If you do not specify the new agent directory, the default will be "." \
+ </p> \
+ <h3>Agent Update</h3> \
+ <p> \
+ <b>java -jar <agent-download.jar> --update[=<old agent home>]</b><br/> \
+ This will update an existing agent that was already installed. \
+ If you do not specify the directory where the old, existing agent was installed, it will assumed to be "rhq-agent". \
+ </p>
+
+view_admin_downloads_cli_loadError = Cannot get CLI version info
+view_admin_downloads_cli_version = CLI Version
+view_admin_downloads_cli_buildNumber = CLI Build
+view_admin_downloads_cli_md5 = CLI MD5
+view_admin_downloads_cli_link_label = Link
+view_admin_downloads_cli_link_value = Download CLI {0} ({1})
+view_admin_downloads_cli_help = <p> \
+ This is the Command Line Client tool, otherwise known as the CLI. \
+ It is a standalone tool that runs from within a console and provides a \
+ command line interface to the RHQ Server. You can invoke commands via the CLI \
+ as well as run scripts to perform automated tasks. See the documentation for \
+ more information on how to install and use the CLI. \
+ </p>
+
+view_admin_downloads_bundle_loadError = Cannot get bundle deployer info
+view_admin_downloads_bundle_link_label = Link
+view_admin_downloads_bundle_link_value = Download Bundle Deployer {0}
+view_admin_downloads_bundle_help = <p> \
+ This is the Bundle Deployer tool. It is for use by developers and packagers of RHQ bundles. \
+ This standalone tool allows you to test your bundles and their recipes from a console. \
+ </p>
+
+view_admin_downloads_connectors_loadError = Cannot get connectors info
+view_admin_downloads_connectors_none = No connectors are available for download
+view_admin_downloads_connectors_help = Connectors are software that is needed in order for some products to be manageable by RHQ. You install connectors into some managed products so RHQ agents can talk to them. See the documentation for more information.
+
+# Measurement Templates view
+view_admin_measTemplates_title = Template Metric Collection Schedules
+view_admin_measTemplates_updateExisting_title = Update Existing Schedules
+view_admin_measTemplates_updateExisting_tooltip = Check this box to update the collection schedules for the selected metrics on all existing resources of this type. If this is not checked, the template schedules will only be applied to new resources of this type that are added to inventory in the future.
+
+#==================== Alerts ======================
+view_alerts_table_title_group = グループアラート履歴
+view_alerts_table_title_resource = リソースアラート履歴
+view_alerts_table_filter_priority = 優先度フィルター
+view_alerts_field_created_time = 生成時刻
+view_alerts_field_modified_time = 修正時刻
+view_alerts_field_enabled = 有効
+view_alerts_field_ack_time = 確認時刻
+view_alerts_field_ack_subject = 確認サブジェクト
+view_alerts_field_ack_status = ステータス
+view_alerts_field_ack_status_noAck = 未確認
+view_alerts_field_ack_status_noAckHover = Not yet Acknowledged
+view_alerts_field_ack_status_ack = 確認 ({0})
+view_alerts_field_ack_status_ackHover = Acknowledged by {0} at {1}
+view_alerts_field_name = 名前
+view_alerts_field_condition_text = 条件テキスト
+view_alerts_field_condition_text_none = No Conditions
+view_alerts_field_condition_text_many = Multiple Conditions
+view_alerts_field_condition_value = Condition Value
+view_alerts_field_priority = 優先度
+view_alerts_field_parent = 親
+view_alerts_field_protected = Protected
+view_alerts_field_protected_tooltip = If true, this definition is protected from being changed by the parent definition. In other words, the parent definition settings will not override this definition.
+view_alerts_loadFailed = Failed to fetch alerts data
+view_alerts_delete_confirm = Delete the selected alert(s)?
+view_alerts_delete_confirm_all = Delete all alerts from this source?
+view_alerts_delete_success = Successfully deleted {0} alerts
+view_alerts_delete_failure = Failed to delete alerts with id''s: {0}
+view_alerts_delete_failure_all = Failed to delete all alerts from this source
+view_alerts_ack_confirm = Acknowledge the selected alert(s)?
+view_alerts_ack_confirm_all = Acknowledge all alerts from this source?
+view_alerts_ack_success = Successfully acknowledged {0} alerts
+view_alerts_ack_failure = Failed to acknowledge alerts with id''s: {0}
+view_alerts_ack_failure_all = Failed to acknowledge all alerts from this source
+view_alert_details_loadFailed = Failed to fetch alert details
+view_alert_details_field_ack_by = Acknowledged by
+view_alert_details_field_ack_at = Acknowledged at
+view_alert_details_field_recovery_info = Recovery Info
+view_alert_definition_for_type = View Template
+view_alert_definition_for_group = View Group Definition
+view_alert_definitions_table_title_group = グループアラート定義
+view_alert_definitions_table_title_resource = リソースアラート定義
+view_alert_definitions_loadFailed = Failed to fetch alert definition data
+view_alert_definitions_loadFailed_single = Failed to fetch data for alert definition with id {0}
+view_alert_definitions_enable_confirm = Enable the selected alert definition(s)?
+view_alert_definitions_enable_success = Successfully enabled {0} alert definitions
+view_alert_definitions_enable_failure = Failed to enable the selected alert definitions
+view_alert_definitions_disable_confirm = Disable the selected alert definition(s)?
+view_alert_definitions_disable_success = Successfully disabled {0} alert definitions
+view_alert_definitions_disable_failure = Failed to disable the selected alert definitions
+view_alert_definitions_delete_confirm = Delete the selected alert definition(s)?
+view_alert_definitions_delete_success = Successfully deleted {0} alert definitions
+view_alert_definitions_delete_failure = Failed to deleted the selected alert definitions
+view_alert_definitions_create_success = Alert definition successfully created
+view_alert_definitions_create_failure = Alert definition creation failed
+view_alert_definitions_update_success = Alert definition successfully updated
+view_alert_definitions_update_failure = Alert definition update failed
+view_alert_definition_condition_editor_option_label = Condition Type
+view_alert_definition_condition_editor_option_availability = Availability Change
+view_alert_definition_condition_editor_option_metric_threshold = Measurement Absolute Value Threshold
+view_alert_definition_condition_editor_option_metric_baseline = Measurement Baseline Threshold
+view_alert_definition_condition_editor_option_metric_change = Measurement Value Change
+view_alert_definition_condition_editor_option_metric_calltime_threshold = Call Time Value Threshold
+view_alert_definition_condition_editor_option_metric_calltime_change = Call Time Value Change
+view_alert_definition_condition_editor_option_metric_trait_change = Trait Value Change
+view_alert_definition_condition_editor_option_operation = Operation Execution
+view_alert_definition_condition_editor_option_resource_configuration = Resource Configuration Change
+view_alert_definition_condition_editor_option_event = Event Detection
+view_alert_definition_condition_editor_avilability_tooltip = Specify the availability state change that will trigger the condition.
+view_alert_definition_condition_editor_avilability_value = Availability
+view_alert_definition_condition_editor_avilability_option_up = Comes up
+view_alert_definition_condition_editor_avilability_option_down = Goes down
+view_alert_definition_condition_editor_metric_common_definition_not_found = Should have found metric definition - something is wrong
+view_alert_definition_condition_editor_metric_threshold_tooltip = Specify the threshold value that, when violated, triggers the condition. The value you specify is an absolute value with an optional units specifier.
+view_alert_definition_condition_editor_metric_threshold_name = Metric
+view_alert_definition_condition_editor_metric_threshold_value = Metric Value
+view_alert_definition_condition_editor_metric_threshold_value_tooltip = The threshold value of the metric that will trigger the condition when compared using the selected comparator.
+view_alert_definition_condition_editor_metric_threshold_comparator = Comparator
+view_alert_definition_condition_editor_metric_threshold_comparator_less = Less than
+view_alert_definition_condition_editor_metric_threshold_comparator_equal = Equal to
+view_alert_definition_condition_editor_metric_threshold_comparator_greater = Greater Than
+view_alert_definition_condition_editor_metric_threshold_comparator_tooltip = How a collected metric value should be compared to the given threshold value
+view_alert_definition_condition_editor_metric_baseline_tooltip = Specify the baseline value that must be violated to trigger the condition. The value you specify is a percentage of the given baseline value.
+view_alert_definition_condition_editor_metric_baseline_percentage = Baseline Percentage
+view_alert_definition_condition_editor_metric_baseline_percentage_tooltip = A collected metric value will trigger this condition when compared to this percentage of the selected baseline value using the selected comparator
+view_alert_definition_condition_editor_metric_baseline_value = Baseline
+view_alert_definition_condition_editor_metric_change_tooltip = Specify the metric whose value must change to trigger the condition.
+view_alert_definition_condition_editor_metric_calltime_threshold_tooltip = Specify the calltime threshold value that, when violated, triggers the condition. The value you specify is an absolute value with an optional units specifier. You also must specify which calltime limit to compare the value with (minimum, maximum or average calltime value).
+view_alert_definition_condition_editor_metric_calltime_common_name = Call Time Metric
+view_alert_definition_condition_editor_metric_calltime_common_limit = Call Time Limit
+view_alert_definition_condition_editor_metric_calltime_common_limit_tooltip = The calltime limit value that is to be compared with the given value
+view_alert_definition_condition_editor_metric_calltime_common_regex = Regular Expression
+view_alert_definition_condition_editor_metric_calltime_common_regex_tooltip = If specified, this is a regular expression that must match a call destination in order to trigger the condition.
+view_alert_definition_condition_editor_metric_calltime_common_comparator = Comparator
+view_alert_definition_condition_editor_metric_calltime_common_comparator_shrinks = Shrinks
+view_alert_definition_condition_editor_metric_calltime_common_comparator_grows = Grows
+view_alert_definition_condition_editor_metric_calltime_common_comparator_changes = Changes
+view_alert_definition_condition_editor_metric_calltime_common_comparator_tooltip = How a collected calltime value should be compared to the given calltime limit
+view_alert_definition_condition_editor_metric_calltime_threshold_value = Call Time Value
+view_alert_definition_condition_editor_metric_calltime_threshold_value_tooltip = The threshold value of the metric that will trigger the condition when compared using the selected comparator.
+view_alert_definition_condition_editor_metric_calltime_change_tooltip = Specify the calltime value that, when changed at least a specified amount, triggers the condition. You must specify which calltime limit to check (minimum, maximum or average calltime value) and the percentage of change that must occur.
+view_alert_definition_condition_editor_metric_calltime_change_percentage = Percentage Change
+view_alert_definition_condition_editor_metric_calltime_change_percentage_tooltip = A collected calltime value will trigger this condition when it differs by at least this percentage of the selected calltime limit value
+view_alert_definition_condition_editor_metric_trait_change_tooltip = Specify the trait whose value must change to trigger the condition.
+view_alert_definition_condition_editor_metric_trait_change_value = Trait
+view_alert_definition_condition_editor_operation_tooltip = Specify the result that must occur when the selected operation is executed in order to trigger the condition.
+view_alert_definition_condition_editor_operation_value = オペレーション
+view_alert_definition_condition_editor_operation_status = オペレーションステータス
+view_alert_definition_condition_editor_operation_status_inprogress = 処理中
+view_alert_definition_condition_editor_operation_status_success = 成功
+view_alert_definition_condition_editor_operation_status_failure = 失敗
+view_alert_definition_condition_editor_operation_status_canceled = キャンセル済
+view_alert_definition_condition_editor_resource_configuration_tooltip = This condition is triggered when the resource configuration changes.
+view_alert_definition_condition_editor_event_tooltip = Specify the event severity that an event message must be reported with in order to trigger this condition. If you specify an optional regular expression, the event message must also match that regular expression in order for the condition to trigger.
+view_alert_definition_condition_editor_event_severity = Event Severity
+view_alert_definition_condition_editor_event_severity_debug = Debug
+view_alert_definition_condition_editor_event_severity_info = Info
+view_alert_definition_condition_editor_event_severity_warn = Warn
+view_alert_definition_condition_editor_event_severity_error = Error
+view_alert_definition_condition_editor_event_severity_fatal = Fatal
+view_alert_definition_condition_editor_event_regex = Regular Expression
+view_alert_definition_condition_editor_event_regex_tooltip = If specified, this is a regular expression that must match a collected event message in order to trigger the condition.
+view_alert_definition_condition_editor_common_min = Minimum
+view_alert_definition_condition_editor_common_avg = Average
+view_alert_definition_condition_editor_common_max = Maximum
+view_alert_definition_condition_editor_delete_confirm = Delete the selected alert condition(s)?
+view_alert_definition_notification_editor_title_add = 通知の追加
+view_alert_definition_notification_editor_title_edit = 通知の編集
+view_alert_definition_notification_editor_sender = Notification Sender
+view_alert_definition_notification_editor_none_available = No alert senders available
+view_alert_definition_notification_editor_loadFailed = Cannot get alert senders
+view_alert_definition_notification_editor_loadFailed_single = Cannot get alert sender configuration definition
+view_alert_definition_notification_editor_saveFailed = Cannot save the notification configuration
+view_alert_definition_notification_editor_field_sender = Sender
+view_alert_definition_notification_editor_field_configuration = Configuration
+view_alert_definition_notification_editor_field_configuration_not_loaded = Unknown
+view_alert_definition_notification_editor_field_configuration_loadFailed = Failed to get notification configuration preview
+view_alert_definition_notification_editor_delete_confirm = Are you sure you want to delete the selected alert notifications?
+view_alert_definition_notification_operation_editor_mode_title = リソース選択モード
+view_alert_definition_notification_operation_editor_mode_this = This Resource
+view_alert_definition_notification_operation_editor_mode_specific = Specific Resource
+view_alert_definition_notification_operation_editor_mode_relative = Relative Resource
+view_alert_definition_notification_operation_editor_mode_unknown = UNKNOWN OPTION - THIS IS A BUG
+view_alert_definition_notification_operation_editor_common_operation = Operation
+view_alert_definition_notification_operation_editor_specific_resource = Resource
+view_alert_definition_notification_operation_editor_specific_pick_button = Pick
+view_alert_definition_notification_operation_editor_specific_pick_text = Pick a resource...
+view_alert_definition_notification_operation_editor_specific_pick_error_invalid = Please pick a resource
+view_alert_definition_notification_operation_editor_specific_pick_error_no_operation = Please pick a resource that has one or more operations
+view_alert_definition_notification_operation_editor_relative_ancestor = Start Search From
+view_alert_definition_notification_operation_editor_relative_ancestor_tooltip = Select the top of the type hierarchy from which to search its descendant tree for the Filter By type
+view_alert_definition_notification_operation_editor_relative_ancestor_loadFailed = Cannot get type ancestry
+view_alert_definition_notification_operation_editor_relative_ancestor_root = Root Ancestor Type
+view_alert_definition_notification_operation_editor_relative_descendant = Then Filter By
+view_alert_definition_notification_operation_editor_relative_descendant_tooltip = The resource type to search for under the root type defined in the Start Search From selection.
+view_alert_definition_notification_operation_editor_relative_descendant_filter_tooltip = A specific name to uniquely identify a resource when more than one resource of the selected type might exist. This is optional if there will only ever be one resource of the resource type in the selected type hierarchy.
+view_alert_definition_notification_operation_editor_relative_descendant_loadFailed = Cannot get type descendants
+view_alert_definition_notification_operation_editor_operations_loadFailed = Failed to load the list of available operations
+view_alert_definition_notification_operation_editor_operations_no_parameters = This operation does not take any parameters
+view_alert_definition_notification_role_editor_loadFailed = Cannot determine current roles - starting empty
+view_alert_definition_notification_role_editor_restoreFailed = Cannot use current roles - starting empty
+view_alert_definition_notification_role_editor_saveFailed = Cannot save the selected roles
+view_alert_definition_notification_user_editor_loadFailed = Cannot determine current users - starting empty
+view_alert_definition_notification_user_editor_restoreFailed = Cannot use current users - starting empty
+view_alert_definition_notification_user_editor_saveFailed = Cannot save the selected users
+view_alert_definition_notification_cliScript_editor_repository = Repository
+view_alert_definition_notification_cliScript_editor_script = Script
+view_alert_definition_notification_cliScript_editor_whichUser = User To Run The Script As
+view_alert_definition_notification_cliScript_editor_thisUser = Myself
+view_alert_definition_notification_cliScript_editor_anotherUser = Another User
+view_alert_definition_notification_cliScript_editor_verifyAuthentication = Verify
+view_alert_definition_notification_cliScript_editor_loadFailed = Loading the CLI Notification Editor Failed.
+view_alert_definition_notification_cliScript_editor_selectRepoFirst = Select a repository first.
+view_alert_definition_notification_cliScript_editor_existingScript = Existing Script
+view_alert_definition_notification_cliScript_editor_uploadNewScript = Upload New Script
+view_alert_definition_notification_cliScript_editor_newScriptVersion = Version
+view_alert_definition_notification_cliScript_editor_selectRepo = Select the repository where the script should reside
+view_alert_definition_recovery_editor_disable_when_fired = Disable When Fired
+view_alert_definition_recovery_editor_disable_when_fired_tooltip = Indicates if this alert will be disabled after it fires. Once disabled, the alert can be manually re-enabled or a recovery alert can be set up to automatically re-enable it. If this alert is a recovery alert itself, this setting cannot be turned on.
+view_alert_definition_recovery_editor_recovery_alert = Recover Alert
+view_alert_definition_recovery_editor_recovery_alert_tooltip = The target alert that will be recovered (i.e. re-enabled) after this alert triggers. Do not select an alert here if you are not defining a recovery alert.
+view_alert_definition_recovery_editor_loadFailed = Cannot build recovery menu
+view_alert_definition_recovery_editor_none_available = None
+view_alert_common_tab_general = General Properties
+view_alert_common_tab_conditions = Conditions
+view_alert_common_tab_conditions_modal_title = 条件追加
+view_alert_common_tab_conditions_expression = Fire alert when
+view_alert_common_tab_conditions_expression_tooltip = Determines if ANY or ALL of the conditions must evaluate to true in order for the entire condition set to be considered true.
+view_alert_common_tab_conditions_text = Condition
+view_alert_common_tab_conditions_value = Value
+view_alert_common_tab_conditions_type_availability = Availability Change
+view_alert_common_tab_conditions_type_availability_down = Went down
+view_alert_common_tab_conditions_type_availability_up = Came up
+view_alert_common_tab_conditions_type_metric_threshold = Metric Value Threshold
+view_alert_common_tab_conditions_type_metric_calltime_threshold = Call Time Value Threshold
+view_alert_common_tab_conditions_type_metric_calltime_destination = with call destination matching
+view_alert_common_tab_conditions_type_metric_calltime_change = Call Time Value Changes
+view_alert_common_tab_conditions_type_metric_calltime_change_verb = by at least
+view_alert_common_tab_conditions_type_metric_calltime_delta_grows = Grows
+view_alert_common_tab_conditions_type_metric_calltime_delta_shrinks = Shrinks
+view_alert_common_tab_conditions_type_metric_calltime_delta_other = Changes
+view_alert_common_tab_conditions_type_metric_baseline = Metric Value Baseline
+view_alert_common_tab_conditions_type_metric_baseline_verb = of
+view_alert_common_tab_conditions_type_metric_change = Metric Value Change
+view_alert_common_tab_conditions_type_metric_trait_change = Trait Change
+view_alert_common_tab_conditions_type_operation = Operation Execution
+view_alert_common_tab_conditions_type_operation_status = with result status
+view_alert_common_tab_conditions_type_resource_configuration = Resource Configuration Change
+view_alert_common_tab_conditions_type_event = Event Detection
+view_alert_common_tab_conditions_type_event_matching = with event source matching
+view_alert_common_tab_conditions_recovery_enabled = Triggered ''{0}'' to be re-enabled
+view_alert_common_tab_conditions_recovery_disabled = This alert caused its alert definition to be disabled
+view_alert_common_tab_notifications = Notifications
+view_alert_common_tab_notifications_sender = Sender
+view_alert_common_tab_notifications_status = Status
+view_alert_common_tab_notifications_message = Message
+view_alert_common_tab_dampening = Dampening
+view_alert_common_tab_dampening_category_none = None
+view_alert_common_tab_dampening_category_none_tooltip = Dampening is disabled. Every time the condition set is true, an alert will be triggered.
+view_alert_common_tab_dampening_category_consecutive_count = Consecutive
+view_alert_common_tab_dampening_category_consecutive_count_tooltip = An alert is triggered once every X occurrences the condition set is true consecutively.
+view_alert_common_tab_dampening_category_partial_count = Last N Evaluations
+view_alert_common_tab_dampening_category_partial_count_tooltip = An alert is triggered once every X occurrences the condition set is true during the last N evaluations of the condition set.
+view_alert_common_tab_dampening_category_duration_count = Time Period
+view_alert_common_tab_dampening_category_duration_count_tooltip = An alert is triggered once every X occurrences the condition set is true within a given time period.
+view_alert_common_tab_dampening_consecutive_occurrences_label = Occurrences
+view_alert_common_tab_dampening_consecutive_occurrences_label_tooltip = The number of times the condition set must be consecutively true before the alert is triggered
+view_alert_common_tab_dampening_partial_occurrences_label = Occurrences
+view_alert_common_tab_dampening_partial_occurrences_label_tooltip = The number of times the condition set must be true during the last N evaluations before the alert is triggered.
+view_alert_common_tab_dampening_partial_evalatuions_label = Evaluations
+view_alert_common_tab_dampening_partial_evalatuions_label_tooltip = The total number of times the condition set will be tested to see if the given number of occurrences are true.
+view_alert_common_tab_dampening_duration_occurrences_label = Occurrences
+view_alert_common_tab_dampening_duration_occurrences_label_tooltip = The number of times the condition set must be true during the given time period before the alert is triggered.
+view_alert_common_tab_dampening_duration_period_label = Time Period
+view_alert_common_tab_dampening_duration_period_label_tooltip = The time span in which the condition set will be tested to see if the given number of occurrences are true.
+view_alert_common_tab_recovery = Recovery
+view_alert_common_tab_invalid_condition_category = Invalid condition category - please report this as a bug: {0}
+view_alert_common_tab_invalid_dampening_category = Invalid dampening category - please report this as a bug: {0}
+view_alert_common_tab_invalid_time_units = Invalid time units - please report this as a bug: {0}
+
+# Auto Discovery Queue
+#----------------------------
+view_autoDiscoveryQ_title = 自動リカバリキュー
+view_autoDiscoveryQ_import = インポート
+view_autoDiscoveryQ_ignore = 無視
+view_autoDiscoveryQ_ignored = 無視済み
+view_autoDiscoveryQ_unignore = 無視をしない
+view_autoDiscoveryQ_committed = コミット済み
+view_autoDiscoveryQ_deleted = 削除済み
+view_autoDiscoveryQ_uninventoried = インベントリ登録をしない
+view_autoDiscoveryQ_new = 新規
+view_autoDiscoveryQ_newAndIgnored = 新規かつ無視済み
+view_autoDiscoveryQ_importFailure = Failed to import resources
+view_autoDiscoveryQ_importSuccessful = You have successfully imported the selected resources.
+view_autoDiscoveryQ_ignoreFailure = Failed to ignore resources
+view_autoDiscoveryQ_ignoreSuccessful = You have successfully ignored the selected resources.
+view_autoDiscoveryQ_unignoreFailure = Failed to unignore resources
+view_autoDiscoveryQ_unignoreSuccessful = You have successfully unignored the selected resources.
+view_autoDiscoveryQ_noperm = (You are not authorized to view the auto-discovery queue)
+view_autoDiscoveryQ_noItems = No items to show
+view_autoDiscoveryQ_field_parentId = Parent ID
+view_autoDiscoveryQ_field_name = Resource Name
+view_autoDiscoveryQ_field_key = Resource Key
+view_autoDiscoveryQ_field_discoveryTime = Discovery Time
+view_autoDiscoveryQ_field_inventoryStatus = Inventory Status
+view_autoDiscoveryQ_loadFailure = Failed to load the inventory discovery queue
+view_autoDiscoveryQ_showStatus = Show
+view_autoDiscoveryQ_confirmSelect = Also select the platform children?
+
+#==================== Bundles ======================
+
+# some common bundle terms
+view_bundle_bundle = バンドル
+view_bundle_bundles = バンドル
+view_bundle_bundleDestinations = Bundle Destinations
+view_bundle_bundleDeployment = Bundle Deployment
+view_bundle_bundleDeployments = Bundle Deployments
+view_bundle_bundleFiles = Bundle Files
+view_bundle_bundleType = Bundle Type
+view_bundle_bundleVersion = Bundle Version
+view_bundle_bundleVersions = Bundle Versions
+view_bundle_deploy = Deploy
+view_bundle_deployed = Deployed
+view_bundle_deployDir = Deploy Directory
+view_bundle_deployments = Deployments
+view_bundle_destinations = Destinations
+view_bundle_files = Files
+view_bundle_latestVersion = 最新バージョン
+view_bundle_recipe = Recipe
+view_bundle_revert = Revert
+view_bundle_purge = Purge
+view_bundle_versions = バージョン
+view_bundle_deleteConfirm = Are you sure you want to delete this bundle? All versions, destinations and deployments for this bundle will also be deleted.
+
+# individual bundle views/wizards
+view_bundle_fileListView_fileSize = File Size
+view_bundle_fileListView_md5 = MD5
+view_bundle_fileListView_sha256 = SHA256
+view_bundle_fileListView_loadFailure = Failed to load bundle file data
+view_bundle_version_backToBundle = Back to Bundle
+view_bundle_version_bundleVersionTagUpdateFailure = Failed to update bundle version tags
+view_bundle_version_bundleVersionTagUpdateSuccessful = You have successfully updated the bundle version tags
+view_bundle_version_deleteConfirm = Are you sure you want to delete this bundle version?
+view_bundle_version_deleteFailure = Failed to delete the bundle version [{0}]
+view_bundle_version_deleteSuccessful = You successfully deleted the bundle version [{0}]
+view_bundle_version_loadFailure = Failed to load bundle version
+view_bundle_tree_loadFailure = Failed to load bundle data
+view_bundle_revertWizard_title = バンドル取り消し
+view_bundle_revertWizard_windowTitle = バンドル取り消しウィザード
+view_bundle_revertWizard_getInfoStep_name = Provide Revert Information
+view_bundle_revertWizard_getInfoStep_revertDeployName = Revert Deploy Name
+view_bundle_revertWizard_getInfoStep_revertDeployDesc = Revert Deploy Description
+view_bundle_revertWizard_getInfoStep_revertDeployDescFull = [REVERT From]\\n{0}\\n\\n[REVERT To]\\n{1}
+view_bundle_revertWizard_getInfoStep_cleanDeploy = Clean Deployment? (this will delete an old, existing deploy directory prior to starting the revert deployment)
+view_bundle_revertWizard_getInfoStep_getNameFailure = Failed to get revert deployment name
+view_bundle_revertWizard_confirmStep_name = Revert Deployment Confirmation
+view_bundle_revertWizard_confirmStep_noLiveDeployment_concise = No live deployment was found for the destination
+view_bundle_revertWizard_confirmStep_noLiveDeployment = No live deployment was found for the destination [{0}]
+view_bundle_revertWizard_confirmStep_noPriorDeployment_concise = The live deployment cannot be reverted because there is no prior deployment
+view_bundle_revertWizard_confirmStep_noPriorDeployment = The live deployment [{0}] cannot be reverted because there is no prior deployment for the destination [{1}]
+view_bundle_revertWizard_confirmStep_failedToFindLiveDeployment = Failed to find live deployment; cannot revert
+view_bundle_revertWizard_confirmStep_liveDeployment = Live Deployment
+view_bundle_revertWizard_confirmStep_prevDeployment = Previous Deployment
+view_bundle_revertWizard_confirmStep_confirmation = Reverting Live Deployment to Previous Deployment. Click "Next" to continue...
+view_bundle_revertWizard_revertStep_name = Deploy Bundle to Destination Platforms
+view_bundle_revertWizard_revertStep_reverting = Reverting...
+view_bundle_revertWizard_revertStep_scheduled = You have successfully scheduled the revert deployment!
+view_bundle_revertWizard_revertStep_scheduledDetails = You have successfully scheduled to revert the bundle deployment [{0}] from resource group [{1}]
+view_bundle_revertWizard_revertStep_scheduledFailure = Failed to schedule revert deployment!
+view_bundle_list_loadFailure = Failed to load the bundle to be deployed [{0}]
+view_bundle_list_singleLoadFailure = Failed to get a single bundle to be deployed [{0}]
+view_bundle_list_versionsCount = Versions Count
+view_bundle_list_destinationsCount = Destinations Count
+view_bundle_list_loadWithLatestFailure = Failed to load bundle with the latest version data
+view_bundleVersion_loadFailure = Failed to load bundle version data
+view_bundle_list_backToAll = Back to All Bundles
+view_bundle_list_tagUpdateFailure = Failed to update bundle tags
+view_bundle_list_tagUpdateSuccessful = You have successfully updated the bundle tags
+view_bundle_list_deleteConfirm = Are you sure you want to delete the selected bundles?
+view_bundle_list_deletesFailure = Failed to delete the bundles
+view_bundle_list_deletesSuccessful = You successfully deleted the bundles
+view_bundle_list_deleteFailure = Failed to delete the bundle [{0}]
+view_bundle_list_deleteSuccessful = You successfully deleted the bundle [{0}]
+view_bundle_list_error1 = Failed to load bundle to deploy [{0}]
+view_bundle_list_error2 = Failed to get a single bundle to deploy [{0}]
+view_bundle_list_error3 = Failed to load bundle
+view_bundle_dest_group = Group
+view_bundle_dest_created = Created
+view_bundle_dest_deployDir = Deploy Directory
+view_bundle_dest_lastDeployedVersion = Last Deployed Version
+view_bundle_dest_lastDeploymentDate = Last Deployment Date
+view_bundle_dest_lastDeploymentStatus = Last Deployment Status
+view_bundle_dest_loadFailure = Failed to load bundle destinations
+view_bundle_dest_loadFailureVersionInfo = Failed to load bundle destination deployed version information
+view_bundle_dest_backToBundle = Back to Bundle
+view_bundle_dest_tagUpdateFailure = Failed to update bundle destination tags
+view_bundle_dest_tagUpdateSuccessful = You have successfully updated the bundle destination tags
+view_bundle_dest_purgeConfirm = This will purge the bundle content from all remote machines. Are you sure you want to do this?
+view_bundle_dest_purgeFailure = Failed to purge the bundle destination [{0}] from some or all of the remote machines.
+view_bundle_dest_purgeSuccessful = You successfully purged the bundle destination [{0}] from all of the remote machines.
+view_bundle_dest_revertConfirm = This will revert all remote machines back to the previous bundle deployment. Are you sure you want to do this?
+view_bundle_dest_deleteConfirm = Are you sure you want to delete this bundle destination? This only deletes it from the database; all bundle content that was deployed to this destination on remote machines will remain.
+view_bundle_dest_deleteFailure = Failed to delete the bundle destination [{0}]
+view_bundle_dest_deleteSuccessful = You successfully deleted the bundle destination [{0}]
+view_bundle_resDeployDS_loadFailure = Failed to load bundle resource deployments
+view_bundle_deploy_name = Deployment Name
+view_bundle_deploy_time = Deployment Time
+view_bundle_deploy_loadDeployFailure = Failed to load bundle deployments
+view_bundle_deploy_action = Action
+view_bundle_deploy_installDetails = Install Details
+view_bundle_deploy_backButton = Back to Destination
+view_bundle_deploy_tagUpdateFailure = Failed to update bundle deployment tags
+view_bundle_deploy_tagUpdateSuccessful = You have successfully updated the bundle deployment tags
+view_bundle_deploy_deploymentPlatforms = Deployment Platforms
+view_bundle_deploy_selectARow = Select a row to show installation details
+view_bundle_deploy_operatingSystem = Operating System
+view_bundle_deploy_loadFailure = Failed to load bundle deployment
+view_bundle_deploy_loadBundleFailure = Failed to find bundle
+view_bundle_deploy_deployedBy = Deployed By
+view_bundle_deploy_clickForError = Click the icon for the error message
+view_bundle_deploy_deleteConfirm = Are you sure you want to delete this bundle deployment?
+view_bundle_deploy_deleteFailure = Failed to delete the bundle deployment [{0}]
+view_bundle_deploy_deleteSuccessful = You successfully deleted the bundle deployment [{0}]
+view_bundle_createWizard_title = バンドル生成
+view_bundle_createWizard_windowTitle = Bundle Creation Wizard
+view_bundle_createWizard_cancelSuccessful = Canceled the creation of bundle [{0}], version = [{1}]
+view_bundle_createWizard_cancelFailure = Failed to fully cancel the creation of bundle [{0}], version = [{1}] - the bundle may still exist in the database
+view_bundle_createWizard_noBundleTypesSupported = No bundle types are supported - you must deploy a valid plugin that supports bundle deployments
+view_bundle_createWizard_noBundleTypesAvail = No bundle types are available
+view_bundle_createWizard_loadBundleFileFailure = Cannot obtain bundle file information from server
+view_bundle_createWizard_enterUrl = Please enter a valid URL where the bundle distribution file can be downloaded from
+view_bundle_createWizard_enterRecipe = Please supply a valid recipe
+view_bundle_createWizard_uploadInProgress = Upload is in progress... This can take several minutes for large files
+view_bundle_createWizard_uploadStepName = Upload Bundle Files
+view_bundle_createWizard_noAdditionalFilesNeeded = No additional files need to be uploaded for this bundle
+view_bundle_createWizard_failedToUploadFile = Failed to upload bundle file
+view_bundle_createWizard_failedToUploadDistroFile = Failed to upload bundle distribution file
+view_bundle_createWizard_bundleDistro = Bundle Distribution
+view_bundle_createWizard_youMustChooseOne = You must choose one option in order to create a bundle!
+view_bundle_createWizard_urlOption = URL
+view_bundle_createWizard_uploadOption = Upload
+view_bundle_createWizard_recipeOption = Recipe
+view_bundle_createWizard_provideBundleDistro = Provide a Bundle Distribution
+view_bundle_createWizard_clickToUploadRecipe = Click to load a recipe file
+view_bundle_createWizard_createFailure = Failed to create the bundle
+view_bundle_createWizard_createSuccessful = You have successfully created a bundle named [{0}] with a version of [{1}]
+
+view_bundle_deployWizard_deploying = Deploying...
+view_bundle_deployWizard_deployStep = Deploy Bundle to Destination Platforms
+view_bundle_deployWizard_deploymentCreated = Created Deployment...
+view_bundle_deployWizard_deploymentCreatedDetail = You have created the deployment [{0}] with the description [{1}]
+view_bundle_deployWizard_deploymentCreatedDetail_concise = You have created the deployment [{0}]
+view_bundle_deployWizard_destinationCreatedDetail = You have created the destination [{0}] with the description [{1}]
+view_bundle_deployWizard_destinationCreatedDetail_concise = You have created the destination [{0}]
+view_bundle_deployWizard_deploymentScheduled = Bundle Deployment Scheduled!
+view_bundle_deployWizard_deploymentScheduledDetail = You have scheduled the bundle deployment [{0}] to the destination group [{1}]
+view_bundle_deployWizard_deploymentScheduledDetail_concise = You have scheduled the bundle deployment
+view_bundle_deployWizard_error_1 = Failed to delete new deployment on Cancel
+view_bundle_deployWizard_error_2 = Failed to delete new destination on Cancel
+view_bundle_deployWizard_error_3 = Failed to Schedule Deployment!
+view_bundle_deployWizard_error_4 = Failed to schedule deployment: {0}
+view_bundle_deployWizard_error_5 = Failed to Create Deployment!
+view_bundle_deployWizard_error_6 = Failed to create deployment: {0}
+view_bundle_deployWizard_error_7 = Failed to get deployment name.
+view_bundle_deployWizard_error_8 = You must select a valid resource group from the drop down
+view_bundle_deployWizard_error_9 = Failed to delete new destination in nextPage
+view_bundle_deployWizard_error_10 = Failed to create destination, it may already exist. (Note, for an existing destination deploy from the Destination view)
+view_bundle_deployWizard_error_11 = Failed to find defined deployments.
+view_bundle_deployWizard_error_12 = Failed to find defined bundles.
+view_bundle_deployWizard_getConfigStep = Set Deployment Configuration
+view_bundle_deployWizard_getConfigSkip = No configuration needed for this bundle version.
+view_bundle_deployWizard_getDestStep = New Destination
+view_bundle_deployWizard_getDest_name = Destination Name
+view_bundle_deployWizard_getDest_desc = Destination Description
+view_bundle_deployWizard_getDest_deployDir = Root Deployment Directory (on destination platforms)
+view_bundle_deployWizard_getInfoStep = Provide Deployment Information
+view_bundle_deployWizard_getInfo_clean = Clean Deployment? (wipe deploy directory on destination platform)
+view_bundle_deployWizard_getInfo_deploymentDesc = Deployment Description
+view_bundle_deployWizard_getInfo_deploymentName = Deployment Name
+view_bundle_deployWizard_getOptionsStep = Deploy Options
+view_bundle_deployWizard_getOptions_deployLater = Deploy Later
+view_bundle_deployWizard_getOptions_deployNow = Deploy Now
+view_bundle_deployWizard_getOptions_deployTime = Deployment Time
+view_bundle_deployWizard_selectBundleStep = Select Deployment Bundle
+view_bundle_deployWizard_selectBundle_single = Select only a single bundle for deployment.
+view_bundle_deployWizard_selectVersionStep = Select Deployment Bundle Version
+view_bundle_deployWizard_selectVersion_latest = Latest Version [{0}]
+view_bundle_deployWizard_selectVersion_live = Live Version [{0}]
+view_bundle_deployWizard_selectVersion_select = Select Version from List:
+view_bundle_deployWizard_title = バンドルデプロイウィザード
+
+# =================== Measurement Views =====================
+
+view_measureTable_chartMetricValues = Chart Selected Metrics
+view_measureTable_getLive = Get Live Value
+view_measureTable_getLive_failure = Cannot get live values for those metrics. Make sure the agent is running and the managed resource is up.
+view_measureTable_live_title = ライブデータ
+
+# =================== Components =====================
+
+view_configCompare_comparingConfigs = Comparing Configurations
+view_configCompare_configCompare = Configuration Comparison
+
+view_configEdit_addItem = Add Item to List
+view_configEdit_confirm_1 = Are you sure you want to delete the selected properties from the set?
+view_configEdit_confirm_2 = Are you sure you want to delete this row?
+view_configEdit_confirm_3 = Are you sure you want to delete the [{0}] selected [{1}]?
+view_configEdit_viewRow = View Row
+view_configEdit_editRow = Edit Row
+view_configEdit_enterPropName = Enter the name of the property to be added.
+view_configEdit_error_1 = Configuration is not supported by this Resource.
+view_configEdit_error_2 = Connection settings are not supported by this Resource.
+view_configEdit_error_3 = Cannot add property named [{0}]. The property name is already used in the set.
+view_configEdit_files = Files
+view_configEdit_hideAll= Hide All
+view_configEdit_jumpToSection = セクションへのジャンプ
+view_configEdit_msg_1 = Added property [{0}] to the set.
+view_configEdit_msg_2 = Removed properties from the set.
+view_configEdit_msg_3 = [{0} {1}] deleted from list.
+view_configEdit_msg_4 = Item added to list.
+view_configEdit_properties = Properties
+view_configEdit_tooltip_1 = Delete the selected items from the list.
+view_configEdit_tooltip_2 = Add an item to the list.
+
+view_groupConfigEdit_member = Member
+view_groupConfigEdit_noListProps = List properties are not currently supported for group configurations.
+view_groupConfigEdit_tooltip_1 = Member values differ - click icon to edit them.
+view_groupConfigEdit_setAll = Set all values to:
+view_groupConfigEdit_unset = Unset
+view_groupConfigEdit_valsDiff = member values differ
+view_groupConfigEdit_valsDiffForProp = Member Values for Property [{0}]
+
+view_leftNav_unknownPage = Unknown page name [{0}] for section [{1}] - URL is invalid.
+
+view_measure_nan = --no data available--
+
+# Measurement Range Selector
+view_measureRange_last = Time Range - Previous
+view_measureRange_start = Time Range - Start
+view_measureRange_simple = Simple...
+
+view_selector_assigned = Assigned {0}
+view_selector_available = Available {0}
+
+view_subTab_error_disabled = Cannot select disabled subTab [{0}].
+
+view_table_drawFail = Failed to draw Table [{0}].
+view_table_matchingRows = 一致した行: {0} (選択済み: {1})
+view_table_totalRows = 合計行: {0} (選択済み: {1})
+view_tableSection_backButton = Back to List
+view_tableSection_error_noId = Table [{0}] record is missing 'id' attribute - please report this bug.
+view_tableSection_error_badId = Can not show detail for [{0}]. Illegal 'id': [{1}]. Please report this bug
+
+view_tags_tags = タグ
+view_tags_error_1 = Failed to load Tags
+view_tags_tooltip_1 = Click to remove this Tag
+view_tags_tooltip_2 = Click to edit Tags
+view_tags_tooltip_3 = Enter a Tag in the format: (namespace:)(semantic=)tagname (e.g. it:env=QA, or owner=John)
+
+# File Upload (various)
+view_upload_alreadyUploaded = File has already been uploaded
+view_upload_bundleDistFile = Distribution File
+view_upload_error_bundleDistFile = Error uploading Bundle Distribution File
+view_upload_error_file = Error uploading file
+view_upload_error_fileName = Error uploading file [{0}]
+view_upload_error_fileName_2 = Error uploading file [{0}], check for invalid file path.
+view_upload_error_packageVersionFile = Error uploading Package Version File
+view_upload_error_results = Error uploading file, unexpected results: [{0}]
+view_upload_inProgress = Can not submit, upload is currently in progress
+view_upload_prompt_1 = Please select a file to upload [{0}]
+view_upload_prompt_2 = File to Upload
+view_upload_tooltip_1a = Select a file to upload, then click Upload or Next
+view_upload_tooltip_1b = Select a file to upload, then click Next
+view_upload_tooltip_2 = File upload had previously failed
+view_upload_success = File successfully uploaded
+view_upload_upload = Upload
+view_upload_uploadFile = UploadFile
+
+# Group Create Wizard
+view_groupCreateWizard_membersStepName = Select Members
+view_groupCreateWizard_createStepName = Group Settings
+view_groupCreateWizard_createStep_recursive = Recursive
+view_groupCreateWizard_title = グループ生成
+view_groupCreateWizard_windowTitle = グループ生成
+view_groupCreateWizard_createFailure = Failed to create the resource group
+view_groupCreateWizard_createSuccessful_concise = You have created a new resource group. [<a href="{0}">View Group</a>]
+view_groupCreateWizard_createSuccessful_full = You have created a new [{0}] resource group with the name [{1}] that contains [{2}] member resources
+
+# Resource Type / Plugin View/Datasources
+view_type_resourceTypes = Resource Types
+view_type_parentId = Parent ID
+view_type_typeTreeLoadFailure = Failed to load resource type tree data
+
+# Tabs
+view_tabs_invalidSubTab = Invalid subtab: {0}
+view_tabs_invalidTab = Invalid tab: {0}
+
+# Group Tree
+group_tree_partialClusterTooltip = {0} out of {1} group members have a ''{2}'' resource
+
+#=================== Dashboard =====================
+view_dashboard_favorites_error1 = Failed to load favorite Resources.
+view_dashboardManager_error = Failed to save dashboard to server
+view_dashboardManager_saved = Saved dashboard {0} to server
+view_dashboardManager_success = Saved dashboard
+view_dashboardManager_deleteFail = Failed to delete dashboard.
+view_dashboardManager_deleted = Successfully deleted dashboard {0}
+view_dashboards_title = ダッシュボード
+view_dashboards_confirm1 = Are you sure you want to delete
+view_dashboards_portlets_refresh_fail1=Failed to update interval for portlets that auto-refresh
+view_dashboards_portlets_refresh_fail2=Failed to disable reload for portlets that auto-refresh
+view_dashboards_portlets_refresh_none = No Refresh
+view_dashboards_portlets_refresh_one_min = 1 minute
+view_dashboards_portlets_refresh_multiple_min = {0} minutes
+view_dashboards_portlets_refresh_success1=Updated interval for portlets that auto-refresh
+view_dashboards_portlets_refresh_success2=Stopping reload for portlets that auto-refresh
+view_dashboardsManager_error1 = Failed to add new dashboard
+view_dashboardsManager_message_title_details = <h1>RHQへようこそ2</h1>\n<p>RHQプロジェクトは抽象化されたプラグインベースのシステム管理スイートで、複数のプロダクトやプラットフォームに対してコア機能を横断的に適用できる拡張可能で、統合化されたシステム管理を提供します。このプロジェクトはレイヤ化されたモジュールによって設計されていて、デプロイのための柔軟なアーキテクチャを提供します。それは企業全体に対する監査と履歴の管理を提供するコアとなるユーザーインタフェースを導入します。サーバー/エージェントアーキテクチャはリモートでの管理と特定プロダクトのサポートを実現するプラグインを提供します。 </p>\n <p>このデフォルトのダッシュボードは上の「編集モード」ボタンをすることで編集可能です。</p>
+
+view_portlet_factory_invalidPortlet = This is an obsolete portlet that is no longer valid. Please delete it.
+
+view_portlet_defaultName_autodiscovery = ディスカバリキュー
+view_portlet_defaultName_favoriteResources = お気に入りリソース
+view_portlet_defaultName_resourceMetric = Resource Metric Graph
+view_portlet_defaultName_groupMetric = Resource Group Metric Graph
+view_portlet_defaultName_inventorySummary = インベントリサマリ
+view_portlet_defaultName_mashup = マッシュアップ
+view_portlet_defaultName_message = メッセージ
+view_portlet_defaultName_operations = 最近のオペレーション
+view_portlet_defaultName_platformSummary = プラットフォーム利用率
+view_portlet_defaultName_problemResources = アラートまたは利用できないリソース
+view_portlet_defaultName_recentAlerts = 最近のアラート
+view_portlet_defaultName_recentlyAddedResources = 最近追加されたリソース
+view_portlet_defaultName_tagCloud = タグ数
+
+view_portlet_defaultName_group_alerts =グループ: アラート
+view_portlet_defaultName_group_bundles = グループ: バンドルデプロイ
+view_portlet_defaultName_group_config_updates = グループ: 構成の更新
+view_portlet_defaultName_group_events = グループ: イベント数
+view_portlet_defaultName_group_metrics = グループ: メトリックス
+view_portlet_defaultName_group_oobs = グループ: OOB 条件
+view_portlet_defaultName_group_operations = グループ: オペレーション
+view_portlet_defaultName_group_pkg_hisory = グループ: パッケージ履歴
+view_portlet_defaultName_resource_alerts = リソース: アラート
+view_portlet_defaultName_resource_bundles = リソース: バンドルデプロイ
+view_portlet_defaultName_resource_config_updates = リソース: 構成の更新
+view_portlet_defaultName_resource_events = リソース: イベント数
+view_portlet_defaultName_resource_metrics = リソース: 測定
+view_portlet_defaultName_resource_oobs = リソース: OOB メトリックス
+view_portlet_defaultName_resource_operations = リソース: オペレーション
+view_portlet_defaultName_resource_pkg_hisory = リソース: パッケージ履歴
+
+view_portlet_help_autodiscovery = This portlet allows import or ignore of newly discovered resources. Imported resources are added to inventory for monitoring and management. Ignored resources are not imported and are hidden from view unless explicitly unignored.
+view_portlet_help_bundle_deps = This portlet shows relevant bundle deployments based on display criteria configured.
+view_portlet_help_config_updates =This portlet displays recent configuration changes consistent with configuration settings.
+view_portlet_help_eventcounts = This portlet displays Event counts consistent with display criteria configured.
+view_portlet_help_favoriteResources = This portlet displays the current user''s favorite resources.
+view_portlet_help_graph = This portlet displays the resource metric graph.
+view_portlet_help_inventorySummary = This portlet displays a short summary of the current user''s viewable inventory and metric collection rate.
+view_portlet_help_mashup = This portlet displays the returned content of a remote HTTP request (via an iframe).
+view_portlet_help_metrics = This portlet graphs relevant recent metric data based on display criteria configured.
+view_portlet_help_message = This portlet displays a static HTML message. The <i>message</i> property must be configured.
+view_portlet_help_oobs = This portlet displays OOB(Out of Bound) metric conditions.
+view_portlet_help_operations = This portlet displays the most recently executed operations for the current user''s inventory.
+view_portlet_help_scheduledOperations = This portlet displays the next scheduled operations for the current user''s inventory.
+view_portlet_help_operations_criteria = This portlet displays Operations consistent with display criteria configured.
+view_portlet_help_pkg_history = This portlet shows relevant package history based on display criteria configured.
+view_portlet_help_platformSummary = This portlet displays utilization data (such as current CPU and memory usage) for platform resources that are accessible by the current user.
+view_portlet_help_problemResources = This portlet displays the current user''s alerted or unavailable resources.
+view_portlet_help_recentAlerts = This portlet displays alerts recently fired on the current user''s viewable inventory.
+view_portlet_help_recentlyAdded = This portlet displays resources that have recently been imported into inventory.
+view_portlet_help_tagCloud = This portlet displays the relative tag counts for the current user''s inventory.
+view_portlet_help_none = There is no help available for this portlet.
+
+view_portlet_configure_needed = Click the Settings button to configure this portlet.
+view_portlet_configure_notNeeded = Configuration is not necessary for this portlet.
+view_portlet_configure_definitionTitle = Portlet Configuration
+view_portlet_configure_definitionDesc = The configuration settings for the portlet.
+
+view_portlet_autodiscovery_setting_platforms = discovered platforms
+
+view_portlet_graph_configure_resource_graph = The resource to graph
+view_portlet_graph_configure_metricDefinition_graph = The metric definition id to graph
+
+view_portlet_inventory_error1 = Failed to retrieve inventory summary
+view_portlet_inventory_tooltip_expand = Click to show more details for this resource.
+view_portlet_inventory_tooltip_collapse = Click to hide details for this resource.
+
+view_portlet_message_title = The message to display.
+
+view_portlet_operations_config_completed_maximum = Maximum number of Completed operations to display.
+view_portlet_operations_config_completed_enable = Whether to enable completed operations results grouping for dashboard.
+view_portlet_operations_config_scheduled_enable = Whether to enable scheduled operations results grouping for dashboard.
+view_portlet_operations_config_scheduled_maximum = Maximum number of Scheduled operations to display.
+view_portlet_operations_config_completed = completed operations
+view_portlet_operations_config_show_last = show Last
+view_portlet_operations_config_show_next = show Next
+view_portlet_operations_disabled = (Results currently disabled. Change settings to enable results.
+
+view_portlet_platform_platform_error_1 = Failed to load platform metrics
+view_portlet_platform_type_error_1 = Could not load type data
+
+view_portlet_problemResources_config_display_maximum = Maximum number of Problem resources to display.
+view_portlet_problemResources_config_display_range = Show problem resources going back this many hours.
+view_portlet_problemResources_config_display_range2 = From {0} to {1}
+view_portlet_problemResources_maxDisplaySetting = maximum resources.
+
+view_portlet_recentAlerts_config_members = Select Members
+view_portlet_recentAlerts_config_priority_label = priority Alerts,
+view_portlet_recentAlerts_config_when = within the past
+view_portlet_recentAlerts_fail_msg = Failed to load resources assigned for alert filtering.
+
+view_portlet_recentlyAdded_setting_addedPlatforms = recently added platforms
+view_portlet_recentlyAdded_error1 = Failed to load recently added resources
+view_portlet_results_empty = 指定されたクライテリアの結果は見つかりません
+
+# =================== Inventory =====================
+view_inventory_adq = ディスカバリキュー
+view_inventory_sectionHelp = このセクションにおいて、新規に発見されたリソース、インベントリに登録されたリソース、グループの表示と管理がおこなわれます。
+view_inventory_problemGroups = 問題グループ
+view_inventory_collectionInterval = コレクション間隔
+view_inventory_mixed = mixed
+view_inventory_unavailableServers = 利用不能サーバー
+view_inventory_groups = グループ
+view_inventory_allGroups = すべてのグループ
+view_inventory_allResources = すべてのリソース
+view_inventory_platforms = プラットフォーム
+view_inventory_servers = サーバー
+view_inventory_services = サービス
+view_inventory_summary_agent_error1 = Failed to locate agent managing resource id
+view_inventory_summary_agent_error2 = Failed to ping agent managing resource id
+view_inventory_summary_agent_error3 = You do not have permission to view details for this Agent.
+view_inventory_summary_agent_fullEnpoint = Full Endpoint
+view_inventory_summary_agent_fullEnpoint_err1 = !No remote endpoint associated with this resource!
+view_inventory_summary_agent_last_title = Last Received Availability Report
+view_inventory_summary_agent_status_title = Agent Communications Status
+view_inventory_summary_agent_title = Agent Managing this Resource
+view_inventory_dynagroupDefs = 動的グループ定義
+view_metric_traits = Traits
+view_metric_viewTraitHistory = Value History for Trait [{0}]
+view_inventory_eventHistory_groupEventHistory = Group Event History
+view_inventory_eventHistory_resourceEventHistory = Resource Event History
+view_inventory_eventHistory_sourceFilter = Source Filter
+view_inventory_eventHistory_detailsFilter = Details Filter
+view_inventory_eventHistory_severityFilter = Severity Filter
+view_inventory_eventHistory_timestamp = Timestamp
+view_inventory_eventHistory_severity = Severity
+view_inventory_eventHistory_details = Details
+view_inventory_eventHistory_sourceLocation = Source Location
+view_inventory_eventHistory_deleteSuccessful = You have successfully deleted [{0}] events for [{1}]
+view_inventory_eventHistory_deleteFailed = Failed to deleted selected events for [{0}]
+view_inventory_eventHistory_purgeSuccessful = You have successfully purged [{0}] events for [{1}]
+view_inventory_eventHistory_purgeFailed = Failed to purge events for [{0}]
+view_inventory_eventDetails_loadFailed = An error occurred loading the event details
+view_inventory_groups_resourceGroups = Resource Groups
+view_inventory_groups_children = Children
+view_inventory_groups_descendants = Descendants
+view_inventory_groups_deleteSuccessful = You have successfully deleted the selected resource groups
+view_inventory_groups_deleteFailed = Failed to delete the selected resource groups
+view_inventory_groups_loadFailed = Failed to load group composite data
+view_inventory_resource_loadFailed = Resource with id [{0}] does not exist or is not accessible
+view_inventory_resources_deleteConfirm = Are you sure you want to delete the selected resources?
+view_inventory_resources_deleteSuccessful = You have successfully deleted the selected resources
+view_inventory_resources_deleteFailed = Failed to delete the selected resources
+view_inventory_resources_uninventoryConfirm = Are you sure you want to uninventory the selected resources? Note that if a selected resource still exists, then it will get rediscovered during its agent''s next discovery scan.
+view_inventory_resources_uninventorySuccessful = You have successfully uninventoried the selected resources
+view_inventory_resources_uninventoryFailed = Failed to uninventory the selected resources
+view_inventory_resources_loadFailed = Failed to load resource composite data
+view_inventory_resources_title = リソース
+view_inventory_resources_title_children = 子リソース
+view_inventory_resources_title_members = メンバーリソース
+view_resource_inventory_activity_changed_by=Changed by
+view_resource_inventory_activity_criteria_no_recent_events=表示クライテリアに基づくイベントはありません
+view_resource_inventory_activity_no_recent_alerts=No recent alerts
+view_resource_inventory_activity_no_recent_bundle_deploy=No recent bundle deployments
+view_resource_inventory_activity_no_recent_config_history=No configuration change history
+view_resource_inventory_activity_no_recent_events =No events in the last 24 hours
+view_resource_inventory_activity_no_recent_metrics=This resource has no recent metrics
+view_resource_inventory_activity_no_recent_oob=OOBの条件はみつかりません
+view_resource_inventory_activity_no_recent_operations=No recent operation history
+view_resource_inventory_activity_no_recent_pkg_history=No recent package history
+view_resource_inventory_childhistory_createdChild = Created Child
+view_resource_inventory_childhistory_deletedChild = Deleted Child
+view_resource_inventory_childhistory_status_invalidArtifact = Invalid Artifact
+view_resource_inventory_childhistory_status_invalidConfig = Invalid Configuration
+view_resource_inventory_childhistory_filterTitle = Past N Days
+view_resource_monitor_availability_loadFailed = Failed to load availability history
+view_resource_monitor_graphs_noneAvailable = No graphs available
+view_resource_monitor_graphs_loadFailed = Failed to load graph data
+view_resource_monitor_graphs_lookupFailed = Failed to find resource for graph
+view_resource_monitor_graph_instructions = Point your mouse to a data point on the chart
+view_resource_monitor_graph_live_tooltip = Click for a live graph of current values
+view_resource_monitor_table_min = Minimum
+view_resource_monitor_table_max = Maximum
+view_resource_monitor_table_avg = Average
+view_resource_monitor_table_last = Last
+view_resource_monitor_table_alerts = アラート
+view_resource_monitor_detailed_graph_label = Detailed Graph
+view_resource_monitor_calltime_title = Call Time Data
+view_resource_monitor_calltime_destination = Call Destination
+view_resource_monitor_calltime_count = Count
+view_resource_monitor_calltime_minimum = Minimum
+view_resource_monitor_calltime_average = Average
+view_resource_monitor_calltime_maximum = Maximum
+view_resource_monitor_calltime_total = Total
+view_resource_monitor_calltime_loadFailed = Could not load call time data
+view_resource_monitor_calltime_lookupFailed = Could not load resource for call time
+view_resource_monitor_calltime_editFailed = Call time data can not be edited
+view_resource_monitor_schedules_title = Resource Metric Collection Schedules
+view_resource_title_tagUpdateFailed = Failed to update resource tags
+view_resource_title_component_errors_tooltip = Shows managed component errors. Click for details
+view_tree_common_loadFailed_generic = Failed to load data for tree
+view_tree_common_loadFailed_root = Failed to load root for tree
+view_tree_common_loadFailed_descendants = Failed to load descendants for tree
+view_tree_common_loadFailed_children = Failed to load children for node
+view_tree_common_createFailed_autoCluster = Failed to create or update autocluster backing group
+view_tree_common_loadFailed_group = Failed to load group with id [{0}]
+view_tree_common_loadFailed_groupTree = Failed to load group tree
+view_tree_common_loadFailed_selection = Failed to select this node
+view_tree_common_loadFailed_node = Failed to load data for this node
+view_tree_common_loadFailed_create = Failed to create view for this node
+view_tree_common_loadFailed_update = Failed to update view for this node
+view_tree_common_contextMenu_loadFail_children = Failed to load platform manual add children
+view_tree_common_contextMenu_loadFail_dashboards = Failed to load user dashboards
+view_tree_common_contextMenu_loadFail_group = Failed to load group for context menu
+view_tree_common_contextMenu_type_name_label = Type: {0}
+view_tree_common_contextMenu_resourceConfiguration = Resource Configuration
+view_tree_common_contextMenu_editPluginConfiguration = Edit [{0}] Plugin Configuration
+view_tree_common_contextMenu_editResourceConfiguration = Edit [{0}] Resource Configuration
+view_tree_common_contextMenu_operations = Operations
+view_tree_common_contextMenu_operations_loadFailed = Failure to start wizard for running operations
+view_tree_common_contextMenu_measurements = Measurements
+view_tree_common_contextMenu_addChartToDashboard = Add chart to dashboard [{0}]
+view_tree_common_contextMenu_resourceGraph = Resource Metric Graph
+view_tree_common_contextMenu_groupGraph = Group Metric Graph
+view_tree_common_contextMenu_saveChartToDashboardSuccessful = You have saved dashboard [{0}]
+view_tree_common_contextMenu_saveChartToDashboardFailure = Failed to save the dashboard
+view_tree_common_contextMenu_loadFailed_dashboard = Failed to load user dashboards
+view_tree_common_contextMenu_loadFailed_manualAddChildren = Failed to load platform manual add children
+view_tree_group_error_updateAutoCluster = Failed to create or update autocluster backing group. key: [{0}]
+view_tabs_common_activity = アクティビティ
+view_tabs_common_agent = エージェント
+view_tabs_common_summary = サマリ
+view_tabs_common_overview = 概要
+view_tabs_common_dashboard = ダッシュボード
+view_tabs_common_timeline = タイムライン
+view_tabs_common_monitoring = モニタリング
+view_tabs_common_graphs = グラフ
+view_tabs_common_tables = テーブル
+view_tabs_common_traits = Traits
+view_tabs_common_availability = アベイラビリティ
+view_tabs_common_schedules = スケジュール
+view_tabs_common_calltime = 呼び出し時間e
+view_tabs_common_inventory = インベントリ
+view_tabs_common_groups = グループ
+view_tabs_common_members = メンバー
+view_tabs_common_group_members = グループメンバー
+view_tabs_common_group_membership = グループメンバーシップ
+view_tabs_common_child_resources = 子リソース
+view_tabs_common_child_history = 子の履歴
+view_tabs_common_connectionSettings = 接続設定
+view_tabs_common_connectionSettingsHistory = 接続設定の履歴
+view_tabs_common_operations = オペレーション
+view_tabs_common_schedule = スケジュール
+view_tabs_common_history = 履歴
+view_tabs_common_alerts = アラート
+view_tabs_common_definitions = 定義
+view_tabs_common_current = 現在
+view_tabs_common_events = イベント
+view_tabs_common_configuration = 構成
+view_tabs_common_content = コンテント
+view_tabs_common_deployed = デプロイ済み
+view_tabs_common_new = 新規
+view_tabs_common_subscriptions = サブスクリプション
+view_titleBar_common_updateTagsSuccessful = The tags for [{0}] have been updated
+view_titleBar_common_updateTagsFailure = Failed to update the tags for [{0}]
+view_titleBar_common_loadTagsFailure = Failed to load the tags for [{0}]
+view_titleBar_common_clickToRemoveFav = Click to remove this as a favorite
+view_titleBar_common_clickToAddFav = Click to add this as a favorite
+view_titleBar_common_removedFav = You have removed [{0}] as one of your favorites
+view_titleBar_common_addedFav = You have added [{0}] as a favorite
+view_titleBar_common_removedFavFailure = Failed to remove [{0}] as one of your favorites
+view_titleBar_common_addedFavFailure = Failed to add [{0}] as a favorite
+view_titleBar_group_failInfo = Failed to get general info on group [{0}] with ID [{1}]
+view_titleBar_group_summary_collapsedTooltip = Click to show more details for this group
+view_titleBar_group_summary_expandedTooltip = Click to hide details for this group
+view_dynagroup_expressionSet = Expression Set
+view_dynagroup_recalculationInterval = Recalculation Interval (ms)
+view_dynagroup_lastCalculationTime = Last Calculation Time
+view_dynagroup_nextCalculationTime = Next Calculation Time
+view_dynagroup_definitionCreated = You have successfully created a group definition named [{0}]
+view_dynagroup_definitionLoadFailure = Failed to load group definitions
+view_dynagroup_definitionAlreadyExists = A group definition already exists with this name
+view_dynagroup_saveSuccessful = You have successfully saved the group definition named [{0}]
+view_dynagroup_saveFailure = Failed to save the group definition named [{0}]
+view_dynagroup_singleSaveFailure = An error occurred - there should have been one created, but instead there were [{0}] created
+view_dynagroup_saveAndRecalculate = Save & Recalculate
+view_dynagroup_recalculate = Recalculate
+view_dynagroup_recalcSuccessful = You have successfully recalculated this group definition
+view_dynagroup_recalcFailure = Failed to recalculated this group definition
+view_dynagroup_recalcSuccessfulSelection = You have successfully recalculated [{0}] group definitions
+view_dynagroup_recalcFailureSelection = Failed to recalculated the selected group definitions
+view_dynagroup_deleteSuccessfulSelection = You have successfully deleted [{0}] group definitions
+view_dynagroup_deleteFailureSelection = Failed to delete the selected group definitions
+view_dynagroup_children = DynaGroup Children
+view_dynagroup_newGroupDefinition = New Group Definition
+view_dynagroup_editing = Editing [{0}]
+view_dynagroup_expression = Expression
+view_dynagroup_recursive = Recursive
+view_dynagroup_loadDefinitionFailure = Failed to load group definition [{0}]
+view_dynagroup_loadDefinitionMissing = There is no group definition with the ID of [{0}]
+view_dynagroup_permDenied = You do not have permission to view group definitions
+view_dynagroup_definitions = DynaGroup Definitions
+view_dynagroup_template_customExpression = Custom Expression...
+view_dynagroup_template_jbossas4_clusters = JBossAS 4 - Clusters
+view_dynagroup_template_jbossas5_clusters = JBossAS 5/6 - Clusters
+view_dynagroup_template_jbossas4_earClusters = JBossAS 4 - Clustered EARs
+view_dynagroup_template_jbossas4_uniqueVersions = JBossAS 4 - Unique versions
+view_dynagroup_template_platforms = Platform resources in inventory
+view_dynagroup_template_uniqueResourceTypes = Unique resource types in inventory
+view_dynagroup_template_jbossas4_hostingApp = JBossAS 4 - All hosting any version of "my" app
+view_dynagroup_template_jbossas4_nonsecured = JBossAS 4 - All non-secured
+view_dynagroup_template_downedResources = All resources currently down
+view_dynagroup_mixed = Mixed
+view_dynagroup_compatible = Compatible
+view_dynagroup_expressionBuilderIconTooltip = Expression Builder...
+view_dynagroup_exprBuilder_title = Expression Builder
+view_dynagroup_exprBuilder_expression = Expression
+view_dynagroup_exprBuilder_expression_tooltip = This is the full expression that is represented by the selections in the form below. This text will be added to your group definition expression text when you click the "Add Expression" button.
+view_dynagroup_exprBuilder_addExpression = Add Expression
+view_dynagroup_exprBuilder_value_tooltip = The string value for the expression to query
+view_dynagroup_exprBuilder_comparisonType = Comparison Type
+view_dynagroup_exprBuilder_comparisonType_tooltip = Comparison Type
+view_dynagroup_exprBuilder_unset = Unset
+view_dynagroup_exprBuilder_unset_tooltip = Unset will find all of the values that have a null value in the database. This is not possible using the "=" operator because of how databases store and query data.
+view_dynagroup_exprBuilder_propertyName = Property Name
+view_dynagroup_exprBuilder_propertyName_tooltip = The name of the property to query. This is defined by the expression type as well as the resource type.
+view_dynagroup_exprBuilder_resourceType = Resource Type
+view_dynagroup_exprBuilder_resourceType_tooltip = The type of resource
+view_dynagroup_exprBuilder_definingPlugin = Defining Plugin
+view_dynagroup_exprBuilder_definingPlugin_tooltip = The plugin to search
+view_dynagroup_exprBuilder_expressionType = Expression Type
+view_dynagroup_exprBuilder_expressionType_tooltip = The type of property this expression switches on:<br/> \
+<b>Resource</b>: A resource property such as its name or version<br/> \
+<b>Resource Type</b>: Search for resources of a specific type<br/> \
+<b>Resource Category</b>: Search for resources by category: platform, server, service<br/> \
+<b>Trait</b>: Resources that have selected values for a monitored trait<br/> \
+<b>Plugin Configuration</b>: Search by the plugin component configuration setting of the component<br/> \
+<b>Resource Configuration</b>: Search by the configuration setting of the managed resource
+view_dynagroup_exprBuilder_resource = Resource
+view_dynagroup_exprBuilder_resource_tooltip = Choose the level of the resource you wish to select. For example, select "parent" will find resources whose parent resource matches the rest of the expression.
+view_dynagroup_exprBuilder_groupBy = Group by
+view_dynagroup_exprBuilder_groupBy_tooltip = GroupBy will cause the system to pivot on the values from the entered expressions creating a separate group for each value. For example, GroupBy on the cluster name to create a group for each cluster with all cluster members in it.
+view_dynagroup_exprBuilder_resource_resource = Resource
+view_dynagroup_exprBuilder_resource_child = Child
+view_dynagroup_exprBuilder_resource_parent = Parent
+view_dynagroup_exprBuilder_resource_grandparent = Grandparent
+view_dynagroup_exprBuilder_resource_greatGrandparent = GreatGrandparent
+view_dynagroup_exprBuilder_resource_greatGreatGrandparent = GreatGreatGrandparent
+view_dynagroup_exprBuilder_comparisonType_equals = equals
+view_dynagroup_exprBuilder_comparisonType_startsWith = starts with
+view_dynagroup_exprBuilder_comparisonType_endsWith = ends with
+view_dynagroup_exprBuilder_comparisonType_contains = contains
+view_dynagroup_exprBuilder_expressionType_resource = Resource
+view_dynagroup_exprBuilder_expressionType_resourceType = Resource Type
+view_dynagroup_exprBuilder_expressionType_resourceCategory = Resource Category
+view_dynagroup_exprBuilder_expressionType_trait = Trait
+view_dynagroup_exprBuilder_expressionType_pluginConfig = Plugin Configuration
+view_dynagroup_exprBuilder_expressionType_resourceConfig = Resource Configuration
+view_dynagroup_exprBuilder_pluginLoadFailure = Cannot get the list of plugins
+view_dynagroup_exprBuilder_resTypeLoadFailure = Cannot get list of resource types for plugin [{0}]
+view_dynagroup_exprBuilder_propLoadFailure = Cannot get list of properties
+view_dynagroup_exprBuilder_noResourceTypes = --No resource types--
+view_dynagroup_exprBuilder_noProperties = --No properties--
+view_dynagroup_exprBuilder_noPlugins = --No plugins--
+
+view_group_detail_failLoad = Failed to load group for group with ID [{0}]
+view_group_detail_failLoadComp = Failed to load group composite for group with ID [{0}]
+view_group_detail_recursiveChange = You successfully changed the recursive setting for group [{0}]
+view_group_detail_failRecursiveChange = Failed to update the recursive setting for group [{0}]
+view_group_inventory_activity_no_recent_metrics=This group has no recent metrics
+view_group_membership_failFetch = Failed to fetch Resource Group
+view_group_membership_saveFailure = Failed to update membership of group [{0}]
+view_group_membership_saveSuccessful = You have updated the membership of group [{0}]
+view_group_resConfig_edit_saveTooltip = Update the configurations of all group members
+view_group_resConfig_edit_loadFail = Failed to retrieve member Resource configurations for [{0}]
+view_group_resConfig_edit_noperm = You do not have permission to edit this group configuration
+view_group_resConfig_edit_saveInitiated_concise = The group configuration updates have been initiated
+view_group_resConfig_edit_saveInitiated_full = The group configuration updates have been initiated for the [{0}] compatible group named [{1}]
+view_group_resConfig_edit_saveFailure = Failed to initiate group configuration update for [{0}] compatible group named [{1}]
+view_group_resConfig_edit_valid = All configuration properties have valid values, so the configuration can now be saved
+view_group_resConfig_edit_invalid = The following configuration properties have invalid values and must be corrected before the configuration can be saved: [{0}]
+
+view_group_resConfig_view_noperm = You do not have permissions to see the resource configuration settings
+view_group_resConfig_view_groupProperties = Group Properties
+view_group_resConfig_table_title = Group Resource Configuration History
+view_group_resConfig_table_statusDetails = Status Details
+view_group_resConfig_table_viewSettings = View Settings
+view_group_resConfig_table_viewMemberHistory = View Member History
+view_group_resConfig_table_msg1 = View Member History for status of each individual resource
+view_group_resConfig_table_failFetch = Failed to get group resource config history
+view_group_resConfig_table_deleteSuccessful = You have deleted [{0}] history items
+view_group_resConfig_table_deleteFailure = Failed to delete group resource config history
+view_group_resConfig_table_statusSuccess = This group configuration update was successful
+view_group_resConfig_table_statusInprogress = This group configuration update is still in progress
+view_group_resConfig_table_statusNochange = No changes were made to this group configuration
+view_group_resConfig_table_statusFailure = This group configuration update failed
+view_group_resConfig_table_clickStatusIcon = Click the status icon for full details
+view_group_resConfig_members_title = Group Resource Configuration Member Histories
+view_group_resConfig_members_fetchFailure = Failed to get resource config update history for members of group [{0}]
+view_group_resConfig_members_fetchFailureConfig = Failed to retrieve member resource configuration settings for [{0}]
+view_group_resConfig_members_fetchFailureConfigInProgress = A group resource configuration update is currently in progress. You must wait until the update is finished before you can view the group settings.
+view_group_resConfig_members_statusDetails = Status Details
+view_group_resConfig_members_statusSuccess = This configuration update was successful
+view_group_resConfig_members_statusInprogress = This configuration update is still in progress
+view_group_resConfig_members_statusNochange = No changes were made to this configuration
+view_group_resConfig_members_statusFailure = This configuration update failed for an unknown reason
+
+view_group_pluginConfig_view_noperm = You do not have permissions to see the connection settings
+view_group_pluginConfig_view_groupProperties = Group Properties
+view_group_pluginConfig_table_failFetch = Failed to get group plugin config history
+view_group_pluginConfig_table_title = Group Connection Settings History
+view_group_pluginConfig_table_statusDetails = Status Details
+view_group_pluginConfig_table_viewSettings = View Settings
+view_group_pluginConfig_table_viewMemberHistory = View Member History
+view_group_pluginConfig_table_deleteSuccessful = You have deleted [{0}] history items
+view_group_pluginConfig_table_deleteFailure = Failed to delete group plugin config history
+view_group_pluginConfig_table_msg1 = View Member History for status of each individual resource
+view_group_pluginConfig_table_statusSuccess = This group configuration update was successful
+view_group_pluginConfig_table_statusInprogress = This group configuration update is still in progress
+view_group_pluginConfig_table_statusNochange = No changes were made to this group configuration
+view_group_pluginConfig_table_statusFailure = This group configuration update failed
+view_group_pluginConfig_table_clickStatusIcon = Click the status icon for full details
+view_group_pluginConfig_members_title = Group Connection Settings Member Histories
+view_group_pluginConfig_members_statusDetails = Status Details
+view_group_pluginConfig_members_statusSuccess = This configuration update was successful
+view_group_pluginConfig_members_statusInprogress = This configuration update is still in progress
+view_group_pluginConfig_members_statusNochange = No changes were made to this configuration
+view_group_pluginConfig_members_statusFailure = This configuration update failed for an unknown reason
+view_group_pluginConfig_members_fetchFailure = Failed to get plugin config update history for members of group [{0}]
+view_group_pluginConfig_members_fetchFailureConn = Failed to retrieve member connection settings for [{0}]
+view_group_pluginConfig_members_fetchFailureConnInProgress = A group plugin configuration update is currently in progress. You must wait until the update is finished before you can view the group settings.
+view_group_pluginConfig_edit_currentGroupProperties = Current Group Properties
+view_group_pluginConfig_edit_saveTooltip = Update the connection settings of all group members
+view_group_pluginConfig_edit_noperm = You do not have permission to edit this group connection settings
+view_group_pluginConfig_edit_saveInitiated_concise = The group connection setting updates have been initiated
+view_group_pluginConfig_edit_saveInitiated_full = The group connection setting updates have been initiated for the [{0}] compatible group named [{1}]
+view_group_pluginConfig_edit_saveFailure = Failed to initiate group connection setting update for [{0}] compatible group named [{1}]
+view_group_pluginConfig_edit_valid = All connection setting properties have valid values, so the connection settings can now be saved
+view_group_pluginConfig_edit_invalid = The following connection setting properties have invalid values and must be corrected before the connection settings can be saved: [{0}]
+view_group_meas_schedules_title = Group Metric Collection Schedules
+view_group_summary_nameUpdateFailure = Failed to change the name of the resource group with ID [{0}] - could not change from [{1}] to [{2}]
+view_group_summary_nameUpdateSuccessful = You have changed the name of the resource group with ID [{0}] from [{1}] to [{2}]
+view_group_summary_memberType = Member Type
+view_group_summary_memberCount = Member Count
+view_group_summary_dynamic = Dynamic
+view_group_summary_recursive = Recursive
+view_group_summary_groupDefinition = Group Definition
+view_group_summary_mixed = Mixed
+view_group_summary_compatible = Compatible
+view_group_summary_descUpdateFailure = Failed to change the description of the resource group with ID [{0}]
+view_group_summary_descUpdateSuccessful = You have changed the description of this resource group
+view_group_summary_dynamicNote = Dynamic group names and descriptions are managed, and therefore are not editable
+
+# Connection Settings Details
+#------------------------------------------
+view_connectionSettingsDetails_noPermission = You do not have permission to edit this Resource''s connection settings.
+view_connectionSettingsDetails_error_updateFailure = Failed to update connection settings.
+view_connectionSettingsDetails_messageConcise_updateSuccess = Connection settings updated.
+view_connectionSettingsDetails_messageDetailed_updateSuccess = Connection settings updated for Resource [{0}].
+view_connectionSettingsDetails_allPropertiesValid = All connection settings have valid values, so the settings can now be saved.
+view_connectionSettingsDetails_somePropertiesInvalid = The following connection settings have invalid values: {0}. The values must be corrected before the settings can be saved.
+
+# Resource Resource Groups
+#-----------------------------------------
+view_resourceResourceGroupList_error_fetchFailure = Failed to fetch Resource''s groups.
+view_resourceResourceGroupList_error_updateFailure = Failed to update assigned Resource groups.
+view_resourceResourceGroupList_message_updateSuccess = Group membership updated for [{0}].
+
+# Configuration Details
+#-------------------------------
+view_configurationDetails_noPermission = You do not have permission to edit this Resource''s configuration.
+view_configurationDetails_error_updateFailure = Failed to update configuration.
+view_configurationDetails_messageConcise = Configuration updated - current version is {0}.
+view_configurationDetails_messageDetailed = Configuration updated to version {0} for Resource [{1}].
+view_configurationDetails_allPropertiesValid = All configuration properties have valid values, so the configuration can now be saved.
+view_configurationDetails_somePropertiesInvalid = The following configuration properties have invalid values: {0}. The values must be corrected before the configuration can be saved.
+view_configurationDetails_configNotUpdatedDueToNoChange = Configuration was not updated, since the new configuration is equivalent to the current configuration.
+
+# Resource Configuration History List
+#-------------------------------
+view_configurationHistoryList_title = 構成履歴
+
+# Abstract Configuration History List
+#-------------------------------
+view_configurationHistoryList_rollback = Rollback
+view_configurationHistoryList_rollback_success = You successfully rolled back the configuration to the selected past configuration.
+view_configurationHistoryList_rollback_failure = Failed to rollback the configuration. The original configuration is still in effect.
+view_configurationHistoryList_delete_success = You successfully deleted the selected configuration history items.
+view_configurationHistoryList_delete_failure = Failed to delete the configuration history items.
+view_configurationHistoryList_cannotDeleteGroupItems = One or more selected configuration history items are part of a group configuration update. \
+You must purge that parent group history item before you can delete its individual resource history items.
+view_configurationHistoryList_cannotDeleteCurrent = One of the selected history items represents the current configuration - you cannot delete it.
+view_configurationHistoryList_table_statusSuccess = This configuration update was successful
+view_configurationHistoryList_table_statusInprogress = This configuration update is still in progress
+view_configurationHistoryList_table_statusNochange = No changes were made to this configuration
+view_configurationHistoryList_table_statusFailure = This configuration update failed
+view_configurationHistoryList_table_clickStatusIcon = Click the status icon for full details
+
+# Configuration History Details
+#------------------------------------------
+view_configurationHistoryDetails_error_loadFailure = Unable to load configuration history.
+
+
+# Operation Schedule List
+#------------------------
+xxx =
+
+# Operation Schedule Details
+#---------------------------
+view_operationScheduleDetails_operationSchedule = オペレーションスケジュール
+view_operationScheduleDetails_field_description = 説明
+view_operationScheduleDetails_field_parameters = パラメータ
+view_operationScheduleDetails_field_timeout = タイムアウト
+view_operationScheduleDetails_fieldHelp_timeout = a time duration - if specified, if the duration elapses before a scheduled operation execution has completed, the RHQ Server will timeout the operation and consider it to have failed; note, it is usually not possible to abort the underlying managed resource operation if it was already initiated
+view_operationScheduleDetails_fieldHelp_description = an optional description of this scheduled operation (e.g. nightly maintenance app server restart)
+view_operationScheduleDetails_fieldDefault_description = Select an operation to see its description.
+view_operationScheduleDetails_fieldDefault_parameters = Select an operation to see its parameters.
+view_operationScheduleDetails_noParameters = This operation does not take any parameters.
+view_operationScheduleDetails_enterParametersBelow = Enter parameters below...
+
+view_group_operationScheduleDetails_failedToLoadMembers = Failed to load group member Resources.
+view_group_operationScheduleDetails_field_execute = Execute
+view_group_operationScheduleDetails_value_parallel = in parallel
+view_group_operationScheduleDetails_value_sequential = in the order specified below (drag and drop member Resources to change order)
+view_group_operationScheduleDetails_field_haltOnFailure = Halt on Failure?
+view_group_operationScheduleDetails_memberResource = Member Resource
+
+
+# Operation History List
+#-----------------------
+view_operationHistoryList_title = オペレーション履歴
+view_operationHistoryList_button_runOperation = Run Operation
+view_operationHistoryList_button_forceDelete = Force Delete
+view_operationHistoryList_notYetStarted = not yet started
+
+# Operation History Details
+#--------------------------
+view_operationHistoryDetails_error_fetchFailure = Failure loading operation history.
+view_operationHistoryDetails_operation = オペレーション
+view_operationHistoryDetails_dateSubmitted = 発行日
+view_operationHistoryDetails_dateCompleted = 完了日
+view_operationHistoryDetails_requestor = 要求者
+view_operationHistoryDetails_status = ステータス
+view_operationHistoryDetails_parameters = パラメータ
+view_operationHistoryDetails_results = 結果
+view_operationHistoryDetails_noResults = This operation does not return any results.
+
+
+# Summary Overview
+#-----------------------------
+view_summaryOverview_header_detectedErrors = 検出済みエラー
+view_summaryOverview_tooltip_detectedErrors = Click on the rows to see the error details.
+view_summaryOverview_title_errorDetailsWindow = エラー詳細
+
+# Summary Overview Form
+#-------------------------------------
+view_summaryOverviewForm_field_type = タイプ
+view_summaryOverviewForm_field_name = 名前
+view_summaryOverviewForm_field_description = 説明
+view_summaryOverviewForm_field_location = 場所
+view_summaryOverviewForm_field_version = バージョン
+view_summaryOverviewForm_error_traitsLoadFailure = Failed to load traits for {0}.
+view_summaryOverviewForm_label_plugin = プラグイン:
+view_summaryOverviewForm_label_type = タイプ:
+view_summaryOverviewForm_header_summary = サマリ
+view_summaryOverviewForm_error_nameChangeFailure = Failed to change name of Resource with id {0} from [{1}] to [{2}].
+view_summaryOverviewForm_message_nameChangeSuccess = Name of Resource with id {0} was changed from [{1}] to [{2}].
+view_summaryOverviewForm_error_descriptionChangeFailure = Failed to change description of Resource with id {0} from [{1}] to [{2}].
+view_summaryOverviewForm_message_descriptionChangeSuccess = Description of Resource with id {0} was changed from [{1}] to [{2}].
+view_summaryOverviewForm_error_locationChangeFailure = Failed to change location of Resource with id {0} from [{1}] to [{2}].
+view_summaryOverviewForm_message_locationChangeSuccess = Location of Resource with id {0} was changed from [{1}] to [{2}].
+
+# Summary Dashboard
+#-----------------------------
+view_summaryDashboard_resetConfirm = Reset to default summary dashboard (lose local changes)?
+
+# Group Inventory>Members subtab
+#-----------------------------------------
+view_groupInventoryMembers_button_updateMembership = Update Membership...
+view_groupInventoryMembers_title_updateMembership = Update Membership
+
+
+#==================== Reports ======================
+
+view_reportsTop_title = レポート
+view_reportsTop_description = このセクションはグローバルレポートへのアクセスを提供します。
+view_reports_platforms = プラットフォーム利用率
+view_reports_subsystems = サブシステム
+view_reports_alertDefinitions = アラート定義
+
+view_measurementOob_title = 疑わしいメトリックス
+
+view_tagCloud_title = Tag Cloud
+view_tagCloud_error_fetchFailure = Failed to load tags.
+view_tagCloud_error_tagUsedCount = Tag used {0} times.
+view_tagCloud_deleteTag = Delete Tag
+view_tagCloud_deleteTagFailure = Failed to delete the tag [{0}]
+view_tagCloud_deleteTagSuccess = You successfully deleted the tag [{0}]
+
+view_reports_inventorySummary_failFetch = Failed to get inventory summary
+
+view_taggedResources_title = リソース
+
+view_reports_alertDefinitions_parentHover = Click to go to the parent alert definition
+view_reports_alertDefinitions_resTypeLoadError = Cannot get the template resource type - unable to view the alert template.
+
+#==================== Help ======================
+
+view_helpTop_description = このセクションはドキュメンテーション、チュートリアル、バージョン、その他のヘルプ情報を提供します。
+view_help_section_product = プロダクト
+view_help_section_product_about = RHQについて
+
+
+#===================== Test =======================
+view_testTop_title = テスト
+view_testTop_description = This section contains pages for testing various GUI components.
+
+#=================== Top Level =====================
+
+# About Box
+#----------
+view_aboutBox_allRightsReserved = All Rights Reserved.
+view_aboutBox_buildNumber = ビルド番号:
+view_aboutBox_failedToLoad = Failed to load product information.
+view_aboutBox_homepage = ホームページ
+view_aboutBox_jbossByRedHat = JBoss by Red Hat
+view_aboutBox_title = {0}について
+view_aboutBox_version = バージョン:
+
+# CoreGUI
+#--------------
+view_core_error_1 = New Alerts lookup failed
+#view_core_loggedInAs = Logged in as {0}
+view_core_loggedOut = Logged out
+view_core_recentAlerts = There are [{0}] recent alerts - click to go to the recent alerts report
+view_core_noRecentAlerts = There are no recent alerts to report
+view_core_uncaught = グローバルにキャッチされない例外
+
+# Login
+#--------------
+view_login_invalidEmail = Invalid e-mail address
+view_login_login = ログイン
+view_login_logout = ログアウト
+view_login_noBackend = The backend datasource is unavailable.
+view_login_noLdap = Note: Optional retrieval of ldap details unsuccessful. Manual entry is required.
+view_login_noUser = The username or password provided does not match our records.
+view_login_prompt = ログインしてください
+view_login_registerLater = (Cancel - Complete registration later.)
+view_login_registerLdapSuccess = Successfully registered the new LDAP User.
+view_login_registerUser = Register User
+view_login_welcome = ようこそ
+view_login_welcomeMsg = Welcome to RHQ! <br/><br/> Enter/update the following fields to complete your registration process.<br/> Once you click "OK", you will be logged in.<br/><br/>
+
+# Menu Bar
+#--------------
+view_menuBar_logout = ログアウト
+
+# Search Bar, GUI
+#-----------------
+view_searchBar_resources = リソース
+view_searchBar_resourceGroups = リソースグループ
+# TODO: i18n pluralization
+view_searchBar_welcomeMessage = search for {0}s
+view_searchBar_defaultPattern = name your pattern
+view_searchBar_error_selectSavedSearch = ''Error selecting saved search''
+view_searchBar_query = Query
+
+view_searchGUI_loginStatus = Unable to determine login status, check server status
+
+# Message Center
+#--------------------------
+view_messageCenter_messageTitle = メッセージセンター
+view_messageCenter_noRecentMessages = No Recent Messages
+view_messageCenter_maxMessages = Max Messages
+view_messageCenter_lastNMessages = Last {0} Messages
+view_messageCenter_clearAllMessages = Clear All Messages
+view_messageCenter_messageTime = Time
+view_messageCenter_messageSeverity = Severity
+view_messageCenter_messageDetail = Detail
+view_messageCenter_stackTraceFollows = --- STACK TRACE FOLLOWS ---
+view_messageCenter_messageBarShowDetails = Show Details
commit 9d08c53f0b3d85e00ff76459ac41092b44120147
Merge: 341a653 33a45f8
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri May 6 11:26:16 2011 +0200
Merge branch 'master' of ssh://git.fedorahosted.org/git/rhq/rhq
commit 33a45f8580b5d6634394229435104cb44cc806c4
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Thu May 5 17:23:59 2011 -0400
Fix test compile problem
diff --git a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
index 6675c88..624a815 100644
--- a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
+++ b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
@@ -246,7 +246,8 @@ public class BundleManagerBeanTest extends UpdateSubsytemTestBase {
}
// remove ResourceTypes which cascade remove BundleTypes
- q = em.createQuery("SELECT rt FROM ResourceType rt WHERE rt.deleted = false and rt.name LIKE '" + TEST_PREFIX + "%'");
+ q = em.createQuery("SELECT rt FROM ResourceType rt WHERE rt.deleted = false and rt.name LIKE '"
+ + TEST_PREFIX + "%'");
doomed = q.getResultList();
for (Object removeMe : doomed) {
em.remove(em.getReference(ResourceType.class, ((ResourceType) removeMe).getId()));
@@ -788,7 +789,6 @@ public class BundleManagerBeanTest extends UpdateSubsytemTestBase {
BundleDeploymentCriteria bdc = new BundleDeploymentCriteria();
bdc.addFilterId(bd1d.getId());
bdc.fetchBundleVersion(true);
- bdc.fetchConfiguration(true);
bdc.fetchDestination(true);
bdc.fetchResourceDeployments(true);
bdc.fetchTags(true);
commit cf96f1f4792a405f99a51f40adf4025794db4dd5
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Thu May 5 15:02:02 2011 -0400
BZ: 698100: ability to add graphable elements to monitor/graphs tab.
-additionally pruned out traits from being listed for measurement additions to default dash and to graphs views.
-added sorting to Resource/Group menu item lists for Operations,Measurements and Imports.
-removed autogroup specific url bits as all are persisted groups now.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupContextMenu.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupContextMenu.java
index bc2da4f..525f92c 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupContextMenu.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupContextMenu.java
@@ -23,7 +23,17 @@
package org.rhq.enterprise.gui.coregui.client.inventory.groups.detail;
import java.util.EnumSet;
-
+import java.util.HashMap;
+import java.util.Map;
+import java.util.TreeSet;
+
+import com.allen_sauer.gwt.log.client.Log;
+import com.google.gwt.http.client.Request;
+import com.google.gwt.http.client.RequestBuilder;
+import com.google.gwt.http.client.RequestCallback;
+import com.google.gwt.http.client.RequestException;
+import com.google.gwt.http.client.Response;
+import com.google.gwt.user.client.History;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.widgets.menu.Menu;
import com.smartgwt.client.widgets.menu.MenuItem;
@@ -36,6 +46,7 @@ import org.rhq.core.domain.criteria.DashboardCriteria;
import org.rhq.core.domain.criteria.ResourceGroupCriteria;
import org.rhq.core.domain.dashboard.Dashboard;
import org.rhq.core.domain.dashboard.DashboardPortlet;
+import org.rhq.core.domain.measurement.DataType;
import org.rhq.core.domain.measurement.MeasurementDefinition;
import org.rhq.core.domain.operation.OperationDefinition;
import org.rhq.core.domain.resource.ResourceType;
@@ -143,10 +154,11 @@ public class ResourceGroupContextMenu extends LocatableMenu {
pluginConfiguration.addClickHandler(new ClickHandler() {
public void onClick(MenuItemClickEvent event) {
if (isAutoGroup) {
- CoreGUI.goToView(LinkManager.getAutoGroupTabLink(group.getId(), "Inventory", "ConnectionSettings"));
+ CoreGUI.goToView(LinkManager.getAutoGroupTabLink(group.getId(), "Inventory",
+ "ConnectionSettings"));
} else if (isAutoCluster) {
- CoreGUI.goToView(LinkManager
- .getAutoClusterTabLink(group.getId(), "Inventory", "ConnectionSettings"));
+ CoreGUI.goToView(LinkManager.getAutoClusterTabLink(group.getId(), "Inventory",
+ "ConnectionSettings"));
} else {
CoreGUI.goToView(LinkManager.getResourceGroupTabLink(group.getId(), "Inventory",
"ConnectionSettings"));
@@ -182,18 +194,28 @@ public class ResourceGroupContextMenu extends LocatableMenu {
// Operations Menu
MenuItem operations = new MenuItem(MSG.view_tree_common_contextMenu_operations());
- boolean operationsEnabled = (groupComposite.getResourcePermission().isControl() && null != resourceType.getOperationDefinitions() && !resourceType
- .getOperationDefinitions().isEmpty());
+ boolean operationsEnabled = (groupComposite.getResourcePermission().isControl()
+ && null != resourceType.getOperationDefinitions() && !resourceType.getOperationDefinitions().isEmpty());
operations.setEnabled(operationsEnabled);
if (operationsEnabled) {
Menu opSubMenu = new Menu();
- for (final OperationDefinition operationDefinition : resourceType.getOperationDefinitions()) {
+ //sort the display items alphabetically
+ TreeSet<String> ordered = new TreeSet<String>();
+ Map<String, OperationDefinition> definitionMap = new HashMap<String, OperationDefinition>();
+ for (OperationDefinition o : resourceType.getOperationDefinitions()) {
+ ordered.add(o.getDisplayName());
+ definitionMap.put(o.getDisplayName(), o);
+ }
+
+ for (String displayName : ordered) {
+ final OperationDefinition operationDefinition = definitionMap.get(displayName);
+
MenuItem operationItem = new MenuItem(operationDefinition.getDisplayName());
operationItem.addClickHandler(new ClickHandler() {
public void onClick(MenuItemClickEvent event) {
- String viewPath = LinkManager.getResourceGroupTabLink(group,
- ResourceDetailView.Tab.OPERATIONS, ResourceDetailView.OperationsSubTab.SCHEDULES)
- + "/0/" + operationDefinition.getId();
+ String viewPath = LinkManager.getResourceGroupTabLink(group, ResourceDetailView.Tab.OPERATIONS,
+ ResourceDetailView.OperationsSubTab.SCHEDULES)
+ + "/0/" + operationDefinition.getId();
CoreGUI.goToView(viewPath);
}
});
@@ -284,57 +306,135 @@ public class ResourceGroupContextMenu extends LocatableMenu {
public void onSuccess(PageList<Dashboard> result) {
if (type.getMetricDefinitions() != null) {
- for (final MeasurementDefinition def : type.getMetricDefinitions()) {
-
- MenuItem defItem = new MenuItem(def.getDisplayName());
- measurementsSubMenu.addItem(defItem);
- Menu defSubItem = new Menu();
- defItem.setSubmenu(defSubItem);
-
- for (final Dashboard d : result) {
- MenuItem addToDBItem = new MenuItem(MSG
- .view_tree_common_contextMenu_addChartToDashboard(d.getName()));
- defSubItem.addItem(addToDBItem);
-
- addToDBItem.addClickHandler(new ClickHandler() {
- public void onClick(MenuItemClickEvent menuItemClickEvent) {
-
- DashboardPortlet p = new DashboardPortlet(MSG
- .view_tree_common_contextMenu_groupGraph(), ResourceGroupGraphPortlet.KEY,
- 250);
- p.getConfiguration().put(
- new PropertySimple(ResourceGroupGraphPortlet.CFG_RESOURCE_GROUP_ID, group
- .getId()));
- p.getConfiguration()
- .put(
+ //sort the display items alphabetically
+ TreeSet<String> ordered = new TreeSet<String>();
+ Map<String, MeasurementDefinition> definitionMap = new HashMap<String, MeasurementDefinition>();
+ for (MeasurementDefinition m : type.getMetricDefinitions()) {
+ ordered.add(m.getDisplayName());
+ definitionMap.put(m.getDisplayName(), m);
+ }
+
+ for (String displayName : ordered) {
+ final MeasurementDefinition def = definitionMap.get(displayName);
+ //only add menu items for Measurement
+ if (def.getDataType().equals(DataType.MEASUREMENT)) {
+ MenuItem defItem = new MenuItem(def.getDisplayName());
+ measurementsSubMenu.addItem(defItem);
+ Menu defSubItem = new Menu();
+ defItem.setSubmenu(defSubItem);
+
+ for (final Dashboard d : result) {
+ MenuItem addToDBItem = new MenuItem(MSG
+ .view_tree_common_contextMenu_addChartToDashboard(d.getName()));
+ defSubItem.addItem(addToDBItem);
+
+ addToDBItem.addClickHandler(new ClickHandler() {
+ public void onClick(MenuItemClickEvent menuItemClickEvent) {
+
+ DashboardPortlet p = new DashboardPortlet(MSG
+ .view_tree_common_contextMenu_groupGraph(),
+ ResourceGroupGraphPortlet.KEY, 250);
+ p.getConfiguration().put(
+ new PropertySimple(ResourceGroupGraphPortlet.CFG_RESOURCE_GROUP_ID,
+ group.getId()));
+ p.getConfiguration().put(
new PropertySimple(ResourceGroupGraphPortlet.CFG_DEFINITION_ID, def
.getId()));
- d.addPortlet(p);
-
- GWTServiceLookup.getDashboardService().storeDashboard(d,
- new AsyncCallback<Dashboard>() {
- public void onFailure(Throwable caught) {
- CoreGUI.getErrorHandler().handleError(
- MSG.view_tree_common_contextMenu_saveChartToDashboardFailure(),
- caught);
+ d.addPortlet(p);
+
+ GWTServiceLookup.getDashboardService().storeDashboard(d,
+ new AsyncCallback<Dashboard>() {
+ public void onFailure(Throwable caught) {
+ CoreGUI
+ .getErrorHandler()
+ .handleError(
+ MSG
+ .view_tree_common_contextMenu_saveChartToDashboardFailure(),
+ caught);
+ }
+
+ public void onSuccess(Dashboard result) {
+ String msg = MSG
+ .view_tree_common_contextMenu_saveChartToDashboardSuccessful(result
+ .getName());
+ CoreGUI.getMessageCenter().notify(
+ new Message(msg, Message.Severity.Info));
+ }
+ });
+
+ }
+ });
+
+ //add new menu item for adding current graphable element to view if on Monitor/Graphs tab
+ String currentViewPath = History.getToken();
+ if (currentViewPath.indexOf("Monitoring/Graphs") > -1) {
+ MenuItem addGraphItem = new MenuItem(MSG.common_title_add_graph_to_view());
+ defSubItem.addItem(addGraphItem);
+
+ addGraphItem.addClickHandler(new ClickHandler() {
+ public void onClick(MenuItemClickEvent menuItemClickEvent) {
+ //generate javascript to call out to.
+ //Ex. menuLayers.hide();addMetric('${metric.resourceId},${metric.scheduleId}')
+ String grpGraphElements = "";
+ if (isAutoGroup) {
+ grpGraphElements += "ag,";
+ } else {
+ grpGraphElements += "cg,";
}
-
- public void onSuccess(Dashboard result) {
- String msg = MSG
- .view_tree_common_contextMenu_saveChartToDashboardSuccessful(result
- .getName());
- CoreGUI.getMessageCenter().notify(
- new Message(msg, Message.Severity.Info));
+ grpGraphElements += group.getId() + "," + def.getId();
+ if (isAutoGroup) {//need to postpend the resource type as third element
+ grpGraphElements += "," + group.getResourceType().getId();
}
- });
-
- }
- });
-
- }
-
- }
+ //construct portal.war url to access
+ String baseUrl = "/resource/common/monitor/visibility/IndicatorCharts.do";
+ //No need to rebuild the autogroup url as everything handled as a compatible group now
+ // if (isAutoGroup) {
+ // //Ex. ?parent=10001&ctype=1013&view=Default
+ // baseUrl += "?parent=" + group.getAutoGroupParentResource().getId()
+ // + "&ctype="
+ // + group.getResourceType().getId();
+ // jsCode = "ag," + group.getAutoGroupParentResource().getId() + ","
+ // + def.getId() + ","
+ // + group.getResourceType().getId();
+ // } else {
+ //Ex. ?groupId=10001&view=Default
+ baseUrl += "?groupId=" + group.getId();
+ baseUrl += "&view=Default";
+ baseUrl += "&action=addChart&metric=" + grpGraphElements;
+ baseUrl += "&view=Default";
+ final String url = baseUrl;
+ //initiate HTTP request
+ final RequestBuilder b = new RequestBuilder(RequestBuilder.GET, baseUrl);
+
+ try {
+ b.setCallback(new RequestCallback() {
+ public void onResponseReceived(final Request request,
+ final Response response) {
+ Log
+ .trace("Successfully submitted request to add graph to view:"
+ + url);
+
+ //kick off a page reload.
+ String currentViewPath = History.getToken();
+ CoreGUI.goToView(currentViewPath, true);
+ }
+
+ @Override
+ public void onError(Request request, Throwable t) {
+ Log.trace("Error adding Metric:" + url, t);
+ }
+ });
+ b.send();
+ } catch (RequestException e) {
+ Log.trace("Error adding Metric:" + url, e);
+ }
+ }//end of onClick definition
+ });//end of onClick Handler definition
+ }//end of Monitoring/Graphs view check
+ }//end of dashabord iteration
+ }//end of check for Measurement
+ }//end of metric definition iteration
}
}
@@ -342,4 +442,5 @@ public class ResourceGroupContextMenu extends LocatableMenu {
measurements.setSubmenu(measurementsSubMenu);
return measurements;
}
+
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java
index ceb74c1..7149726 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java
@@ -27,8 +27,14 @@ import java.util.EnumSet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.TreeSet;
import com.allen_sauer.gwt.log.client.Log;
+import com.google.gwt.http.client.Request;
+import com.google.gwt.http.client.RequestBuilder;
+import com.google.gwt.http.client.RequestCallback;
+import com.google.gwt.http.client.RequestException;
+import com.google.gwt.http.client.Response;
import com.google.gwt.user.client.History;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.data.DSCallback;
@@ -57,7 +63,9 @@ import org.rhq.core.domain.criteria.ResourceGroupCriteria;
import org.rhq.core.domain.criteria.ResourceTypeCriteria;
import org.rhq.core.domain.dashboard.Dashboard;
import org.rhq.core.domain.dashboard.DashboardPortlet;
+import org.rhq.core.domain.measurement.DataType;
import org.rhq.core.domain.measurement.MeasurementDefinition;
+import org.rhq.core.domain.measurement.MeasurementSchedule;
import org.rhq.core.domain.operation.OperationDefinition;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.ResourceCategory;
@@ -344,6 +352,7 @@ public class ResourceTreeView extends LocatableVLayout {
// fetch the resource composite, we need resource permission info for enablement decisions
ResourceCriteria criteria = new ResourceCriteria();
criteria.addFilterId(resourceId);
+ criteria.fetchSchedules(true);
GWTServiceLookup.getResourceService().findResourceCompositesByCriteria(criteria,
new AsyncCallback<PageList<ResourceComposite>>() {
@@ -405,7 +414,8 @@ public class ResourceTreeView extends LocatableVLayout {
pluginConfiguration.addClickHandler(new ClickHandler() {
public void onClick(MenuItemClickEvent event) {
- CoreGUI.goToView(LinkManager.getResourceTabLink(resource.getId(), "Inventory", "ConnectionSettings"));
+ CoreGUI.goToView(LinkManager
+ .getResourceTabLink(resource.getId(), "Inventory", "ConnectionSettings"));
}
});
}
@@ -436,14 +446,24 @@ public class ResourceTreeView extends LocatableVLayout {
operations.setEnabled(operationsEnabled);
if (operationsEnabled) {
Menu opSubMenu = new Menu();
- for (final OperationDefinition operationDefinition : resourceType.getOperationDefinitions()) {
+
+ //sort the display items alphabetically
+ TreeSet<String> ordered = new TreeSet<String>();
+ Map<String, OperationDefinition> definitionMap = new HashMap<String, OperationDefinition>();
+ for (OperationDefinition o : resourceType.getOperationDefinitions()) {
+ ordered.add(o.getDisplayName());
+ definitionMap.put(o.getDisplayName(), o);
+ }
+ for (String displayName : ordered) {
+ final OperationDefinition operationDefinition = definitionMap.get(displayName);
+
MenuItem operationItem = new MenuItem(operationDefinition.getDisplayName());
operationItem.addClickHandler(new ClickHandler() {
public void onClick(MenuItemClickEvent event) {
String viewPath = LinkManager.getResourceTabLink(resource.getId(),
- ResourceDetailView.Tab.OPERATIONS, ResourceDetailView.OperationsSubTab.SCHEDULES)
- + "/0/" + operationDefinition.getId();
+ ResourceDetailView.Tab.OPERATIONS, ResourceDetailView.OperationsSubTab.SCHEDULES)
+ + "/0/" + operationDefinition.getId();
CoreGUI.goToView(viewPath);
}
});
@@ -461,7 +481,16 @@ public class ResourceTreeView extends LocatableVLayout {
boolean createChildResourcesEnabled = resourcePermission.isCreateChildResources();
if (createChildResourcesEnabled) {
Menu createChildSubMenu = new Menu();
- for (final ResourceType childType : resourceType.getChildResourceTypes()) {
+ //sort the display items alphabetically
+ TreeSet<String> ordered = new TreeSet<String>();
+ Map<String, ResourceType> typeMap = new HashMap<String, ResourceType>();
+ for (ResourceType o : resourceType.getChildResourceTypes()) {
+ ordered.add(o.getName());
+ typeMap.put(o.getName(), o);
+ }
+
+ for (String type : ordered) {
+ final ResourceType childType = typeMap.get(type);
if (childType.isCreatable()) {
MenuItem createItem = new MenuItem(childType.getName());
@@ -487,7 +516,16 @@ public class ResourceTreeView extends LocatableVLayout {
boolean manualImportEnabled = resourcePermission.isCreateChildResources();
if (manualImportEnabled) {
Menu importChildSubMenu = new Menu();
- for (final ResourceType childType : resourceType.getChildResourceTypes()) {
+
+ //sort the display items alphabetically
+ TreeSet<String> ordered = new TreeSet<String>();
+ Map<String, ResourceType> typeMap = new HashMap<String, ResourceType>();
+ for (ResourceType o : resourceType.getChildResourceTypes()) {
+ ordered.add(o.getName());
+ typeMap.put(o.getName(), o);
+ }
+ for (String name : ordered) {
+ final ResourceType childType = typeMap.get(name);
if (childType.isSupportsManualAdd()) {
MenuItem importItem = new MenuItem(childType.getName());
@@ -501,7 +539,6 @@ public class ResourceTreeView extends LocatableVLayout {
importChildSubMenu.addItem(importItem);
}
}
-
if (resourceType.getCategory() == ResourceCategory.PLATFORM) {
loadManuallyAddServersToPlatforms(importChildSubMenu, resource);
}
@@ -527,7 +564,17 @@ public class ResourceTreeView extends LocatableVLayout {
}
public void onSuccess(PageList<ResourceType> result) {
- for (final ResourceType type : result) {
+ //sort the display items alphabetically
+ TreeSet<String> ordered = new TreeSet<String>();
+ Map<String, ResourceType> displayTypes = new HashMap<String, ResourceType>();
+ for (ResourceType type : result) {
+ displayTypes.put(type.getName(), type);
+ ordered.add(type.getName());
+ }
+
+ int idx = 0;
+ for (String displayType : ordered) {
+ final ResourceType type = displayTypes.get(displayType);
if (type.getParentResourceTypes() == null || type.getParentResourceTypes().isEmpty()) {
MenuItem item = new MenuItem(type.getName());
@@ -538,7 +585,7 @@ public class ResourceTreeView extends LocatableVLayout {
}
});
- manuallyAddMenu.addItem(item);
+ manuallyAddMenu.addItem(item, idx++);
}
}
}
@@ -559,57 +606,118 @@ public class ResourceTreeView extends LocatableVLayout {
}
public void onSuccess(PageList<Dashboard> result) {
+ //sort the display items alphabetically
+ TreeSet<String> ordered = new TreeSet<String>();
+ Map<String, MeasurementDefinition> definitionMap = new HashMap<String, MeasurementDefinition>();
+ for (MeasurementDefinition m : type.getMetricDefinitions()) {
+ ordered.add(m.getDisplayName());
+ definitionMap.put(m.getDisplayName(), m);
+ }
- for (final MeasurementDefinition def : type.getMetricDefinitions()) {
-
- MenuItem defItem = new MenuItem(def.getDisplayName());
- measurementsSubMenu.addItem(defItem);
- Menu defSubItem = new Menu();
- defItem.setSubmenu(defSubItem);
-
- for (final Dashboard d : result) {
- MenuItem addToDBItem = new MenuItem(MSG.view_tree_common_contextMenu_addChartToDashboard(d
- .getName()));
- defSubItem.addItem(addToDBItem);
-
- addToDBItem.addClickHandler(new ClickHandler() {
-
- public void onClick(MenuItemClickEvent menuItemClickEvent) {
- DashboardPortlet p = new DashboardPortlet(MSG
- .view_tree_common_contextMenu_resourceGraph(), ResourceGraphPortlet.KEY, 250);
- p.getConfiguration().put(
- new PropertySimple(ResourceGraphPortlet.CFG_RESOURCE_ID, resource.getId()));
- p.getConfiguration().put(
- new PropertySimple(ResourceGraphPortlet.CFG_DEFINITION_ID, def.getId()));
-
- d.addPortlet(p);
-
- GWTServiceLookup.getDashboardService().storeDashboard(d,
- new AsyncCallback<Dashboard>() {
-
- public void onFailure(Throwable caught) {
- CoreGUI.getErrorHandler().handleError(
- MSG.view_tree_common_contextMenu_saveChartToDashboardFailure(),
- caught);
- }
+ for (String displayName : ordered) {
+ final MeasurementDefinition def = definitionMap.get(displayName);
+ //only add menu items for Measurement
+ if (def.getDataType().equals(DataType.MEASUREMENT)) {
+ MenuItem defItem = new MenuItem(def.getDisplayName());
+ measurementsSubMenu.addItem(defItem);
+ Menu defSubItem = new Menu();
+ defItem.setSubmenu(defSubItem);
+
+ for (final Dashboard d : result) {
+ MenuItem addToDBItem = new MenuItem(MSG
+ .view_tree_common_contextMenu_addChartToDashboard(d.getName()));
+ defSubItem.addItem(addToDBItem);
+
+ addToDBItem.addClickHandler(new ClickHandler() {
+
+ public void onClick(MenuItemClickEvent menuItemClickEvent) {
+ DashboardPortlet p = new DashboardPortlet(MSG
+ .view_tree_common_contextMenu_resourceGraph(), ResourceGraphPortlet.KEY,
+ 250);
+ p.getConfiguration().put(
+ new PropertySimple(ResourceGraphPortlet.CFG_RESOURCE_ID, resource.getId()));
+ p.getConfiguration().put(
+ new PropertySimple(ResourceGraphPortlet.CFG_DEFINITION_ID, def.getId()));
+
+ d.addPortlet(p);
+
+ GWTServiceLookup.getDashboardService().storeDashboard(d,
+ new AsyncCallback<Dashboard>() {
+
+ public void onFailure(Throwable caught) {
+ CoreGUI.getErrorHandler().handleError(
+ MSG.view_tree_common_contextMenu_saveChartToDashboardFailure(),
+ caught);
+ }
+
+ public void onSuccess(Dashboard result) {
+ CoreGUI
+ .getMessageCenter()
+ .notify(
+ new Message(
+ MSG
+ .view_tree_common_contextMenu_saveChartToDashboardSuccessful(result
+ .getName()), Message.Severity.Info));
+ }
+ });
- public void onSuccess(Dashboard result) {
- CoreGUI
- .getMessageCenter()
- .notify(
- new Message(
- MSG
- .view_tree_common_contextMenu_saveChartToDashboardSuccessful(result
- .getName()), Message.Severity.Info));
+ }
+ });
+
+ //add new menu item for adding current graphable element to view if on Monitor/Graphs tab
+ String currentViewPath = History.getToken();
+ if (currentViewPath.indexOf("Monitoring/Graphs") > -1) {
+ MenuItem addGraphItem = new MenuItem(MSG.common_title_add_graph_to_view());
+ defSubItem.addItem(addGraphItem);
+
+ addGraphItem.addClickHandler(new ClickHandler() {
+ public void onClick(MenuItemClickEvent menuItemClickEvent) {
+ //generate javascript to call out to.
+ //Ex. menuLayers.hide();addMetric('${metric.resourceId},${metric.scheduleId}')
+ if (getScheduleDefinitionId(resource, def.getName()) > -1) {
+ String resourceGraphElements = resource.getId() + ","
+ + getScheduleDefinitionId(resource, def.getName());
+
+ //construct portal.war url to access
+ String baseUrl = "/resource/common/monitor/visibility/IndicatorCharts.do";
+ baseUrl += "?id=" + resource.getId();
+ baseUrl += "&view=Default";
+ baseUrl += "&action=addChart&metric=" + resourceGraphElements;
+ baseUrl += "&view=Default";
+ final String url = baseUrl;
+ //initiate HTTP request
+ final RequestBuilder b = new RequestBuilder(RequestBuilder.GET, baseUrl);
+
+ try {
+ b.setCallback(new RequestCallback() {
+ public void onResponseReceived(final Request request,
+ final Response response) {
+ Log
+ .trace("Successfully submitted request to add graph to view:"
+ + url);
+
+ //kick off a page reload.
+ String currentViewPath = History.getToken();
+ CoreGUI.goToView(currentViewPath, true);
+ }
+
+ @Override
+ public void onError(Request request, Throwable t) {
+ Log.trace("Error adding Metric:" + url, t);
+ }
+ });
+ b.send();
+ } catch (RequestException e) {
+ Log.trace("Error adding Metric:" + url, e);
+ }
}
- });
-
+ }
+ });
}
- });
-
- }
-
- }
+ // }//end trait check
+ }//end dashboard iteration
+ }//end trait exclusion
+ }//end measurement def iteration
}
});
@@ -617,6 +725,26 @@ public class ResourceTreeView extends LocatableVLayout {
return measurements;
}
+ /** Locate the specific schedule definition using the definition identifier.
+ */
+ private int getScheduleDefinitionId(Resource resource, String definitionName) {
+ int id = -1;
+ if (resource.getSchedules() != null) {
+ boolean located = false;
+ MeasurementSchedule[] schedules = new MeasurementSchedule[resource.getSchedules().size()];
+ resource.getSchedules().toArray(schedules);
+ for (int i = 0; (!located && i < resource.getSchedules().size()); i++) {
+ MeasurementSchedule schedule = schedules[i];
+ MeasurementDefinition definition = schedule.getDefinition();
+ if ((definition != null) && definition.getName().equals(definitionName)) {
+ located = true;
+ id = schedule.getId();
+ }
+ }
+ }
+ return id;
+ }
+
private void setRootResource(Resource rootResource) {
this.rootResource = rootResource;
}
diff --git a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
index 0f75682..d387c9e 100644
--- a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
+++ b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
@@ -94,6 +94,7 @@ common_severity_fatal = Fatal
#--------------
common_title_address = Address
common_title_add_column = Add Column
+common_title_add_graph_to_view = Add Graph to Monitor View
common_title_add_portlet = Add Portlet
common_title_alert_range = Alert Range
common_title_ancestry = Ancestry
commit 976c5fc6ed0e7e5354ea6a890caafa58b3f1c7bc
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Thu May 5 13:45:09 2011 -0400
[BZ 702390 - Large number of BundleDeployments for a single Bundle causes fetch serialization issues]
Remove self-referring entity association for
BundleDeployment.replacedBundleDeployment. This prevents eager loading of
the entire deployment chain when fetching a BundleDeployment, and in turn
avoids issues with Hibernate class scrubbing when remote fetching deployments.
Instead of using the entity as the field member, just use the ID.
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleDeployment.java b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleDeployment.java
index fc0c72c..dcf6c27 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleDeployment.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleDeployment.java
@@ -68,14 +68,14 @@ import org.rhq.core.domain.tagging.Tag;
+ "SELECT bd FROM BundleDeployment bd "),
@NamedQuery(name = BundleDeployment.QUERY_UPDATE_FOR_DESTINATION_REMOVE, query = "" //
+ "UPDATE BundleDeployment bd " //
- + " SET bd.replacedBundleDeployment = NULL " //
- + " WHERE bd.replacedBundleDeployment.id IN " //
+ + " SET bd.replacedBundleDeploymentId = NULL " //
+ + " WHERE bd.replacedBundleDeploymentId IN " //
+ " ( SELECT innerbd.id FROM BundleDeployment innerbd " //
+ " WHERE innerbd.destination.id = :destinationId ) "),
@NamedQuery(name = BundleDeployment.QUERY_UPDATE_FOR_VERSION_REMOVE, query = "" //
+ "UPDATE BundleDeployment bd " //
- + " SET bd.replacedBundleDeployment = NULL " //
- + " WHERE bd.replacedBundleDeployment.id IN " //
+ + " SET bd.replacedBundleDeploymentId = NULL " //
+ + " WHERE bd.replacedBundleDeploymentId IN " //
+ " ( SELECT innerbd.id FROM BundleDeployment innerbd " //
+ " WHERE innerbd.bundleVersion.id = :bundleVersionId ) ") })
@SequenceGenerator(name = "SEQ", sequenceName = "RHQ_BUNDLE_DEPLOYMENT_ID_SEQ")
@@ -118,20 +118,23 @@ public class BundleDeployment implements Serializable {
@Column(name = "MTIME")
private Long mtime = System.currentTimeMillis();
- @JoinColumn(name = "REPLACED_BUNDLE_DEPLOYMENT_ID", referencedColumnName = "ID", nullable = true)
- @OneToOne(fetch = FetchType.LAZY, optional = true)
- private BundleDeployment replacedBundleDeployment;
+ // This is not a join column on purpose. Since it is nullable the OneToOne association would be forced to EAGER
+ // fetch. That leads to basically fetching every BundleDeployment every time, in a deeply recursive way if you
+ // have a lot deployments.
+ @Column(name = "REPLACED_BUNDLE_DEPLOYMENT_ID", nullable = true)
+ private Integer replacedBundleDeploymentId;
+ // note - eager fetch, can not lazy fetch an optional OneToOne
@JoinColumn(name = "CONFIG_ID", referencedColumnName = "ID", nullable = true)
- @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, optional = true)
+ @OneToOne(cascade = CascadeType.ALL, optional = true)
private Configuration configuration;
@JoinColumn(name = "BUNDLE_VERSION_ID", referencedColumnName = "ID", nullable = false)
- @ManyToOne(fetch = FetchType.LAZY)
+ @ManyToOne(fetch = FetchType.LAZY, optional = false)
private BundleVersion bundleVersion;
@JoinColumn(name = "BUNDLE_DESTINATION_ID", referencedColumnName = "ID", nullable = false)
- @ManyToOne(fetch = FetchType.LAZY)
+ @ManyToOne(fetch = FetchType.LAZY, optional = false)
private BundleDestination destination;
@OneToMany(mappedBy = "bundleDeployment", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@@ -284,12 +287,12 @@ public class BundleDeployment implements Serializable {
/**
* @return The previously "live" BundleDeployment.
*/
- public BundleDeployment getReplacedBundleDeployment() {
- return replacedBundleDeployment;
+ public Integer getReplacedBundleDeploymentId() {
+ return replacedBundleDeploymentId;
}
- public void setReplacedBundleDeployment(BundleDeployment replacedBundleDeployment) {
- this.replacedBundleDeployment = replacedBundleDeployment;
+ public void setReplacedBundleDeploymentId(Integer replacedBundleDeploymentId) {
+ this.replacedBundleDeploymentId = replacedBundleDeploymentId;
}
public Configuration getConfiguration() {
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/BundleDeploymentCriteria.java b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/BundleDeploymentCriteria.java
index 3ad25b8..aa437e3 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/BundleDeploymentCriteria.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/BundleDeploymentCriteria.java
@@ -49,9 +49,7 @@ public class BundleDeploymentCriteria extends TaggedCriteria {
private String filterSubjectName;
private boolean fetchBundleVersion;
- private boolean fetchConfiguration;
private boolean fetchDestination;
- private boolean fetchReplacedBundleDeployment;
private boolean fetchResourceDeployments;
public BundleDeploymentCriteria() {
@@ -110,18 +108,10 @@ public class BundleDeploymentCriteria extends TaggedCriteria {
this.fetchBundleVersion = fetchBundleVersion;
}
- public void fetchConfiguration(boolean fetchConfiguration) {
- this.fetchConfiguration = fetchConfiguration;
- }
-
public void fetchDestination(boolean fetchDestination) {
this.fetchDestination = fetchDestination;
}
- public void fetchReplacedBundleDeployment(boolean fetchReplacedBundleDeployment) {
- this.fetchReplacedBundleDeployment = fetchReplacedBundleDeployment;
- }
-
public void fetchResourceDeployments(boolean fetchResourceDeployments) {
this.fetchResourceDeployments = fetchResourceDeployments;
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/SelectBundleVersionStep.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/SelectBundleVersionStep.java
index e1367e8..b13df74 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/SelectBundleVersionStep.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/SelectBundleVersionStep.java
@@ -143,7 +143,6 @@ public class SelectBundleVersionStep extends AbstractWizardStep {
criteria.addFilterDestinationId(wizard.getDestination().getId());
criteria.addFilterIsLive(true);
criteria.fetchBundleVersion(true);
- criteria.fetchConfiguration(true);
bundleServer.findBundleDeploymentsByCriteria(criteria, //
new AsyncCallback<PageList<BundleDeployment>>() {
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentView.java
index e220cfc..73ea70c 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentView.java
@@ -328,6 +328,7 @@ public class BundleDeploymentView extends LocatableVLayout implements Bookmarkab
return tagEditor;
}
+ @SuppressWarnings("unchecked")
private Table addMemberDeploymentsTable() {
Table table = new Table(extendLocatorId("Deployments"), MSG.view_bundle_deploy_deploymentPlatforms());
@@ -420,7 +421,6 @@ public class BundleDeploymentView extends LocatableVLayout implements Bookmarkab
BundleDeploymentCriteria criteria = new BundleDeploymentCriteria();
criteria.addFilterId(bundleDeploymentId);
criteria.fetchBundleVersion(true);
- criteria.fetchConfiguration(true);
criteria.fetchResourceDeployments(true);
criteria.fetchDestination(true);
criteria.fetchTags(true);
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/revert/ConfirmationStep.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/revert/ConfirmationStep.java
index 3d298c2..00007cb 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/revert/ConfirmationStep.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/revert/ConfirmationStep.java
@@ -69,13 +69,14 @@ public class ConfirmationStep extends AbstractWizardStep {
}
layout.setMembersMargin(10);
+ // Get the Live Deployment
BundleDeploymentCriteria c = new BundleDeploymentCriteria();
c.addFilterDestinationId(this.wizard.getDestination().getId());
c.addFilterIsLive(true);
- c.fetchReplacedBundleDeployment(true);
c.fetchBundleVersion(true);
bundleServer.findBundleDeploymentsByCriteria(c, //
new AsyncCallback<PageList<BundleDeployment>>() {
+
public void onSuccess(PageList<BundleDeployment> liveDeployments) {
if (1 != liveDeployments.size()) {
nextPage = false;
@@ -86,9 +87,11 @@ public class ConfirmationStep extends AbstractWizardStep {
CoreGUI.getMessageCenter().notify(
new Message(messageConcise, message, Message.Severity.Warning));
}
+
wizard.setLiveDeployment(liveDeployments.get(0));
- wizard.setPreviousDeployment(wizard.getLiveDeployment().getReplacedBundleDeployment());
- if (null == wizard.getPreviousDeployment()) {
+ Integer replacedBundleDeploymentId = wizard.getLiveDeployment().getReplacedBundleDeploymentId();
+
+ if (null == replacedBundleDeploymentId) {
nextPage = false;
String messageConcise = MSG
.view_bundle_revertWizard_confirmStep_noPriorDeployment_concise();
@@ -99,7 +102,39 @@ public class ConfirmationStep extends AbstractWizardStep {
new Message(messageConcise, message, Message.Severity.Warning));
}
- setLayout();
+ // Get the Replaced Deployment (the one we want to revert to_
+ BundleDeploymentCriteria c = new BundleDeploymentCriteria();
+ c.addFilterId(replacedBundleDeploymentId);
+ bundleServer.findBundleDeploymentsByCriteria(c, //
+ new AsyncCallback<PageList<BundleDeployment>>() {
+
+ public void onSuccess(PageList<BundleDeployment> replacedBundleDeployments) {
+ if (1 != replacedBundleDeployments.size()) {
+ nextPage = false;
+ String messageConcise = MSG
+ .view_bundle_revertWizard_confirmStep_noPriorDeployment_concise();
+ String message = MSG.view_bundle_revertWizard_confirmStep_noPriorDeployment(
+ wizard.getLiveDeployment().toString(), wizard.getDestination().toString());
+ wizard.getView().showMessage(message);
+ CoreGUI.getMessageCenter().notify(
+ new Message(messageConcise, message, Message.Severity.Warning));
+ }
+
+ wizard.setPreviousDeployment(replacedBundleDeployments.get(0));
+ setLayout();
+ }
+
+ public void onFailure(Throwable caught) {
+ nextPage = false;
+ String messageConcise = MSG
+ .view_bundle_revertWizard_confirmStep_noPriorDeployment_concise();
+ String message = MSG.view_bundle_revertWizard_confirmStep_noPriorDeployment(wizard
+ .getLiveDeployment().toString(), wizard.getDestination().toString());
+ wizard.getView().showMessage(message);
+ CoreGUI.getMessageCenter().notify(
+ new Message(messageConcise, message, Message.Severity.Warning));
+ }
+ });
}
public void onFailure(Throwable caught) {
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
index d0ddc8f..7a6e08a 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
@@ -926,7 +926,6 @@ public class BundleManagerBean implements BundleManagerLocal, BundleManagerRemot
BundleDeploymentCriteria c = new BundleDeploymentCriteria();
c.addFilterDestinationId(bundleDestinationId);
c.addFilterIsLive(true);
- c.fetchReplacedBundleDeployment(true);
c.fetchDestination(true);
List<BundleDeployment> liveDeployments = bundleManager.findBundleDeploymentsByCriteria(subject, c);
if (1 != liveDeployments.size()) {
@@ -934,15 +933,15 @@ public class BundleManagerBean implements BundleManagerLocal, BundleManagerRemot
+ "]");
}
BundleDeployment liveDeployment = liveDeployments.get(0);
- BundleDeployment prevDeployment = liveDeployment.getReplacedBundleDeployment();
- if (null == prevDeployment) {
+ Integer prevDeploymentId = liveDeployment.getReplacedBundleDeploymentId();
+ if (null == prevDeploymentId) {
throw new IllegalArgumentException(
"Live deployment ["
+ liveDeployment
+ "] can not be reverted. The Live deployment is either an initial deployment or a reverted deployment for destinationId ["
+ bundleDestinationId + "]");
}
- prevDeployment = entityManager.find(BundleDeployment.class, prevDeployment.getId());
+ BundleDeployment prevDeployment = entityManager.find(BundleDeployment.class, prevDeploymentId);
if (null == prevDeployment) {
throw new IllegalArgumentException("Live deployment [" + liveDeployment
+ "] can not be reverted. There is no prior deployment for destinationId [" + bundleDestinationId + "]");
@@ -999,9 +998,9 @@ public class BundleManagerBean implements BundleManagerLocal, BundleManagerRemot
for (BundleDeployment d : currentDeployments) {
if (d.isLive()) {
d.setLive(false);
- // you can not revert a revert, it does not logically replace anything, it is
+ // you can not revert a revert, it does not logically replace anything
if (!isRevert) {
- newDeployment.setReplacedBundleDeployment(d);
+ newDeployment.setReplacedBundleDeploymentId(d.getId());
}
break;
}
@@ -1096,7 +1095,6 @@ public class BundleManagerBean implements BundleManagerLocal, BundleManagerRemot
BundleDeploymentCriteria bdc = new BundleDeploymentCriteria();
bdc.addFilterId(resourceDeployment.getBundleDeployment().getId());
bdc.fetchBundleVersion(true);
- bdc.fetchConfiguration(true);
bdc.fetchDestination(true);
BundleDeployment deployment = bundleManager.findBundleDeploymentsByCriteria(subject, bdc).get(0);
@@ -1471,6 +1469,7 @@ public class BundleManagerBean implements BundleManagerLocal, BundleManagerRemot
// to break the FK dependency with nulls.
Query q = entityManager.createNamedQuery(BundleDeployment.QUERY_UPDATE_FOR_VERSION_REMOVE);
q.setParameter("bundleVersionId", bundleVersionId);
+ @SuppressWarnings("unused")
int rowsUpdated = q.executeUpdate();
entityManager.flush();
commit 3e3e382b7657c746e35bc61096cc0ec7091807f2
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu May 5 13:35:01 2011 -0400
BZ 702109 - skip fields that are static final or transient since they won't be serialized anyway.
diff --git a/modules/enterprise/server/safe-invoker/src/main/java/org/rhq/enterprise/server/util/HibernateDetachUtility.java b/modules/enterprise/server/safe-invoker/src/main/java/org/rhq/enterprise/server/util/HibernateDetachUtility.java
index 6cea6b8..de57afb 100644
--- a/modules/enterprise/server/safe-invoker/src/main/java/org/rhq/enterprise/server/util/HibernateDetachUtility.java
+++ b/modules/enterprise/server/safe-invoker/src/main/java/org/rhq/enterprise/server/util/HibernateDetachUtility.java
@@ -24,9 +24,9 @@ import java.beans.PropertyDescriptor;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -55,6 +55,20 @@ public class HibernateDetachUtility {
SERIALIZATION, JAXB
}
+ // be able to configure the deepest recursion this utility will be allowed to go (see BZ 702109 that precipitated this need)
+ private static final String DEPTH_ALLOWED_SYSPROP = "rhq.server.hibernate-detach-utility.depth-allowed";
+ private static final int depthAllowed;
+ static {
+ int value;
+ try {
+ String str = System.getProperty(DEPTH_ALLOWED_SYSPROP, "50");
+ value = Integer.parseInt(str);
+ } catch (Throwable t) {
+ value = 50;
+ }
+ depthAllowed = value;
+ }
+
public static void nullOutUninitializedFields(Object value, SerializationType serializationType) throws Exception {
long start = System.currentTimeMillis();
Map<Integer, Object> checkedObjects = new HashMap<Integer, Object>();
@@ -71,8 +85,13 @@ public class HibernateDetachUtility {
private static void nullOutUninitializedFields(Object value, Map<Integer, Object> checkedObjects, int depth,
SerializationType serializationType) throws Exception {
- if (depth > 50) {
- LOG.warn("Getting different object hierarchies back from calls: " + value.getClass().getName());
+ if (depth > depthAllowed) {
+ LOG.warn("Recursed too deep [" + depth + " > " + depthAllowed
+ + "], will not attempt to detach object of type ["
+ + ((value != null) ? value.getClass().getName() : "N/A")
+ + "]. This may cause serialization errors later. If so, "
+ + "you can try to work around this by setting the system property [" + DEPTH_ALLOWED_SYSPROP
+ + "] to a value higher than [" + depth + "].");
return;
}
@@ -163,7 +182,14 @@ public class HibernateDetachUtility {
Class tmpClass = object.getClass();
List<Field> fieldsToClean = new ArrayList<Field>();
while (tmpClass != null && tmpClass != Object.class) {
- Collections.addAll(fieldsToClean, tmpClass.getDeclaredFields());
+ Field[] declaredFields = tmpClass.getDeclaredFields();
+ for (Field declaredField : declaredFields) {
+ // do not process static final or transient fields since they won't be serialized anyway
+ int modifiers = declaredField.getModifiers();
+ if (!((Modifier.isFinal(modifiers) && Modifier.isStatic(modifiers)) || Modifier.isTransient(modifiers))) {
+ fieldsToClean.add(declaredField);
+ }
+ }
tmpClass = tmpClass.getSuperclass();
}
commit 8ce65681ef299f1a57d6dc9108caf399b3ee6797
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Wed May 4 11:32:20 2011 -0400
BZ 695408
when viewing the details of a created child history, you can now see the resource type of the created resource.
when viewing the details of a deleted child history, you can now see the resource type AND the resource name of the deleted resource.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ChildHistoryDetails.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ChildHistoryDetails.java
index 1b7fe79..6e8105a 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ChildHistoryDetails.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ChildHistoryDetails.java
@@ -119,7 +119,12 @@ public class ChildHistoryDetails extends LocatableVLayout {
StaticTextItem createdResourceKey = new StaticTextItem("createdResourceKey", MSG.common_title_resource_key());
createdResourceKey.setValue(history.getNewResourceKey());
- // TODO: show resource info, like type
+ StaticTextItem createdResourceType = new StaticTextItem("createdResourceType", MSG.common_title_resource_type());
+ if (history.getResourceType() != null) {
+ createdResourceType.setValue(history.getResourceType().getName());
+ } else {
+ createdResourceType.setValue(MSG.common_status_unknown());
+ }
TextAreaItem errorMessage = new TextAreaItem("errorMessage", MSG.common_title_error());
errorMessage.setValue(history.getErrorMessage());
@@ -130,10 +135,10 @@ public class ChildHistoryDetails extends LocatableVLayout {
if (history.getErrorMessage() != null && history.getErrorMessage().length() > 0) {
form.setItems(id, type, createdTimestamp, modifiedTimestamp, subject, createdResourceName,
- createdResourceKey, status, errorMessage);
+ createdResourceKey, createdResourceType, status, errorMessage);
} else {
form.setItems(id, type, createdTimestamp, modifiedTimestamp, subject, createdResourceName,
- createdResourceKey, status);
+ createdResourceKey, createdResourceType, status);
}
return form;
@@ -182,7 +187,20 @@ public class ChildHistoryDetails extends LocatableVLayout {
status.setValue("?");
}
- // TODO: show resource info, like name, type
+ StaticTextItem deletedResourceName = new StaticTextItem("deletedResourceName", MSG.common_title_resource_name());
+ StaticTextItem deletedResourceType = new StaticTextItem("deletedResourceType", MSG.common_title_resource_type());
+
+ if (history.getResource() != null) {
+ deletedResourceName.setValue(history.getResource().getName());
+ if (history.getResource().getResourceType() != null) {
+ deletedResourceType.setValue(history.getResource().getResourceType().getName());
+ } else {
+ deletedResourceType.setValue(MSG.common_status_unknown());
+ }
+ } else {
+ deletedResourceName.setValue(MSG.common_status_unknown());
+ deletedResourceType.setValue(MSG.common_status_unknown());
+ }
TextAreaItem errorMessage = new TextAreaItem("errorMessage", MSG.common_title_error());
errorMessage.setValue(history.getErrorMessage());
@@ -192,9 +210,11 @@ public class ChildHistoryDetails extends LocatableVLayout {
errorMessage.setHeight("100%");
if (history.getErrorMessage() != null && history.getErrorMessage().length() > 0) {
- form.setItems(id, type, createdTimestamp, modifiedTimestamp, subject, status, errorMessage);
+ form.setItems(id, type, createdTimestamp, modifiedTimestamp, subject, deletedResourceName,
+ deletedResourceType, status, errorMessage);
} else {
- form.setItems(id, type, createdTimestamp, modifiedTimestamp, subject, status);
+ form.setItems(id, type, createdTimestamp, modifiedTimestamp, subject, deletedResourceName,
+ deletedResourceType, status);
}
return form;
13 years, 1 month
[rhq] Branch 'release-4.0.0' - modules/enterprise
by mazz
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/FileUploadServlet.java | 15 +++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
New commits:
commit a63fb2677ec5263b8a2aa1486958f37a56db6376
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Mon May 9 17:11:45 2011 -0400
[BZ 697751 - ResourcePackageDetails.getFileName() returns "c:\fakepath\xa.rar" when uploading file in Chrome and IE]
IE and Chrome provide an absolute filename for the uploaded item,
which needs to be trimmed down to what FF provides, just the name portion.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/FileUploadServlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/FileUploadServlet.java
index 2c8e514..e8265a6 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/FileUploadServlet.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/FileUploadServlet.java
@@ -179,7 +179,20 @@ public class FileUploadServlet extends HttpServlet {
protected File forceToFile(FileItem fileItem) throws IOException, ServletException {
if (fileItem.isInMemory()) {
- File tmpFile = File.createTempFile("" + fileItem.getName(), null);
+ String name = fileItem.getName();
+
+ if (null == name) {
+ throw new IllegalArgumentException("FileItem has null name");
+ }
+
+ // some browsers (IE, Chrome) pass an absolute filename, we just want the name of the file, no paths
+ name = name.replace('\\', '/');
+ if (name.length() > 2 && name.charAt(1) == ':') {
+ name = name.substring(2);
+ }
+ name = new File(name).getName();
+
+ File tmpFile = File.createTempFile(name, null);
try {
fileItem.write(tmpFile);
return tmpFile;
13 years, 1 month
[rhq] Branch 'release-4.0.0' - modules/enterprise
by mazz
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/groups/GroupConfigurationUpdatesPortlet.java | 3 +--
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/groups/GroupMetricsPortlet.java | 9 ++++-----
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/summary/AbstractActivityView.java | 7 ++++---
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties | 1 +
4 files changed, 10 insertions(+), 10 deletions(-)
New commits:
commit 9df1617f7d2b81a46637f985fc126b26002631d5
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Thu Apr 28 16:40:47 2011 -0400
BZ 698607: fix issue with monitor portlet not retrieving details for autogroups and erroneous msg.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/groups/GroupConfigurationUpdatesPortlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/groups/GroupConfigurationUpdatesPortlet.java
index f4fa675..ee1fbc5 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/groups/GroupConfigurationUpdatesPortlet.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/groups/GroupConfigurationUpdatesPortlet.java
@@ -121,9 +121,8 @@ public class GroupConfigurationUpdatesPortlet extends LocatableVLayout implement
super(locatorId);
//figure out which page we're loading
String currentPage = History.getToken();
- String[] elements = currentPage.split("/");
this.groupId = groupId;
- baseViewPath = elements[0];
+ baseViewPath = AbstractActivityView.groupPathLookup(currentPage);
}
public GroupConfigurationUpdatesPortlet(String locatorId) {
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/groups/GroupMetricsPortlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/groups/GroupMetricsPortlet.java
index 1c5b526..e45fbab 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/groups/GroupMetricsPortlet.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/groups/GroupMetricsPortlet.java
@@ -114,10 +114,9 @@ public class GroupMetricsPortlet extends LocatableVLayout implements CustomSetti
super(locatorId);
//figure out which page we're loading
String currentPage = History.getToken();
- String[] elements = currentPage.split("/");
int groupId = AbstractActivityView.groupIdLookup(currentPage);
this.groupId = groupId;
- baseViewPath = elements[0];
+ baseViewPath = AbstractActivityView.groupPathLookup(currentPage);
}
@Override
@@ -437,7 +436,7 @@ public class GroupMetricsPortlet extends LocatableVLayout implements CustomSetti
LocatableDynamicForm row = AbstractActivityView
.createEmptyDisplayRow(recentMeasurementsContent
.extendLocatorId("None"),
- AbstractActivityView.RECENT_MEASUREMENTS_NONE);
+ AbstractActivityView.RECENT_MEASUREMENTS_GROUP_NONE);
column.addMember(row);
} else {
//insert see more link
@@ -454,7 +453,7 @@ public class GroupMetricsPortlet extends LocatableVLayout implements CustomSetti
LocatableDynamicForm row = AbstractActivityView
.createEmptyDisplayRow(recentMeasurementsContent
.extendLocatorId("None"),
- AbstractActivityView.RECENT_MEASUREMENTS_NONE);
+ AbstractActivityView.RECENT_MEASUREMENTS_GROUP_NONE);
column.addMember(row);
}
setRefreshing(false);
@@ -465,7 +464,7 @@ public class GroupMetricsPortlet extends LocatableVLayout implements CustomSetti
}
} else {
LocatableDynamicForm row = AbstractActivityView.createEmptyDisplayRow(recentMeasurementsContent
- .extendLocatorId("None"), AbstractActivityView.RECENT_MEASUREMENTS_NONE);
+ .extendLocatorId("None"), AbstractActivityView.RECENT_MEASUREMENTS_GROUP_NONE);
column.addMember(row);
setRefreshing(false);
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/summary/AbstractActivityView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/summary/AbstractActivityView.java
index c1f1042..cc51b5d 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/summary/AbstractActivityView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/summary/AbstractActivityView.java
@@ -95,6 +95,7 @@ public abstract class AbstractActivityView extends LocatableVLayout implements R
//retrieve localized text
public static String RECENT_MEASUREMENTS = MSG.common_title_recent_measurements();
public static String RECENT_MEASUREMENTS_NONE = MSG.view_resource_inventory_activity_no_recent_metrics();
+ public static String RECENT_MEASUREMENTS_GROUP_NONE = MSG.view_group_inventory_activity_no_recent_metrics();
public static String RECENT_ALERTS = MSG.common_title_recent_alerts();
public static String RECENT_ALERTS_NONE = MSG.view_resource_inventory_activity_no_recent_alerts();
public static String RECENT_OOB = MSG.common_title_recent_oob_metrics();
@@ -636,19 +637,19 @@ public abstract class AbstractActivityView extends LocatableVLayout implements R
return groupId;
}
- /* Utility method to extract groupId from
+ /* Utility method to extract group base path from current page
*
*/
public static String groupPathLookup(String currentPage) {
String groupBasePath = "";
if ((currentPage != null) && (!currentPage.trim().isEmpty())) {
String[] elements = currentPage.split("/");
- //process for groups and auto groups Ex. ResourceGroup/10111 or ResourceGroup/AutoCluster/10321
+ //process for groups and auto groups Ex. ResourceGroup/10111 , ResourceGroup/AutoCluster/10321 , Resource/AutoGroup/10141
try {
Integer.valueOf(elements[1]);
groupBasePath = elements[0];
} catch (NumberFormatException nfe) {
- groupBasePath = elements[1] + "/" + elements[1];
+ groupBasePath = elements[0] + "/" + elements[1];
}
}
return groupBasePath;
diff --git a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
index 9f5684b..d387c9e 100644
--- a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
+++ b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
@@ -1858,6 +1858,7 @@ view_group_detail_failLoad = Failed to load group for group with ID [{0}]
view_group_detail_failLoadComp = Failed to load group composite for group with ID [{0}]
view_group_detail_recursiveChange = You successfully changed the recursive setting for group [{0}]
view_group_detail_failRecursiveChange = Failed to update the recursive setting for group [{0}]
+view_group_inventory_activity_no_recent_metrics=This group has no recent metrics
view_group_membership_failFetch = Failed to fetch Resource Group
view_group_membership_saveFailure = Failed to update membership of group [{0}]
view_group_membership_saveSuccessful = You have updated the membership of group [{0}]
13 years, 1 month