[rhq] Branch 'feature/export-reports' - 2 commits - modules/enterprise
by mike thompson
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertHistoryView.java | 13 +-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/ReportExporter.java | 64 +++++++---
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftHistoryView.java | 15 ++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/SubsystemResourceDriftView.java | 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/operation/OperationHistoryView.java | 15 ++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/alert/SubsystemRecentAlertsView.java | 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/operation/SubsystemOperationHistoryListView.java | 3
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties | 3
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties | 2
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties | 2
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties | 2
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties | 2
12 files changed, 102 insertions(+), 23 deletions(-)
New commits:
commit e41bce9fbb06df7ec2b4e84a356dcfab268927a0
Author: Mike Thompson <mithomps(a)redhat.com>
Date: Fri Mar 30 11:48:02 2012 -0700
[BZ 800453] Export Csv Reports. Craft urls for date filtering reports.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/ReportExporter.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/ReportExporter.java
index d0ff226..6cbe4d3 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/ReportExporter.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/ReportExporter.java
@@ -20,16 +20,14 @@
*/
package org.rhq.enterprise.gui.coregui.client.components;
-import java.util.Set;
-
import com.google.gwt.core.client.GWT;
import com.google.gwt.http.client.URL;
import com.google.gwt.user.client.Window;
-
-import org.rhq.enterprise.gui.coregui.client.CoreGUI;
-import org.rhq.enterprise.gui.coregui.client.Messages;
import org.rhq.enterprise.gui.coregui.client.util.StringUtility;
+import java.util.Date;
+import java.util.Set;
+
/**
* Exporter for building urls to reports (csv).
* The reports are RESTful urls opened up in a new window.
@@ -38,8 +36,6 @@ import org.rhq.enterprise.gui.coregui.client.util.StringUtility;
*/
public class ReportExporter {
- private static final Messages MSG = CoreGUI.getMessages();
-
private static final String BASE_URL = GWT.getHostPageBaseURL().replace("coregui/","")+"rest/1/reports/";
private static final String FORMAT = "csv"; //CSV is all we need right now
@@ -66,6 +62,10 @@ public class ReportExporter {
String[] driftCategories;
String driftPath;
+ // Date filtering
+ Date fromDate;
+ Date toDate;
+
/**
* Private constructors to force use of static factory creation pattern.
@@ -87,25 +87,39 @@ public class ReportExporter {
return new ReportExporter(reportUrl);
}
- public static ReportExporter createExporterForRecentDrift(String reportUrl, String definition,
- String snapshot, String[] driftCategories, String path) {
- ReportExporter newExportDialog = new ReportExporter(reportUrl);
- newExportDialog.setDriftCategories(driftCategories);
- newExportDialog.setDriftDefinition(definition);
- newExportDialog.setDriftPath(path);
- newExportDialog.setDriftSnapshot(snapshot);
- return newExportDialog;
+ public static ReportExporter createStandardExporter(String reportUrl, Date fromDate, Date toDate) {
+ ReportExporter newExporter = new ReportExporter(reportUrl);
+ newExporter.setFromDate(fromDate);
+ newExporter.setToDate(toDate);
+ return newExporter;
}
- public static ReportExporter createExporterForRecentAlerts(String reportUrl, String[] alertPriorityList) {
+ public static ReportExporter createExporterForRecentDrift(String reportUrl, String definition,
+ String snapshot, String[] driftCategories, String path,
+ Date fromDate, Date toDate) {
+ ReportExporter newExporter = new ReportExporter(reportUrl);
+ newExporter.setDriftCategories(driftCategories);
+ newExporter.setDriftDefinition(definition);
+ newExporter.setDriftPath(path);
+ newExporter.setDriftSnapshot(snapshot);
+ newExporter.setFromDate(fromDate);
+ newExporter.setToDate(toDate);
+ return newExporter;
+ }
+
+ public static ReportExporter createExporterForRecentAlerts(String reportUrl, String[] alertPriorityList, Date fromDate, Date toDate) {
ReportExporter newExportDialog = new ReportExporter(reportUrl);
newExportDialog.setAlertPriorityFilters(alertPriorityList);
+ newExportDialog.setFromDate(fromDate);
+ newExportDialog.setToDate(toDate);
return newExportDialog;
}
- public static ReportExporter createExporterForRecentOperations(String reportUrl, String[] operationRequestStatuses) {
+ public static ReportExporter createExporterForRecentOperations(String reportUrl, String[] operationRequestStatuses, Date fromDate, Date toDate) {
ReportExporter newExportDialog = new ReportExporter(reportUrl);
newExportDialog.setOperationRequestStatusList(operationRequestStatuses);
+ newExportDialog.setFromDate(fromDate);
+ newExportDialog.setToDate(toDate);
return newExportDialog;
}
@@ -168,6 +182,14 @@ public class ReportExporter {
queryString.append("snapshot=").append(driftSnapshot);
}
+ // to/from Dates
+ if(fromDate != null){
+ queryString.append("fromDate=").append(fromDate.getTime());
+ }
+ if(toDate != null){
+ queryString.append("toDate=").append(toDate.getTime());
+ }
+
return URL.encode(BASE_URL + reportUrl + "." + FORMAT + "?"+queryString);
}
@@ -196,6 +218,14 @@ public class ReportExporter {
this.driftPath = driftPath;
}
+ public void setFromDate(Date fromDate) {
+ this.fromDate = fromDate;
+ }
+
+ public void setToDate(Date toDate) {
+ this.toDate = toDate;
+ }
+
public void export(){
Window.open(determineUrl(), "download", null);
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/SubsystemResourceDriftView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/SubsystemResourceDriftView.java
index 76938f4..b928ebc 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/SubsystemResourceDriftView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/SubsystemResourceDriftView.java
@@ -47,7 +47,7 @@ public class SubsystemResourceDriftView extends DriftHistoryView {
@Override
public void executeAction(ListGridRecord[] selection, Object actionValue) {
- ReportExporter exporter = ReportExporter.createExporterForRecentDrift("recentDrift", definitionFilter.getValueAsString(), changeSetFilter.getValueAsString(), categoryFilter.getValues(), pathFilter.getValueAsString());
+ ReportExporter exporter = ReportExporter.createExporterForRecentDrift("recentDrift", definitionFilter.getValueAsString(), changeSetFilter.getValueAsString(), categoryFilter.getValues(), pathFilter.getValueAsString(), fromDateFilter.getValueAsDate(), toDateFilter.getValueAsDate());
exporter.export();
refreshTableInfo();
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/alert/SubsystemRecentAlertsView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/alert/SubsystemRecentAlertsView.java
index bb5beb3..b969313 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/alert/SubsystemRecentAlertsView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/alert/SubsystemRecentAlertsView.java
@@ -43,7 +43,7 @@ public class SubsystemRecentAlertsView extends SubsystemResourceAlertView {
}
}
ReportExporter exporter = ReportExporter.createExporterForRecentAlerts(
- "recentAlerts", alertPriorityList.toArray(new String[alertPriorityList.size()]));
+ "recentAlerts", alertPriorityList.toArray(new String[alertPriorityList.size()]), fromDateFilter.getValueAsDate(), toDateFilter.getValueAsDate());
exporter.export();
refreshTableInfo();
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/operation/SubsystemOperationHistoryListView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/operation/SubsystemOperationHistoryListView.java
index f4da7b8..b1337d6 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/operation/SubsystemOperationHistoryListView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/operation/SubsystemOperationHistoryListView.java
@@ -53,7 +53,8 @@ public class SubsystemOperationHistoryListView extends OperationHistoryView {
@Override
public void executeAction(ListGridRecord[] selection, Object actionValue) {
- ReportExporter exporter = ReportExporter.createExporterForRecentOperations("recentOperations", statusFilter.getValues());
+ ReportExporter exporter = ReportExporter.createExporterForRecentOperations("recentOperations", statusFilter.getValues(),
+ fromDateFilter.getValueAsDate(), toDateFilter.getValueAsDate() );
exporter.export();
refreshTableInfo();
}
commit abd4c81c124a91bb302c77dee0f449c810ffa6a1
Author: Mike Thompson <mithomps(a)redhat.com>
Date: Fri Mar 30 10:22:04 2012 -0700
[BZ 800453] Export Csv Reports. Added UI portion of date filtering.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertHistoryView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertHistoryView.java
index 3592d47..9c19531 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertHistoryView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertHistoryView.java
@@ -25,6 +25,7 @@ import com.smartgwt.client.data.ResultSet;
import com.smartgwt.client.data.SortSpecifier;
import com.smartgwt.client.types.SortDirection;
import com.smartgwt.client.widgets.Canvas;
+import com.smartgwt.client.widgets.form.fields.DateItem;
import com.smartgwt.client.widgets.form.fields.SelectItem;
import com.smartgwt.client.widgets.grid.ListGrid;
import com.smartgwt.client.widgets.grid.ListGridField;
@@ -47,6 +48,7 @@ import org.rhq.enterprise.gui.coregui.client.util.message.Message;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Date;
import java.util.LinkedHashMap;
/**
@@ -71,6 +73,8 @@ public class AlertHistoryView extends TableSection<AlertDataSource> implements H
private static final Criteria INITIAL_CRITERIA = new Criteria();
protected SelectItem priorityFilter;
+ protected DateItem fromDateFilter;
+ protected DateItem toDateFilter;
private EntityContext context;
private boolean hasWriteAccess;
@@ -116,9 +120,16 @@ public class AlertHistoryView extends TableSection<AlertDataSource> implements H
priorityIcons.put(AlertPriority.LOW.name(), ImageManager.getAlertIcon(AlertPriority.LOW));
priorityFilter = new EnumSelectItem(AlertDataSource.FILTER_PRIORITIES, MSG
.view_alerts_table_filter_priority(), AlertPriority.class, priorities, priorityIcons);
+ fromDateFilter = new DateItem();
+ fromDateFilter.setUseTextField(true);
+ fromDateFilter.setTitle(MSG.filter_from_date());
+ toDateFilter = new DateItem();
+ toDateFilter.setUseTextField(true);
+ toDateFilter.setTitle(MSG.filter_to_date());
+ toDateFilter.setValue(new Date());
if (isShowFilterForm()) {
- setFilterFormItems(priorityFilter);
+ setFilterFormItems(fromDateFilter, toDateFilter, priorityFilter);
}
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftHistoryView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftHistoryView.java
index 2bf5a5e..168cf14 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftHistoryView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftHistoryView.java
@@ -23,6 +23,7 @@ import com.smartgwt.client.data.Criteria;
import com.smartgwt.client.data.SortSpecifier;
import com.smartgwt.client.types.SortDirection;
import com.smartgwt.client.widgets.Canvas;
+import com.smartgwt.client.widgets.form.fields.DateItem;
import com.smartgwt.client.widgets.form.fields.SelectItem;
import com.smartgwt.client.widgets.form.fields.TextItem;
import com.smartgwt.client.widgets.grid.CellFormatter;
@@ -41,6 +42,7 @@ import org.rhq.enterprise.gui.coregui.client.inventory.resource.AncestryUtil;
import org.rhq.enterprise.gui.coregui.client.util.selenium.SeleniumUtility;
import java.util.ArrayList;
+import java.util.Date;
import java.util.LinkedHashMap;
/**
@@ -66,6 +68,8 @@ public class DriftHistoryView extends StringIDTableSection<DriftDataSource> {
protected TextItem definitionFilter;
protected TextItem changeSetFilter;
protected TextItem pathFilter;
+ protected DateItem toDateFilter;
+ protected DateItem fromDateFilter;
private EntityContext context;
@@ -138,8 +142,17 @@ public class DriftHistoryView extends StringIDTableSection<DriftDataSource> {
changeSetFilter = new TextItem(DriftDataSource.FILTER_SNAPSHOT, MSG.view_drift_table_snapshot());
pathFilter = new TextItem(DriftDataSource.FILTER_PATH, MSG.common_title_path());
+ fromDateFilter = new DateItem();
+ fromDateFilter.setUseTextField(true);
+ fromDateFilter.setTitle(MSG.filter_from_date());
+ toDateFilter = new DateItem();
+ toDateFilter.setUseTextField(true);
+ toDateFilter.setTitle(MSG.filter_to_date());
+ toDateFilter.setValue(new Date());
+
+
if (isShowFilterForm()) {
- setFilterFormItems(definitionFilter, changeSetFilter, categoryFilter, pathFilter);
+ setFilterFormItems(fromDateFilter, toDateFilter, definitionFilter, changeSetFilter, categoryFilter, pathFilter );
}
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/operation/OperationHistoryView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/operation/OperationHistoryView.java
index 6ce43b4..021c78b 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/operation/OperationHistoryView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/operation/OperationHistoryView.java
@@ -25,6 +25,7 @@ import com.smartgwt.client.data.DSRequest;
import com.smartgwt.client.data.SortSpecifier;
import com.smartgwt.client.types.SortDirection;
import com.smartgwt.client.widgets.Canvas;
+import com.smartgwt.client.widgets.form.fields.DateItem;
import com.smartgwt.client.widgets.form.fields.SelectItem;
import com.smartgwt.client.widgets.grid.ListGridField;
import com.smartgwt.client.widgets.grid.ListGridRecord;
@@ -44,6 +45,7 @@ import org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.operation
import org.rhq.enterprise.gui.coregui.client.util.message.Message;
import java.util.ArrayList;
+import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
@@ -65,11 +67,14 @@ public class OperationHistoryView extends TableSection<OperationHistoryDataSourc
OperationHistoryDataSource.Field.CREATED_TIME, SortDirection.DESCENDING);
protected SelectItem statusFilter;
+ protected DateItem toDateFilter;
+ protected DateItem fromDateFilter;
EntityContext context;
boolean hasControlPermission;
OperationHistoryDataSource dataSource;
+
static {
OperationRequestStatus[] statusValues = OperationRequestStatus.values();
String[] statusNames = new String[statusValues.length];
@@ -133,8 +138,16 @@ public class OperationHistoryView extends TableSection<OperationHistoryDataSourc
MSG.common_title_operation_status(), OperationRequestStatus.class, statusValues, statusIcons);
statusFilter.setWidth(325);
+ fromDateFilter = new DateItem();
+ fromDateFilter.setUseTextField(true);
+ fromDateFilter.setTitle(MSG.filter_from_date());
+ toDateFilter = new DateItem();
+ toDateFilter.setUseTextField(true);
+ toDateFilter.setTitle(MSG.filter_to_date());
+ toDateFilter.setValue(new Date());
+
if (isShowFilterForm()) {
- setFilterFormItems(statusFilter);
+ setFilterFormItems(fromDateFilter, toDateFilter, statusFilter);
}
}
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 f486db7..890efeb 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
@@ -2016,3 +2016,6 @@ 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
+filter_from_date = From Date
+filter_to_date = To Date
+
diff --git a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
index 81535f4..ef95111 100644
--- a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
+++ b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
@@ -1732,3 +1732,5 @@ widget_typeCache_loadFail = Konnte die Metadaten für den Ressourcen-Typ nicht l
widget_typeTree_badTemplateType = Ungültige URL. Unbekannter Vorlagen-Typ [{0}]
widget_typeTree_badTypeId = Ungültige URL. Unbekannte Ressource-Typ-ID [{0}]
widget_typeTree_loadFail = Konnte die Ressource-Typen nicht laden
+#filter_from_date = From Date
+#filter_to_date = To Date
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
index e10e05f..309eed0 100644
--- 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
@@ -2000,3 +2000,5 @@ widget_typeCache_loadFail = リソースタイプメタデータのロードに
widget_typeTree_badTemplateType = 無効なURL。未知のテンプレートタイプ [{0}]
widget_typeTree_badTypeId = 無効なURL。不正なリソースタイプ [{0}]
widget_typeTree_loadFail = リソースタイプのロードに失敗しました
+#filter_from_date = From Date
+#filter_to_date = To Date
diff --git a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
index 549de5f..4cd2ae5 100644
--- a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
+++ b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
@@ -2125,3 +2125,5 @@ widget_typeCache_loadFail = Falha ao carregar o metadado do tipo de recurso
widget_typeTree_badTemplateType = URL inv\u00E1lida. Tipo de template desconhecido [{0}]
widget_typeTree_badTypeId = URL inv\u00E1lida. Tipo de recurso inv\u00E1lido: ID [{0}]
widget_typeTree_loadFail = Falha ao carregar tipos de recurso
+#filter_from_date = From Date
+#filter_to_date = To Date
diff --git a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
index e36369e..07d89e7 100644
--- a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
+++ b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
@@ -2010,3 +2010,5 @@ widget_typeCache_loadFail = \u65e0\u6cd5\u52a0\u8f7d\u8d44\u6e90\u7c7b\u578b\u76
widget_typeTree_badTemplateType = \u65e0\u6548\u7684URL. \u672a\u77e5\u6a21\u677f\u7c7b\u578b[{0}]
widget_typeTree_badTypeId = \u65e0\u6548URL. \u9519\u8bef\u8d44\u6e90\u7c7b\u578bID [{0}]
widget_typeTree_loadFail = \u52a0\u8f7d\u8d44\u6e90\u7c7b\u578b\u5931\u8d25
+#filter_from_date = From Date
+#filter_to_date = To Date
12 years, 1 month
[rhq] modules/plugins
by ips
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
New commits:
commit 97b087ca9176c4c03e3cfc8a5621393cec08faf0
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri Mar 30 14:47:02 2012 -0400
include the IOE in the call to log.error() when logging 500 errors, so the stack trace will get logged; the stack trace of the IOE will help us track down which classes the requests returning errors originate from
diff --git a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
index 088bc9a..10610fc 100644
--- a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
+++ b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
@@ -277,7 +277,8 @@ public class ASConnection {
} catch (IOException ioe) {
responseCodeString = "unknown response code";
}
- log.error(operation + " failed with " + responseCodeString + " - response body was [" + responseBody + "].");
+ log.error(operation + " failed with " + responseCodeString + " - response body was [" + responseBody + "].",
+ e);
Result failure = new Result();
failure.setFailureDescription(e.getMessage());
12 years, 1 month
[rhq] modules/plugins
by ips
modules/plugins/jboss-as-7/pom.xml | 17 +++++++++-
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractServerComponentTest.java | 2 +
2 files changed, 18 insertions(+), 1 deletion(-)
New commits:
commit 010d47fe5f99508dcd727d329ebcce5e9fccac81
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri Mar 30 14:24:22 2012 -0400
add support for EAP 6.0.0.ER4
diff --git a/modules/plugins/jboss-as-7/pom.xml b/modules/plugins/jboss-as-7/pom.xml
index 49bbd0a..e3cf3c8 100644
--- a/modules/plugins/jboss-as-7/pom.xml
+++ b/modules/plugins/jboss-as-7/pom.xml
@@ -229,10 +229,25 @@
</activation>
<properties>
- <as7.url>Please set the as7.url system property to the location of the EAP 6.0.0.Beta distribution zipfile.</as7.url>
+ <as7.url>Please set the as7.url system property to the location of the EAP 6.0.0.Beta1 distribution zipfile.</as7.url>
<jboss-as-arquillian-container-managed.version>7.1.1.Final</jboss-as-arquillian-container-managed.version>
</properties>
+ </profile>
+
+ <profile>
+ <id>eap600ER4.itest.setup</id>
+
+ <activation>
+ <property>
+ <name>as7.version</name>
+ <value>6.0.0.ER4</value>
+ </property>
+ </activation>
+ <properties>
+ <as7.url>Please set the as7.url system property to the location of the EAP 6.0.0.ER4 distribution zipfile.</as7.url>
+ <jboss-as-arquillian-container-managed.version>7.1.1.Final</jboss-as-arquillian-container-managed.version>
+ </properties>
</profile>
<!-- Activate this profile to run the integration tests (these can take a while to complete). -->
diff --git a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractServerComponentTest.java b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractServerComponentTest.java
index 0cd1e01..3c143fd 100644
--- a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractServerComponentTest.java
+++ b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractServerComponentTest.java
@@ -39,6 +39,8 @@ public abstract class AbstractServerComponentTest extends AbstractJBossAS7Plugin
private static final Map<String, String> EAP6_VERSION_TO_AS7_VERSION_MAP = new HashMap<String, String>();
static {
EAP6_VERSION_TO_AS7_VERSION_MAP.put("6.0.0.Beta1", "7.1.0.Final-redhat-1");
+ EAP6_VERSION_TO_AS7_VERSION_MAP.put("6.0.0.ER4", "7.1.1.Final-redhat-1");
+ EAP6_VERSION_TO_AS7_VERSION_MAP.put("6.0.0.CR1", "7.1.1.Final-redhat-1");
}
private static final String RELEASE_VERSION_TRAIT_NAME = "_skm:release-version";
12 years, 1 month
[rhq] Branch 'feature/export-reports' - modules/enterprise
by John Sanda
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/InventorySummaryHandler.java | 46 +++++++++-
1 file changed, 43 insertions(+), 3 deletions(-)
New commits:
commit cd38560b905e8b801490037f6a22d3093e35c9c2
Author: John Sanda <jsanda(a)redhat.com>
Date: Fri Mar 30 12:58:31 2012 -0400
[BZ 800453] Fixing bug where map of install counts was not using unique keys
When details are included in an inventory summary report, the resource
install counts get stored in a map. The keys, which were just the
resource type ids, were not unique. You can have multiple
ResourceInstallCounts with the same resource type id. Now the key is a
combination of the type id and version.
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/InventorySummaryHandler.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/InventorySummaryHandler.java
index 148afe5..a75ef17 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/InventorySummaryHandler.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/InventorySummaryHandler.java
@@ -113,7 +113,8 @@ public class InventorySummaryHandler extends AbstractRestBean implements Invento
private class OutputDetailedInventorySummary implements StreamingOutput {
// map of counts keyed by resource type id
- private Map<Integer, ResourceInstallCount> installCounts = new LinkedHashMap<Integer, ResourceInstallCount>();
+ private Map<ResourceInstallCountKey, ResourceInstallCount> installCounts =
+ new LinkedHashMap<ResourceInstallCountKey, ResourceInstallCount>();
private Set<Integer> resourceTypeIds;
@@ -121,7 +122,8 @@ public class InventorySummaryHandler extends AbstractRestBean implements Invento
Set<Integer> resourceTypeIds) {
this.resourceTypeIds = resourceTypeIds;
for (ResourceInstallCount installCount : installCounts) {
- this.installCounts.put(installCount.getTypeId(), installCount);
+ this.installCounts.put(new ResourceInstallCountKey(installCount.getTypeId(), installCount.getVersion()),
+ installCount);
}
}
@@ -145,7 +147,9 @@ public class InventorySummaryHandler extends AbstractRestBean implements Invento
};
query = new CriteriaQuery<Resource, ResourceCriteria>(criteria, queryExecutor);
for (Resource resource : query) {
- ResourceInstallCount installCount = installCounts.get(resource.getResourceType().getId());
+ ResourceInstallCountKey key = new ResourceInstallCountKey(resource.getResourceType().getId(),
+ resource.getVersion());
+ ResourceInstallCount installCount = installCounts.get(key);
String record = toCSV(installCount) + "," + toCSV(resource) + "\n";
output.write(record.getBytes());
}
@@ -212,4 +216,40 @@ public class InventorySummaryHandler extends AbstractRestBean implements Invento
"," + resource.getCurrentAvailability().getAvailabilityType();
}
+ private static class ResourceInstallCountKey {
+ private int resourceTypeId;
+ private String version;
+
+ public ResourceInstallCountKey(int resourceTypeId, String version) {
+ this.resourceTypeId = resourceTypeId;
+ if (version == null) {
+ // Storing empty string here to make equals/hashCode easier. In
+ // this context, null and empty string are essentially the same.
+ this.version = "";
+ } else {
+ this.version = version;
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ ResourceInstallCountKey that = (ResourceInstallCountKey) o;
+
+ if (resourceTypeId != that.resourceTypeId) return false;
+ if (!version.equals(that.version)) return false;
+
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = resourceTypeId;
+ result = 31 * result + version.hashCode();
+ return result;
+ }
+ }
+
}
12 years, 1 month
[rhq] 3 commits - modules/plugins
by snegrea
modules/plugins/jboss-as-7/d2d.sh | 2
modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml | 167 +++++-----
2 files changed, 86 insertions(+), 83 deletions(-)
New commits:
commit c9bf9af954abd6aa96f8dd214dc5fed7733cdc79
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Fri Mar 30 11:43:21 2012 -0500
Update properties for security subsystem and moved the subsystem from server to service.
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 87a14af..1580f48 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
@@ -1776,71 +1776,6 @@ working area for individual server instances</li></ul>"/>
</server>
- <server name="Security"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- singleton="true"
- >
-
- <runs-inside>
- <parent-resource-type name="Profile" plugin="jboss-as-7"/>
- <parent-resource-type name="JBossAS7 Standalone Server" plugin="jboss-as-7"/>
- </runs-inside>
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true" default="subsystem=security"/>
- </plugin-configuration>
-
-
-
- <resource-configuration>
- <c:simple-property name="authentication-manager-class-name" required="false" type="string" readOnly="true" defaultValue="default"
- description="Specifies the AuthenticationManager implementation class name to use. To use the container default set the value to 'default'"/>
- <c:simple-property name="deep-copy-subject-mode" required="false" type="boolean" readOnly="true" defaultValue="false"
- description="Sets the copy mode of subjects done by the security managers to be deep copies that makes copies of the subject principals and credentials if they are cloneable. It should be set to true if subject include mutable content that can be corrupted when multiple threads have the same identity and cache flushes/logout clearing the subject in one thread results in subject references affecting other threads."/>
- <c:simple-property name="default-callback-handler-class-name" required="false" type="string" readOnly="true" defaultValue="default"
- description="A global class name for the CallbackHandler implementation to be used with login modules. To use the container default set the value to 'default'"/>
- <c:simple-property name="subject-factory-class-name" required="false" type="string" readOnly="true" defaultValue="default"
- description="Sets the class name for the SubjectFactory implementation to be used. To use the container default set the value to 'default'."/>
- <c:simple-property name="authorization-manager-class-name" required="false" type="string" readOnly="true" defaultValue="default"
- description="Specifies the AuthorizationManager implementation class name to use. To use the container default set the value to 'default'."/>
- <c:simple-property name="audit-manager-class-name" required="false" type="string" readOnly="true" defaultValue="default"
- description="Specifies the AuditManager implementation class name to use. To use the container default set the value to 'default'."/>
- <c:simple-property name="identity-trust-manager-class-name" required="false" type="string" readOnly="true" defaultValue="default"
- description="Specifies the IdentityTrustManager implementation class name to use. To use the container default set the value to 'default'."/>
- <c:simple-property name="mapping-manager-class-name" required="false" type="string" readOnly="true" defaultValue="default"
- description="Specifies the MappingManager implementation class name to use. To use the container default set the value to 'default''."/>
- </resource-configuration>
-
- <service name="SecurtityDomain"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- >
-
- <runs-inside>
- <parent-resource-type name="Profile" plugin="jboss-as-7"/>
- <parent-resource-type name="JBossAS7 Standalone Server" plugin="jboss-as-7"/>
- </runs-inside>
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true" default="security-domain"/>
- </plugin-configuration>
-
-
-
- <resource-configuration>
- <c:simple-property name="extends" required="false" type="string" readOnly="true" description="The parent security domain"/>
- <c:simple-property name="cache-type" required="false" type="string" readOnly="true"
- description="Adds a cache to speed up authentication checks. Allowed values are 'default' to use simple map as the cache and 'infinispan' to use an Infinispan cache.">
- <c:property-options>
- <c:option value="default"/>
- <c:option value="infinispan"/>
- </c:property-options>
- </c:simple-property>
- </resource-configuration>
- </service>
-
- </server>
<server name="Infinispan"
discovery="SubsystemDiscovery"
@@ -2988,4 +2923,49 @@ working area for individual server instances</li></ul>"/>
</service>
+
+ <service name="Security"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true">
+
+ <runs-inside>
+ <parent-resource-type name="Profile" plugin="jboss-as-7"/>
+ <parent-resource-type name="JBossAS7 Standalone Server" plugin="jboss-as-7"/>
+ </runs-inside>
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true" default="subsystem=security"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="deep-copy-subject-mode" required="false" type="boolean" readOnly="false" defaultValue="false" description="Sets the copy mode of subjects done by the security managers to be deep copies that makes copies of the subject principals and credentials if they are cloneable. It should be set to true if subject include mutable content that can be corrupted when multiple threads have the same identity and cache flushes/logout clearing the subject in one thread results in subject references affecting other threads. The default value is false."/>
+ </resource-configuration>
+
+ <service name="SecurtityDomain"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent">
+
+ <runs-inside>
+ <parent-resource-type name="Profile" plugin="jboss-as-7"/>
+ <parent-resource-type name="JBossAS7 Standalone Server" plugin="jboss-as-7"/>
+ </runs-inside>
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true" default="security-domain"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="extends" required="false" type="string" readOnly="true" description="The parent security domain"/>
+ <c:simple-property name="cache-type" required="false" type="string" readOnly="true" description="Adds a cache to speed up authentication checks. Allowed values are 'default' to use simple map as the cache and 'infinispan' to use an Infinispan cache.">
+ <c:property-options>
+ <c:option value="default"/>
+ <c:option value="infinispan"/>
+ </c:property-options>
+ </c:simple-property>
+ </resource-configuration>
+ </service>
+
+ </service>
+
</plugin>
commit 9fc7183b8ce087195c35af3198539f80f2033663
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Fri Mar 30 11:33:29 2012 -0500
Add rhq-core-util to the classpath for d2d tool.
diff --git a/modules/plugins/jboss-as-7/d2d.sh b/modules/plugins/jboss-as-7/d2d.sh
index 577c3f7..2300cbb 100755
--- a/modules/plugins/jboss-as-7/d2d.sh
+++ b/modules/plugins/jboss-as-7/d2d.sh
@@ -6,4 +6,4 @@ RHQ_VERSION='4.4.0-SNAPSHOT'
OPTS=""
#OPTS="-agentlib:jdwp=transport=dt_socket,address=8790,server=y,suspend=y"
-java $OPTS -cp target/rhq-jboss-as-7-plugin-${RHQ_VERSION}.jar:${M2_REPO}/commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.jar:${M2_REPO}/org/codehaus/jackson/jackson-core-asl/1.7.4/jackson-core-asl-1.7.4.jar:${M2_REPO}/org/codehaus/jackson/jackson-mapper-asl/1.7.4/jackson-mapper-asl-1.7.4.jar:${M2_REPO}/org/rhq/rhq-core-plugin-api/${RHQ_VERSION}/rhq-core-plugin-api-${RHQ_VERSION}.jar org.rhq.modules.plugins.jbossas7.Domain2Descriptor $*
+java $OPTS -cp target/rhq-jboss-as-7-plugin-${RHQ_VERSION}.jar:${M2_REPO}/commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.jar:${M2_REPO}/org/codehaus/jackson/jackson-core-asl/1.7.4/jackson-core-asl-1.7.4.jar:${M2_REPO}/org/codehaus/jackson/jackson-mapper-asl/1.7.4/jackson-mapper-asl-1.7.4.jar:${M2_REPO}/org/rhq/rhq-core-plugin-api/${RHQ_VERSION}/rhq-core-plugin-api-${RHQ_VERSION}.jar:${M2_REPO}/org/rhq/rhq-core-util/${RHQ_VERSION}/rhq-core-util-${RHQ_VERSION}.jar org.rhq.modules.plugins.jbossas7.Domain2Descriptor $*
commit 09d9dc5525f4f99a217ab036c6f5a607fc1a6ab6
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Fri Mar 30 10:49:03 2012 -0500
Add support resource-adapter sub-subsystems. Also moved resource-adapters from server to service.
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 497a38b..87a14af 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
@@ -1452,23 +1452,6 @@
</server>
- <server name="ResourceAdapters"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- singleton="true"
- >
-
- <runs-inside>
- <parent-resource-type name="Profile" plugin="jboss-as-7"/>
- <parent-resource-type name="JBossAS7 Standalone Server" plugin="jboss-as-7"/>
- </runs-inside>
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true" default="subsystem=resource-adapters"/>
- </plugin-configuration>
- </server>
-
-
<server name="Logging"
discovery="SubsystemDiscovery"
class="LoggerComponent"
@@ -2965,4 +2948,44 @@ working area for individual server instances</li></ul>"/>
</resource-configuration>
</service>
+
+ <service name="ResourceAdapters"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true">
+
+ <runs-inside>
+ <parent-resource-type name="Profile" plugin="jboss-as-7"/>
+ <parent-resource-type name="JBossAS7 Standalone Server" plugin="jboss-as-7"/>
+ </runs-inside>
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true" default="subsystem=resource-adapters"/>
+ </plugin-configuration>
+
+ <service name="ResourceAdapter"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ description="The configuration of the resource adapter.">
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true" default="resource-adapter"/>
+ </plugin-configuration>
+
+ <operation name="activate" description="Force the resource adapter config activation without server reload">
+ <results>
+ <c:simple-property name="operationResult"/>
+ </results>
+ </operation>
+
+ <resource-configuration>
+ <c:simple-property name="archive" required="true" type="string" readOnly="false" description="Specifies the resource adapter archive"/>
+ <c:simple-property name="beanvalidationgroups" required="false" type="string" readOnly="false" description="Specifies the bean validation groups that should be used"/>
+ <c:simple-property name="bootstrapcontext" required="false" type="string" readOnly="false" description="Specifies the unique name of the bootstrap context that should be used"/>
+ <c:simple-property name="transaction-support" required="true" type="string" readOnly="false" description="Specifies the transaction support level of the resource adapter"/>
+ </resource-configuration>
+ </service>
+
+ </service>
+
</plugin>
12 years, 1 month
[rhq] Branch 'feature/export-reports' - modules/enterprise
by John Sanda
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/InventorySummaryHandler.java | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
New commits:
commit 7105848aa93178d40ee87110403dc9b9d4df1c0c
Author: John Sanda <jsanda(a)redhat.com>
Date: Fri Mar 30 12:24:00 2012 -0400
[BZ 800453] fixing error from previous merge conflict
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/InventorySummaryHandler.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/InventorySummaryHandler.java
index 1531b0c..148afe5 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/InventorySummaryHandler.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/InventorySummaryHandler.java
@@ -133,8 +133,8 @@ public class InventorySummaryHandler extends AbstractRestBean implements Invento
output.write((getHeader() + "," + getDetailsHeader() + "\n").getBytes());
- // if there are no resource type ids, that means we fetching everything - all
- // details for all types.
+ // if there are no resource type ids, that means we are fetching everything,
+ // that is all resource details for all types.
if (resourceTypeIds.isEmpty()) {
criteria = getDetailsQueryCriteria(null);
queryExecutor = new CriteriaQueryExecutor<Resource, ResourceCriteria>() {
@@ -207,7 +207,7 @@ public class InventorySummaryHandler extends AbstractRestBean implements Invento
}
protected String toCSV(Resource resource) {
- return resource.getName() + "," + ReportHelper.parseAncestry(resource.getAncestry()) + "," +
+ return resource.getName() + "," + ReportFormatHelper.parseAncestry(resource.getAncestry()) + "," +
resource.getDescription() + "," + resource.getResourceType().getName() + "," + resource.getVersion() +
"," + resource.getCurrentAvailability().getAvailabilityType();
}
12 years, 1 month
[rhq] modules/core
by ips
modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/i18n/PropertiesGenerator.java | 18 ++++------
modules/core/plugin-container/src/main/java/org/rhq/core/pc/configuration/ConfigurationCheckExecutor.java | 4 +-
modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/SnapshotGenerator.java | 7 +++
modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java | 5 +-
modules/core/util/src/main/java/org/rhq/core/clientapi/util/StringUtil.java | 9 +++--
5 files changed, 26 insertions(+), 17 deletions(-)
New commits:
commit 3d5d4a6f49558f92acc1cbc8ab27315e47f13487
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri Mar 30 12:19:41 2012 -0400
replace calls to Throwable.printStackTrace() with logging
diff --git a/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/i18n/PropertiesGenerator.java b/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/i18n/PropertiesGenerator.java
index 3c9d64f..a0a947d 100644
--- a/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/i18n/PropertiesGenerator.java
+++ b/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/i18n/PropertiesGenerator.java
@@ -25,7 +25,6 @@ package org.rhq.core.clientapi.agent.metadata.i18n;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
-import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import java.util.HashMap;
@@ -37,14 +36,14 @@ import java.util.Set;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
-import org.xml.sax.SAXException;
/**
* Generates localization properties files for a plugin descriptor. Can update existing files by appending properties
@@ -53,7 +52,10 @@ import org.xml.sax.SAXException;
* @author Greg Hinkle
*/
public class PropertiesGenerator {
- private Map<String, String> properties = new LinkedHashMap();
+
+ private final Log log = LogFactory.getLog(PropertiesGenerator.class);
+
+ private Map<String, String> properties = new LinkedHashMap<String, String>();
private boolean update;
private File xmlFile;
@@ -126,12 +128,8 @@ public class PropertiesGenerator {
FileOutputStream fos = new FileOutputStream(propertiesFile, this.update);
this.contentWriter = new PrintWriter(fos);
generateNode(doc.getDocumentElement(), "");
- } catch (ParserConfigurationException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (SAXException e) {
- e.printStackTrace();
+ } catch (Exception e) {
+ log.error("Failed to generate i18n properties file.", e);
} finally {
if (this.contentWriter != null) {
this.contentWriter.close();
diff --git a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/configuration/ConfigurationCheckExecutor.java b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/configuration/ConfigurationCheckExecutor.java
index 4447b9f..51735ab 100644
--- a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/configuration/ConfigurationCheckExecutor.java
+++ b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/configuration/ConfigurationCheckExecutor.java
@@ -42,7 +42,7 @@ import java.util.concurrent.Callable;
*/
public class ConfigurationCheckExecutor implements Runnable, Callable {
- private Log log = LogFactory.getLog(ConfigurationCheckExecutor.class);
+ private final Log log = LogFactory.getLog(ConfigurationCheckExecutor.class);
private ConfigurationManager configurationManager;
private ConfigurationServerService configurationServerService;
@@ -128,7 +128,7 @@ public class ConfigurationCheckExecutor implements Runnable, Callable {
try {
checkConfigurations(child, true);
} catch (Exception e) {
- e.printStackTrace();
+ log.error("Failed to check Resource configuration for " + child + ".", e);
}
}
}
diff --git a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/SnapshotGenerator.java b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/SnapshotGenerator.java
index 2867bb9..e6c4d07 100644
--- a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/SnapshotGenerator.java
+++ b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/SnapshotGenerator.java
@@ -3,6 +3,8 @@ package org.rhq.core.pc.drift;
import org.apache.commons.io.DirectoryWalker;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
@@ -19,12 +21,15 @@ import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
+import org.rhq.core.pc.configuration.ConfigurationCheckExecutor;
import org.rhq.core.util.MessageDigestGenerator;
import static java.io.File.separator;
public class SnapshotGenerator extends DirectoryWalker {
+ private final Log log = LogFactory.getLog(ConfigurationCheckExecutor.class);
+
private MessageDigestGenerator digestGenerator = new MessageDigestGenerator(MessageDigestGenerator.SHA_256);
private File snapshotDir;
@@ -65,7 +70,7 @@ public class SnapshotGenerator extends DirectoryWalker {
zos.putNextEntry(entry);
IOUtils.copy(istream, zos);
} catch (IOException e) {
- e.printStackTrace();
+ log.error("Failed to add file " + file + " to zipfile " + zipFile + ".", e);
} finally {
if (istream != null) {
istream.close();
diff --git a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
index 9245d3c..078d7ef 100644
--- a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
+++ b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
@@ -1222,9 +1222,10 @@ public class InventoryManager extends AgentService implements ContainerService,
// TODO REMOVE THIS IF STATEMENT - IT IS JUST FOR TESTING
if (!resource.getChildResources().getClass().getName().contains("Collections$SetFromMap")) {
- new Exception("BAD CHILD SET - IF YOU SEE THIS, LOG IT IN BZ 801432:"
+ Exception e = new Exception("BAD CHILD SET - IF YOU SEE THIS, LOG IT IN BZ 801432:"
+ resource.getChildResources().getClass().getName() + ":" + resource.getId() + ":"
- + resource.getName()).printStackTrace();
+ + resource.getName());
+ log.fatal("[BZ 801432]", e);
}
for (Resource child : resource.getChildResources()) {
diff --git a/modules/core/util/src/main/java/org/rhq/core/clientapi/util/StringUtil.java b/modules/core/util/src/main/java/org/rhq/core/clientapi/util/StringUtil.java
index 789d9a0..ecfed35 100644
--- a/modules/core/util/src/main/java/org/rhq/core/clientapi/util/StringUtil.java
+++ b/modules/core/util/src/main/java/org/rhq/core/clientapi/util/StringUtil.java
@@ -32,7 +32,13 @@ import java.util.Iterator;
import java.util.List;
import java.util.StringTokenizer;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
public class StringUtil {
+
+ private static final Log log = LogFactory.getLog(StringUtil.class);
+
/**
* @param source The source string to perform replacements on.
* @param find The substring to find in source.
@@ -98,8 +104,7 @@ public class StringUtil {
retVal = remove.toString();
}
} catch (Exception e) {
- // XXX This should never happen
- e.printStackTrace();
+ log.error("This should not have happened.", e);
retVal = null;
}
12 years, 1 month
[rhq] Branch 'feature/export-reports' - 2 commits - modules/enterprise
by John Sanda
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/ReportExporter.java | 15 -
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/inventory/InventorySummaryReportTable.java | 18 -
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/StringUtility.java | 35 ++
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/DriftComplianceHandler.java | 21 -
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/DriftComplianceLocal.java | 6
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/InventorySummaryHandler.java | 137 ++++++----
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/InventorySummaryLocal.java | 6
7 files changed, 157 insertions(+), 81 deletions(-)
New commits:
commit 7289e4201d26a649df9643aa5580bcbf36f167b1
Author: John Sanda <jsanda(a)redhat.com>
Date: Fri Mar 30 12:00:24 2012 -0400
[BZ 800453] Refactoring logic for including details
The requirements for the inventory summary and drift compliance reports
have changed a bit. This commit makes those changes. All of the resource
type rows are always included now. If one or more resource type ids are
specified, then the resource details for the types will be included in
the report as well. If the showAllDetails param is true, then all
resource details for all types will be included.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/ReportExporter.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/ReportExporter.java
index 4ed3c5c..d0ff226 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/ReportExporter.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/ReportExporter.java
@@ -20,13 +20,15 @@
*/
package org.rhq.enterprise.gui.coregui.client.components;
+import java.util.Set;
+
import com.google.gwt.core.client.GWT;
import com.google.gwt.http.client.URL;
import com.google.gwt.user.client.Window;
+
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import org.rhq.enterprise.gui.coregui.client.Messages;
-
-import java.util.Set;
+import org.rhq.enterprise.gui.coregui.client.util.StringUtility;
/**
* Exporter for building urls to reports (csv).
@@ -124,9 +126,12 @@ public class ReportExporter {
public String determineUrl() {
StringBuilder queryString = new StringBuilder();
-// if (showAllDetail) {
-// queryString.append("details=").append(form.getValueAsString(DETAILS_FIELD));
-// }
+ if (showAllDetail) {
+ queryString.append("showAllDetails=").append("true");
+ } else if (!resourceTypeIds.isEmpty()) {
+ queryString.append("resourceTypeId=").append(StringUtility.toString(resourceTypeIds));
+ }
+
if(!isEmpty(operationRequestStatuses)){
StringBuilder operationRequestStatusBuffer = new StringBuilder();
for (String operationRequestStatus : operationRequestStatuses) {
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/inventory/InventorySummaryReportTable.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/inventory/InventorySummaryReportTable.java
index bbd00de..a2dfa5a 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/inventory/InventorySummaryReportTable.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/inventory/InventorySummaryReportTable.java
@@ -21,6 +21,10 @@
package org.rhq.enterprise.gui.coregui.client.report.inventory;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
import com.smartgwt.client.types.ListGridEditEvent;
import com.smartgwt.client.types.ListGridFieldType;
import com.smartgwt.client.widgets.events.DoubleClickEvent;
@@ -28,7 +32,12 @@ import com.smartgwt.client.widgets.events.DoubleClickHandler;
import com.smartgwt.client.widgets.form.fields.CheckboxItem;
import com.smartgwt.client.widgets.form.fields.events.ChangedEvent;
import com.smartgwt.client.widgets.form.fields.events.ChangedHandler;
-import com.smartgwt.client.widgets.grid.*;
+import com.smartgwt.client.widgets.grid.CellFormatter;
+import com.smartgwt.client.widgets.grid.HoverCustomizer;
+import com.smartgwt.client.widgets.grid.ListGrid;
+import com.smartgwt.client.widgets.grid.ListGridField;
+import com.smartgwt.client.widgets.grid.ListGridRecord;
+
import org.rhq.core.domain.resource.ResourceCategory;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import org.rhq.enterprise.gui.coregui.client.ImageManager;
@@ -37,10 +46,6 @@ import org.rhq.enterprise.gui.coregui.client.components.table.Table;
import org.rhq.enterprise.gui.coregui.client.components.table.TableAction;
import org.rhq.enterprise.gui.coregui.client.report.ExportChangeHandler;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
/**
* @author jsanda
*/
@@ -188,7 +193,8 @@ public class InventorySummaryReportTable extends Table<InventorySummaryDataSourc
@Override
public void executeAction(ListGridRecord[] selection, Object actionValue) {
- ReportExporter exportModalWindow = ReportExporter.createExporterForInventorySummary(getReportNameForDownloadURL(), exportAll, exportChangeHandler.getResourceTypeIds());
+ ReportExporter exportModalWindow = ReportExporter.createExporterForInventorySummary(
+ getReportNameForDownloadURL(), exportAll, exportChangeHandler.getResourceTypeIds());
exportModalWindow.export();
refreshTableInfo();
}
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/DriftComplianceHandler.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/DriftComplianceHandler.java
index e795cf5..23ce85c 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/DriftComplianceHandler.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/DriftComplianceHandler.java
@@ -18,9 +18,7 @@
*/
package org.rhq.enterprise.server.rest.reporting;
-import java.util.Collections;
import java.util.List;
-import java.util.Map;
import javax.ejb.Stateless;
import javax.interceptor.Interceptors;
@@ -41,12 +39,9 @@ import org.rhq.enterprise.server.rest.SetCallerInterceptor;
public class DriftComplianceHandler extends InventorySummaryHandler implements DriftComplianceLocal {
@Override
- public StreamingOutput generateReport(UriInfo uriInfo, Request request, HttpHeaders headers, boolean includeDetails,
- List<Integer> resourceTypeIds) {
- // We pass an empty list here for the resourceTypeIds param because this report
- // not support the typeId query para.
- List<Integer> ids = Collections.emptyList();
- return super.generateReport(uriInfo, request, headers, includeDetails, ids);
+ public StreamingOutput generateReport(UriInfo uriInfo, Request request, HttpHeaders headers, boolean showAllDetails,
+ String resourceTypeIds) {
+ return super.generateReport(uriInfo, request, headers, showAllDetails, "");
}
@Override
@@ -55,10 +50,9 @@ public class DriftComplianceHandler extends InventorySummaryHandler implements D
}
@Override
- protected ResourceCriteria getDetailsQueryCriteria(Map <Integer, ResourceInstallCount> installCounts) {
- ResourceCriteria criteria = super.getDetailsQueryCriteria(installCounts);
+ protected ResourceCriteria getDetailsQueryCriteria(Integer resourceTypeId) {
+ ResourceCriteria criteria = super.getDetailsQueryCriteria(resourceTypeId);
criteria.fetchDriftDefinitions(true);
- criteria.addFilterResourceTypeIds(installCounts.keySet().toArray(new Integer[installCounts.size()]));
return criteria;
}
@@ -68,6 +62,11 @@ public class DriftComplianceHandler extends InventorySummaryHandler implements D
}
@Override
+ protected String getDetailsHeader() {
+ return super.getDetailsHeader() + ",In Compliance?";
+ }
+
+ @Override
protected String toCSV(ResourceInstallCount installCount) {
return super.toCSV(installCount) + "," + installCount.isInCompliance();
}
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/DriftComplianceLocal.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/DriftComplianceLocal.java
index b6ea4cc..013e768 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/DriftComplianceLocal.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/DriftComplianceLocal.java
@@ -18,8 +18,6 @@
*/
package org.rhq.enterprise.server.rest.reporting;
-import java.util.List;
-
import javax.ejb.Local;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
@@ -43,7 +41,7 @@ public interface DriftComplianceLocal {
@Context UriInfo uriInfo,
@Context Request request,
@Context HttpHeaders headers,
- @QueryParam("details") @DefaultValue("false") boolean includeDetails,
- @QueryParam("resourceTypes") List<Integer> resourceTypeIds);
+ @QueryParam("showAllDetails") @DefaultValue("false") boolean includeDetails,
+ @QueryParam("resourceTypeId") String resourceTypeId);
}
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/InventorySummaryHandler.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/InventorySummaryHandler.java
index 55ee582..1531b0c 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/InventorySummaryHandler.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/InventorySummaryHandler.java
@@ -18,6 +18,28 @@
*/
package org.rhq.enterprise.server.rest.reporting;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+
+import javax.ejb.EJB;
+import javax.ejb.Stateless;
+import javax.interceptor.Interceptors;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Request;
+import javax.ws.rs.core.StreamingOutput;
+import javax.ws.rs.core.UriInfo;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+
import org.rhq.core.domain.criteria.ResourceCriteria;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.composite.ResourceInstallCount;
@@ -28,18 +50,6 @@ import org.rhq.enterprise.server.rest.SetCallerInterceptor;
import org.rhq.enterprise.server.util.CriteriaQuery;
import org.rhq.enterprise.server.util.CriteriaQueryExecutor;
-import javax.ejb.EJB;
-import javax.ejb.Stateless;
-import javax.interceptor.Interceptors;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.*;
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Marshaller;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.*;
-
import static org.rhq.core.domain.resource.InventoryStatus.COMMITTED;
import static org.rhq.core.domain.util.PageOrdering.ASC;
@@ -51,13 +61,16 @@ public class InventorySummaryHandler extends AbstractRestBean implements Invento
protected ResourceManagerLocal resourceMgr;
@Override
- public StreamingOutput generateReport(UriInfo uriInfo, Request request, HttpHeaders headers, boolean includeDetails,
- final List<Integer> resourceTypeIds) {
+ public StreamingOutput generateReport(UriInfo uriInfo, Request request, HttpHeaders headers,
+ boolean showAllDetails, final String resourceTypeIds) {
final List<ResourceInstallCount> results = getSummaryCounts();
final MediaType mediaType = headers.getAcceptableMediaTypes().get(0);
- if (includeDetails) {
- return new OutputDetailedInventorySummary(results, new TreeSet<Integer>(resourceTypeIds));
+ if (showAllDetails) {
+ Set<Integer> ids = Collections.emptySet();
+ return new OutputDetailedInventorySummary(results, ids);
+ } else if (resourceTypeIds != null) {
+ return new OutputDetailedInventorySummary(results, parseIds(resourceTypeIds));
} else {
return new StreamingOutput() {
@Override
@@ -79,20 +92,9 @@ public class InventorySummaryHandler extends AbstractRestBean implements Invento
}
} else if (mediaType.toString().equals("text/csv")) {
stream.write((getHeader() + "\n").getBytes());
-
- if (resourceTypeIds.isEmpty()) {
- for (ResourceInstallCount installCount : results) {
- String record = toCSV(installCount) + "\n";
- stream.write(record.getBytes());
- }
- } else {
- Set<Integer> ids = new TreeSet<Integer>(resourceTypeIds);
- for (ResourceInstallCount installCount : results) {
- if (ids.contains(installCount.getTypeId())) {
- String record = toCSV(installCount) + "\n";
- stream.write(record.getBytes());
- }
- }
+ for (ResourceInstallCount installCount : results) {
+ String record = toCSV(installCount) + "\n";
+ stream.write(record.getBytes());
}
}
}
@@ -100,56 +102,88 @@ public class InventorySummaryHandler extends AbstractRestBean implements Invento
}
}
+ private Set<Integer> parseIds(String resourceTypeIdParam) {
+ Set<Integer> ids = new TreeSet<Integer>();
+ for (String id : resourceTypeIdParam.split(",")) {
+ ids.add(Integer.parseInt(id));
+ }
+ return ids;
+ }
+
private class OutputDetailedInventorySummary implements StreamingOutput {
// map of counts keyed by resource type id
- private Map<Integer, ResourceInstallCount> installCounts = new HashMap<Integer, ResourceInstallCount>();
+ private Map<Integer, ResourceInstallCount> installCounts = new LinkedHashMap<Integer, ResourceInstallCount>();
private Set<Integer> resourceTypeIds;
- public OutputDetailedInventorySummary(List<ResourceInstallCount> installCountList,
+ public OutputDetailedInventorySummary(List<ResourceInstallCount> installCounts,
Set<Integer> resourceTypeIds) {
this.resourceTypeIds = resourceTypeIds;
- for (ResourceInstallCount installCount : installCountList) {
- installCounts.put(installCount.getTypeId(), installCount);
+ for (ResourceInstallCount installCount : installCounts) {
+ this.installCounts.put(installCount.getTypeId(), installCount);
}
}
@Override
public void write(OutputStream output) throws IOException, WebApplicationException {
- final ResourceCriteria criteria = getDetailsQueryCriteria(installCounts);
- if (!resourceTypeIds.isEmpty()) {
- criteria.addFilterResourceTypeIds(resourceTypeIds.toArray(new Integer[resourceTypeIds.size()]));
- }
+ ResourceCriteria criteria;
+ CriteriaQueryExecutor<Resource, ResourceCriteria> queryExecutor;
+ CriteriaQuery<Resource, ResourceCriteria> query;
+
+ output.write((getHeader() + "," + getDetailsHeader() + "\n").getBytes());
- CriteriaQueryExecutor<Resource, ResourceCriteria> queryExecutor =
- new CriteriaQueryExecutor<Resource, ResourceCriteria>() {
+ // if there are no resource type ids, that means we fetching everything - all
+ // details for all types.
+ if (resourceTypeIds.isEmpty()) {
+ criteria = getDetailsQueryCriteria(null);
+ queryExecutor = new CriteriaQueryExecutor<Resource, ResourceCriteria>() {
@Override
public PageList<Resource> execute(ResourceCriteria criteria) {
return resourceMgr.findResourcesByCriteria(caller, criteria);
}
};
-
- CriteriaQuery<Resource, ResourceCriteria> query =
- new CriteriaQuery<Resource, ResourceCriteria>(criteria, queryExecutor);
- output.write((getHeader() + "\n").getBytes());
- for (Resource resource : query) {
- ResourceInstallCount installCount = installCounts.get(resource.getResourceType().getId());
- if (installCount != null) {
+ query = new CriteriaQuery<Resource, ResourceCriteria>(criteria, queryExecutor);
+ for (Resource resource : query) {
+ ResourceInstallCount installCount = installCounts.get(resource.getResourceType().getId());
String record = toCSV(installCount) + "," + toCSV(resource) + "\n";
output.write(record.getBytes());
}
+ } else {
+ for (ResourceInstallCount installCount : installCounts.values()) {
+ if (resourceTypeIds.contains(installCount.getTypeId())) {
+ criteria = getDetailsQueryCriteria(installCount.getTypeId());
+ queryExecutor = new CriteriaQueryExecutor<Resource, ResourceCriteria>() {
+ @Override
+ public PageList<Resource> execute(ResourceCriteria criteria) {
+ return resourceMgr.findResourcesByCriteria(caller, criteria);
+ }
+ };
+ query = new CriteriaQuery<Resource, ResourceCriteria>(criteria, queryExecutor);
+ for (Resource resource : query) {
+ String record = toCSV(installCount) + "," + toCSV(resource) + "\n";
+ output.write(record.getBytes());
+ }
+ } else {
+ String record = toCSV(installCount) + ",,,,,,,\n";
+ output.write(record.getBytes());
+ }
+ }
}
}
}
- protected ResourceCriteria getDetailsQueryCriteria(Map<Integer, ResourceInstallCount> installCounts) {
+ protected ResourceCriteria getDetailsQueryCriteria(Integer resourceTypeId) {
ResourceCriteria criteria = new ResourceCriteria();
criteria.addFilterInventoryStatus(COMMITTED);
criteria.addSortResourceCategory(ASC);
criteria.addSortPluginName(ASC);
criteria.addSortResourceTypeName(ASC);
+ if (resourceTypeId != null) {
+ criteria.addFilterResourceTypeId(resourceTypeId);
+ }
+
return criteria;
}
@@ -162,6 +196,10 @@ public class InventorySummaryHandler extends AbstractRestBean implements Invento
return "Resource Type,Plugin,Category,Version,Count";
}
+ protected String getDetailsHeader() {
+ return "Name,Ancestry,Description,Type,Version,Availability";
+ }
+
protected String toCSV(ResourceInstallCount installCount) {
return installCount.getTypeName() + "," + installCount.getTypePlugin() + "," +
installCount.getCategory().getDisplayName() + "," + installCount.getVersion() + "," +
@@ -169,8 +207,9 @@ public class InventorySummaryHandler extends AbstractRestBean implements Invento
}
protected String toCSV(Resource resource) {
- return resource.getName() + "," + ReportFormatHelper.parseAncestry(resource.getAncestry()) + "," +
+ return resource.getName() + "," + ReportHelper.parseAncestry(resource.getAncestry()) + "," +
resource.getDescription() + "," + resource.getResourceType().getName() + "," + resource.getVersion() +
"," + resource.getCurrentAvailability().getAvailabilityType();
}
+
}
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/InventorySummaryLocal.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/InventorySummaryLocal.java
index b2c7190..882251b 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/InventorySummaryLocal.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/reporting/InventorySummaryLocal.java
@@ -18,8 +18,6 @@
*/
package org.rhq.enterprise.server.rest.reporting;
-import java.util.List;
-
import javax.ejb.Local;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
@@ -43,7 +41,7 @@ public interface InventorySummaryLocal {
@Context UriInfo uriInfo,
@Context Request request,
@Context HttpHeaders headers,
- @QueryParam("details") @DefaultValue("false") boolean includeDetails,
- @QueryParam("typeId") List<Integer> resourceTypeIds);
+ @QueryParam("showAllDetails") @DefaultValue("false") boolean includeDetails,
+ @QueryParam("resourceTypeId") String resourceTypeId);
}
commit c8a13b163d27b2a1f40d6c5b177bda3d7c1fdada
Author: John Sanda <jsanda(a)redhat.com>
Date: Thu Mar 29 22:02:18 2012 -0400
[BZ 800453] Adding string util methods for converting query params
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/StringUtility.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/StringUtility.java
index 97cfe47..2959af6 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/StringUtility.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/StringUtility.java
@@ -19,11 +19,12 @@
*/
package org.rhq.enterprise.gui.coregui.client.util;
-import com.google.gwt.safehtml.shared.SimpleHtmlSanitizer;
-
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
+import com.google.gwt.safehtml.shared.SimpleHtmlSanitizer;
+
/**
* A collection of utility methods for working with Strings.
*
@@ -52,6 +53,36 @@ public class StringUtility {
return res;
}
+ /**
+ * Converts the collection into a comma-delimited list, Use
+ * {@link #toString(Collection, String)} if you need a different delimiter.
+ *
+ * @param collection The collection to convert to a String
+ * @param <T> The type of elements in the collection
+ * @return A comma-delimited list as a String
+ */
+ public static <T> String toString(Collection<T> collection) {
+ return toString(collection, ",");
+ }
+
+ /**
+ * Converts the collection into a delimited list with the specified delimiter.
+ *
+ * @param collection The collection to convert to a String
+ * @param delimiter The delimiter to use
+ * @param <T> The type of elements in the collection
+ * @return A delimited list as a String
+ */
+ public static <T> String toString(Collection<T> collection, String delimiter) {
+ StringBuilder builder = new StringBuilder();
+ for (T obj : collection) {
+ builder.append(obj).append(delimiter);
+ }
+ builder.delete(builder.length() - delimiter.length(), builder.length());
+
+ return builder.toString();
+ }
+
// TODO: I18N. The logic here may need to be pluggable for different localizations.
public static String pluralize(String singularNoun) {
String pluralNoun;
12 years, 1 month
[rhq] modules/plugins
by ips
modules/plugins/jboss-as-7/pom.xml | 40 ++++++++++++++++++++++++++++++++++---
1 file changed, 37 insertions(+), 3 deletions(-)
New commits:
commit 060e46c1d171906c95f9572785a1d0043bdeddfc
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri Mar 30 11:54:08 2012 -0400
upgrade jboss-sasl from 1.0.0.Beta9 to 1.0.0.Final; only pass options specific to java7 or 64-bit java on as7 java command line when appropriate
diff --git a/modules/plugins/jboss-as-7/pom.xml b/modules/plugins/jboss-as-7/pom.xml
index 6aa58df..49bbd0a 100644
--- a/modules/plugins/jboss-as-7/pom.xml
+++ b/modules/plugins/jboss-as-7/pom.xml
@@ -21,10 +21,12 @@
<properties>
<json.version>${project.json.version}</json.version>
<jackson.version>1.9.5</jackson.version>
- <jboss.sasl.version>1.0.0.Beta9</jboss.sasl.version>
+ <jboss.sasl.version>1.0.0.Final</jboss.sasl.version>
<as7.version>7.1.2.Final-SNAPSHOT</as7.version>
<as7.url>https://hudson.jboss.org/hudson/view/JBoss%20AS/job/JBoss-AS-7.0.x/lastSu...</as7.url>
<jboss-as-arquillian-container-managed.version>7.1.1.Final</jboss-as-arquillian-container-managed.version>
+ <java.tieredCompilation>-Dxxx</java.tieredCompilation>
+ <java.useCompressedOOPS>-Dxxx</java.useCompressedOOPS>
</properties>
@@ -42,6 +44,8 @@
<!-- === Compile Deps === -->
+ <!-- NOTE: jackson 2.0.0 has moved to a new groupId - artifacts are under
+ http://repo1.maven.org/maven2/com/fasterxml/jackson/ -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
@@ -121,6 +125,36 @@
<profiles>
<profile>
+ <id>java7</id>
+ <activation>
+ <property>
+ <name>java.specification.version</name>
+ <value>1.7</value>
+ </property>
+ </activation>
+
+ <properties>
+ <java.tieredCompilation>-XX:+TieredCompilation</java.tieredCompilation>
+ </properties>
+
+ </profile>
+
+ <profile>
+ <id>java64bit</id>
+
+ <activation>
+ <property>
+ <name>sun.arch.data.model</name>
+ <value>64</value>
+ </property>
+ </activation>
+
+ <properties>
+ <java.useCompressedOOPS>-XX:+UseCompressedOops</java.useCompressedOOPS>
+ </properties>
+ </profile>
+
+ <profile>
<id>as700Final.itest.setup</id>
<activation>
@@ -368,8 +402,8 @@
<!-- Process Controller Java options -->
<argument>-D[Standalone]</argument>
<argument>-server</argument>
- <argument>-XX:+UseCompressedOops</argument>
- <argument>-XX:+TieredCompilation</argument>
+ <argument>${java.useCompressedOOPS}</argument>
+ <argument>${java.tieredCompilation}</argument>
<argument>-Xms64m</argument>
<argument>-Xmx512m</argument>
<argument>-XX:MaxPermSize=256m</argument>
12 years, 1 month
[rhq] modules/plugins
by ips
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java | 98 +++-------
1 file changed, 37 insertions(+), 61 deletions(-)
New commits:
commit 8a961b6e39cd537b6e35f97b7206d3ff3052fe71
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri Mar 30 11:16:16 2012 -0400
when we receive 500 (Internal Server Error) responses, include the response body in the error message we log, since it often includes valuable details
diff --git a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
index 39c3bd9..088bc9a 100644
--- a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
+++ b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
@@ -67,8 +67,7 @@ public class ASConnection {
private int port;
/**
- * Construct an ASConnection object. The real "physical" connection is done in
- * {@link #executeRaw(Operation)}.
+ * Construct an ASConnection object. The real "physical" connection is done in {@link #executeRaw(Operation)}.
*
* @param host Host of the DomainController or standalone server
* @param port Port of the JSON api.
@@ -135,7 +134,7 @@ public class ASConnection {
* @see #executeComplex(org.rhq.modules.plugins.jbossas7.json.Operation)
*/
public JsonNode executeRaw(Operation operation, int timeoutSec) {
- long t1 = System.currentTimeMillis();
+ long requestStartTime = System.currentTimeMillis();
HttpURLConnection conn;
OutputStream out;
@@ -169,12 +168,9 @@ public class ASConnection {
return ret;
}
- InputStream inputStream;
- BufferedReader inputReader = null;
- InputStream errorStream = null;
try {
- //add additional request property to include-defaults=true to all requests.
- //if it's already set we leave it alone and assume that Operation creator is taking over control.
+ // Add additional request property to include-defaults=true to all requests.
+ // If it's already set, we leave it alone and assume that Operation creator is taking over control.
if (operation.getAdditionalProperties().isEmpty()
|| !operation.getAdditionalProperties().containsKey(INCLUDE_DEFAULT)) {
operation.addAdditionalProperty("include-defaults", "true");
@@ -182,13 +178,12 @@ public class ASConnection {
String json_to_send = mapper.writeValueAsString(operation);
- //check for spaces in the path which the AS7 server will reject. Log verbose error and
+ // Check for spaces in the path which the AS7 server will reject. Log verbose error and
// generate failure indicator.
if ((operation != null) && (operation.getAddress() != null) && operation.getAddress().getPath() != null) {
if (containsSpaces(operation.getAddress().getPath())) {
Result noResult = new Result();
- String outcome = "- Path '" + operation.getAddress().getPath()
- + "' is invalid as it contains spaces -";
+ String outcome = "- Path '" + operation.getAddress().getPath() + "' is invalid as it contains spaces -";
if (verbose) {
log.error(outcome);
}
@@ -208,15 +203,11 @@ public class ASConnection {
out.flush();
out.close();
- int responseCode = conn.getResponseCode();
- if (responseCode == HttpURLConnection.HTTP_OK) {
- inputStream = conn.getInputStream();
- } else {
- inputStream = conn.getErrorStream();
- }
+ InputStream inputStream = (conn.getInputStream() != null) ? conn.getInputStream() : conn.getErrorStream();
if (inputStream != null) {
- inputReader = new BufferedReader(new InputStreamReader(inputStream));
+ BufferedReader inputReader = new BufferedReader(new InputStreamReader(inputStream));
+ // Note: slurp() will close the stream once it's done slurping it.
String responseBody = StreamUtil.slurp(inputReader);
String outcome;
@@ -240,18 +231,20 @@ public class ASConnection {
return operationResult;
} else {
- //if not properly authorized sends plugin exception for visual indicator in the ui.
- if (responseCode == HttpURLConnection.HTTP_UNAUTHORIZED
- || responseCode == HttpURLConnection.HTTP_BAD_METHOD) {
+ // Empty response body - probably some sort of error - check the response code.
+ int responseCode = conn.getResponseCode();
+ if (responseCode == HttpURLConnection.HTTP_UNAUTHORIZED) {
if (log.isDebugEnabled()) {
log.debug("Response to " + operation + " was empty and response code was " + responseCode + " "
- + conn.getResponseMessage() + ".");
+ + conn.getResponseMessage() + " - throwing InvalidPluginConfigurationException...");
}
+ // Throw a InvalidPluginConfigurationException, so the user will get a yellow plugin connection
+ // warning message in the GUI.
throw new InvalidPluginConfigurationException(
- "Credentials for plugin to connect to AS7 management interface are invalid. Update Connection Settings with valid credentials.");
+ "Credentials for plugin to connect to AS7 management interface are invalid - update Connection Settings with valid credentials.");
} else {
- log.error("Response to " + operation + " was empty and response code was " + responseCode + " ("
- + conn.getResponseMessage() + ").");
+ log.warn("Response body for " + operation + " was empty and response code was " + responseCode + " ("
+ + conn.getResponseMessage() + ").");
}
}
} catch (IllegalArgumentException iae) {
@@ -267,25 +260,24 @@ public class ASConnection {
JsonNode ret = mapper.valueToTree(failure);
return ret;
} catch (IOException e) {
- log.error("Failed to get data: " + e);
-
- //the following code is in place to help keep-alive http connection re-use to occur.
- if (conn != null) {//on error conditions it's still necessary to read the response so JDK knows can reuse
- //the http connections behind the scenes.
- errorStream = conn.getErrorStream();
- if (errorStream != null) {
- BufferedReader dr = new BufferedReader(new InputStreamReader(errorStream));
- String ignore = null;
- try {
- while ((ignore = dr.readLine()) != null) {
- //already reported error. just empty stream.
- }
- errorStream.close();
- } catch (IOException e1) {
- // ignore
- }
- }
+ // On error conditions, it's still necessary to slurp the response stream so the JDK knows it can reuse the
+ // persistent HTTP connection behind the scenes.
+ String responseBody;
+ if (conn.getErrorStream() != null) {
+ BufferedReader errorReader = new BufferedReader(new InputStreamReader(conn.getErrorStream()));
+ // Note: slurp() will close the stream once it's done slurping it.
+ responseBody = StreamUtil.slurp(errorReader);
+ } else {
+ responseBody = "";
+ }
+
+ String responseCodeString;
+ try {
+ responseCodeString = conn.getResponseCode() + " (" + conn.getResponseMessage() + ")";
+ } catch (IOException ioe) {
+ responseCodeString = "unknown response code";
}
+ log.error(operation + " failed with " + responseCodeString + " - response body was [" + responseBody + "].");
Result failure = new Result();
failure.setFailureDescription(e.getMessage());
@@ -294,27 +286,11 @@ public class ASConnection {
JsonNode ret = mapper.valueToTree(failure);
return ret;
-
} finally {
- if (inputReader != null) {
- try {
- inputReader.close();
- } catch (IOException e) {
- log.error("Failed to close HTTP connection input stream: " + e.getMessage());
- }
- }
- if (errorStream != null) {
- try {
- errorStream.close();
- } catch (IOException e) {
- log.error("Failed to close HTTP connection error stream: " + e.getMessage());
- }
- }
-
- long t2 = System.currentTimeMillis();
+ long requestEndTime = System.currentTimeMillis();
PluginStats stats = PluginStats.getInstance();
stats.incrementRequestCount();
- stats.addRequestTime(t2 - t1);
+ stats.addRequestTime(requestEndTime - requestStartTime);
}
return null;
12 years, 1 month