modules/core/domain/src/main/java/org/rhq/core/domain/authz/Role.java | 20 - modules/core/domain/src/main/java/org/rhq/core/domain/common/Trigger.java | 21 + modules/core/domain/src/main/java/org/rhq/core/domain/operation/bean/GroupOperationSchedule.java | 98 ++++++ modules/core/domain/src/main/java/org/rhq/core/domain/operation/bean/OperationSchedule.java | 154 ++++++++++ modules/core/domain/src/main/java/org/rhq/core/domain/operation/bean/ResourceOperationSchedule.java | 56 +++ modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesDataSource.java | 2 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/OperationGWTServiceImpl.java | 2 modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/model/OperationParameters.java | 6 modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/schedule/OperationScheduleDetailsUIBean.java | 2 modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/schedule/OperationScheduleUIBean.java | 4 modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/schedule/group/ResourceGroupOperationScheduleDetailsUIBean.java | 4 modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/schedule/group/ResourceGroupOperationScheduleUIBean.java | 2 modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/schedule/resource/ResourceOperationScheduleDetailsUIBean.java | 2 modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/schedule/resource/ResourceOperationScheduleUIBean.java | 2 modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/proxy/ResourceClientProxy.java | 2 modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/ScriptUtil.java | 2 modules/enterprise/remoting/cli/src/test/java/org/rhq/enterprise/client/ClientMainTest.java | 34 -- modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/authz/RoleManagerBean.java | 12 modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/GroupOperationJob.java | 2 modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/GroupOperationSchedule.java | 95 ------ modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationJob.java | 1 modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationManagerBean.java | 2 modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationManagerLocal.java | 2 modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationManagerRemote.java | 2 modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationSchedule.java | 154 ---------- modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/ResourceOperationJob.java | 1 modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/ResourceOperationSchedule.java | 53 --- modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java | 2 modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/scheduler/jobs/AsyncResourceDeleteJob.java | 2 modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/webservices/WebservicesManagerBean.java | 4 modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/operation/OperationManagerBeanTest.java | 2 modules/enterprise/server/plugins/alert-operations/src/main/java/org/rhq/enterprise/server/plugins/alertOperations/OperationsSender.java | 2 32 files changed, 380 insertions(+), 369 deletions(-)
New commits: commit 9d2a7b2c94f485660161085982e4084ee2d3677d Author: Ian Springer ian.springer@redhat.com Date: Thu Dec 16 12:49:02 2010 -0500
move OperationSchedule, ResourceOperationSchedule and GroupOperationSchedule POJOs from server-jar to core-domain, so they can be used by coregui
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/common/Trigger.java b/modules/core/domain/src/main/java/org/rhq/core/domain/common/Trigger.java index 6f6756c..da58047 100644 --- a/modules/core/domain/src/main/java/org/rhq/core/domain/common/Trigger.java +++ b/modules/core/domain/src/main/java/org/rhq/core/domain/common/Trigger.java @@ -19,6 +19,7 @@ */ package org.rhq.core.domain.common;
+import java.io.Serializable; import java.util.Date;
/** @@ -28,7 +29,9 @@ import java.util.Date; * * @author Ian Springer */ -public class Trigger { +public class Trigger implements Serializable { + + private static final long serialVersionUID = 1L;
// Together, the startType, recurrenceType, and endType define what type of trigger this is. // For the remaining fields in this class, only those that apply to the trigger's type will have non-null values. @@ -125,6 +128,22 @@ public class Trigger { return repeatCount; }
+ @Override + public String toString() { + final StringBuilder sb = new StringBuilder(); + sb.append("Trigger"); + sb.append("[cronExpression='").append(cronExpression).append('''); + sb.append(", startType=").append(startType); + sb.append(", recurrenceType=").append(recurrenceType); + sb.append(", endType=").append(endType); + sb.append(", startDate=").append(startDate); + sb.append(", repeatInterval=").append(repeatInterval); + sb.append(", endDate=").append(endDate); + sb.append(", repeatCount=").append(repeatCount); + sb.append(']'); + return sb.toString(); + } + /** * Create a trigger that will run now, once. * diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/operation/bean/GroupOperationSchedule.java b/modules/core/domain/src/main/java/org/rhq/core/domain/operation/bean/GroupOperationSchedule.java new file mode 100644 index 0000000..64c74de --- /dev/null +++ b/modules/core/domain/src/main/java/org/rhq/core/domain/operation/bean/GroupOperationSchedule.java @@ -0,0 +1,98 @@ +/* + * RHQ Management Platform + * Copyright (C) 2005-2008 Red Hat, Inc. + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +package org.rhq.core.domain.operation.bean; + +import java.util.List; + +import org.rhq.core.domain.resource.Resource; +import org.rhq.core.domain.resource.group.ResourceGroup; + +/** + * A simple non-entity POJO that describes a particular scheduled Resource group operation. + */ +public class GroupOperationSchedule extends OperationSchedule { + private static final long serialVersionUID = 1L; + + private ResourceGroup group; + private List<Resource> executionOrder; + private boolean haltOnFailure = false; // default to not stop on error + + public GroupOperationSchedule() { + } + + public ResourceGroup getGroup() { + return group; + } + + public void setGroup(ResourceGroup group) { + this.group = group; + } + + /** + * The order to execute the operations - the first resource in the list is the first one to get its operation + * invoked. If this is <code>null</code>, all operations can be invoked in any order and may even be done + * concurrently. + * + * @return list of resources in the order in which their operations are invoked, or <code>null</code> + */ + public List<Resource> getExecutionOrder() { + return executionOrder; + } + + public void setExecutionOrder(List<Resource> executionOrder) { + this.executionOrder = executionOrder; + } + + /** + * If <code>true</code>, the group operation will halt whenever one individual resource fails to execute. When + * executing in order, this means once a failure occurs, the resources next in line to execute will abort and not + * attempt to execute. If not executing in any particular order, you are not guaranteed which will stop and which + * will continue since all are executed as fast as possible, but the group operation will attempt to stop as best it + * can. + * + * @return halt flag + */ + public boolean isHaltOnFailure() { + return haltOnFailure; + } + + /** + * need a getXXX method instead of isXXX method for proper referencing from facelets pages + */ + public boolean getHaltOnFailure() { + return haltOnFailure; + } + + public void setHaltOnFailure(boolean haltOnFailure) { + this.haltOnFailure = haltOnFailure; + } + + @Override + public String toString() { + StringBuilder str = new StringBuilder("GroupOperationSchedule: "); + + str.append("group=[" + this.group); + str.append("], execution-order=[" + this.executionOrder); + str.append("], halt-on-failure=[" + this.haltOnFailure); + str.append("],"); + str.append(super.toString()); + + return str.toString(); + } +} \ No newline at end of file diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/operation/bean/OperationSchedule.java b/modules/core/domain/src/main/java/org/rhq/core/domain/operation/bean/OperationSchedule.java new file mode 100644 index 0000000..f92f3d0 --- /dev/null +++ b/modules/core/domain/src/main/java/org/rhq/core/domain/operation/bean/OperationSchedule.java @@ -0,0 +1,154 @@ +/* + * RHQ Management Platform + * Copyright (C) 2005-2008 Red Hat, Inc. + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +package org.rhq.core.domain.operation.bean; + +import java.io.Serializable; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; + +import org.rhq.core.domain.auth.Subject; +import org.rhq.core.domain.configuration.Configuration; +import org.rhq.core.domain.operation.HistoryJobId; +import org.rhq.core.domain.operation.JobId; + +/** + * A simple non-entity POJO that describes a particular scheduled operation. + * + * @author John Mazzitelli + */ +@XmlRootElement +@XmlAccessorType(XmlAccessType.FIELD) +public abstract class OperationSchedule implements Serializable { + private static final long serialVersionUID = 1L; + + private String jobName; + private String jobGroup; + private String operationName; + private String operationDisplayName; + private Configuration parameters; + private Subject subject; + private String description; + + public OperationSchedule() { + } + + public String getJobGroup() { + return jobGroup; + } + + public void setJobGroup(String jobGroup) { + this.jobGroup = jobGroup; + } + + public String getJobName() { + return jobName; + } + + public void setJobName(String jobName) { + this.jobName = jobName; + } + + public String getOperationName() { + return operationName; + } + + public void setOperationName(String operationName) { + this.operationName = operationName; + } + + public String getOperationDisplayName() { + /* + * this conditional is for "legacy" purposes, so that pre-existing operation schedules don't return blank + * displayNames, they will default to returning the operationDefinition.name instead + */ + if ((operationDisplayName == null) || operationDisplayName.equals("")) { + return getOperationName(); + } + + return operationDisplayName; + } + + public void setOperationDisplayName(String operationDisplayName) { + this.operationDisplayName = operationDisplayName; + } + + /** + * Returns the option parameters that are passed to the operation invocation. + * + * @return the parameters, or <code>null</code> if no parameters are to be passed + */ + public Configuration getParameters() { + return parameters; + } + + public void setParameters(Configuration parameters) { + this.parameters = parameters; + } + + public Subject getSubject() { + return subject; + } + + public void setSubject(Subject subject) { + if (subject == null) { + throw new NullPointerException("Cannot schedule an operation without a user associated with it"); + } + + this.subject = subject; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + /** + * The single job ID which identifies the operation. It can later be parsed via {@link JobId#JobId(String)}. Note + * that this job ID only identifies the scheduled operation; it does not identify any specific invocation of that + * operation (see {@link HistoryJobId} for that). + * + * @return job ID + */ + @XmlElement + public JobId getJobId() { + return new JobId(this.jobName, this.jobGroup); + } + + /* + * there may be some operations whose parameters are sensitive values, such as passwords - do not show them + * as part of the toString. they can still be gotten by explicitly calling getParameters() + */ + @Override + public String toString() { + StringBuilder str = new StringBuilder(); + str.append("job-name=[" + this.jobName); + str.append("], job-group=[" + this.jobGroup); + str.append("], operation-name=[" + this.operationName); + str.append("], subject=[" + this.subject); + str.append("], description=[" + this.description); + str.append("]"); + return str.toString(); + } +} \ No newline at end of file diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/operation/bean/ResourceOperationSchedule.java b/modules/core/domain/src/main/java/org/rhq/core/domain/operation/bean/ResourceOperationSchedule.java new file mode 100644 index 0000000..b00e867 --- /dev/null +++ b/modules/core/domain/src/main/java/org/rhq/core/domain/operation/bean/ResourceOperationSchedule.java @@ -0,0 +1,56 @@ +/* + * RHQ Management Platform + * Copyright (C) 2005-2008 Red Hat, Inc. + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +package org.rhq.core.domain.operation.bean; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlRootElement; + +import org.rhq.core.domain.resource.Resource; + +/** + * A simple non-entity POJO that describes a particular scheduled Resource operation. + */ +@XmlRootElement +@XmlAccessorType(XmlAccessType.FIELD) +public class ResourceOperationSchedule extends OperationSchedule { + private Resource resource; + + public ResourceOperationSchedule() { + } + + public Resource getResource() { + return resource; + } + + public void setResource(Resource resource) { + this.resource = resource; + } + + @Override + public String toString() { + StringBuilder str = new StringBuilder("ResourceOperationSchedule: "); + + str.append("resource=[" + this.resource); + str.append("],"); + str.append(super.toString()); + + return str.toString(); + } +} \ No newline at end of file diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/OperationGWTServiceImpl.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/OperationGWTServiceImpl.java index a44e5f0..7cef256 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/OperationGWTServiceImpl.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/OperationGWTServiceImpl.java @@ -27,6 +27,7 @@ import org.rhq.core.domain.criteria.GroupOperationHistoryCriteria; import org.rhq.core.domain.criteria.ResourceOperationHistoryCriteria; import org.rhq.core.domain.operation.GroupOperationHistory; import org.rhq.core.domain.operation.ResourceOperationHistory; +import org.rhq.core.domain.operation.bean.ResourceOperationSchedule; import org.rhq.core.domain.operation.composite.ResourceOperationLastCompletedComposite; import org.rhq.core.domain.operation.composite.ResourceOperationScheduleComposite; import org.rhq.core.domain.resource.composite.DisambiguationReport; @@ -37,7 +38,6 @@ import org.rhq.core.util.exception.ThrowableUtil; import org.rhq.enterprise.gui.coregui.client.gwt.OperationGWTService; import org.rhq.enterprise.gui.coregui.server.util.SerialUtility; import org.rhq.enterprise.server.operation.OperationManagerLocal; -import org.rhq.enterprise.server.operation.ResourceOperationSchedule; import org.rhq.enterprise.server.resource.ResourceManagerLocal; import org.rhq.enterprise.server.resource.disambiguation.DefaultDisambiguationUpdateStrategies; import org.rhq.enterprise.server.util.LookupUtil; diff --git a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/model/OperationParameters.java b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/model/OperationParameters.java index e7317da..4b0617c 100644 --- a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/model/OperationParameters.java +++ b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/model/OperationParameters.java @@ -25,15 +25,15 @@ import org.rhq.core.domain.configuration.Configuration; import org.rhq.core.domain.configuration.definition.ConfigurationDefinition; import org.rhq.core.domain.operation.OperationDefinition; import org.rhq.core.domain.operation.OperationHistory; +import org.rhq.core.domain.operation.bean.GroupOperationSchedule; import org.rhq.core.domain.resource.Resource; import org.rhq.core.domain.resource.ResourceType; import org.rhq.core.domain.resource.group.ResourceGroup; import org.rhq.enterprise.server.core.plugin.PluginReloadedException; -import org.rhq.enterprise.server.operation.GroupOperationSchedule; import org.rhq.enterprise.server.operation.OperationDefinitionNotFoundException; import org.rhq.enterprise.server.operation.OperationManagerLocal; -import org.rhq.enterprise.server.operation.OperationSchedule; -import org.rhq.enterprise.server.operation.ResourceOperationSchedule; +import org.rhq.core.domain.operation.bean.OperationSchedule; +import org.rhq.core.domain.operation.bean.ResourceOperationSchedule; import org.rhq.enterprise.server.util.LookupUtil;
public class OperationParameters { diff --git a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/schedule/OperationScheduleDetailsUIBean.java b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/schedule/OperationScheduleDetailsUIBean.java index d04f199..55da3bc 100644 --- a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/schedule/OperationScheduleDetailsUIBean.java +++ b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/schedule/OperationScheduleDetailsUIBean.java @@ -22,12 +22,12 @@ import org.quartz.SchedulerException; import org.quartz.SimpleTrigger;
import org.rhq.core.domain.auth.Subject; +import org.rhq.core.domain.operation.bean.OperationSchedule; import org.rhq.core.gui.util.FacesContextUtility; import org.rhq.enterprise.gui.common.scheduling.OperationDetailsScheduleComponent; import org.rhq.enterprise.gui.operation.model.OperationParameters; import org.rhq.enterprise.gui.util.EnterpriseFacesContextUtility; import org.rhq.enterprise.server.operation.OperationManagerLocal; -import org.rhq.enterprise.server.operation.OperationSchedule; import org.rhq.enterprise.server.scheduler.SchedulerLocal; import org.rhq.enterprise.server.util.LookupUtil;
diff --git a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/schedule/OperationScheduleUIBean.java b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/schedule/OperationScheduleUIBean.java index d8b7692..adadafb 100644 --- a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/schedule/OperationScheduleUIBean.java +++ b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/schedule/OperationScheduleUIBean.java @@ -34,6 +34,7 @@ import org.rhq.core.domain.auth.Subject; import org.rhq.core.domain.configuration.Configuration; import org.rhq.core.domain.configuration.PropertySimple; import org.rhq.core.domain.operation.OperationDefinition; +import org.rhq.core.domain.operation.bean.ResourceOperationSchedule; import org.rhq.core.domain.util.PageControl; import org.rhq.core.domain.util.PageList; import org.rhq.core.gui.util.FacesContextUtility; @@ -51,8 +52,7 @@ import org.rhq.enterprise.gui.operation.schedule.group.ResourceGroupOperationSch import org.rhq.enterprise.gui.operation.schedule.resource.ResourceOperationScheduleUIBean; import org.rhq.enterprise.gui.util.EnterpriseFacesContextUtility; import org.rhq.enterprise.server.operation.OperationManagerLocal; -import org.rhq.enterprise.server.operation.OperationSchedule; -import org.rhq.enterprise.server.operation.ResourceOperationSchedule; +import org.rhq.core.domain.operation.bean.OperationSchedule; import org.rhq.enterprise.server.util.LookupUtil;
public abstract class OperationScheduleUIBean extends PagedDataTableUIBean { diff --git a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/schedule/group/ResourceGroupOperationScheduleDetailsUIBean.java b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/schedule/group/ResourceGroupOperationScheduleDetailsUIBean.java index e6111ca..8e32bcd 100644 --- a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/schedule/group/ResourceGroupOperationScheduleDetailsUIBean.java +++ b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/schedule/group/ResourceGroupOperationScheduleDetailsUIBean.java @@ -23,11 +23,11 @@ import java.util.List;
import org.rhq.core.domain.auth.Subject; import org.rhq.core.domain.common.composite.IntegerOptionItem; +import org.rhq.core.domain.operation.bean.GroupOperationSchedule; import org.rhq.core.domain.resource.Resource; import org.rhq.enterprise.gui.operation.definition.group.ResourceGroupExecutionTypeUIBean; import org.rhq.enterprise.gui.operation.schedule.OperationScheduleDetailsUIBean; -import org.rhq.enterprise.server.operation.GroupOperationSchedule; -import org.rhq.enterprise.server.operation.OperationSchedule; +import org.rhq.core.domain.operation.bean.OperationSchedule;
public class ResourceGroupOperationScheduleDetailsUIBean extends OperationScheduleDetailsUIBean {
diff --git a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/schedule/group/ResourceGroupOperationScheduleUIBean.java b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/schedule/group/ResourceGroupOperationScheduleUIBean.java index e70ea9b..ee07ab0 100644 --- a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/schedule/group/ResourceGroupOperationScheduleUIBean.java +++ b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/schedule/group/ResourceGroupOperationScheduleUIBean.java @@ -35,7 +35,7 @@ import org.rhq.core.gui.util.FacesContextUtility; import org.rhq.enterprise.gui.operation.definition.group.ResourceGroupOperationDefinitionUIBean; import org.rhq.enterprise.gui.operation.schedule.OperationScheduleUIBean; import org.rhq.enterprise.gui.util.EnterpriseFacesContextUtility; -import org.rhq.enterprise.server.operation.GroupOperationSchedule; +import org.rhq.core.domain.operation.bean.GroupOperationSchedule; import org.rhq.enterprise.server.scheduler.SchedulerLocal; import org.rhq.enterprise.server.util.LookupUtil; import org.rhq.enterprise.server.util.QuartzUtil; diff --git a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/schedule/resource/ResourceOperationScheduleDetailsUIBean.java b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/schedule/resource/ResourceOperationScheduleDetailsUIBean.java index 0f6983f..a56b845 100644 --- a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/schedule/resource/ResourceOperationScheduleDetailsUIBean.java +++ b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/schedule/resource/ResourceOperationScheduleDetailsUIBean.java @@ -21,7 +21,7 @@ package org.rhq.enterprise.gui.operation.schedule.resource; import org.quartz.SchedulerException; import org.rhq.core.domain.auth.Subject; import org.rhq.enterprise.gui.operation.schedule.OperationScheduleDetailsUIBean; -import org.rhq.enterprise.server.operation.OperationSchedule; +import org.rhq.core.domain.operation.bean.OperationSchedule;
public class ResourceOperationScheduleDetailsUIBean extends OperationScheduleDetailsUIBean { @Override diff --git a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/schedule/resource/ResourceOperationScheduleUIBean.java b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/schedule/resource/ResourceOperationScheduleUIBean.java index 9f8857c..4d9cecf 100644 --- a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/schedule/resource/ResourceOperationScheduleUIBean.java +++ b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/operation/schedule/resource/ResourceOperationScheduleUIBean.java @@ -32,7 +32,7 @@ import org.rhq.core.domain.resource.Resource; import org.rhq.core.gui.util.FacesContextUtility; import org.rhq.enterprise.gui.operation.schedule.OperationScheduleUIBean; import org.rhq.enterprise.gui.util.EnterpriseFacesContextUtility; -import org.rhq.enterprise.server.operation.ResourceOperationSchedule; +import org.rhq.core.domain.operation.bean.ResourceOperationSchedule; import org.rhq.enterprise.server.scheduler.SchedulerLocal; import org.rhq.enterprise.server.util.LookupUtil; import org.rhq.enterprise.server.util.QuartzUtil; diff --git a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/proxy/ResourceClientProxy.java b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/proxy/ResourceClientProxy.java index a76a0ad..6d56a76 100644 --- a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/proxy/ResourceClientProxy.java +++ b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/proxy/ResourceClientProxy.java @@ -64,7 +64,7 @@ import org.rhq.enterprise.client.utility.ShortOutput; import org.rhq.enterprise.client.utility.ConfigurationClassBuilder; import org.rhq.enterprise.client.utility.ScriptUtil; import org.rhq.enterprise.server.content.ContentManagerRemote; -import org.rhq.enterprise.server.operation.ResourceOperationSchedule; +import org.rhq.core.domain.operation.bean.ResourceOperationSchedule; import org.rhq.enterprise.server.resource.ResourceTypeNotFoundException;
/** diff --git a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/ScriptUtil.java b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/ScriptUtil.java index f75ecec..5333522 100644 --- a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/ScriptUtil.java +++ b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/utility/ScriptUtil.java @@ -31,7 +31,7 @@ import org.rhq.core.domain.util.PageList; import org.rhq.core.domain.util.PageOrdering; import org.rhq.enterprise.client.ClientMain; import org.rhq.enterprise.client.commands.ScriptCommand; -import org.rhq.enterprise.server.operation.ResourceOperationSchedule; +import org.rhq.core.domain.operation.bean.ResourceOperationSchedule; import org.rhq.enterprise.server.resource.ResourceManagerRemote;
import javax.script.Bindings; diff --git a/modules/enterprise/remoting/cli/src/test/java/org/rhq/enterprise/client/ClientMainTest.java b/modules/enterprise/remoting/cli/src/test/java/org/rhq/enterprise/client/ClientMainTest.java index 2dc4193..98549fd 100644 --- a/modules/enterprise/remoting/cli/src/test/java/org/rhq/enterprise/client/ClientMainTest.java +++ b/modules/enterprise/remoting/cli/src/test/java/org/rhq/enterprise/client/ClientMainTest.java @@ -1,42 +1,8 @@ package org.rhq.enterprise.client;
-import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - import org.testng.AssertJUnit; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test;
-import org.rhq.core.domain.auth.Subject; -import org.rhq.core.domain.authz.Role; -import org.rhq.core.domain.configuration.Configuration; -import org.rhq.core.domain.content.Architecture; -import org.rhq.core.domain.content.Repo; -import org.rhq.core.domain.content.PackageType; -import org.rhq.core.domain.content.PackageVersion; -import org.rhq.core.domain.measurement.AvailabilityType; -import org.rhq.core.domain.operation.ResourceOperationHistory; -import org.rhq.core.domain.resource.Resource; -import org.rhq.core.domain.resource.ResourceCategory; -import org.rhq.core.domain.resource.ResourceSubCategory; -import org.rhq.core.domain.resource.ResourceType; -import org.rhq.core.domain.resource.composite.ResourceComposite; -import org.rhq.core.domain.util.PageControl; -import org.rhq.enterprise.server.auth.SubjectManagerRemote; -import org.rhq.enterprise.server.authz.RoleManagerRemote; -import org.rhq.enterprise.server.configuration.ConfigurationManagerRemote; -import org.rhq.enterprise.server.content.RepoManagerRemote; -import org.rhq.enterprise.server.content.ContentManagerRemote; -import org.rhq.enterprise.server.operation.OperationManagerRemote; -import org.rhq.enterprise.server.operation.ResourceOperationSchedule; -import org.rhq.enterprise.server.resource.ResourceManagerRemote; - /** * These tests can not be executed in our standard unit test fashion as they require a running RHQ * Server with our web services deployed. diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/GroupOperationJob.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/GroupOperationJob.java index 7192a9c..42e0312 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/GroupOperationJob.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/GroupOperationJob.java @@ -33,6 +33,8 @@ import org.rhq.core.domain.operation.OperationDefinition; import org.rhq.core.domain.operation.OperationHistory; import org.rhq.core.domain.operation.OperationRequestStatus; import org.rhq.core.domain.operation.ResourceOperationHistory; +import org.rhq.core.domain.operation.bean.GroupOperationSchedule; +import org.rhq.core.domain.operation.bean.ResourceOperationSchedule; import org.rhq.core.domain.resource.Resource; import org.rhq.core.domain.resource.group.ResourceGroup; import org.rhq.core.domain.util.PageControl; diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/GroupOperationSchedule.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/GroupOperationSchedule.java deleted file mode 100644 index 8ebf8d9..0000000 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/GroupOperationSchedule.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * RHQ Management Platform - * Copyright (C) 2005-2008 Red Hat, Inc. - * All rights reserved. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation version 2 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ -package org.rhq.enterprise.server.operation; - -import java.util.List; - -import org.rhq.core.domain.resource.Resource; -import org.rhq.core.domain.resource.group.ResourceGroup; - -public class GroupOperationSchedule extends OperationSchedule { - private static final long serialVersionUID = 1L; - - private ResourceGroup group; - private List<Resource> executionOrder; - private boolean haltOnFailure = false; // default to not stop on error - - public GroupOperationSchedule() { - } - - public ResourceGroup getGroup() { - return group; - } - - public void setGroup(ResourceGroup group) { - this.group = group; - } - - /** - * The order to execute the operations - the first resource in the list is the first one to get its operation - * invoked. If this is <code>null</code>, all operations can be invoked in any order and may even be done - * concurrently. - * - * @return list of resources in the order in which their operations are invoked, or <code>null</code> - */ - public List<Resource> getExecutionOrder() { - return executionOrder; - } - - public void setExecutionOrder(List<Resource> executionOrder) { - this.executionOrder = executionOrder; - } - - /** - * If <code>true</code>, the group operation will halt whenever one individual resource fails to execute. When - * executing in order, this means once a failure occurs, the resources next in line to execute will abort and not - * attempt to execute. If not executing in any particular order, you are not guaranteed which will stop and which - * will continue since all are executed as fast as possible, but the group operation will attempt to stop as best it - * can. - * - * @return halt flag - */ - public boolean isHaltOnFailure() { - return haltOnFailure; - } - - /** - * need a getXXX method instead of isXXX method for proper referencing from facelets pages - */ - public boolean getHaltOnFailure() { - return haltOnFailure; - } - - public void setHaltOnFailure(boolean haltOnFailure) { - this.haltOnFailure = haltOnFailure; - } - - @Override - public String toString() { - StringBuilder str = new StringBuilder("GroupOperationSchedule: "); - - str.append("group=[" + this.group); - str.append("], execution-order=[" + this.executionOrder); - str.append("], halt-on-failure=[" + this.haltOnFailure); - str.append("],"); - str.append(super.toString()); - - return str.toString(); - } -} \ No newline at end of file diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationJob.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationJob.java index 558c50d..f5988e3 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationJob.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationJob.java @@ -30,6 +30,7 @@ import org.rhq.core.domain.operation.GroupOperationHistory; import org.rhq.core.domain.operation.OperationDefinition; import org.rhq.core.domain.operation.ResourceOperationHistory; import org.rhq.core.domain.operation.ScheduleJobId; +import org.rhq.core.domain.operation.bean.ResourceOperationSchedule; import org.rhq.enterprise.server.auth.SubjectManagerLocal; import org.rhq.enterprise.server.util.LookupUtil;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationManagerBean.java index 992e401..cdda16d 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationManagerBean.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationManagerBean.java @@ -61,6 +61,8 @@ import org.rhq.core.domain.operation.OperationScheduleEntity; import org.rhq.core.domain.operation.ResourceOperationHistory; import org.rhq.core.domain.operation.ResourceOperationScheduleEntity; import org.rhq.core.domain.operation.ScheduleJobId; +import org.rhq.core.domain.operation.bean.GroupOperationSchedule; +import org.rhq.core.domain.operation.bean.ResourceOperationSchedule; import org.rhq.core.domain.operation.composite.GroupOperationLastCompletedComposite; import org.rhq.core.domain.operation.composite.GroupOperationScheduleComposite; import org.rhq.core.domain.operation.composite.ResourceOperationLastCompletedComposite; diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationManagerLocal.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationManagerLocal.java index b8ff855..d74a88c 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationManagerLocal.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationManagerLocal.java @@ -38,6 +38,8 @@ import org.rhq.core.domain.operation.OperationDefinition; import org.rhq.core.domain.operation.OperationHistory; import org.rhq.core.domain.operation.ResourceOperationHistory; import org.rhq.core.domain.operation.ScheduleJobId; +import org.rhq.core.domain.operation.bean.GroupOperationSchedule; +import org.rhq.core.domain.operation.bean.ResourceOperationSchedule; import org.rhq.core.domain.operation.composite.GroupOperationLastCompletedComposite; import org.rhq.core.domain.operation.composite.GroupOperationScheduleComposite; import org.rhq.core.domain.operation.composite.ResourceOperationLastCompletedComposite; diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationManagerRemote.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationManagerRemote.java index cc6f557..26e5f4f 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationManagerRemote.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationManagerRemote.java @@ -35,6 +35,8 @@ import org.rhq.core.domain.criteria.ResourceOperationHistoryCriteria; import org.rhq.core.domain.operation.GroupOperationHistory; import org.rhq.core.domain.operation.OperationDefinition; import org.rhq.core.domain.operation.ResourceOperationHistory; +import org.rhq.core.domain.operation.bean.GroupOperationSchedule; +import org.rhq.core.domain.operation.bean.ResourceOperationSchedule; import org.rhq.core.domain.util.PageList; import org.rhq.enterprise.server.exception.ScheduleException; import org.rhq.enterprise.server.exception.UnscheduleException; diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationSchedule.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationSchedule.java deleted file mode 100644 index bb5a636..0000000 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/OperationSchedule.java +++ /dev/null @@ -1,154 +0,0 @@ -/* - * RHQ Management Platform - * Copyright (C) 2005-2008 Red Hat, Inc. - * All rights reserved. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation version 2 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ -package org.rhq.enterprise.server.operation; - -import java.io.Serializable; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; - -import org.rhq.core.domain.auth.Subject; -import org.rhq.core.domain.configuration.Configuration; -import org.rhq.core.domain.operation.HistoryJobId; -import org.rhq.core.domain.operation.JobId; - -/** - * A simple non-entity POJO that describes a particular scheduled operation. - * - * @author John Mazzitelli - */ -@XmlRootElement -@XmlAccessorType(XmlAccessType.FIELD) -public abstract class OperationSchedule implements Serializable { - private static final long serialVersionUID = 1L; - - private String jobName; - private String jobGroup; - private String operationName; - private String operationDisplayName; - private Configuration parameters; - private Subject subject; - private String description; - - public OperationSchedule() { - } - - public String getJobGroup() { - return jobGroup; - } - - public void setJobGroup(String jobGroup) { - this.jobGroup = jobGroup; - } - - public String getJobName() { - return jobName; - } - - public void setJobName(String jobName) { - this.jobName = jobName; - } - - public String getOperationName() { - return operationName; - } - - public void setOperationName(String operationName) { - this.operationName = operationName; - } - - public String getOperationDisplayName() { - /* - * this conditional is for "legacy" purposes, so that pre-existing operation schedules don't return blank - * displayNames, they will default to returning the operationDefinition.name instead - */ - if ((operationDisplayName == null) || operationDisplayName.equals("")) { - return getOperationName(); - } - - return operationDisplayName; - } - - public void setOperationDisplayName(String operationDisplayName) { - this.operationDisplayName = operationDisplayName; - } - - /** - * Returns the option parameters that are passed to the operation invocation. - * - * @return the parameters, or <code>null</code> if no parameters are to be passed - */ - public Configuration getParameters() { - return parameters; - } - - public void setParameters(Configuration parameters) { - this.parameters = parameters; - } - - public Subject getSubject() { - return subject; - } - - public void setSubject(Subject subject) { - if (subject == null) { - throw new NullPointerException("Cannot schedule an operation without a user associated with it"); - } - - this.subject = subject; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - /** - * The single job ID which identifies the operation. It can later be parsed via {@link JobId#JobId(String)}. Note - * that this job ID only identifies the scheduled operation; it does not identify any specific invocation of that - * operation (see {@link HistoryJobId} for that). - * - * @return job ID - */ - @XmlElement - public JobId getJobId() { - return new JobId(this.jobName, this.jobGroup); - } - - /* - * there may be some operations whose parameters are sensitive values, such as passwords - do not show them - * as part of the toString. they can still be gotten by explicitly calling getParameters() - */ - @Override - public String toString() { - StringBuilder str = new StringBuilder(); - str.append("job-name=[" + this.jobName); - str.append("], job-group=[" + this.jobGroup); - str.append("], operation-name=[" + this.operationName); - str.append("], subject=[" + this.subject); - str.append("], description=[" + this.description); - str.append("]"); - return str.toString(); - } -} \ No newline at end of file diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/ResourceOperationJob.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/ResourceOperationJob.java index 2139ac7..e0ac109 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/ResourceOperationJob.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/ResourceOperationJob.java @@ -29,6 +29,7 @@ import org.quartz.JobExecutionException;
import org.rhq.core.domain.auth.Subject; import org.rhq.core.domain.operation.ResourceOperationHistory; +import org.rhq.core.domain.operation.bean.ResourceOperationSchedule; import org.rhq.core.domain.resource.InventoryStatus; import org.rhq.core.domain.resource.Resource; import org.rhq.core.util.exception.ThrowableUtil; diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/ResourceOperationSchedule.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/ResourceOperationSchedule.java deleted file mode 100644 index d36fed8..0000000 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/operation/ResourceOperationSchedule.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * RHQ Management Platform - * Copyright (C) 2005-2008 Red Hat, Inc. - * All rights reserved. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation version 2 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ -package org.rhq.enterprise.server.operation; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlRootElement; - -import org.rhq.core.domain.resource.Resource; - -@XmlRootElement -@XmlAccessorType(XmlAccessType.FIELD) -public class ResourceOperationSchedule extends OperationSchedule { - private Resource resource; - - public ResourceOperationSchedule() { - } - - public Resource getResource() { - return resource; - } - - public void setResource(Resource resource) { - this.resource = resource; - } - - @Override - public String toString() { - StringBuilder str = new StringBuilder("ResourceOperationSchedule: "); - - str.append("resource=[" + this.resource); - str.append("],"); - str.append(super.toString()); - - return str.toString(); - } -} \ No newline at end of file diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java index 0a9419a..3208c7e 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java @@ -65,6 +65,7 @@ import org.rhq.core.domain.criteria.Criteria; import org.rhq.core.domain.criteria.ResourceGroupCriteria; import org.rhq.core.domain.measurement.DataType; import org.rhq.core.domain.measurement.DisplayType; +import org.rhq.core.domain.operation.bean.GroupOperationSchedule; import org.rhq.core.domain.resource.InventoryStatus; import org.rhq.core.domain.resource.Resource; import org.rhq.core.domain.resource.ResourceCategory; @@ -88,7 +89,6 @@ import org.rhq.enterprise.server.authz.PermissionException; import org.rhq.enterprise.server.authz.RequiredPermission; import org.rhq.enterprise.server.exception.UnscheduleException; import org.rhq.enterprise.server.jaxb.adapter.ResourceGroupAdapter; -import org.rhq.enterprise.server.operation.GroupOperationSchedule; import org.rhq.enterprise.server.operation.OperationManagerLocal; import org.rhq.enterprise.server.resource.ResourceManagerLocal; import org.rhq.enterprise.server.resource.ResourceTypeManagerLocal; diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/scheduler/jobs/AsyncResourceDeleteJob.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/scheduler/jobs/AsyncResourceDeleteJob.java index b0d183d..75051c2 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/scheduler/jobs/AsyncResourceDeleteJob.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/scheduler/jobs/AsyncResourceDeleteJob.java @@ -29,7 +29,7 @@ import org.rhq.core.domain.auth.Subject; import org.rhq.core.util.exception.ThrowableUtil; import org.rhq.enterprise.server.exception.UnscheduleException; import org.rhq.enterprise.server.operation.OperationManagerLocal; -import org.rhq.enterprise.server.operation.ResourceOperationSchedule; +import org.rhq.core.domain.operation.bean.ResourceOperationSchedule; import org.rhq.enterprise.server.resource.ResourceManagerLocal; import org.rhq.enterprise.server.util.LookupUtil;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/webservices/WebservicesManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/webservices/WebservicesManagerBean.java index 9b36df1..6e4f1a6 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/webservices/WebservicesManagerBean.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/webservices/WebservicesManagerBean.java @@ -140,9 +140,9 @@ import org.rhq.enterprise.server.measurement.MeasurementDataManagerLocal; import org.rhq.enterprise.server.measurement.MeasurementDefinitionManagerLocal; import org.rhq.enterprise.server.measurement.MeasurementProblemManagerLocal; import org.rhq.enterprise.server.measurement.MeasurementScheduleManagerLocal; -import org.rhq.enterprise.server.operation.GroupOperationSchedule; +import org.rhq.core.domain.operation.bean.GroupOperationSchedule; import org.rhq.enterprise.server.operation.OperationManagerLocal; -import org.rhq.enterprise.server.operation.ResourceOperationSchedule; +import org.rhq.core.domain.operation.bean.ResourceOperationSchedule; import org.rhq.enterprise.server.resource.ResourceFactoryManagerLocal; import org.rhq.enterprise.server.resource.ResourceManagerLocal; import org.rhq.enterprise.server.resource.ResourceNotFoundException; diff --git a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/operation/OperationManagerBeanTest.java b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/operation/OperationManagerBeanTest.java index eaf6182..0ae4e9e 100644 --- a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/operation/OperationManagerBeanTest.java +++ b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/operation/OperationManagerBeanTest.java @@ -27,6 +27,8 @@ import javax.persistence.EntityManager;
import org.quartz.SimpleTrigger; import org.quartz.Trigger; +import org.rhq.core.domain.operation.bean.GroupOperationSchedule; +import org.rhq.core.domain.operation.bean.ResourceOperationSchedule; import org.testng.annotations.AfterClass; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeClass; diff --git a/modules/enterprise/server/plugins/alert-operations/src/main/java/org/rhq/enterprise/server/plugins/alertOperations/OperationsSender.java b/modules/enterprise/server/plugins/alert-operations/src/main/java/org/rhq/enterprise/server/plugins/alertOperations/OperationsSender.java index 1fcb295..c183b2a 100644 --- a/modules/enterprise/server/plugins/alert-operations/src/main/java/org/rhq/enterprise/server/plugins/alertOperations/OperationsSender.java +++ b/modules/enterprise/server/plugins/alert-operations/src/main/java/org/rhq/enterprise/server/plugins/alertOperations/OperationsSender.java @@ -27,7 +27,7 @@ import org.rhq.core.domain.operation.JobId; import org.rhq.core.domain.operation.OperationDefinition; import org.rhq.core.domain.operation.OperationRequestStatus; import org.rhq.core.domain.resource.Resource; -import org.rhq.enterprise.server.operation.ResourceOperationSchedule; +import org.rhq.core.domain.operation.bean.ResourceOperationSchedule; import org.rhq.enterprise.server.plugin.pc.alert.AlertSender; import org.rhq.enterprise.server.util.LookupUtil;
commit 79743e71e32db1c606b029effbc4a43ece826d2f Author: Ian Springer ian.springer@redhat.com Date: Thu Dec 16 12:47:50 2010 -0500
fix bug where subjects and resource group associations did not get persisted when creating a new Role
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/authz/Role.java b/modules/core/domain/src/main/java/org/rhq/core/domain/authz/Role.java index b9cb102..842a1b4 100644 --- a/modules/core/domain/src/main/java/org/rhq/core/domain/authz/Role.java +++ b/modules/core/domain/src/main/java/org/rhq/core/domain/authz/Role.java @@ -108,16 +108,16 @@ public class Role implements Serializable { private Boolean fsystem;
@ManyToMany(mappedBy = "roles") - private java.util.Set<Subject> subjects = new HashSet<Subject>(); + private Set<Subject> subjects = new HashSet<Subject>();
@ManyToMany(mappedBy = "ldapRoles") - private java.util.Set<Subject> ldapSubjects = new HashSet<Subject>(); + private Set<Subject> ldapSubjects = new HashSet<Subject>();
@OneToMany(mappedBy = "role", cascade = { CascadeType.PERSIST, CascadeType.REMOVE, CascadeType.REFRESH }) private Set<LdapGroup> ldapGroups = new HashSet<LdapGroup>();
@ManyToMany(mappedBy = "roles") - private java.util.Set<org.rhq.core.domain.resource.group.ResourceGroup> resourceGroups = new HashSet<org.rhq.core.domain.resource.group.ResourceGroup>(); + private Set<ResourceGroup> resourceGroups = new HashSet<org.rhq.core.domain.resource.group.ResourceGroup>();
@Cascade( { org.hibernate.annotations.CascadeType.ALL }) @CollectionOfElements(fetch = FetchType.EAGER) @@ -241,7 +241,7 @@ public class Role implements Serializable { this.subjects.remove(subject); }
- public java.util.Set<Subject> getLdapSubjects() { + public Set<Subject> getLdapSubjects() { return ldapSubjects; }
@@ -267,11 +267,11 @@ public class Role implements Serializable { this.ldapSubjects.remove(subject); }
- public Set<org.rhq.core.domain.resource.group.ResourceGroup> getResourceGroups() { + public Set<ResourceGroup> getResourceGroups() { return resourceGroups; }
- public void setResourceGroups(Set<org.rhq.core.domain.resource.group.ResourceGroup> resourceGroups) { + public void setResourceGroups(Set<ResourceGroup> resourceGroups) { if (resourceGroups == null) { this.resourceGroups = new HashSet<ResourceGroup>(); } else { @@ -283,18 +283,18 @@ public class Role implements Serializable { } }
- public void addResourceGroup(org.rhq.core.domain.resource.group.ResourceGroup resourceGroup) { + public void addResourceGroup(ResourceGroup resourceGroup) { if (this.resourceGroups == null) { - this.resourceGroups = new HashSet<org.rhq.core.domain.resource.group.ResourceGroup>(); + this.resourceGroups = new HashSet<ResourceGroup>(); }
resourceGroup.addRole(this); this.resourceGroups.add(resourceGroup); }
- public void removeResourceGroup(org.rhq.core.domain.resource.group.ResourceGroup resourceGroup) { + public void removeResourceGroup(ResourceGroup resourceGroup) { if (this.resourceGroups == null) { - this.resourceGroups = new HashSet<org.rhq.core.domain.resource.group.ResourceGroup>(); + this.resourceGroups = new HashSet<ResourceGroup>(); }
resourceGroup.removeRole(this); diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesDataSource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesDataSource.java index e96825b..04330ae 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesDataSource.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesDataSource.java @@ -18,10 +18,8 @@ */ package org.rhq.enterprise.gui.coregui.client.admin.roles;
-import java.util.HashMap; import java.util.HashSet; import java.util.List; -import java.util.Map; import java.util.Set;
import com.google.gwt.user.client.rpc.AsyncCallback; diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/authz/RoleManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/authz/RoleManagerBean.java index afefb7f..93b1ca8 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/authz/RoleManagerBean.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/authz/RoleManagerBean.java @@ -137,7 +137,7 @@ public class RoleManagerBean implements RoleManagerLocal, RoleManagerRemote { * @see org.rhq.enterprise.server.authz.RoleManagerLocal#createRole(Subject, Role) */ @RequiredPermission(Permission.MANAGE_SECURITY) - public Role createRole(Subject subject, Role newRole) { + public Role createRole(Subject whoami, Role newRole) { // TODO (ips): Do we want to enforce uniqueness of the Role name?
if (newRole.getFsystem()) { @@ -153,6 +153,16 @@ public class RoleManagerBean implements RoleManagerLocal, RoleManagerRemote {
entityManager.persist(newRole);
+ // Now we must merge subjects and resource groups, since those fields in Role do not have persist cascade + // enabled. + for (Subject subject : newRole.getSubjects()) { + entityManager.merge(subject); + } + + for (ResourceGroup resourceGroup : newRole.getResourceGroups()) { + entityManager.merge(resourceGroup); + } + return newRole; }
rhq-commits@lists.fedorahosted.org