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@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