modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceFactoryManagerBean.java | 26 ++++++++-- modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceFactoryManagerLocal.java | 2 modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceFactoryManagerRemote.java | 6 ++ 3 files changed, 31 insertions(+), 3 deletions(-)
New commits: commit 42aa525be2f00efa77775cbe0daf9f9cd2be97db Author: Simeon Pinder spinder@redhat.com Date: Tue May 31 15:27:23 2011 -0400
BZ 707342: JON 2.4 not allowing update of Resource name. -inially the approach was to just renable the ResourceManager.updateResource() method in the remote api, but this exposed a nasty flaw in the 2.4 CLI where pluginConfiguration among other things were silently deleted with simple update. Instead the updateResourceName functionality was added to the ResourceFactoryManager bean to avoid conflicts with any other classes that might have uncertain change history in release-3.0.0.
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceFactoryManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceFactoryManagerBean.java index 9a6b419..65c1493 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceFactoryManagerBean.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceFactoryManagerBean.java @@ -154,9 +154,7 @@ public class ResourceFactoryManagerBean implements ResourceFactoryManagerLocal,
// There is some inconsistency if we're completing a request that was not in the database if (history == null) { - log - .error("Attempting to complete a request that was not found in the database: " - + response.getRequestId()); + log.error("Attempting to complete a request that was not found in the database: " + response.getRequestId()); return; }
@@ -595,4 +593,26 @@ public class ResourceFactoryManagerBean implements ResourceFactoryManagerLocal, } }
+ public void updateResourceName(Subject subject, int resourceId, String name) { + if (name == null) { + throw new IllegalArgumentException("Resource name cannot be null."); + } + Resource resource = getResourceToBeModified(subject, resourceId); + resource.setName(name); + resource.setMtime(System.currentTimeMillis()); + } + + private Resource getResourceToBeModified(Subject subject, int resourceId) { + Resource resource = entityManager.find(Resource.class, resourceId); + + if (resource == null) { + throw new ResourceNotFoundException(resourceId); + } + + if (!authorizationManager.hasResourcePermission(subject, Permission.MODIFY_RESOURCE, resourceId)) { + throw new PermissionException("User [" + subject + + "] does not have permission to modify Resource with id [" + resourceId + "]."); + } + return resource; + } } diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceFactoryManagerLocal.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceFactoryManagerLocal.java index ea3784d..284795c 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceFactoryManagerLocal.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceFactoryManagerLocal.java @@ -240,4 +240,6 @@ public interface ResourceFactoryManagerLocal { */ void deleteResource(Subject subject, int resourceId);
+ void updateResourceName(Subject subject, int resourceId, String name); + } \ No newline at end of file diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceFactoryManagerRemote.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceFactoryManagerRemote.java index 1c5633d..a620e1f 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceFactoryManagerRemote.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceFactoryManagerRemote.java @@ -115,4 +115,10 @@ public interface ResourceFactoryManagerRemote { void deleteResource( // @WebParam(name = "subject") Subject subject, // @WebParam(name = "resourceId") int resourceId); + + @WebMethod + void updateResourceName( // + @WebParam(name = "subject") Subject subject, // + @WebParam(name = "resourceId") int resourceId, // + @WebParam(name = "name") String name); }
rhq-commits@lists.fedorahosted.org