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(a)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);
}
Show replies by date