[rhq] modules/enterprise
by Heiko W. Rupp
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
New commits:
commit b35c2f1c68a0931cc433d30a3a4f65fa6670a512
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue Feb 8 16:16:16 2011 +0100
Remove templates that are no longer needed and which break the i18n job.
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 e78f5be..35de497 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
@@ -856,7 +856,6 @@ view_bundle_createWizard_youMustChooseOne=You must choose one option in order to
view_bundle_createWizard_urlOption=URL
view_bundle_createWizard_uploadOption=Upload~
view_bundle_createWizard_recipeOption=Recipe~
-view_bundle_createWizard_uploadStepName=Provide a Bundle Distribution~
view_bundle_createWizard_clickToUploadRecipe=Click to upload 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}]~
@@ -868,15 +867,15 @@ view_bundle_deployWizard_deploymentCreatedDetail = Created deployment [{0}] desc
view_bundle_deployWizard_destinationCreatedDetail = Created destination [{0}] description [{1}]~
view_bundle_deployWizard_deploymentScheduled = Bundle Deployment Scheduled!~
view_bundle_deployWizard_deploymentScheduledDetail = Scheduled bundle deployment [{0}] destination group [{1}]~
-view_bundle_deployWizard_error_1 = Failed to delete new deployment on Cancel: {0}~
-view_bundle_deployWizard_error_2 = Failed to delete new destination on Cancel: {0}~
+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: [{0}]~
+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.~
13 years, 3 months
[rhq] modules/enterprise
by ips
modules/enterprise/gui/coregui/pom.xml | 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/trigger/JobTriggerEditor.java | 344 +++++-----
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDataSource.java | 1
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDetailsView.java | 40 -
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/TypeConversionUtility.java | 5
5 files changed, 222 insertions(+), 170 deletions(-)
New commits:
commit df9dad79da91c4fffe5f3acac004e953ee13a952
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Mon Feb 7 21:19:09 2011 -0500
various work on operation schedule views
diff --git a/modules/enterprise/gui/coregui/pom.xml b/modules/enterprise/gui/coregui/pom.xml
index aacba77..fc41629 100644
--- a/modules/enterprise/gui/coregui/pom.xml
+++ b/modules/enterprise/gui/coregui/pom.xml
@@ -481,7 +481,7 @@
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<includes>
- <include>org/rhq/enterprise/gui/coregui/client/Messages.java</include>
+ <include>org/rhq/enterprise/gui/coregui/client/Messages*.java</include>
</includes>
</configuration>
</plugin>
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/trigger/JobTriggerEditor.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/trigger/JobTriggerEditor.java
index 87d287d..4531c34 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/trigger/JobTriggerEditor.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/trigger/JobTriggerEditor.java
@@ -21,9 +21,7 @@ package org.rhq.enterprise.gui.coregui.client.components.trigger;
import java.util.Date;
import java.util.EnumSet;
-import java.util.HashMap;
import java.util.LinkedHashMap;
-import java.util.Map;
import java.util.TreeSet;
import com.smartgwt.client.types.Visibility;
@@ -42,7 +40,6 @@ import com.smartgwt.client.widgets.form.fields.events.ChangedEvent;
import com.smartgwt.client.widgets.form.fields.events.ChangedHandler;
import com.smartgwt.client.widgets.form.fields.events.IconClickEvent;
import com.smartgwt.client.widgets.form.fields.events.IconClickHandler;
-import com.smartgwt.client.widgets.form.validator.RegExpValidator;
import com.smartgwt.client.widgets.tab.Tab;
import com.smartgwt.client.widgets.tab.TabSet;
@@ -52,7 +49,6 @@ import org.rhq.enterprise.gui.coregui.client.components.form.DurationItem;
import org.rhq.enterprise.gui.coregui.client.components.form.EnhancedDynamicForm;
import org.rhq.enterprise.gui.coregui.client.components.form.TimeUnit;
import org.rhq.enterprise.gui.coregui.client.components.form.UnitType;
-import org.rhq.enterprise.gui.coregui.client.util.FormUtility;
import org.rhq.enterprise.gui.coregui.client.util.message.Message;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
@@ -66,6 +62,7 @@ import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
public class JobTriggerEditor extends LocatableVLayout {
// Field Names
+ private static final String FIELD_MODE = "mode";
private static final String FIELD_REPEAT_INTERVAL = "repeatInterval";
private static final String FIELD_REPEAT_DURATION = "repeatDuration";
private static final String FIELD_END_TIME = "endTime";
@@ -75,28 +72,14 @@ public class JobTriggerEditor extends LocatableVLayout {
private static final String FIELD_RECURRENCE_TYPE = "recurrenceType";
private static final String FIELD_CRON_EXPRESSION = "cronExpression";
- private static final Map<String, Long> UNITS_TO_MILLIS_MULTIPLIER_MAP = new HashMap<String, Long>();
- static {
- UNITS_TO_MILLIS_MULTIPLIER_MAP.put("seconds", 1000L);
- UNITS_TO_MILLIS_MULTIPLIER_MAP.put("s", 1000L);
- UNITS_TO_MILLIS_MULTIPLIER_MAP.put("minutes", 1000L * 60);
- UNITS_TO_MILLIS_MULTIPLIER_MAP.put("m", 1000L * 60);
- UNITS_TO_MILLIS_MULTIPLIER_MAP.put("hours", 1000L * 60 * 60);
- UNITS_TO_MILLIS_MULTIPLIER_MAP.put("h", 1000L * 60 * 60);
- UNITS_TO_MILLIS_MULTIPLIER_MAP.put("days", 1000L * 60 * 60 * 24);
- UNITS_TO_MILLIS_MULTIPLIER_MAP.put("d", 1000L * 60 * 60 * 24);
- UNITS_TO_MILLIS_MULTIPLIER_MAP.put("weeks", 1000L * 60 * 60 * 24 * 7);
- UNITS_TO_MILLIS_MULTIPLIER_MAP.put("w", 1000L * 60 * 60 * 24 * 7);
- UNITS_TO_MILLIS_MULTIPLIER_MAP.put("months", 1000L * 60 * 60 * 24 * 7 * 30);
- UNITS_TO_MILLIS_MULTIPLIER_MAP.put("M", 1000L * 60 * 60 * 24 * 7 * 30);
- UNITS_TO_MILLIS_MULTIPLIER_MAP.put("quarters", 1000L * 60 * 60 * 24 * 7 * 90);
- UNITS_TO_MILLIS_MULTIPLIER_MAP.put("q", 1000L * 60 * 60 * 24 * 7 * 90);
- UNITS_TO_MILLIS_MULTIPLIER_MAP.put("years", 1000L * 60 * 60 * 24 * 7 * 30 * 365);
- UNITS_TO_MILLIS_MULTIPLIER_MAP.put("y", 1000L * 60 * 60 * 24 * 7 * 30 * 365);
- }
-
+ private JobTrigger jobTrigger;
private boolean isReadOnly;
+ private LocatableVLayout calendarModeLayout;
+ private LocatableVLayout cronModeLayout;
+
+ private EnhancedDynamicForm modeForm;
+ private EnhancedDynamicForm calendarTypeForm;
private DynamicForm laterForm;
private DynamicForm repeatForm;
private LocatableDynamicForm cronForm;
@@ -124,36 +107,92 @@ public class JobTriggerEditor extends LocatableVLayout {
*
* @param locatorId
* @param jobTrigger
- * @param isReadOnly
*/
- public JobTriggerEditor(String locatorId, JobTrigger jobTrigger, boolean isReadOnly) {
+ public JobTriggerEditor(String locatorId, JobTrigger jobTrigger) {
super(locatorId);
- this.isReadOnly = isReadOnly;
+ this.jobTrigger = jobTrigger;
+ this.isReadOnly = true;
+ }
+
+ public void setJobTrigger(JobTrigger jobTrigger) {
+ this.jobTrigger = jobTrigger;
+ if (isDrawn()) {
+ refresh();
+ }
+ }
+
+ private void refresh() {
+ if (this.jobTrigger != null) {
+ RadioGroupItem modeItem = (RadioGroupItem) this.modeForm.getItem(FIELD_MODE);
+ if (this.jobTrigger.getRecurrenceType() == JobTrigger.RecurrenceType.CRON_EXPRESSION) {
+ modeItem.setValue("cron");
+ changeMode("cron");
+ this.cronForm.setValue("cronExpression", this.jobTrigger.getCronExpression());
+ } else {
+ modeItem.setValue("calendar");
+ changeMode("calendar");
+
+ RadioGroupItem startTypeItem = (RadioGroupItem) this.laterForm.getItem(FIELD_START_TYPE);
+ startTypeItem.setValue("on");
+ DurationItem startDelayItem = (DurationItem) this.laterForm.getItem(FIELD_START_DELAY);
+ DateTimeItem startTimeItem = (DateTimeItem)this.laterForm.getField(FIELD_START_TIME);
+ changeStartType("on", startDelayItem, startTimeItem);
+ startTimeItem.setValue(this.jobTrigger.getStartDate());
+
+ RadioGroupItem calendarTypeItem = (RadioGroupItem) this.calendarTypeForm.getField("calendarType");
+ if (this.jobTrigger.getRecurrenceType() == JobTrigger.RecurrenceType.REPEAT_INTERVAL) {
+ calendarTypeItem.setValue("laterAndRepeat");
+ changeCalendarType("laterAndRepeat");
+
+ DurationItem repeatIntervalItem = (DurationItem) this.repeatForm.getItem(FIELD_REPEAT_INTERVAL);
+ repeatIntervalItem.setValue(this.jobTrigger.getRepeatInterval().intValue(), UnitType.TIME);
+
+ DateTimeItem endTimeItem = (DateTimeItem)this.repeatForm.getField(FIELD_END_TIME);
+ DurationItem repeatDurationItem = (DurationItem) this.repeatForm.getItem(FIELD_REPEAT_DURATION);
+ RadioGroupItem recurrenceTypeItem = (RadioGroupItem) this.repeatForm.getField(FIELD_RECURRENCE_TYPE);
+ if (this.jobTrigger.getRepeatCount() != null) {
+ recurrenceTypeItem.setValue("for");
+ changeRecurrenceType("for", endTimeItem, repeatDurationItem);
+ repeatDurationItem.setValue(this.jobTrigger.getRepeatCount(), UnitType.ITERATIONS);
+ } else if (this.jobTrigger.getEndDate() != null) {
+ recurrenceTypeItem.setValue("until");
+ changeRecurrenceType("until", endTimeItem, repeatDurationItem);
+ endTimeItem.setValue(this.jobTrigger.getEndDate());
+ } else {
+ recurrenceTypeItem.setValue("indefinitely");
+ changeRecurrenceType("indefinitely", endTimeItem, repeatDurationItem);
+ }
+ } else {
+ calendarTypeItem.setValue("later");
+ changeCalendarType("later");
+ }
+ }
+ }
}
@Override
protected void onDraw() {
super.onDraw();
- EnhancedDynamicForm modeForm = new EnhancedDynamicForm(extendLocatorId("ModeForm"));
- modeForm.setNumCols(3);
- modeForm.setColWidths("140", "220", "*");
+ this.modeForm = new EnhancedDynamicForm(extendLocatorId("ModeForm"), this.isReadOnly);
+ this.modeForm.setNumCols(3);
+ this.modeForm.setColWidths("140", "220", "*");
- RadioGroupItem modeItem = new RadioGroupItem("mode", "Schedule using");
+ RadioGroupItem modeItem = new RadioGroupItem(FIELD_MODE, "Schedule using");
LinkedHashMap<String, String> modeValueMap = new LinkedHashMap<String, String>();
modeValueMap.put("calendar", "Calendar");
modeValueMap.put("cron", "Cron Expression");
modeItem.setValueMap(modeValueMap);
modeItem.setVertical(false);
- modeForm.setFields(modeItem);
- addMember(modeForm);
+ this.modeForm.setFields(modeItem);
+ addMember(this.modeForm);
- final LocatableVLayout calendarModeLayout = new LocatableVLayout(extendLocatorId("CalendarModeLayout"));
- calendarModeLayout.setVisible(false);
+ this.calendarModeLayout = new LocatableVLayout(extendLocatorId("CalendarModeLayout"));
+ this.calendarModeLayout.setVisible(false);
- final DynamicForm calendarTypeForm = new DynamicForm();
+ this.calendarTypeForm = new EnhancedDynamicForm(extendLocatorId("CalendarTypeForm"), this.isReadOnly);
RadioGroupItem calendarTypeItem = new RadioGroupItem("calendarType");
calendarTypeItem.setWidth(440);
@@ -166,15 +205,15 @@ public class JobTriggerEditor extends LocatableVLayout {
calendarTypeItem.setValueMap(calendarTypeValueMap);
calendarTypeItem.setVertical(false);
- calendarTypeForm.setFields(calendarTypeItem);
+ this.calendarTypeForm.setFields(calendarTypeItem);
- calendarModeLayout.addMember(calendarTypeForm);
- addMember(calendarModeLayout);
+ this.calendarModeLayout.addMember(this.calendarTypeForm);
+ addMember(this.calendarModeLayout);
- final LocatableVLayout cronModeLayout = new LocatableVLayout(extendLocatorId("CronModeLayout"));
- cronModeLayout.setVisible(false);
+ this.cronModeLayout = new LocatableVLayout(extendLocatorId("CronModeLayout"));
+ this.cronModeLayout.setVisible(false);
- this.cronForm = new LocatableDynamicForm(cronModeLayout.extendLocatorId("Form"));
+ this.cronForm = new LocatableDynamicForm(this.cronModeLayout.extendLocatorId("Form"));
TextItem cronExpressionItem = new TextItem(FIELD_CRON_EXPRESSION, "Cron Expression");
cronExpressionItem.setRequired(true);
@@ -182,7 +221,7 @@ public class JobTriggerEditor extends LocatableVLayout {
this.cronForm.setFields(cronExpressionItem);
- cronModeLayout.addMember(this.cronForm);
+ this.cronModeLayout.addMember(this.cronForm);
final TabSet cronHelpTabSet = new TabSet();
cronHelpTabSet.setWidth100();
@@ -487,63 +526,74 @@ public class JobTriggerEditor extends LocatableVLayout {
}
});
- cronModeLayout.addMember(cronHelpTabSet);
- addMember(cronModeLayout);
+ this.cronModeLayout.addMember(cronHelpTabSet);
+ addMember(this.cronModeLayout);
modeItem.addChangedHandler(new ChangedHandler() {
public void onChanged(ChangedEvent event) {
- if (event.getValue().equals("calendar")) {
- JobTriggerEditor.this.isCronMode = false;
- calendarModeLayout.show();
- cronModeLayout.hide();
- } else {
- // cron mode
- JobTriggerEditor.this.isCronMode = true;
- calendarModeLayout.hide();
- cronModeLayout.show();
- }
+ String mode = (String) event.getValue();
+ changeMode(mode);
}
});
this.laterForm = createLaterForm();
- calendarModeLayout.addMember(this.laterForm);
+ this.calendarModeLayout.addMember(this.laterForm);
this.repeatForm = createRepeatForm();
- calendarModeLayout.addMember(this.repeatForm);
+ this.calendarModeLayout.addMember(this.repeatForm);
calendarTypeItem.addChangedHandler(new ChangedHandler() {
public void onChanged(ChangedEvent event) {
- String value = (String)event.getValue();
- if (value.equals("now")) {
- JobTriggerEditor.this.isStartLater = false;
- JobTriggerEditor.this.isRecurring = false;
- } else if (value.equals("nowAndRepeat")) {
- JobTriggerEditor.this.isStartLater = false;
- JobTriggerEditor.this.isRecurring = true;
-
- FormItem repeatIntervalItem = repeatForm.getItem(FIELD_REPEAT_INTERVAL);
- repeatIntervalItem.setTitle("Run now and every");
- repeatIntervalItem.redraw();
- } else if (value.equals("later")) {
- JobTriggerEditor.this.isStartLater = true;
- JobTriggerEditor.this.isRecurring = false;
- } else {
- // value.equals("laterAndRepeat")
- JobTriggerEditor.this.isStartLater = true;
- JobTriggerEditor.this.isRecurring = true;
-
- FormItem repeatIntervalItem = repeatForm.getItem(FIELD_REPEAT_INTERVAL);
- repeatIntervalItem.setTitle("Repeat every");
- repeatIntervalItem.redraw();
- }
- laterForm.setVisibility(JobTriggerEditor.this.isStartLater ? Visibility.VISIBLE : Visibility.HIDDEN);
- repeatForm.setVisibility(JobTriggerEditor.this.isRecurring ? Visibility.VISIBLE : Visibility.HIDDEN);
+ String calendarType = (String)event.getValue();
+ changeCalendarType(calendarType);
}
});
+
+ refresh();
+ }
+
+ private void changeCalendarType(String calendarType) {
+ if (calendarType.equals("now")) {
+ this.isStartLater = false;
+ this.isRecurring = false;
+ } else if (calendarType.equals("nowAndRepeat")) {
+ this.isStartLater = false;
+ this.isRecurring = true;
+
+ FormItem repeatIntervalItem = repeatForm.getItem(FIELD_REPEAT_INTERVAL);
+ repeatIntervalItem.setTitle("Run now and every");
+ repeatIntervalItem.redraw();
+ } else if (calendarType.equals("later")) {
+ this.isStartLater = true;
+ this.isRecurring = false;
+ } else {
+ // value.equals("laterAndRepeat")
+ this.isStartLater = true;
+ this.isRecurring = true;
+
+ FormItem repeatIntervalItem = repeatForm.getItem(FIELD_REPEAT_INTERVAL);
+ repeatIntervalItem.setTitle("Repeat every");
+ repeatIntervalItem.redraw();
+ }
+ laterForm.setVisibility(this.isStartLater ? Visibility.VISIBLE : Visibility.HIDDEN);
+ repeatForm.setVisibility(this.isRecurring ? Visibility.VISIBLE : Visibility.HIDDEN);
+ }
+
+ private void changeMode(String mode) {
+ if (mode.equals("calendar")) {
+ this.isCronMode = false;
+ calendarModeLayout.show();
+ cronModeLayout.hide();
+ } else {
+ // cron expression mode
+ this.isCronMode = true;
+ calendarModeLayout.hide();
+ cronModeLayout.show();
+ }
}
private DynamicForm createRepeatForm() {
- final EnhancedDynamicForm repeatForm = new EnhancedDynamicForm(extendLocatorId("RepeatForm"));
+ final EnhancedDynamicForm repeatForm = new EnhancedDynamicForm(extendLocatorId("RepeatForm"), this.isReadOnly);
repeatForm.setNumCols(6);
repeatForm.setColWidths(140, 130, 130, 130, 130);
@@ -556,7 +606,7 @@ public class JobTriggerEditor extends LocatableVLayout {
supportedUnits.add(TimeUnit.MONTHS);
supportedUnits.add(TimeUnit.YEARS);
DurationItem repeatIntervalItem = new DurationItem(FIELD_REPEAT_INTERVAL, "Run now and every",
- supportedUnits, false, isReadOnly(), repeatForm);
+ supportedUnits, false, this.isReadOnly, repeatForm);
repeatIntervalItem.setRequired(true);
repeatIntervalItem.setContextualHelp("how often the operation should be executed");
@@ -578,7 +628,7 @@ public class JobTriggerEditor extends LocatableVLayout {
supportedUnits.add(TimeUnit.MONTHS);
supportedUnits.add(TimeUnit.YEARS);
final DurationItem repeatDurationItem = new DurationItem(FIELD_REPEAT_DURATION, null,
- supportedUnits, true, isReadOnly(), repeatForm);
+ supportedUnits, true, this.isReadOnly, repeatForm);
repeatDurationItem.setShowTitle(false);
repeatDurationItem.setVisible(false);
repeatDurationItem.setContextualHelp("keep running this operation this many times or until this amount of time has elapsed");
@@ -591,31 +641,8 @@ public class JobTriggerEditor extends LocatableVLayout {
recurrenceTypeItem.addChangedHandler(new ChangedHandler() {
public void onChanged(ChangedEvent event) {
- String value = (String)event.getValue();
- if (value.equals("for")) {
- JobTriggerEditor.this.isEndTime = false;
- JobTriggerEditor.this.isRepeatDuration = true;
- } else if (value.equals("until")) {
- JobTriggerEditor.this.isEndTime = true;
- JobTriggerEditor.this.isRepeatDuration = false;
- } else {
- // indefinite
- JobTriggerEditor.this.isEndTime = false;
- JobTriggerEditor.this.isRepeatDuration = false;
- }
-
- endTimeItem.setRequired(JobTriggerEditor.this.isEndTime);
- if (JobTriggerEditor.this.isEndTime) {
- endTimeItem.show();
- } else {
- endTimeItem.hide();
- }
- repeatDurationItem.setRequired(JobTriggerEditor.this.isRepeatDuration);
- if (JobTriggerEditor.this.isRepeatDuration) {
- repeatDurationItem.show();
- } else {
- repeatDurationItem.hide();
- }
+ String recurrenceType = (String)event.getValue();
+ changeRecurrenceType(recurrenceType, endTimeItem, repeatDurationItem);
}
});
@@ -625,8 +652,35 @@ public class JobTriggerEditor extends LocatableVLayout {
return repeatForm;
}
+ private void changeRecurrenceType(String recurrenceType, DateTimeItem endTimeItem, DurationItem repeatDurationItem) {
+ if (recurrenceType.equals("for")) {
+ this.isEndTime = false;
+ this.isRepeatDuration = true;
+ } else if (recurrenceType.equals("until")) {
+ this.isEndTime = true;
+ this.isRepeatDuration = false;
+ } else {
+ // indefinite
+ this.isEndTime = false;
+ this.isRepeatDuration = false;
+ }
+
+ endTimeItem.setRequired(this.isEndTime);
+ if (this.isEndTime) {
+ endTimeItem.show();
+ } else {
+ endTimeItem.hide();
+ }
+ repeatDurationItem.setRequired(this.isRepeatDuration);
+ if (this.isRepeatDuration) {
+ repeatDurationItem.show();
+ } else {
+ repeatDurationItem.hide();
+ }
+ }
+
private DynamicForm createLaterForm() {
- final EnhancedDynamicForm laterForm = new EnhancedDynamicForm(extendLocatorId("LaterForm"));
+ final EnhancedDynamicForm laterForm = new EnhancedDynamicForm(extendLocatorId("LaterForm"), this.isReadOnly);
laterForm.setNumCols(4);
laterForm.setColWidths(140, 130, 130);
@@ -647,7 +701,7 @@ public class JobTriggerEditor extends LocatableVLayout {
supportedUnits.add(TimeUnit.MONTHS);
supportedUnits.add(TimeUnit.YEARS);
final DurationItem startDelayItem = new DurationItem(FIELD_START_DELAY, null,
- supportedUnits, false, isReadOnly(), laterForm);
+ supportedUnits, false, this.isReadOnly, laterForm);
startDelayItem.setShowTitle(false);
startDelayItem.setVisible(false);
startDelayItem.setContextualHelp("start executing the operation after this amount of time has elapsed");
@@ -656,27 +710,8 @@ public class JobTriggerEditor extends LocatableVLayout {
startTypeItem.addChangedHandler(new ChangedHandler() {
public void onChanged(ChangedEvent event) {
- String value = (String)event.getValue();
- if (value.equals("on")) {
- JobTriggerEditor.this.isStartDelay = false;
- JobTriggerEditor.this.isStartTime = true;
- } else {
- // value.equals("in")
- JobTriggerEditor.this.isStartDelay = true;
- JobTriggerEditor.this.isStartTime = false;
- }
- startDelayItem.setRequired(JobTriggerEditor.this.isStartDelay);
- if (JobTriggerEditor.this.isStartDelay) {
- startDelayItem.show();
- } else {
- startDelayItem.hide();
- }
- startTimeItem.setRequired(JobTriggerEditor.this.isStartTime);
- if (JobTriggerEditor.this.isStartTime) {
- startTimeItem.show();
- } else {
- startTimeItem.hide();
- }
+ String startType = (String)event.getValue();
+ changeStartType(startType, startDelayItem, startTimeItem);
}
});
@@ -686,12 +721,35 @@ public class JobTriggerEditor extends LocatableVLayout {
return laterForm;
}
+ private void changeStartType(String startType, DurationItem startDelayItem, DateTimeItem startTimeItem) {
+ if (startType.equals("on")) {
+ this.isStartDelay = false;
+ this.isStartTime = true;
+ } else {
+ // value.equals("in")
+ this.isStartDelay = true;
+ this.isStartTime = false;
+ }
+ startDelayItem.setRequired(this.isStartDelay);
+ if (this.isStartDelay) {
+ startDelayItem.show();
+ } else {
+ startDelayItem.hide();
+ }
+ startTimeItem.setRequired(this.isStartTime);
+ if (this.isStartTime) {
+ startTimeItem.show();
+ } else {
+ startTimeItem.hide();
+ }
+ }
+
public Date getStartTime() {
Date startTime;
if (this.isStartDelay) {
// start delay - compute start time
DurationItem startDelayItem = (DurationItem) this.laterForm.getItem(FIELD_START_DELAY);
- long delay = startDelayItem.getValueAsLong();
+ long delay = startDelayItem.getValueAsLong() * 1000;
long startTimestamp = System.currentTimeMillis() + delay;
startTime = new Date(startTimestamp);
} else {
@@ -706,7 +764,7 @@ public class JobTriggerEditor extends LocatableVLayout {
Long intervalMillis;
if (this.isRecurring) {
DurationItem repeatInterval = (DurationItem) this.repeatForm.getItem(FIELD_REPEAT_INTERVAL);
- intervalMillis = repeatInterval.getValueAsLong();
+ intervalMillis = repeatInterval.getValueAsLong() * 1000;
} else {
intervalMillis = null;
}
@@ -744,7 +802,7 @@ public class JobTriggerEditor extends LocatableVLayout {
endTime = null;
} else {
// n units of time - compute end time
- long delay = repeatDurationItem.getValueAsLong();
+ long delay = repeatDurationItem.getValueAsLong() * 1000;
long endTimestamp = System.currentTimeMillis() + delay;
endTime = new Date(endTimestamp);
}
@@ -817,18 +875,4 @@ public class JobTriggerEditor extends LocatableVLayout {
return dateTimeItem;
}
- public boolean isReadOnly() {
- return isReadOnly;
- }
-
- private static class Duration {
- public int count;
- // a null multiplier means the count refers repetitions, rather than units of time
- public Long multiplier;
-
- private Duration(int count, Long multiplier) {
- this.count = count;
- this.multiplier = multiplier;
- }
- }
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDataSource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDataSource.java
index 07d90e3..5e38ee4 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDataSource.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDataSource.java
@@ -60,6 +60,7 @@ public abstract class AbstractOperationScheduleDataSource<T extends OperationSch
public static final String DESCRIPTION = "description";
public static final String NEXT_FIRE_TIME = "nextFireTime";
public static final String TIMEOUT = "timeout";
+ public static final String JOB_TRIGGER = "jobTrigger";
// job trigger fields
public static final String START_TIME = "startTime";
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDetailsView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDetailsView.java
index e044a9b..d3e2e88 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDetailsView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDetailsView.java
@@ -27,6 +27,7 @@ import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
+import com.google.gwt.core.client.JavaScriptObject;
import com.smartgwt.client.data.DSRequest;
import com.smartgwt.client.data.Record;
import com.smartgwt.client.widgets.Canvas;
@@ -41,6 +42,7 @@ import com.smartgwt.client.widgets.form.fields.events.ChangedHandler;
import com.smartgwt.client.widgets.grid.ListGridRecord;
import com.smartgwt.client.widgets.layout.VLayout;
import org.rhq.core.domain.auth.Subject;
+import org.rhq.core.domain.common.JobTrigger;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
import org.rhq.core.domain.operation.OperationDefinition;
@@ -63,7 +65,7 @@ import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
/**
* @author Ian Springer
*/
-public abstract class AbstractOperationScheduleDetailsView extends AbstractRecordEditor {
+public abstract class AbstractOperationScheduleDetailsView extends AbstractRecordEditor<AbstractOperationScheduleDataSource> {
private static final String FIELD_OPERATION_DESCRIPTION = "operationDescription";
private static final String FIELD_OPERATION_PARAMETERS = "operationParameters";
@@ -151,12 +153,10 @@ public abstract class AbstractOperationScheduleDetailsView extends AbstractRecor
HTMLFlow hr = new HTMLFlow("<p/><hr/><p/>");
contentPane.addMember(hr);
- if (isNewRecord()) {
- this.triggerEditor = new JobTriggerEditor(extendLocatorId("TriggerEditor"));
- contentPane.addMember(this.triggerEditor);
- hr = new HTMLFlow("<p/><hr/><p/>");
- contentPane.addMember(hr);
- }
+ this.triggerEditor = new JobTriggerEditor(extendLocatorId("TriggerEditor"));
+ contentPane.addMember(this.triggerEditor);
+ hr = new HTMLFlow("<p/><hr/><p/>");
+ contentPane.addMember(hr);
this.notesForm = new EnhancedDynamicForm(extendLocatorId("NotesForm"), isReadOnly(),
isNewRecord());
@@ -224,16 +224,22 @@ public abstract class AbstractOperationScheduleDetailsView extends AbstractRecor
@Override
protected void editExistingRecord(Record record) {
- FormItem nextFireTimeItem = this.notesForm.getField(ResourceOperationScheduleDataSource.Field.NEXT_FIRE_TIME);
- nextFireTimeItem.setValue(getForm().getValue(ResourceOperationScheduleDataSource.Field.NEXT_FIRE_TIME));
+ JavaScriptObject jobTriggerJavaScriptObject =
+ (JavaScriptObject) getForm().getValue(AbstractOperationScheduleDataSource.Field.JOB_TRIGGER);
+ Record jobTriggerRecord = new ListGridRecord(jobTriggerJavaScriptObject);
+ JobTrigger jobTrigger = getDataSource().createJobTrigger(jobTriggerRecord);
+ this.triggerEditor.setJobTrigger(jobTrigger);
+
+ FormItem nextFireTimeItem = this.notesForm.getField(AbstractOperationScheduleDataSource.Field.NEXT_FIRE_TIME);
+ nextFireTimeItem.setValue(getForm().getValue(AbstractOperationScheduleDataSource.Field.NEXT_FIRE_TIME));
DurationItem timeoutItem = (DurationItem) this.notesForm.getField(AbstractOperationScheduleDataSource.Field.TIMEOUT);
Object value = getForm().getValue(AbstractOperationScheduleDataSource.Field.TIMEOUT);
Integer integerValue = TypeConversionUtility.toInteger(value);
timeoutItem.setValue(integerValue, UnitType.TIME);
- FormItem notesItem = this.notesForm.getField(ResourceOperationScheduleDataSource.Field.DESCRIPTION);
- notesItem.setValue(getForm().getValue(ResourceOperationScheduleDataSource.Field.DESCRIPTION));
+ FormItem notesItem = this.notesForm.getField(AbstractOperationScheduleDataSource.Field.DESCRIPTION);
+ notesItem.setValue(getForm().getValue(AbstractOperationScheduleDataSource.Field.DESCRIPTION));
super.editExistingRecord(record);
}
@@ -251,21 +257,21 @@ public abstract class AbstractOperationScheduleDetailsView extends AbstractRecor
Record jobTriggerRecord = new ListGridRecord();
Date startTime = this.triggerEditor.getStartTime();
- jobTriggerRecord.setAttribute(ResourceOperationScheduleDataSource.Field.START_TIME, startTime);
+ jobTriggerRecord.setAttribute(AbstractOperationScheduleDataSource.Field.START_TIME, startTime);
Date endTime = this.triggerEditor.getEndTime();
- jobTriggerRecord.setAttribute(ResourceOperationScheduleDataSource.Field.END_TIME, endTime);
+ jobTriggerRecord.setAttribute(AbstractOperationScheduleDataSource.Field.END_TIME, endTime);
Integer repeatCount = this.triggerEditor.getRepeatCount();
- jobTriggerRecord.setAttribute(ResourceOperationScheduleDataSource.Field.REPEAT_COUNT, repeatCount);
+ jobTriggerRecord.setAttribute(AbstractOperationScheduleDataSource.Field.REPEAT_COUNT, repeatCount);
Long repeatInterval = this.triggerEditor.getRepeatInterval();
- jobTriggerRecord.setAttribute(ResourceOperationScheduleDataSource.Field.REPEAT_INTERVAL, repeatInterval);
+ jobTriggerRecord.setAttribute(AbstractOperationScheduleDataSource.Field.REPEAT_INTERVAL, repeatInterval);
String cronExpression = this.triggerEditor.getCronExpression();
- jobTriggerRecord.setAttribute(ResourceOperationScheduleDataSource.Field.CRON_EXPRESSION, cronExpression);
+ jobTriggerRecord.setAttribute(AbstractOperationScheduleDataSource.Field.CRON_EXPRESSION, cronExpression);
- form.setValue("jobTrigger", jobTriggerRecord);
+ form.setValue(AbstractOperationScheduleDataSource.Field.JOB_TRIGGER, jobTriggerRecord);
DurationItem timeoutItem = (DurationItem)this.notesForm.getItem(AbstractOperationScheduleDataSource.Field.TIMEOUT);
form.setValue(AbstractOperationScheduleDataSource.Field.TIMEOUT, timeoutItem.getValueAsLong());
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/TypeConversionUtility.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/TypeConversionUtility.java
index 17e33ec..12eb986 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/TypeConversionUtility.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/TypeConversionUtility.java
@@ -26,9 +26,10 @@ public class TypeConversionUtility {
public static Long toLong(Object object) {
Long longValue;
if (object instanceof String) {
- longValue = Long.valueOf((String)object);
+ longValue = (long)Integer.valueOf((String)object);
} else if (object instanceof Number) {
- longValue = ((Number) object).longValue();
+ // Note: Do *not* use Number.longValue() here, since it causes a GWT exception when in non-hosted mode.
+ longValue = (long)((Number) object).intValue();
} else if (object == null) {
longValue = null;
} else {
13 years, 3 months
[rhq] modules/enterprise
by John Sanda
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/test/AbstractEJB3Test.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
New commits:
commit 6881535b46c18c97ee2b9ba1eec54c92c049cde8
Author: John Sanda <jsanda(a)redhat.com>
Date: Mon Feb 7 17:17:09 2011 -0500
Trying to force the @BeforeSuite method to run before anything else
diff --git a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/test/AbstractEJB3Test.java b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/test/AbstractEJB3Test.java
index 45ea41b..abbe782 100644
--- a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/test/AbstractEJB3Test.java
+++ b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/test/AbstractEJB3Test.java
@@ -64,7 +64,7 @@ import org.rhq.enterprise.server.util.LookupUtil;
*/
public abstract class AbstractEJB3Test extends AssertJUnit {
//@BeforeSuite(groups = {"integration.ejb3","PERF"}) // TODO investigate again
- @BeforeSuite(groups = {"integration.ejb3"})
+ @BeforeSuite(alwaysRun = true)
public static void startupEmbeddedJboss() throws Exception {
// Setting content location to the tmp dir
System.setProperty(ContentSourceManagerBean.FILESYSTEM_PROPERTY, System.getProperty("java.io.tmpdir"));
13 years, 3 months
[rhq] modules/enterprise
by John Sanda
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/test/AbstractEJB3Test.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
New commits:
commit 719848be6079a1ee534eba40bbdaeecae4ef0008
Author: John Sanda <jsanda(a)redhat.com>
Date: Mon Feb 7 15:42:59 2011 -0500
Adding the integration.ejb3 group back to the startEmbeddedJboss method
Trying to resolve test failures on hudson which I think is due to the
order of test execution. I see that tests in the plugin.metadata group
are executing before the startEmbeddedJboss method is called which
causes data source JNDI look ups to fail. The plugin.metadata group
depends on the integration.ejb3 group to ensure that the embedded
container is bootstrapped.
diff --git a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/test/AbstractEJB3Test.java b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/test/AbstractEJB3Test.java
index 0242c65..45ea41b 100644
--- a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/test/AbstractEJB3Test.java
+++ b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/test/AbstractEJB3Test.java
@@ -63,7 +63,8 @@ import org.rhq.enterprise.server.util.LookupUtil;
* @author Greg Hinkle
*/
public abstract class AbstractEJB3Test extends AssertJUnit {
- @BeforeSuite//(groups = {"integration.ejb3","PERF"}) // TODO investigate again
+ //@BeforeSuite(groups = {"integration.ejb3","PERF"}) // TODO investigate again
+ @BeforeSuite(groups = {"integration.ejb3"})
public static void startupEmbeddedJboss() throws Exception {
// Setting content location to the tmp dir
System.setProperty(ContentSourceManagerBean.FILESYSTEM_PROPERTY, System.getProperty("java.io.tmpdir"));
13 years, 3 months
[rhq] 2 commits - modules/enterprise
by John Sanda
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/authz/test/RoleManagerBeanTest.java | 38 ++++++----
1 file changed, 25 insertions(+), 13 deletions(-)
New commits:
commit 4bb37b0f66b888b7a234c2cb3c5937de5f5eb064
Merge: 6872c3e... eed0996...
Author: John Sanda <jsanda(a)redhat.com>
Date: Mon Feb 7 13:37:55 2011 -0500
Merge branch 'master' of ssh://git.fedorahosted.org/git/rhq/rhq
commit 6872c3e8b9feae92478c4e986e9eec85e8e21421
Author: John Sanda <jsanda(a)redhat.com>
Date: Mon Feb 7 13:34:25 2011 -0500
Updated test to be consistent with new role creation logic
Now when a role is created, subjects are associated with the role are
assigned the role. This assignment had to happen separately previously.
I also refactored the assert code to use assertXXX() methods instead of
the assert statement because the assertXXX() methods provide error
reporting out of the box that you do not get with the assert statement.
diff --git a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/authz/test/RoleManagerBeanTest.java b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/authz/test/RoleManagerBeanTest.java
index 03f1b9f..3e900f7 100644
--- a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/authz/test/RoleManagerBeanTest.java
+++ b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/authz/test/RoleManagerBeanTest.java
@@ -218,31 +218,43 @@ public class RoleManagerBeanTest extends AbstractEJB3Test {
getTransactionManager().begin();
try {
- Subject new_subject = new Subject();
- new_subject.setName("role-manager-subject");
- new_subject.setFsystem(false);
+ Subject newSubject1 = new Subject();
+ newSubject1.setName("role-manager-subject");
+ newSubject1.setFsystem(false);
+
+ Subject newSubject2 = new Subject();
+ newSubject2.setName("secondary-role-manager");
+ newSubject2.setFsystem(false);
Role role = new Role("role-manager-role");
role.setFsystem(false);
- role.addSubject(new_subject);
+ role.addSubject(newSubject1);
Subject superuser = subjectManager.getOverlord();
- subjectManager.createSubject(superuser, new_subject);
- createSession(new_subject);
+ subjectManager.createSubject(superuser, newSubject1);
+ createSession(newSubject1);
+
+ subjectManager.createSubject(superuser, newSubject2);
+ createSession(newSubject2);
- assert roleManager.findRolesBySubject(new_subject.getId(), PageControl.getUnlimitedInstance()).size() == 0 : "Role should not be created or assigned yet";
+ assertEquals("Role should not be created or assigned yet", 0,
+ roleManager.findRolesBySubject(newSubject1.getId(), PageControl.getUnlimitedInstance()).size());
role = roleManager.createRole(superuser, role);
- assert roleManager.findRolesBySubject(new_subject.getId(), PageControl.getUnlimitedInstance()).size() == 0 : "Role should not be assigned yet";
+ assertEquals("Role should be assigned at the time the role is created", 1,
+ roleManager.findRolesBySubject(newSubject1.getId(), PageControl.getUnlimitedInstance()).size());
- roleManager.addRolesToSubject(superuser, new_subject.getId(), new int[] { role.getId() });
- assert roleManager.findRolesBySubject(new_subject.getId(), PageControl.getUnlimitedInstance()).size() == 1 : "Role should be assigned";
+ roleManager.addRolesToSubject(superuser, newSubject2.getId(), new int[]{role.getId()});
+ assertEquals("Role should be assigned", 1,
+ roleManager.findRolesBySubject(newSubject2.getId(), PageControl.getUnlimitedInstance()).size());
- roleManager.removeRolesFromSubject(superuser, new_subject.getId(), new int[] { role.getId() });
- assert roleManager.findRolesBySubject(new_subject.getId(), PageControl.getUnlimitedInstance()).size() == 0 : "Role should have been unassigned";
+ roleManager.removeRolesFromSubject(superuser, newSubject1.getId(), new int[] { role.getId() });
+ assertEquals("Role should have been unassigned", 0,
+ roleManager.findRolesBySubject(newSubject1.getId(), PageControl.getUnlimitedInstance()).size());
roleManager.deleteRoles(superuser, new int[] { role.getId() });
- assert !roleManager.findRoles(PageControl.getUnlimitedInstance()).contains(role) : "Role should have been deleted";
+ assertFalse("Roles should have been deleted",
+ roleManager.findRoles(PageControl.getUnlimitedInstance()).contains(role));
} finally {
getTransactionManager().rollback();
}
13 years, 3 months
[rhq] modules/enterprise
by ips
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/DurationItem.java | 14 -
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/EnhancedDynamicForm.java | 3
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/trigger/JobTriggerEditor.java | 123 ++++------
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDetailsView.java | 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/operation/schedule/GroupOperationScheduleDetailsView.java | 22 +
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/TypeConversionUtility.java | 25 +-
6 files changed, 103 insertions(+), 88 deletions(-)
New commits:
commit eed0996e3794c0d81cc549b5d976b69293cfb7bb
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Mon Feb 7 13:31:35 2011 -0500
converted JobTriggerEditor over to using DurationItems for durations; a few bug fixes and improvements to operation schedule views
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/DurationItem.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/DurationItem.java
index e882254..cfa4682 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/DurationItem.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/DurationItem.java
@@ -173,15 +173,15 @@ public class DurationItem extends CanvasItem {
}
private void updateValue() {
- Integer value = calculateValue();
+ Long value = calculateValue();
setValue(value);
}
- private Integer calculateValue() {
+ private Long calculateValue() {
IntegerItem valueItem = (IntegerItem) this.form.getItem(FIELD_VALUE);
Object value = valueItem.getValue();
- Integer integerValue = TypeConversionUtility.toInteger(value);
- Integer convertedValue = null;
+ Long integerValue = TypeConversionUtility.toLong(value);
+ Long convertedValue = null;
if (integerValue != null) {
TimeUnit unit = getInputTimeUnit();
if (unit == null) {
@@ -357,7 +357,11 @@ public class DurationItem extends CanvasItem {
}
public Integer getValueAsInteger() {
- return (Integer) getValue();
+ return TypeConversionUtility.toInteger(getValue());
+ }
+
+ public Long getValueAsLong() {
+ return TypeConversionUtility.toLong(getValue());
}
@Override
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/EnhancedDynamicForm.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/EnhancedDynamicForm.java
index 7f01d38..76ec2e0 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/EnhancedDynamicForm.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/EnhancedDynamicForm.java
@@ -29,6 +29,7 @@ import java.util.List;
import com.smartgwt.client.types.DSOperationType;
import com.smartgwt.client.widgets.form.fields.BooleanItem;
import com.smartgwt.client.widgets.form.fields.CanvasItem;
+import com.smartgwt.client.widgets.form.fields.CheckboxItem;
import com.smartgwt.client.widgets.form.fields.FormItem;
import com.smartgwt.client.widgets.form.fields.HiddenItem;
import com.smartgwt.client.widgets.form.fields.StaticTextItem;
@@ -114,7 +115,7 @@ public class EnhancedDynamicForm extends LocatableDynamicForm {
staticItem.setColSpan(item.getAttribute("colSpan"));
// TODO: Any other fields we should copy? icons?
- if (item instanceof BooleanItem) {
+ if ((item instanceof BooleanItem) || (item instanceof CheckboxItem)) {
LinkedHashMap<String, String> valueMap = new LinkedHashMap<String, String>();
valueMap.put("true", MSG.common_val_yes());
valueMap.put("false", MSG.common_val_no());
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/trigger/JobTriggerEditor.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/trigger/JobTriggerEditor.java
index d2089a8..87d287d 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/trigger/JobTriggerEditor.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/trigger/JobTriggerEditor.java
@@ -24,6 +24,7 @@ import java.util.EnumSet;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
+import java.util.TreeSet;
import com.smartgwt.client.types.Visibility;
import com.smartgwt.client.widgets.HTMLFlow;
@@ -47,7 +48,10 @@ import com.smartgwt.client.widgets.tab.Tab;
import com.smartgwt.client.widgets.tab.TabSet;
import org.rhq.core.domain.common.JobTrigger;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
+import org.rhq.enterprise.gui.coregui.client.components.form.DurationItem;
import org.rhq.enterprise.gui.coregui.client.components.form.EnhancedDynamicForm;
+import org.rhq.enterprise.gui.coregui.client.components.form.TimeUnit;
+import org.rhq.enterprise.gui.coregui.client.components.form.UnitType;
import org.rhq.enterprise.gui.coregui.client.util.FormUtility;
import org.rhq.enterprise.gui.coregui.client.util.message.Message;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm;
@@ -539,20 +543,22 @@ public class JobTriggerEditor extends LocatableVLayout {
}
private DynamicForm createRepeatForm() {
- final DynamicForm repeatForm = new DynamicForm();
+ final EnhancedDynamicForm repeatForm = new EnhancedDynamicForm(extendLocatorId("RepeatForm"));
repeatForm.setNumCols(6);
repeatForm.setColWidths(140, 130, 130, 130, 130);
- TextItem repeatIntervalItem = new TextItem(FIELD_REPEAT_INTERVAL, "Run now and every");
+ TreeSet<TimeUnit> supportedUnits = new TreeSet<TimeUnit>();
+ supportedUnits.add(TimeUnit.SECONDS);
+ supportedUnits.add(TimeUnit.MINUTES);
+ supportedUnits.add(TimeUnit.HOURS);
+ supportedUnits.add(TimeUnit.DAYS);
+ supportedUnits.add(TimeUnit.WEEKS);
+ supportedUnits.add(TimeUnit.MONTHS);
+ supportedUnits.add(TimeUnit.YEARS);
+ DurationItem repeatIntervalItem = new DurationItem(FIELD_REPEAT_INTERVAL, "Run now and every",
+ supportedUnits, false, isReadOnly(), repeatForm);
repeatIntervalItem.setRequired(true);
-
- FormUtility.addContextualHelp(repeatIntervalItem,
- "N UNITS (where N is a positive integer and UNITS is \"seconds\", \"minutes\", \"hours\", \"days\", \"weeks\", \"months\", \"quarters\", or \"years\", e.g. \"30 seconds\" or \"6 weeks\")");
-
- // Configure validation.
- RegExpValidator repeatIntervalValidator = new RegExpValidator("[1-9][0-9]*[ ]*(seconds|s|minutes|m|hours|h|days|d|weeks|w|months|M|quarters|q|years|y)");
- repeatIntervalItem.setValidators(repeatIntervalValidator);
- repeatIntervalItem.setValidateOnExit(true);
+ repeatIntervalItem.setContextualHelp("how often the operation should be executed");
RadioGroupItem recurrenceTypeItem = new RadioGroupItem(FIELD_RECURRENCE_TYPE);
recurrenceTypeItem.setRequired(true);
@@ -563,17 +569,19 @@ public class JobTriggerEditor extends LocatableVLayout {
recurrenceTypeValueMap.put("indefinitely", "Indefinitely");
recurrenceTypeItem.setValueMap(recurrenceTypeValueMap);
- final TextItem repeatDurationItem = new TextItem(FIELD_REPEAT_DURATION);
+ supportedUnits = new TreeSet<TimeUnit>();
+ supportedUnits.add(TimeUnit.SECONDS);
+ supportedUnits.add(TimeUnit.MINUTES);
+ supportedUnits.add(TimeUnit.HOURS);
+ supportedUnits.add(TimeUnit.DAYS);
+ supportedUnits.add(TimeUnit.WEEKS);
+ supportedUnits.add(TimeUnit.MONTHS);
+ supportedUnits.add(TimeUnit.YEARS);
+ final DurationItem repeatDurationItem = new DurationItem(FIELD_REPEAT_DURATION, null,
+ supportedUnits, true, isReadOnly(), repeatForm);
repeatDurationItem.setShowTitle(false);
repeatDurationItem.setVisible(false);
-
- FormUtility.addContextualHelp(repeatDurationItem,
- "N UNITS (where N is a positive integer and UNITS is \"times\", \"seconds\", \"minutes\", \"hours\", \"days\", \"weeks\", \"months\", \"quarters\", or \"years\", e.g. \"30 seconds\" or \"5 repetitions\")");
-
- // Configure validation.
- RegExpValidator repeatDurationValidator = new RegExpValidator("[1-9][0-9]*[ ]*(times|repetitions|seconds|s|minutes|m|hours|h|days|d|weeks|w|months|M|quarters|q|years|y)");
- repeatDurationItem.setValidators(repeatDurationValidator);
- repeatDurationItem.setValidateOnExit(true);
+ repeatDurationItem.setContextualHelp("keep running this operation this many times or until this amount of time has elapsed");
final DateTimeItem endTimeItem = createDateTimeItem(FIELD_END_TIME);
endTimeItem.setShowTitle(false);
@@ -618,7 +626,7 @@ public class JobTriggerEditor extends LocatableVLayout {
}
private DynamicForm createLaterForm() {
- final DynamicForm laterForm = new DynamicForm();
+ final EnhancedDynamicForm laterForm = new EnhancedDynamicForm(extendLocatorId("LaterForm"));
laterForm.setNumCols(4);
laterForm.setColWidths(140, 130, 130);
@@ -630,17 +638,19 @@ public class JobTriggerEditor extends LocatableVLayout {
final DateTimeItem startTimeItem = createDateTimeItem(FIELD_START_TIME);
- final TextItem startDelayItem = new TextItem(FIELD_START_DELAY);
+ TreeSet<TimeUnit> supportedUnits = new TreeSet<TimeUnit>();
+ supportedUnits.add(TimeUnit.SECONDS);
+ supportedUnits.add(TimeUnit.MINUTES);
+ supportedUnits.add(TimeUnit.HOURS);
+ supportedUnits.add(TimeUnit.DAYS);
+ supportedUnits.add(TimeUnit.WEEKS);
+ supportedUnits.add(TimeUnit.MONTHS);
+ supportedUnits.add(TimeUnit.YEARS);
+ final DurationItem startDelayItem = new DurationItem(FIELD_START_DELAY, null,
+ supportedUnits, false, isReadOnly(), laterForm);
startDelayItem.setShowTitle(false);
startDelayItem.setVisible(false);
-
- FormUtility.addContextualHelp(startDelayItem,
- "N UNITS (where N is a positive integer and UNITS is \"seconds\", \"minutes\", \"hours\", \"days\", \"weeks\", \"months\", \"quarters\", or \"years\", e.g. \"30 seconds\" or \"6 weeks\")");
-
- // Configure validation.
- RegExpValidator startDelayValidator = new RegExpValidator("[1-9][0-9]*([ ]+(seconds|minutes|hours|days|weeks|months|quarters|years)|(s|m|h|d|w|M|q|y))");
- startDelayItem.setValidators(startDelayValidator);
- startDelayItem.setValidateOnExit(true);
+ startDelayItem.setContextualHelp("start executing the operation after this amount of time has elapsed");
SpacerItem spacerItem = new SpacerItem();
@@ -679,10 +689,9 @@ public class JobTriggerEditor extends LocatableVLayout {
public Date getStartTime() {
Date startTime;
if (this.isStartDelay) {
- // start delay - computer start time
- String startDelay = this.laterForm.getValueAsString(FIELD_START_DELAY);
- Duration startDelayDuration = parseDurationString(startDelay);
- long delay = startDelayDuration.count * startDelayDuration.multiplier;
+ // start delay - compute start time
+ DurationItem startDelayItem = (DurationItem) this.laterForm.getItem(FIELD_START_DELAY);
+ long delay = startDelayItem.getValueAsLong();
long startTimestamp = System.currentTimeMillis() + delay;
startTime = new Date(startTimestamp);
} else {
@@ -696,9 +705,8 @@ public class JobTriggerEditor extends LocatableVLayout {
public Long getRepeatInterval() {
Long intervalMillis;
if (this.isRecurring) {
- String repeatInterval = this.repeatForm.getValueAsString(FIELD_REPEAT_INTERVAL);
- Duration intervalDuration = parseDurationString(repeatInterval);
- intervalMillis = intervalDuration.count * intervalDuration.multiplier;
+ DurationItem repeatInterval = (DurationItem) this.repeatForm.getItem(FIELD_REPEAT_INTERVAL);
+ intervalMillis = repeatInterval.getValueAsLong();
} else {
intervalMillis = null;
}
@@ -709,11 +717,10 @@ public class JobTriggerEditor extends LocatableVLayout {
Integer repetitions;
if (this.isRecurring) {
if (this.isRepeatDuration) {
- String repeatDurationString = this.repeatForm.getValueAsString(FIELD_REPEAT_DURATION);
- Duration repeatDuration = parseDurationString(repeatDurationString);
- if (repeatDuration.multiplier == null) {
+ DurationItem repeatDurationItem = (DurationItem) this.repeatForm.getItem(FIELD_REPEAT_DURATION);
+ if (repeatDurationItem.getUnitType() == UnitType.ITERATIONS) {
// n repetitions
- repetitions = repeatDuration.count;
+ repetitions = repeatDurationItem.getValueAsInteger();
} else {
// n units of time - compute end time
repetitions = null;
@@ -731,14 +738,13 @@ public class JobTriggerEditor extends LocatableVLayout {
Date endTime;
if (this.isRecurring) {
if (this.isRepeatDuration) {
- String repeatDurationString = this.repeatForm.getValueAsString(FIELD_REPEAT_DURATION);
- Duration repeatDuration = parseDurationString(repeatDurationString);
- if (repeatDuration.multiplier == null) {
+ DurationItem repeatDurationItem = (DurationItem) this.repeatForm.getItem(FIELD_REPEAT_DURATION);
+ if (repeatDurationItem.getUnitType() == UnitType.ITERATIONS) {
// n repetitions
endTime = null;
} else {
// n units of time - compute end time
- long delay = repeatDuration.count * repeatDuration.multiplier;
+ long delay = repeatDurationItem.getValueAsLong();
long endTimestamp = System.currentTimeMillis() + delay;
endTime = new Date(endTimestamp);
}
@@ -799,35 +805,6 @@ public class JobTriggerEditor extends LocatableVLayout {
return isValid;
}
- private static Duration parseDurationString(String durationString) {
- String countString = "";
- int index;
- for (index = 0; index < durationString.length(); index++) {
- char c = durationString.charAt(index);
- if (Character.isDigit(c)) {
- countString += c;
- } else {
- break;
- }
- }
- int count = Integer.valueOf(countString);
-
- // Skip optional whitespace.
- while (index < durationString.length()) {
- char c = durationString.charAt(index);
- if (c != ' ') {
- break;
- }
- index++;
- }
-
- String units = durationString.substring(index);
- Long multiplier = UNITS_TO_MILLIS_MULTIPLIER_MAP.get(units.toLowerCase());
-
- return new Duration(count, multiplier);
- }
-
-
private static DateTimeItem createDateTimeItem(String name) {
final DateTimeItem dateTimeItem = new DateTimeItem(name);
dateTimeItem.setEnforceDate(true);
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDetailsView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDetailsView.java
index 2801c7a..e044a9b 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDetailsView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDetailsView.java
@@ -268,7 +268,7 @@ public abstract class AbstractOperationScheduleDetailsView extends AbstractRecor
form.setValue("jobTrigger", jobTriggerRecord);
DurationItem timeoutItem = (DurationItem)this.notesForm.getItem(AbstractOperationScheduleDataSource.Field.TIMEOUT);
- form.setValue(AbstractOperationScheduleDataSource.Field.TIMEOUT, timeoutItem.getValueAsInteger());
+ form.setValue(AbstractOperationScheduleDataSource.Field.TIMEOUT, timeoutItem.getValueAsLong());
FormItem notesItem = this.notesForm.getField(AbstractOperationScheduleDataSource.Field.DESCRIPTION);
form.setValue(AbstractOperationScheduleDataSource.Field.DESCRIPTION, (String)notesItem.getValue());
@@ -327,7 +327,7 @@ public abstract class AbstractOperationScheduleDetailsView extends AbstractRecor
}
private String getSelectedOperationName() {
- FormItem operationNameItem = getForm().getField(ResourceOperationScheduleDataSource.Field.OPERATION_NAME);
+ FormItem operationNameItem = getForm().getField(AbstractOperationScheduleDataSource.Field.OPERATION_NAME);
return (String)operationNameItem.getValue();
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/operation/schedule/GroupOperationScheduleDetailsView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/operation/schedule/GroupOperationScheduleDetailsView.java
index 23db066..11e802f 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/operation/schedule/GroupOperationScheduleDetailsView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/operation/schedule/GroupOperationScheduleDetailsView.java
@@ -8,6 +8,7 @@ import com.smartgwt.client.data.Record;
import com.smartgwt.client.widgets.HTMLFlow;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.fields.CheckboxItem;
+import com.smartgwt.client.widgets.form.fields.FormItem;
import com.smartgwt.client.widgets.form.fields.RadioGroupItem;
import com.smartgwt.client.widgets.form.fields.events.ChangedEvent;
import com.smartgwt.client.widgets.form.fields.events.ChangedHandler;
@@ -17,9 +18,11 @@ import com.smartgwt.client.widgets.layout.VLayout;
import org.rhq.core.domain.resource.ResourceCategory;
import org.rhq.core.domain.resource.group.composite.ResourceGroupComposite;
import org.rhq.enterprise.gui.coregui.client.ImageManager;
+import org.rhq.enterprise.gui.coregui.client.components.form.EnhancedDynamicForm;
import org.rhq.enterprise.gui.coregui.client.components.sorter.ReorderableList;
import org.rhq.enterprise.gui.coregui.client.inventory.common.detail.operation.schedule.AbstractOperationScheduleDetailsView;
import org.rhq.enterprise.gui.coregui.client.inventory.resource.ResourceDatasource;
+import org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.operation.schedule.ResourceOperationScheduleDataSource;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
import java.util.LinkedHashMap;
@@ -31,7 +34,7 @@ public class GroupOperationScheduleDetailsView extends AbstractOperationSchedule
private ResourceGroupComposite groupComposite;
private ListGridRecord[] memberResourceRecords;
- private DynamicForm executionModeForm;
+ private EnhancedDynamicForm executionModeForm;
public GroupOperationScheduleDetailsView(String locatorId, ResourceGroupComposite groupComposite, int scheduleId) {
super(locatorId, new GroupOperationScheduleDataSource(groupComposite),
@@ -65,6 +68,8 @@ public class GroupOperationScheduleDetailsView extends AbstractOperationSchedule
GroupOperationScheduleDetailsView.super.init(isReadOnly);
}
});
+ } else {
+ super.init(isReadOnly);
}
}
@@ -75,7 +80,7 @@ public class GroupOperationScheduleDetailsView extends AbstractOperationSchedule
HTMLFlow hr = new HTMLFlow("<p/><hr/><p/>");
contentPane.addMember(hr);
- this.executionModeForm = new DynamicForm();
+ this.executionModeForm = new EnhancedDynamicForm(extendLocatorId("ExecutionModeForm"), isReadOnly());
this.executionModeForm.setNumCols(2);
this.executionModeForm.setColWidths("140", "*");
@@ -124,10 +129,23 @@ public class GroupOperationScheduleDetailsView extends AbstractOperationSchedule
}
@Override
+ protected void editExistingRecord(Record record) {
+ // TODO: execution order
+
+ FormItem haltOnFailureItem = this.executionModeForm.getField(GroupOperationScheduleDataSource.Field.HALT_ON_FAILURE);
+ haltOnFailureItem.setValue(getForm().getValue(GroupOperationScheduleDataSource.Field.HALT_ON_FAILURE));
+
+ super.editExistingRecord(record);
+ }
+
+ @Override
protected void save(DSRequest requestProperties) {
+ // TODO: execution order
+
Boolean haltOnFailure = (Boolean) this.executionModeForm.getValue(GroupOperationScheduleDataSource.Field.HALT_ON_FAILURE);
getForm().setValue(GroupOperationScheduleDataSource.Field.HALT_ON_FAILURE, haltOnFailure);
super.save(requestProperties);
}
+
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/TypeConversionUtility.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/TypeConversionUtility.java
index ac6d6ae..17e33ec 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/TypeConversionUtility.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/TypeConversionUtility.java
@@ -9,18 +9,33 @@ public class TypeConversionUtility {
}
public static Integer toInteger(Object object) {
- Integer integer;
+ Integer integerValue;
if (object instanceof String) {
- integer = Integer.valueOf((String)object);
+ integerValue = Integer.valueOf((String)object);
} else if (object instanceof Number) {
- integer = ((Number) object).intValue();
+ integerValue = ((Number) object).intValue();
} else if (object == null) {
- integer = null;
+ integerValue = null;
} else {
throw new IllegalArgumentException("Failed to convert " + object.getClass().getName() + " [" + object
+ "] to an Integer.");
}
- return integer;
+ return integerValue;
+ }
+
+ public static Long toLong(Object object) {
+ Long longValue;
+ if (object instanceof String) {
+ longValue = Long.valueOf((String)object);
+ } else if (object instanceof Number) {
+ longValue = ((Number) object).longValue();
+ } else if (object == null) {
+ longValue = null;
+ } else {
+ throw new IllegalArgumentException("Failed to convert " + object.getClass().getName() + " [" + object
+ + "] to a Long.");
+ }
+ return longValue;
}
}
13 years, 3 months
[rhq] modules/enterprise
by John Sanda
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/ContentMetadataManagerBeanTest.java | 2 +-
modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/ContentMetadataManagerBeanTest/plugin_v1.xml | 6 ++++--
modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/ContentMetadataManagerBeanTest/plugin_v2.xml | 6 ++++--
3 files changed, 9 insertions(+), 5 deletions(-)
New commits:
commit 065ddf5246ce88dc2e652ed695efd1a2daf7f4da
Author: John Sanda <jsanda(a)redhat.com>
Date: Mon Feb 7 10:28:51 2011 -0500
Fixing failing test in ContentMetadataManagerBean
The test started failing as a result of the fix for BZ 669567. It turns
out that plugin descriptors were wrong. When a resource type declares a
bundle type, it should not have any other content definitions.
diff --git a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/ContentMetadataManagerBeanTest.java b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/ContentMetadataManagerBeanTest.java
index cda3f32..07d320e 100644
--- a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/ContentMetadataManagerBeanTest.java
+++ b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/ContentMetadataManagerBeanTest.java
@@ -122,7 +122,7 @@ public class ContentMetadataManagerBeanTest extends MetadataBeanTest {
@Test(groups = {"plugin.metadata", "Content.UpgradePlugin"}, dependsOnMethods = {"upgradeContentPlugin"})
public void updateBundleType() {
- ResourceType resourceType = loadResourceTypeWithBundleType("ContentServer",
+ ResourceType resourceType = loadResourceTypeWithBundleType("ContentServer7",
"ContentMetadataManagerBeanTestPlugin");
BundleType bundleType = resourceType.getBundleType();
diff --git a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/ContentMetadataManagerBeanTest/plugin_v1.xml b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/ContentMetadataManagerBeanTest/plugin_v1.xml
index e82adde..79f9296 100644
--- a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/ContentMetadataManagerBeanTest/plugin_v1.xml
+++ b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/ContentMetadataManagerBeanTest/plugin_v1.xml
@@ -5,8 +5,6 @@
xmlns="urn:xmlns:rhq-plugin"
xmlns:c="urn:xmlns:rhq-configuration">
<server name="ContentServer">
- <bundle type="ContentServer.Bundle.1"/>
-
<content name="ContentServer.Content.1" category="deployable"/>
</server>
@@ -40,4 +38,8 @@
</server>
<server name="ContentServer6"/>
+
+ <server name="ContentServer7">
+ <bundle type="ContentServer.Bundle.1"/>
+ </server>
</plugin>
\ No newline at end of file
diff --git a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/ContentMetadataManagerBeanTest/plugin_v2.xml b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/ContentMetadataManagerBeanTest/plugin_v2.xml
index 66a2e39..f0cd7b8 100644
--- a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/ContentMetadataManagerBeanTest/plugin_v2.xml
+++ b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/ContentMetadataManagerBeanTest/plugin_v2.xml
@@ -5,8 +5,6 @@
xmlns="urn:xmlns:rhq-plugin"
xmlns:c="urn:xmlns:rhq-configuration">
<server name="ContentServer">
- <bundle type="ContentServer.Bundle.2"/>
-
<content name="ContentServer.Content.1" category="deployable">
<configuration>
<c:simple-property name="version"/>
@@ -44,4 +42,8 @@
<server name="ContentServer6">
<bundle type="ContentServer6.Bundle.1"/>
</server>
+
+ <server name="ContentServer7">
+ <bundle type="ContentServer.Bundle.2"/>
+ </server>
</plugin>
\ No newline at end of file
13 years, 3 months
[rhq] 3 commits - etc/standalone-pc modules/core modules/helpers
by Heiko W. Rupp
etc/standalone-pc/README.txt | 2
modules/core/dbutils/src/main/java/org/rhq/core/db/DatabaseTypeFactory.java | 2
modules/core/dbutils/src/main/java/org/rhq/core/db/Postgresql91DatabaseType.java | 46 ++++++++++
modules/helpers/pluginGen/pom.xml | 34 +++----
4 files changed, 67 insertions(+), 17 deletions(-)
New commits:
commit 87cd5d6874732b0c6b487a4f4686d072acfccd74
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon Feb 7 13:56:45 2011 +0100
Allow to detect postgres 9.1
diff --git a/modules/core/dbutils/src/main/java/org/rhq/core/db/DatabaseTypeFactory.java b/modules/core/dbutils/src/main/java/org/rhq/core/db/DatabaseTypeFactory.java
index ef66a51..d3f4035 100644
--- a/modules/core/dbutils/src/main/java/org/rhq/core/db/DatabaseTypeFactory.java
+++ b/modules/core/dbutils/src/main/java/org/rhq/core/db/DatabaseTypeFactory.java
@@ -146,6 +146,8 @@ public class DatabaseTypeFactory {
if (db_name.indexOf("postgresql") != -1) {
if (db_version.startsWith("7.")) {
database_type_class = Postgresql7DatabaseType.class;
+ } else if (db_version.startsWith("9.1")) {
+ database_type_class = Postgresql91DatabaseType.class;
} else if (db_version.startsWith("9.0")) {
database_type_class = Postgresql90DatabaseType.class;
} else if (db_version.startsWith("8.4")) {
diff --git a/modules/core/dbutils/src/main/java/org/rhq/core/db/Postgresql91DatabaseType.java b/modules/core/dbutils/src/main/java/org/rhq/core/db/Postgresql91DatabaseType.java
new file mode 100644
index 0000000..d4f97cc
--- /dev/null
+++ b/modules/core/dbutils/src/main/java/org/rhq/core/db/Postgresql91DatabaseType.java
@@ -0,0 +1,46 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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 as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+package org.rhq.core.db;
+
+/**
+ * Postgres 9.1 database which extends the Postgres 8.4 database.
+ * It is important to extend 8.3+ and not any previous version as the
+ * code will enable async commit in some place for instanceof 8.3
+ *
+ * Postgres 9.1 brings WAL-less tables.
+ *
+ * @author Heiko W. Rupp
+ */
+public class Postgresql91DatabaseType extends Postgresql90DatabaseType {
+ /**
+ * @see org.rhq.core.db.DatabaseType#getName()
+ */
+ @Override
+ public String getName() {
+ return PostgresqlDatabaseType.VENDOR_NAME + "9.1";
+ }
+
+ /**
+ * @see org.rhq.core.db.DatabaseType#getVersion()
+ */
+ @Override
+ public String getVersion() {
+ return "9.1";
+ }
+}
\ No newline at end of file
commit a84e8d9ed281349679f01cc30a9ec4d9f906bcbd
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon Feb 7 11:51:03 2011 +0100
Adjust version of the dependency.
diff --git a/modules/helpers/pluginGen/pom.xml b/modules/helpers/pluginGen/pom.xml
index 462e550..fd6a367 100644
--- a/modules/helpers/pluginGen/pom.xml
+++ b/modules/helpers/pluginGen/pom.xml
@@ -36,7 +36,7 @@
</configuration>
</plugin>
- <plugin>
+ <plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>2.2</version>
<configuration>
@@ -96,10 +96,10 @@
<dependency>
<groupId>org.rhq.helpers</groupId>
<artifactId>rhq-pluginAnnotations</artifactId>
- <version>3.0.1</version>
+ <version>3.0.2-SNAPSHOT</version>
</dependency>
</dependencies>
-
+
<profiles>
<profile>
<id>cobertura</id>
@@ -114,22 +114,22 @@
<dependency>
<groupId>net.sourceforge.cobertura</groupId>
<artifactId>cobertura</artifactId>
- <version>1.9.4.1</version>
+ <version>1.9.4.1</version>
</dependency>
</dependencies>
- <executions>
- <execution>
+ <executions>
+ <execution>
<id>cobertura-instrument</id>
<phase>pre-integration-test</phase>
- <configuration>
- <tasks>
+ <configuration>
+ <tasks>
<!-- prepare directory structure for cobertura-->
- <mkdir dir="target/cobertura" />
+ <mkdir dir="target/cobertura" />
<mkdir dir="target/cobertura/backup"/>
<!-- backup all classes so that we can instrument the original classes-->
<copy toDir="target/cobertura/backup" verbose="true" overwrite="true">
<fileset dir="target/classes">
- <include name="**/*.class" />
+ <include name="**/*.class" />
</fileset>
</copy>
<!-- create a properties file and save there location of cobertura data file-->
@@ -138,7 +138,7 @@
<taskdef classpathref="maven.plugin.classpath" resource="tasks.properties" />
<!-- instrument all classes in target/classes directory -->
<cobertura-instrument datafile="${project.build.directory}/cobertura/cobertura.ser" todir="${project.build.directory}/classes">
- <fileset dir="${project.build.directory}/classes">
+ <fileset dir="${project.build.directory}/classes">
<include name="**/*.class"/>
</fileset>
</cobertura-instrument>
@@ -147,7 +147,7 @@
<goals>
<goal>run</goal>
</goals>
- </execution>
+ </execution>
<execution>
<id>cobertura-report</id>
<phase>post-integration-test</phase>
@@ -160,7 +160,7 @@
<!-- restore classes from backup folder to classes folder -->
<copy toDir="target/classes" verbose="true" overwrite="true">
<fileset dir="target/cobertura/backup">
- <include name="**/*.class" />
+ <include name="**/*.class" />
</fileset>
</copy>
<!-- delete backup folder-->
@@ -178,12 +178,12 @@
<goals>
<goal>run</goal>
</goals>
- </execution>
- </executions>
- </plugin>
+ </execution>
+ </executions>
+ </plugin>
</plugins>
</build>
- </profile>
+ </profile>
</profiles>
</project>
commit ac7d23865ef06f7a46466f2ab80d41aac496d9f9
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon Feb 7 09:52:27 2011 +0100
Add a link to the video
diff --git a/etc/standalone-pc/README.txt b/etc/standalone-pc/README.txt
index fe6f07e..b940187 100644
--- a/etc/standalone-pc/README.txt
+++ b/etc/standalone-pc/README.txt
@@ -26,3 +26,5 @@ file is expected to contain a set of commands that are used as input ( "script m
It is possible to start a line with a hash mark (#) which means that this is a comment line.
+Also have a look at a video that shows how to use the standalone container:
+http://vimeo.com/18624567
13 years, 3 months
[rhq] modules/enterprise
by mazz
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ResourceOperationNotificationSenderForm.java | 27 +++++++---
1 file changed, 20 insertions(+), 7 deletions(-)
New commits:
commit 7ce286cad9390588c1bfe405a51bc82ab98219e0
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Sat Feb 5 02:20:29 2011 -0500
smartgwt doesn't seem to like this map anymore - wrap it in a non-collection pojo so smartgwt doesn't try to process the map when storing in attribute.
this possibly got broken when moving from smartgwt 2.2 to 2.4
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ResourceOperationNotificationSenderForm.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ResourceOperationNotificationSenderForm.java
index 6d2f8f6..cdec69f 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ResourceOperationNotificationSenderForm.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ResourceOperationNotificationSenderForm.java
@@ -378,8 +378,8 @@ public class ResourceOperationNotificationSenderForm extends AbstractNotificatio
// there is a attribute on the select item that is a map<int,def> of all ops in the drop down list.
// if there is a non-empty map (i.e. we know what ops are available) we need to show the arguments.
// if there are no parameters needed for this operation, null out the extra config
- LinkedHashMap<Integer, OperationDefinition> ops = (LinkedHashMap<Integer, OperationDefinition>) operationSelectItem
- .getAttributeAsObject(OPERATION_DEFS_ATTRIBUTE);
+ LinkedHashMap<Integer, OperationDefinition> ops = ((MapWrapper) operationSelectItem
+ .getAttributeAsObject(OPERATION_DEFS_ATTRIBUTE)).getMap();
if (ops == null || ops.isEmpty()) {
// why did this happen? there are no op defs so we should not be able to see any drop down menu anyway
hideOperationDropDownMenu();
@@ -446,7 +446,7 @@ public class ResourceOperationNotificationSenderForm extends AbstractNotificatio
opDefs.put(def.getId(), def);
valueMap.put(String.valueOf(def.getId()), def.getDisplayName());
}
- operationSelectItem.setAttribute(OPERATION_DEFS_ATTRIBUTE, (Object) opDefs);
+ operationSelectItem.setAttribute(OPERATION_DEFS_ATTRIBUTE, (Object) new MapWrapper(opDefs));
operationSelectItem.setValueMap(valueMap);
if (selectedOpId != null && selectedOpId > 0 && opDefs.containsKey(selectedOpId)) {
operationSelectItem.setValue(String.valueOf(selectedOpId));
@@ -513,7 +513,7 @@ public class ResourceOperationNotificationSenderForm extends AbstractNotificatio
private void hideOperationDropDownMenu() {
LinkedHashMap<Integer, OperationDefinition> ops = new LinkedHashMap<Integer, OperationDefinition>(0);
LinkedHashMap<String, String> valueMap = new LinkedHashMap<String, String>(0);
- operationSelectItem.setAttribute(OPERATION_DEFS_ATTRIBUTE, (Object) ops);
+ operationSelectItem.setAttribute(OPERATION_DEFS_ATTRIBUTE, (Object) new MapWrapper(ops));
operationSelectItem.setValueMap(valueMap);
operationSelectItem.hide();
hideOperationArguments();
@@ -639,7 +639,6 @@ public class ResourceOperationNotificationSenderForm extends AbstractNotificatio
this.idItem = idItem;
}
- @SuppressWarnings("unchecked")
@Override
protected boolean condition(Object value) {
Integer id = Integer.valueOf(idItem.getAttributeAsInt(RESOURCE_ID_ATTRIBUTE));
@@ -647,8 +646,8 @@ public class ResourceOperationNotificationSenderForm extends AbstractNotificatio
if (!valid) {
setErrorMessage(MSG.view_alert_definition_notification_operation_editor_specific_pick_error_invalid());
} else {
- LinkedHashMap<Integer, OperationDefinition> ops = (LinkedHashMap<Integer, OperationDefinition>) operationSelectItem
- .getAttributeAsObject(OPERATION_DEFS_ATTRIBUTE);
+ LinkedHashMap<Integer, OperationDefinition> ops = ((MapWrapper) operationSelectItem
+ .getAttributeAsObject(OPERATION_DEFS_ATTRIBUTE)).getMap();
if (ops == null || ops.isEmpty()) {
valid = false;
setErrorMessage(MSG
@@ -658,4 +657,18 @@ public class ResourceOperationNotificationSenderForm extends AbstractNotificatio
return valid;
}
}
+
+ // We do not want smargwt to see we are storing our map into an attribute because it barfs on our key/value pairs
+ // so instead we have to wrap it in a non-Map POJO Object so smartgwt just handles it as a java.lang.Object.
+ private class MapWrapper {
+ private LinkedHashMap<Integer, OperationDefinition> map;
+
+ private MapWrapper(LinkedHashMap<Integer, OperationDefinition> map) {
+ this.map = map;
+ }
+
+ private LinkedHashMap<Integer, OperationDefinition> getMap() {
+ return this.map;
+ }
+ }
}
13 years, 3 months
[rhq] modules/enterprise
by Simeon Pinder
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/SubjectGWTServiceImpl.java | 23 ----------
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/auth/SubjectManagerBean.java | 18 -------
2 files changed, 41 deletions(-)
New commits:
commit 9860ddb26019dd9bc3d669e44b2c62adc25aa484
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Fri Feb 4 17:43:26 2011 -0500
cleaning up comments.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/SubjectGWTServiceImpl.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/SubjectGWTServiceImpl.java
index 17423f5..2943b4a 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/SubjectGWTServiceImpl.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/SubjectGWTServiceImpl.java
@@ -109,29 +109,6 @@ public class SubjectGWTServiceImpl extends AbstractGWTServiceImpl implements Sub
//no permissions check as embedded in the SLSB call.
try {
Subject processedSubject = subjectManager.processSubjectForLdap(subjectToModify, password);
- //if sessionId has changed then need to refresh the WebUser
- // if (subjectToModify.getSessionId() != processedSubject.getSessionId()) {
- // HttpServletRequest request = requestReference;
- // if ((request != null) && (request.getSession() != null)) {
- // HttpSession session = request.getSession();
- //
- // // //move this to the sessionAccessServlet
- // // WebUser webUser = new WebUser(processedSubject, false);
- // // session.invalidate();
- // // session = request.getSession(true);
- // // SessionUtils.setWebUser(session, webUser);
- // // // look up the user's permissions
- // // Set<Permission> all_permissions = LookupUtil.getAuthorizationManager()
- // // .getExplicitGlobalPermissions(processedSubject);
- // //
- // // Map<String, Boolean> userGlobalPermissionsMap = new HashMap<String, Boolean>();
- // // for (Permission permission : all_permissions) {
- // // userGlobalPermissionsMap.put(permission.toString(), Boolean.TRUE);
- // // }
- // // //load all session attributes
- // // session.setAttribute(Constants.USER_OPERATIONS_ATTR, userGlobalPermissionsMap);
- // }
- // }
return SerialUtility.prepare(processedSubject, "SubjectManager.processSubjectForLdap");
} catch (LoginException e) {
throw new RuntimeException("LoginException: " + e.getMessage());
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/auth/SubjectManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/auth/SubjectManagerBean.java
index aa657ad..89ad056 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/auth/SubjectManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/auth/SubjectManagerBean.java
@@ -505,24 +505,6 @@ public class SubjectManagerBean implements SubjectManagerLocal, SubjectManagerRe
Configuration newUserConfig = new Configuration();
subject.setUserConfiguration(newUserConfig);
}
- // //either way need to refresh the WebUser
- // if ((request != null) && (request.getSession() != null)) {
- // HttpSession session = request.getSession();
- // WebUser webUser = new WebUser(subject, false);
- // session.invalidate();
- // session = request.getSession(true);
- // SessionUtils.setWebUser(session, webUser);
- // // look up the user's permissions
- // Set<Permission> all_permissions = LookupUtil.getAuthorizationManager()
- // .getExplicitGlobalPermissions(subject);
- //
- // Map<String, Boolean> userGlobalPermissionsMap = new HashMap<String, Boolean>();
- // for (Permission permission : all_permissions) {
- // userGlobalPermissionsMap.put(permission.toString(), Boolean.TRUE);
- // }
- // //load all session attributes
- // session.setAttribute(Constants.USER_OPERATIONS_ATTR, userGlobalPermissionsMap);
- // }
}
//Subject.id guaranteed to be > 0 then iii)authorization updates for ldap groups necessary
13 years, 3 months