modules/enterprise/binding/src/main/java/org/rhq/bindings/client/RhqManager.java
| 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/definition/GroupDefinitionManagerBean.java
| 7
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/definition/GroupDefinitionManagerRemote.java
| 120 ++++++++++
3 files changed, 125 insertions(+), 4 deletions(-)
New commits:
commit 74dfd37db100de71128db47eb83962c686c8c925
Author: Jirka Kremser <jkremser(a)redhat.com>
Date: Wed Jan 30 17:08:46 2013 +0100
[Bug 880819 - RFE: expose GroupDefinitionManager remotely] Subset of methods defined
in the local intercace has been exposed via the remote intercase and registered in the
RhqManager.
diff --git
a/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/RhqManager.java
b/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/RhqManager.java
index d374324..32832b2 100644
--- a/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/RhqManager.java
+++ b/modules/enterprise/binding/src/main/java/org/rhq/bindings/client/RhqManager.java
@@ -40,6 +40,7 @@ import
org.rhq.enterprise.server.measurement.MeasurementDefinitionManagerRemote;
import org.rhq.enterprise.server.measurement.MeasurementScheduleManagerRemote;
import org.rhq.enterprise.server.operation.OperationManagerRemote;
import org.rhq.enterprise.server.report.DataAccessManagerRemote;
+import org.rhq.enterprise.server.resource.group.definition.GroupDefinitionManagerRemote;
import org.rhq.enterprise.server.resource.ResourceFactoryManagerRemote;
import org.rhq.enterprise.server.resource.ResourceManagerRemote;
import org.rhq.enterprise.server.resource.ResourceTypeManagerRemote;
@@ -70,6 +71,7 @@ public enum RhqManager {
DriftTemplateManager(DriftTemplateManagerRemote.class,
"${DriftTemplateManager}"), //
DiscoveryBoss(DiscoveryBossRemote.class, "${DiscoveryBoss}"), //
EventManager(EventManagerRemote.class, "${EventManager}"), //
+ GroupDefinitionManager(GroupDefinitionManagerRemote.class,
"${GroupDefinitionManager}"), //
MeasurementBaselineManager(MeasurementBaselineManagerRemote.class,
"${MeasurementBaselineManager}"), //
MeasurementDataManager(MeasurementDataManagerRemote.class,
"${MeasurementDataManager}"), //
MeasurementDefinitionManager(MeasurementDefinitionManagerRemote.class,
"${MeasurementDefinitionManager}"), //
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/definition/GroupDefinitionManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/definition/GroupDefinitionManagerBean.java
index 190a169..9d5251b 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/definition/GroupDefinitionManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/definition/GroupDefinitionManagerBean.java
@@ -69,7 +69,7 @@ import org.rhq.enterprise.server.util.CriteriaQueryGenerator;
import org.rhq.enterprise.server.util.CriteriaQueryRunner;
@Stateless
-public class GroupDefinitionManagerBean implements GroupDefinitionManagerLocal {
+public class GroupDefinitionManagerBean implements GroupDefinitionManagerLocal,
GroupDefinitionManagerRemote {
private final Log log = LogFactory.getLog(GroupDefinitionManagerBean.class);
@PersistenceContext(unitName = RHQConstants.PERSISTENCE_UNIT_NAME)
@@ -415,15 +415,14 @@ public class GroupDefinitionManagerBean implements
GroupDefinitionManagerLocal {
public PageList<GroupDefinition> findGroupDefinitionsByCriteria(Subject
subject,
ResourceGroupDefinitionCriteria criteria) {
- CriteriaQueryGenerator generator = new CriteriaQueryGenerator(subject,
criteria);
- ;
if (authorizationManager.isInventoryManager(subject) == false) {
if (criteria.isInventoryManagerRequired()) {
throw new PermissionException("Subject [" + subject.getName()
+ "] requires InventoryManager permission for requested query
criteria.");
}
}
-
+
+ CriteriaQueryGenerator generator = new CriteriaQueryGenerator(subject,
criteria);
CriteriaQueryRunner<GroupDefinition> queryRunner = new
CriteriaQueryRunner<GroupDefinition>(criteria,
generator, entityManager);
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/definition/GroupDefinitionManagerRemote.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/definition/GroupDefinitionManagerRemote.java
new file mode 100644
index 0000000..70e3f88
--- /dev/null
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/definition/GroupDefinitionManagerRemote.java
@@ -0,0 +1,120 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2013 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.resource.group.definition;
+
+import javax.ejb.Remote;
+
+import org.rhq.core.domain.auth.Subject;
+import org.rhq.core.domain.criteria.ResourceGroupDefinitionCriteria;
+import org.rhq.core.domain.resource.group.GroupDefinition;
+import org.rhq.core.domain.resource.group.InvalidExpressionException;
+import org.rhq.core.domain.util.PageControl;
+import org.rhq.core.domain.util.PageList;
+import org.rhq.enterprise.server.resource.group.ResourceGroupDeleteException;
+import org.rhq.enterprise.server.resource.group.ResourceGroupUpdateException;
+import
org.rhq.enterprise.server.resource.group.definition.exception.GroupDefinitionAlreadyExistsException;
+import
org.rhq.enterprise.server.resource.group.definition.exception.GroupDefinitionCreateException;
+import
org.rhq.enterprise.server.resource.group.definition.exception.GroupDefinitionDeleteException;
+import
org.rhq.enterprise.server.resource.group.definition.exception.GroupDefinitionNotFoundException;
+import
org.rhq.enterprise.server.resource.group.definition.exception.GroupDefinitionUpdateException;
+
+
+/**
+ * The remote interface to the SLSB GroupDefinitionManager.
+ *
+ * @author Jirka Kremser
+ */
+@Remote
+public interface GroupDefinitionManagerRemote {
+
+ /**
+ * Finds the group definition by id
+ *
+ * @param groupDefinitionId the id
+ * @return instance of <code>GroupDefinition</code>
+ * @throws GroupDefinitionNotFoundException in case the group definition has not been
found
+ */
+ GroupDefinition getById(int groupDefinitionId) throws
GroupDefinitionNotFoundException;
+
+ /**
+ * Creates a new group definiton.
+ * The subject needs to have MANAGE_INVENTORY and MANAGE_SETTINGS permissions.
+ *
+ * @param subject the user who is asking create the group definition
+ * @param newGroupDefinition the object defining the group definition
+ * @return instance of <code>GroupDefinition</code>
+ * @throws GroupDefinitionAlreadyExistsException
+ * @throws GroupDefinitionCreateException
+ */
+ GroupDefinition createGroupDefinition(Subject subject, GroupDefinition
newGroupDefinition)
+ throws GroupDefinitionAlreadyExistsException, GroupDefinitionCreateException;
+
+ /**
+ * Fetches the group definitions based on provided criteria.
+ * The subject needs to have MANAGE_INVENTORY and MANAGE_SETTINGS permissions.
+ *
+ * @param subject the user who is asking to find the group definitions
+ * @param criteria the criteria
+ * @return instance of <code>GroupDefinition</code>
+ */
+ PageList<GroupDefinition> findGroupDefinitionsByCriteria(Subject subject,
ResourceGroupDefinitionCriteria criteria);
+
+ /**
+ * Deletes the given group definition.
+ * The subject needs to have MANAGE_INVENTORY and MANAGE_SETTINGS permissions.
+ *
+ * @param subject the user who is asking to remove the group definition
+ * @param groupDefinitionId the id of a group definition to be deleted
+ * @throws GroupDefinitionNotFoundException
+ * @throws GroupDefinitionDeleteException
+ */
+ void removeGroupDefinition(Subject subject, Integer groupDefinitionId) throws
GroupDefinitionNotFoundException,
+ GroupDefinitionDeleteException;
+
+ /**
+ * Updates the given group definition.
+ * The subject needs to have MANAGE_INVENTORY and MANAGE_SETTINGS permissions.
+ *
+ * @param subject the user who is asking to update the group definition
+ * @param updated the object defining the group definition to be changed (based on
its id)
+ * @return the updated group definition
+ * @throws GroupDefinitionAlreadyExistsException
+ * @throws GroupDefinitionUpdateException
+ * @throws InvalidExpressionException
+ * @throws ResourceGroupUpdateException
+ */
+ GroupDefinition updateGroupDefinition(Subject subject, GroupDefinition updated)
+ throws GroupDefinitionAlreadyExistsException, GroupDefinitionUpdateException,
InvalidExpressionException,
+ ResourceGroupUpdateException;
+
+ /**
+ * Explicitly recalculates the group membership, depending on the
GroupDefinition's expression.
+ * The subject needs to have MANAGE_INVENTORY and MANAGE_SETTINGS permissions.
+ *
+ * @param subject the user who is asking to recalculate the group membership
+ * @param groupDefinitionId the id of a group definition to be recalculated
+ * @throws ResourceGroupDeleteException
+ * @throws GroupDefinitionDeleteException
+ * @throws GroupDefinitionNotFoundException
+ * @throws InvalidExpressionException
+ */
+ void calculateGroupMembership(Subject subject, int groupDefinitionId) throws
ResourceGroupDeleteException,
+ GroupDefinitionDeleteException, GroupDefinitionNotFoundException,
InvalidExpressionException;
+
+}
\ No newline at end of file