modules/core/domain/src/main/java/org/rhq/core/domain/criteria/JPADriftChangeSetCriteria.java | 5 +++ modules/core/domain/src/main/java/org/rhq/core/domain/criteria/JPADriftCriteria.java | 16 ++++++---- modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceAlreadyExistsException.java | 9 +++++ modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceTypeAlreadyExistsException.java | 7 ++++ modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupAlreadyExistsException.java | 7 ++++ modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerRemote.java | 6 +++ modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupUpdateException.java | 8 +++++ 7 files changed, 52 insertions(+), 6 deletions(-)
New commits: commit 9d56ea4c0431e91ffb25ca1fab29e7fc17305534 Author: Jay Shaughnessy jshaughn@redhat.com Date: Tue Mar 5 14:41:13 2013 -0500
Several of our Exception classes need to be annotated as ApplicationExceptions. This prevents them from being wrapped as EJBExceptions when returned out of a transaction context (and therefore more easily caught as the expected exception type).
Most of these, the specific "return-value-oriented" AlreadyExists exceptions should not mark the Txc for rollback.
More general exceptions can still be marked as ApplicationException, to avoid the wrapping, but should in fact rollback the Tx, because the problem is not specific and may be terminal to the logical operation.
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceAlreadyExistsException.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceAlreadyExistsException.java index 1afef20..6660e93 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceAlreadyExistsException.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceAlreadyExistsException.java @@ -18,7 +18,14 @@ */ package org.rhq.enterprise.server.resource;
-public class ResourceAlreadyExistsException extends Exception { +import javax.ejb.ApplicationException; + +/** + * Declare this an {@link ApplicationException} because we don't want these to be wrapped or to rollback an ongoing + * transaction. + */ +@ApplicationException(rollback = false, inherited = true) +public class ResourceAlreadyExistsException extends RuntimeException { private static final long serialVersionUID = -8394759185254688952L;
public ResourceAlreadyExistsException() { diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceTypeAlreadyExistsException.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceTypeAlreadyExistsException.java index 1a65ed7..d0c4b97 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceTypeAlreadyExistsException.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceTypeAlreadyExistsException.java @@ -18,6 +18,13 @@ */ package org.rhq.enterprise.server.resource;
+import javax.ejb.ApplicationException; + +/** + * Declare this an {@link ApplicationException} because we don't want these to be wrapped or to rollback an ongoing + * transaction. + */ +@ApplicationException(rollback = false, inherited = true) public class ResourceTypeAlreadyExistsException extends RuntimeException { private static final long serialVersionUID = 1169791095984659926L;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupAlreadyExistsException.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupAlreadyExistsException.java index ddbd79f..eeedd2d 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupAlreadyExistsException.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupAlreadyExistsException.java @@ -18,6 +18,13 @@ */ package org.rhq.enterprise.server.resource.group;
+import javax.ejb.ApplicationException; + +/** + * Declare this an {@link ApplicationException} because we don't want these to be wrapped or to rollback an ongoing + * transaction. + */ +@ApplicationException(rollback = false, inherited = true) public class ResourceGroupAlreadyExistsException extends ResourceGroupUpdateException { private static final long serialVersionUID = 1L;
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerRemote.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerRemote.java index ceffcac..6e40bb5 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerRemote.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerRemote.java @@ -35,6 +35,12 @@ public interface ResourceGroupManagerRemote {
void addResourcesToGroup(Subject subject, int groupId, int[] resourceIds);
+ /** + * @param subject + * @param resourceGroup + * @return The new ResourceGroup + * @throws ResourceGroupAlreadyExistsException + */ ResourceGroup createResourceGroup(Subject subject, ResourceGroup resourceGroup);
void deleteResourceGroup(Subject subject, int groupId) throws ResourceGroupNotFoundException, diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupUpdateException.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupUpdateException.java index 7dd0701..c0dc346 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupUpdateException.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupUpdateException.java @@ -18,6 +18,14 @@ */ package org.rhq.enterprise.server.resource.group;
+import javax.ejb.ApplicationException; + +/** + * Declare this an {@link ApplicationException} because we don't want these to be wrapped. But, this is a general + * exception, so do allow the Tx to be marked for rollback. Only certain specific exceptions should allow the Tx to + * continue. + */ +@ApplicationException(rollback = true, inherited = true) public class ResourceGroupUpdateException extends RuntimeException { private static final long serialVersionUID = 9079807311008826697L;
commit 92386ac7ed74e3ed05c80fd184733db794c9c197 Author: Jay Shaughnessy jshaughn@redhat.com Date: Tue Mar 5 14:37:24 2013 -0500
Add some overrides for unsupported global Criteria methods on the drift criteria classes that must conform to the server plugin's interface.
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/JPADriftChangeSetCriteria.java b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/JPADriftChangeSetCriteria.java index b6c02da..97ce68b 100644 --- a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/JPADriftChangeSetCriteria.java +++ b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/JPADriftChangeSetCriteria.java @@ -292,6 +292,11 @@ public class JPADriftChangeSetCriteria extends Criteria implements DriftChangeSe }
@Override + public void addSortId(PageOrdering pageOrdering) { + throw new UnsupportedOperationException("The sort is not supported by DriftChangeSetCriteria."); + } + + @Override public void addFilterIds(Integer... filterIds) { throw new UnsupportedOperationException("The filter is not supported by DriftChangeSetCriteria."); } diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/JPADriftCriteria.java b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/JPADriftCriteria.java index b222b58..56f0ddf 100644 --- a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/JPADriftCriteria.java +++ b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/JPADriftCriteria.java @@ -107,11 +107,6 @@ public class JPADriftCriteria extends Criteria implements DriftCriteria { }
@Override - public void addFilterIds(Integer... filterIds) { - throw new UnsupportedOperationException("The filter is not supported by DriftCriteria."); - } - - @Override public String getFilterId() { return (null == filterId) ? null : filterId.toString(); } @@ -248,4 +243,15 @@ public class JPADriftCriteria extends Criteria implements DriftCriteria { public PageOrdering getSortCtime() { return sortCtime; } + + @Override + public void addFilterIds(Integer... filterIds) { + throw new UnsupportedOperationException("The filter is not supported by DriftCriteria."); + } + + @Override + public void addSortId(PageOrdering pageOrdering) { + throw new UnsupportedOperationException("The sort is not supported by DriftCriteria."); + } + }