modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
| 5 ++-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceErrorsView.java
| 12 +++++---
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTitleBar.java
| 4 ++
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
| 7 ++--
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerLocal.java
| 15 ++++------
5 files changed, 27 insertions(+), 16 deletions(-)
New commits:
commit ebdd048df03a86ac90aca8919ed6dd820b484088
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Tue Nov 22 16:27:16 2011 -0500
[BZ 756106] ensure resource classloader is initialized in processSyncInfo() prior to
making any resource component facet
calls (
https://bugzilla.redhat.com/show_bug.cgi?id=756106)
(cherry picked from commit b33a34080654eb5305c5a2e46ad18d730b95ed85)
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
index 7d9024b..51ad1b7 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
@@ -1,6 +1,6 @@
/*
* RHQ Management Platform
- * Copyright (C) 2005-2010 Red Hat, Inc.
+ * Copyright (C) 2005-2011 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
@@ -2494,6 +2494,9 @@ public class InventoryManager extends AgentService implements
ContainerService,
log.info("Got unknown resource: " + syncInfo.getId());
} else {
Resource resource = container.getResource();
+ // Ensure the Resource classloader is initialized on the Resource
container.
+ initResourceContainer(resource);
+
if (log.isDebugEnabled()) {
log.debug("Local Resource: id=" + resource.getId() +
", status=" + resource.getInventoryStatus()
+ ", mtime=" + resource.getMtime());
commit ef9b8c17519e56b2c29aae4db0c3db5535fb2506
Merge: 3a8916b 20c2bae
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Mon Nov 28 14:51:23 2011 -0500
Merge branch 'release_jon3.x' of
ssh://git.fedorahosted.org/git/rhq/rhq into
release_jon3.x
commit 3a8916b2862e5e7df038baa8c306c775a72fccd6
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Mon Nov 14 18:00:31 2011 -0500
[BZ 753883] require a user to have MODIFY_RESOURCE perm on a Resource in order
to delete ResourceErrors from that Resource
(
https://bugzilla.redhat.com/show_bug.cgi?id=753883); fix a few javadoc typos
(cherry picked from commit c6e550f9da09dc3d418fcf6fee2fd99803ee48b2)
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceErrorsView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceErrorsView.java
index c881819..a2ec59a 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceErrorsView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceErrorsView.java
@@ -18,6 +18,8 @@
*/
package org.rhq.enterprise.gui.coregui.client.inventory.resource.detail;
+import java.util.Set;
+
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.data.Criteria;
import com.smartgwt.client.types.Alignment;
@@ -37,6 +39,8 @@ import com.smartgwt.client.widgets.grid.ListGridRecord;
import com.smartgwt.client.widgets.grid.events.RecordClickEvent;
import com.smartgwt.client.widgets.grid.events.RecordClickHandler;
+import org.rhq.core.domain.authz.Permission;
+import org.rhq.core.domain.resource.composite.ResourceComposite;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import org.rhq.enterprise.gui.coregui.client.components.table.AbstractTableAction;
import org.rhq.enterprise.gui.coregui.client.components.table.Table;
@@ -126,9 +130,11 @@ public class ResourceErrorsView extends
Table<ResourceErrorsDataSource> {
setListGridFields(errorTypeField, timeField, summaryField, iconField);
+ ResourceComposite resourceComposite = titleBar.getResource();
+ Set<Permission> resourcePermissions =
resourceComposite.getResourcePermission().getPermissions();
+ final boolean canModifyResource =
resourcePermissions.contains(Permission.MODIFY_RESOURCE);
addTableAction(extendLocatorId("delete"), MSG.common_button_delete(),
MSG.common_msg_areYouSure(),
- new AbstractTableAction(TableActionEnablement.ANY) {
- @Override
+ new AbstractTableAction(canModifyResource ? TableActionEnablement.ANY :
TableActionEnablement.NEVER) {
public void executeAction(final ListGridRecord[] selection, Object
actionValue) {
if (selection == null || selection.length == 0) {
return;
@@ -140,7 +146,6 @@ public class ResourceErrorsView extends
Table<ResourceErrorsDataSource> {
}
GWTServiceLookup.getResourceService().deleteResourceErrors(resourceErrorIds,
new AsyncCallback<Void>() {
- @Override
public void onSuccess(Void result) {
Message msg = new
Message(MSG.dataSource_resourceErrors_deleteSuccess(String
.valueOf(selection.length)), Severity.Info);
@@ -148,7 +153,6 @@ public class ResourceErrorsView extends
Table<ResourceErrorsDataSource> {
refresh();
}
- @Override
public void onFailure(Throwable caught) {
CoreGUI.getErrorHandler().handleError(MSG.dataSource_resourceErrors_deleteFailure(),
caught);
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTitleBar.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTitleBar.java
index b3e801c..7fc5b46 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTitleBar.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTitleBar.java
@@ -307,6 +307,10 @@ public class ResourceTitleBar extends LocatableVLayout {
}
}
+ public ResourceComposite getResource() {
+ return resourceComposite;
+ }
+
void displayResourceName(String resourceName) {
if (!resource.getName().equals(resourceName)) {
resource.setName(resourceName); // the name must have been changed by the
user via the editable field
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
index f87fa14..c2ac7db 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
@@ -2047,9 +2047,10 @@ public class ResourceManagerBean implements ResourceManagerLocal,
ResourceManage
ResourceError error = entityManager.find(ResourceError.class, resourceErrorId);
if (error != null) {
- if (!authorizationManager.canViewResource(user, error.getResource().getId()))
{
- throw new PermissionException("Cannot delete resource error ["
+ resourceErrorId + "]. User [" + user
- + "] does not have permission to operate on resource [" +
error.getResource().getName() + "].");
+ if (!authorizationManager.hasResourcePermission(user,
Permission.MODIFY_RESOURCE,
+ error.getResource().getId())) {
+ throw new PermissionException("Cannot delete Resource error ["
+ resourceErrorId + "]. User [" + user
+ + "] does not have permission to modify Resource [" +
error.getResource().getName() + "].");
}
entityManager.remove(error);
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerLocal.java
index 841428b..1d1ec69 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerLocal.java
@@ -103,8 +103,8 @@ public interface ResourceManagerLocal {
* method, make sure you have a specific reason for it; check to see if calling
* {@link #uninventoryResource(Subject, int)} would not be more appropriate.
*
- * @param user the user deleting the resource
- * @param resource the resource to be deleted
+ * @param user the user deleting the resource
+ * @param resourceId the ID of the resource to be deleted
*/
void uninventoryResourceAsyncWork(Subject user, int resourceId);
@@ -300,9 +300,6 @@ public interface ResourceManagerLocal {
PageList<Resource> findResourceByIds(Subject subject, int[] resourceIds,
boolean attachParentResource,
PageControl pageControl);
- /**
- * @see ResourceManagerRemote#getResourceTree(int)
- */
Resource getResourceTree(int rootResourceId, boolean recursive);
/**
@@ -351,7 +348,9 @@ public interface ResourceManagerLocal {
void addResourceError(ResourceError resourceError);
/**
- * Deletes the given resource error, effectively removing it from its resource's
list of errors.
+ * Deletes the given resource error, effectively removing it from its resource's
list of errors. Requires the
+ * specified user to possess the {@link
org.rhq.core.domain.authz.Permission#MODIFY_RESOURCE MODIFY_RESOURCE}
+ * permission for the Resource with which the error is associated.
*
* @param user the user deleting the resource error
* @param resourceErrorId identifies the resource error to delete
@@ -415,11 +414,11 @@ public interface ResourceManagerLocal {
/**
* Load the entire list of resources under an agent. Tries to do so in as few
- * queries as possible while prefectching the information necessary to create a tree
+ * queries as possible while prefetching the information necessary to create a tree
* view of the platform inventory. This includes resource type and subcategory
information
* as well as current availability and structure.
*
- * This method also returns placesholder {@link
org.rhq.core.domain.resource.composite.LockedResource}
+ * This method also returns placeholder "locked" ResourceFlyweight
* objects for resources that a user should not have visibility to in order to keep
the tree a
* directed graph.
*