summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--modules/core/domain/src/main/java/org/rhq/core/domain/operation/composite/GroupOperationScheduleComposite.java12
-rw-r--r--modules/core/domain/src/main/java/org/rhq/core/domain/operation/composite/OperationScheduleComposite.java2
-rw-r--r--modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LinkManager.java5
-rw-r--r--modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/operations/OperationSchedulePortlet.java55
-rw-r--r--modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/OperationGWTService.java22
-rw-r--r--modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/operation/ScheduledOperationsDataSource.java91
-rw-r--r--modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/OperationGWTServiceImpl.java22
7 files changed, 168 insertions, 41 deletions
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/operation/composite/GroupOperationScheduleComposite.java b/modules/core/domain/src/main/java/org/rhq/core/domain/operation/composite/GroupOperationScheduleComposite.java
index 1107b06..1fe76b9 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/operation/composite/GroupOperationScheduleComposite.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/operation/composite/GroupOperationScheduleComposite.java
@@ -30,11 +30,15 @@ package org.rhq.core.domain.operation.composite;
public class GroupOperationScheduleComposite extends OperationScheduleComposite {
private static final long serialVersionUID = 2L;
+
+ private int groupId;
+ private String groupName;
+ private String groupResourceTypeName;
- private final int groupId;
- private final String groupName;
- private final String groupResourceTypeName;
-
+ //private no args constructor for serialization. Not to be used.
+ private GroupOperationScheduleComposite() {
+ }
+
public GroupOperationScheduleComposite(int id, String jobName, String jobGroup, String operationName,
long operationNextFireTime, int groupId, String groupName, String groupResourceTypeName) {
super(id, jobName, jobGroup, operationName, operationNextFireTime);
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/operation/composite/OperationScheduleComposite.java b/modules/core/domain/src/main/java/org/rhq/core/domain/operation/composite/OperationScheduleComposite.java
index f80811a..1b80abf 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/operation/composite/OperationScheduleComposite.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/operation/composite/OperationScheduleComposite.java
@@ -40,7 +40,7 @@ public abstract class OperationScheduleComposite implements Serializable {
protected OperationScheduleComposite() {
this.operationNextFireTime = -1;
this.id = 0;
- this.operationName = "(uninitialized)";
+ this.operationName = "(unitialized)";
}
public OperationScheduleComposite(int id, String jobName, String jobGroup, String operationName, long operationNextFireTime) {
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LinkManager.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LinkManager.java
index 6f99d10..08632732 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LinkManager.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LinkManager.java
@@ -245,6 +245,11 @@ public class LinkManager {
}
return link;
}
+
+
+ public static String getSubsystemGroupOperationScheduleLink(int groupId, int opScheduleId) {
+ return "#ResourceGroup/" + groupId + "/Operations/Schedules/" + opScheduleId;
+ }
public static String getAlertDetailLink(EntityContext entityContext, int alertId) {
String link;
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/operations/OperationSchedulePortlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/operations/OperationSchedulePortlet.java
index 45f4d77..85db7f8 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/operations/OperationSchedulePortlet.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/operations/OperationSchedulePortlet.java
@@ -20,6 +20,7 @@ package org.rhq.enterprise.gui.coregui.client.dashboard.portlets.recent.operatio
*/
import com.google.gwt.user.client.Timer;
+import com.smartgwt.client.types.Alignment;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.HTMLFlow;
import com.smartgwt.client.widgets.form.DynamicForm;
@@ -41,6 +42,7 @@ import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
import org.rhq.core.domain.configuration.definition.PropertyDefinitionSimple;
import org.rhq.core.domain.configuration.definition.PropertySimpleType;
import org.rhq.core.domain.dashboard.DashboardPortlet;
+import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import org.rhq.enterprise.gui.coregui.client.LinkManager;
import org.rhq.enterprise.gui.coregui.client.components.table.TimestampCellFormatter;
import org.rhq.enterprise.gui.coregui.client.dashboard.AutoRefreshPortlet;
@@ -126,9 +128,15 @@ public class OperationSchedulePortlet extends LocatableVLayout implements Custom
public String format(Object value, ListGridRecord record, int rowNum, int colNum) {
if (value != null) {
String timestamp = super.format(value, record, rowNum, colNum);
- Integer resourceId = record.getAttributeAsInt(AncestryUtil.RESOURCE_ID);
+ Integer id = record.getAttributeAsInt(AncestryUtil.RESOURCE_ID);
+ String url = null;
Integer opScheduleId = record.getAttributeAsInt("id");
- String url = LinkManager.getSubsystemResourceOperationScheduleLink(resourceId, opScheduleId);
+ if (id == null) {
+ id = record.getAttributeAsInt(ScheduledOperationsDataSource.Field.GROUP_ID.propertyName());
+ url = LinkManager.getSubsystemGroupOperationScheduleLink(id, opScheduleId);
+ } else {
+ url = LinkManager.getSubsystemResourceOperationScheduleLink(id, opScheduleId);
+ }
return SeleniumUtility.getLocatableHref(url, timestamp, null);
} else {
return "<i>" + MSG.common_label_none() + "</i>";
@@ -142,23 +150,54 @@ public class OperationSchedulePortlet extends LocatableVLayout implements Custom
ListGridField operationNext = new ListGridField(ScheduledOperationsDataSource.Field.OPERATION.propertyName(),
ScheduledOperationsDataSource.Field.OPERATION.title());
- ListGridField resourceNext = new ListGridField(ScheduledOperationsDataSource.Field.RESOURCE.propertyName(),
- ScheduledOperationsDataSource.Field.RESOURCE.title());
+ ListGridField resourceNext = new ListGridField(ScheduledOperationsDataSource.Field.RESOURCE_OR_GROUP.propertyName(),
+ ScheduledOperationsDataSource.Field.RESOURCE_OR_GROUP.title());
resourceNext.setCellFormatter(new CellFormatter() {
public String format(Object o, ListGridRecord listGridRecord, int i, int i1) {
- String url = LinkManager.getResourceLink(listGridRecord.getAttributeAsInt(AncestryUtil.RESOURCE_ID));
+ Integer id = listGridRecord.getAttributeAsInt(AncestryUtil.RESOURCE_ID);
+ String url = null;
+ if (id == null) {
+ id = listGridRecord.getAttributeAsInt(ScheduledOperationsDataSource.Field.GROUP_ID.propertyName());
+ url = LinkManager.getResourceGroupLink(id);
+ } else {
+ url = LinkManager.getResourceLink(id);
+ }
return SeleniumUtility.getLocatableHref(url, o.toString(), null);
}
});
resourceNext.setShowHover(true);
resourceNext.setHoverCustomizer(new HoverCustomizer() {
public String hoverHTML(Object value, ListGridRecord listGridRecord, int rowNum, int colNum) {
- return AncestryUtil.getResourceHoverHTML(listGridRecord, 0);
+ Integer id = listGridRecord.getAttributeAsInt(AncestryUtil.RESOURCE_ID);
+ if (id != null) {
+ return MSG.common_title_resource() + ": " + AncestryUtil.getResourceHoverHTML(listGridRecord, 0);
+ } else {
+ String type = listGridRecord.getAttributeAsString(ScheduledOperationsDataSource.Field.GROUP_TYPE
+ .propertyName());
+ String name = listGridRecord
+ .getAttributeAsString(ScheduledOperationsDataSource.Field.RESOURCE_OR_GROUP.propertyName());
+ return "<p>" + MSG.common_title_group() + " (" + type + "):<br/><br/>" + name + "</p>";
+ }
}
});
- ListGridField ancestryNext = AncestryUtil.setupAncestryListGridField();
-
+
+ ListGridField ancestryNext = new ListGridField(AncestryUtil.RESOURCE_ANCESTRY, CoreGUI.getMessages().common_title_ancestry());
+ ancestryNext.setAlign(Alignment.LEFT);
+ ancestryNext.setCellAlign(Alignment.LEFT);
+ AncestryUtil.setupAncestryListGridFieldCellFormatter(ancestryNext);
+ ancestryNext.setShowHover(true);
+ ancestryNext.setHoverCustomizer(new HoverCustomizer() {
+ public String hoverHTML(Object value, ListGridRecord listGridRecord, int rowNum, int colNum) {
+ Integer id = listGridRecord.getAttributeAsInt(AncestryUtil.RESOURCE_ID);
+ if (id != null) {
+ return AncestryUtil.getAncestryHoverHTML(listGridRecord, 0);
+ } else {
+ return MSG.common_title_group();
+ }
+ }
+ });
+
scheduledOperationsGrid.setFields(timeNext, operationNext, resourceNext, ancestryNext);
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/OperationGWTService.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/OperationGWTService.java
index f47e8f5..9c42fa1 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/OperationGWTService.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/OperationGWTService.java
@@ -29,6 +29,7 @@ import org.rhq.core.domain.operation.GroupOperationHistory;
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.operation.composite.GroupOperationScheduleComposite;
import org.rhq.core.domain.operation.composite.ResourceOperationLastCompletedComposite;
import org.rhq.core.domain.operation.composite.ResourceOperationScheduleComposite;
import org.rhq.core.domain.util.PageControl;
@@ -50,8 +51,25 @@ public interface OperationGWTService extends RemoteService {
PageList<ResourceOperationLastCompletedComposite> findRecentCompletedOperations(int resourceId,
PageControl pageControl) throws RuntimeException;
- PageList<ResourceOperationScheduleComposite> findScheduledOperations(int pageSize) throws RuntimeException;
-
+ /**
+ * Find currently scheduled resource operations
+ * @param pageSize page size
+ *
+ * @return list of ResourceOperationScheduleComposites
+ */
+ public PageList<ResourceOperationScheduleComposite> findCurrentlyScheduledResourceOperations(int pageSize)
+ throws RuntimeException;
+
+ /**
+ * Find currently scheduled group operations
+ *
+ * @param pageSize page size
+ * @return list of GroupOperationScheduleComposite
+ */
+ public PageList<GroupOperationScheduleComposite> findCurrentlyScheduledGroupOperations(int pageSize)
+ throws RuntimeException;
+
+
void invokeResourceOperation(int resourceId, String operationName, Configuration parameters, String description,
int timeout) throws RuntimeException;
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/operation/ScheduledOperationsDataSource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/operation/ScheduledOperationsDataSource.java
index fca0e8f..92f481f 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/operation/ScheduledOperationsDataSource.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/operation/ScheduledOperationsDataSource.java
@@ -18,6 +18,9 @@
*/
package org.rhq.enterprise.gui.coregui.client.operation;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
@@ -33,8 +36,11 @@ import com.smartgwt.client.widgets.grid.ListGridField;
import com.smartgwt.client.widgets.grid.ListGridRecord;
import org.rhq.core.domain.criteria.Criteria;
+import org.rhq.core.domain.operation.composite.GroupOperationScheduleComposite;
+import org.rhq.core.domain.operation.composite.OperationScheduleComposite;
import org.rhq.core.domain.operation.composite.ResourceOperationScheduleComposite;
import org.rhq.core.domain.resource.ResourceType;
+import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import org.rhq.enterprise.gui.coregui.client.dashboard.Portlet;
@@ -56,15 +62,20 @@ import org.rhq.enterprise.gui.coregui.client.util.RPCDataSource;
* @author Simeon Pinder
* @author Jay Shaughnessy
*/
-public class ScheduledOperationsDataSource extends RPCDataSource<ResourceOperationScheduleComposite, Criteria> {
+public class ScheduledOperationsDataSource extends RPCDataSource<OperationScheduleComposite, Criteria> {
public enum Field {
OPERATION("operationName", MSG.dataSource_operationSchedule_field_operationName()),
- RESOURCE("resource", MSG.common_title_resource()),
+ // the key has to remain 'resource' for AncestryUtil.getResourceHoverHTML()
+ RESOURCE_OR_GROUP("resource", MSG.common_title_resource() + " / " + MSG.common_title_group()),
- TIME("operationNextFireTime", MSG.dataSource_operationSchedule_field_nextFireTime());
+ TIME("operationNextFireTime", MSG.dataSource_operationSchedule_field_nextFireTime()),
+
+ GROUP_ID("groupId", "groupId"),
+
+ GROUP_TYPE("groupType", MSG.common_title_resource_name());
/**
* Corresponds to a property name of Resource (e.g. resourceType.name).
@@ -117,11 +128,11 @@ public class ScheduledOperationsDataSource extends RPCDataSource<ResourceOperati
protected List<DataSourceField> addDataSourceFields() {
List<DataSourceField> fields = super.addDataSourceFields();
- DataSourceTextField resourceField = new DataSourceTextField(Field.RESOURCE.propertyName, Field.RESOURCE.title);
+ DataSourceTextField resourceField = new DataSourceTextField(Field.RESOURCE_OR_GROUP.propertyName, Field.RESOURCE_OR_GROUP.title);
fields.add(resourceField);
- DataSourceTextField operationField = new DataSourceTextField(Field.OPERATION.propertyName(), Field.OPERATION
- .title());
+ DataSourceTextField operationField = new DataSourceTextField(Field.OPERATION.propertyName(),
+ Field.OPERATION.title());
fields.add(operationField);
DataSourceTextField timeField = new DataSourceTextField(Field.TIME.propertyName(), Field.TIME.title());
@@ -160,8 +171,9 @@ public class ScheduledOperationsDataSource extends RPCDataSource<ResourceOperati
}
}
}
+ final int pageSizeConst = pageSize;
- GWTServiceLookup.getOperationService().findScheduledOperations(pageSize,
+ GWTServiceLookup.getOperationService().findCurrentlyScheduledResourceOperations(pageSizeConst,
new AsyncCallback<PageList<ResourceOperationScheduleComposite>>() {
public void onFailure(Throwable throwable) {
@@ -169,8 +181,34 @@ public class ScheduledOperationsDataSource extends RPCDataSource<ResourceOperati
throwable);
}
- public void onSuccess(PageList<ResourceOperationScheduleComposite> result) {
- dataRetrieved(result, response, request);
+ public void onSuccess(final PageList<ResourceOperationScheduleComposite> resources) {
+ GWTServiceLookup.getOperationService().findCurrentlyScheduledGroupOperations(pageSizeConst,
+ new AsyncCallback<PageList<GroupOperationScheduleComposite>>() {
+
+ public void onFailure(Throwable throwable) {
+ CoreGUI.getErrorHandler().handleError(
+ MSG.dataSource_scheduledOperations_error_fetchFailure(), throwable);
+ }
+
+ public void onSuccess(PageList<GroupOperationScheduleComposite> groups) {
+ List<OperationScheduleComposite> result = new ArrayList<OperationScheduleComposite>();
+ if (resources != null) {
+ result.addAll(resources);
+ result.addAll(groups);
+ }
+ Collections.sort(result, new Comparator<OperationScheduleComposite>() {
+ public int compare(OperationScheduleComposite thisOp,
+ OperationScheduleComposite thatOp) {
+ return thisOp.getOperationNextFireTime() - thatOp.getOperationNextFireTime() < 0 ? -1
+ : 1;
+ }
+ });
+ PageControl pc = new PageControl(0, pageSizeConst);
+ PageList<OperationScheduleComposite> pageList = new PageList<OperationScheduleComposite>(
+ result, pc);
+ dataRetrieved(pageList, response, request);
+ }
+ });
}
});
}
@@ -181,13 +219,16 @@ public class ScheduledOperationsDataSource extends RPCDataSource<ResourceOperati
return null;
}
- protected void dataRetrieved(final PageList<ResourceOperationScheduleComposite> result, final DSResponse response,
+ protected void dataRetrieved(final PageList<OperationScheduleComposite> result, final DSResponse response,
final DSRequest request) {
HashSet<Integer> typesSet = new HashSet<Integer>();
HashSet<String> ancestries = new HashSet<String>();
- for (ResourceOperationScheduleComposite composite : result) {
- typesSet.add(composite.getResourceTypeId());
- ancestries.add(composite.getAncestry());
+ for (OperationScheduleComposite composite : result) {
+ if (composite instanceof ResourceOperationScheduleComposite) {
+ ResourceOperationScheduleComposite resourceComposite = (ResourceOperationScheduleComposite) composite;
+ typesSet.add(resourceComposite.getResourceTypeId());
+ ancestries.add(resourceComposite.getAncestry());
+ }
}
// In addition to the types of the result resources, get the types of their ancestry
@@ -230,19 +271,27 @@ public class ScheduledOperationsDataSource extends RPCDataSource<ResourceOperati
}
@Override
- public ListGridRecord copyValues(ResourceOperationScheduleComposite from) {
+ public ListGridRecord copyValues(OperationScheduleComposite from) {
ListGridRecord record = new ListGridRecord();
+ if (from instanceof ResourceOperationScheduleComposite) {
+ ResourceOperationScheduleComposite resource = (ResourceOperationScheduleComposite) from;
+ record.setAttribute(Field.RESOURCE_OR_GROUP.propertyName, resource.getResourceName());
+
+ // for ancestry handling
+ record.setAttribute(AncestryUtil.RESOURCE_ID, resource.getResourceId());
+ record.setAttribute(AncestryUtil.RESOURCE_NAME, resource.getResourceName());
+ record.setAttribute(AncestryUtil.RESOURCE_ANCESTRY, resource.getAncestry());
+ record.setAttribute(AncestryUtil.RESOURCE_TYPE_ID, resource.getResourceTypeId());
+ } else { // group
+ GroupOperationScheduleComposite resource = (GroupOperationScheduleComposite) from;
+ record.setAttribute(Field.RESOURCE_OR_GROUP.propertyName, resource.getGroupName());
+ record.setAttribute(Field.GROUP_ID.propertyName, resource.getGroupId());
+ record.setAttribute(Field.GROUP_TYPE.propertyName, resource.getGroupResourceTypeName());
+ }
record.setAttribute("id", from.getId());
record.setAttribute(Field.OPERATION.propertyName, from.getOperationName());
- record.setAttribute(Field.RESOURCE.propertyName, from.getResourceName());
record.setAttribute(Field.TIME.propertyName, new Date(from.getOperationNextFireTime()));
- // for ancestry handling
- record.setAttribute(AncestryUtil.RESOURCE_ID, from.getResourceId());
- record.setAttribute(AncestryUtil.RESOURCE_NAME, from.getResourceName());
- record.setAttribute(AncestryUtil.RESOURCE_ANCESTRY, from.getAncestry());
- record.setAttribute(AncestryUtil.RESOURCE_TYPE_ID, from.getResourceTypeId());
-
record.setAttribute("entity", from);
return record;
}
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 4e556d0..3ce6064 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
@@ -33,6 +33,7 @@ import org.rhq.core.domain.operation.GroupOperationHistory;
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.operation.composite.GroupOperationScheduleComposite;
import org.rhq.core.domain.operation.composite.ResourceOperationLastCompletedComposite;
import org.rhq.core.domain.operation.composite.ResourceOperationScheduleComposite;
import org.rhq.core.domain.resource.Resource;
@@ -197,17 +198,28 @@ public class OperationGWTServiceImpl extends AbstractGWTServiceImpl implements O
}
}
- /** Find scheduled operations, disambiguate them and return that list.
- *
- */
- public PageList<ResourceOperationScheduleComposite> findScheduledOperations(int pageSize) throws RuntimeException {
+ public PageList<ResourceOperationScheduleComposite> findCurrentlyScheduledResourceOperations(int pageSize)
+ throws RuntimeException {
try {
PageControl pageControl = new PageControl(0, pageSize);
pageControl.initDefaultOrderingField("ro.nextFireTime", PageOrdering.ASC);
PageList<ResourceOperationScheduleComposite> scheduledResourceOps = operationManager
.findCurrentlyScheduledResourceOperations(getSessionSubject(), pageControl);
+ return SerialUtility.prepare(scheduledResourceOps,
+ "OperationService.findCurrentlyScheduledResourceOperations");
+ } catch (Throwable t) {
+ throw getExceptionToThrowToClient(t);
+ }
+ }
- return SerialUtility.prepare(scheduledResourceOps, "OperationService.findScheduledOperations");
+ public PageList<GroupOperationScheduleComposite> findCurrentlyScheduledGroupOperations(int pageSize)
+ throws RuntimeException {
+ try {
+ PageControl pageControl = new PageControl(0, pageSize);
+ pageControl.initDefaultOrderingField("go.nextFireTime", PageOrdering.ASC);
+ PageList<GroupOperationScheduleComposite> scheduledGroupOps = operationManager
+ .findCurrentlyScheduledGroupOperations(getSessionSubject(), pageControl);
+ return SerialUtility.prepare(scheduledGroupOps, "OperationService.findCurrentlyScheduledGroupOperations");
} catch (Throwable t) {
throw getExceptionToThrowToClient(t);
}