You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kw...@apache.org on 2018/03/22 18:15:15 UTC
qpid-broker-j git commit: QPID-7197: [Broker-J] Fix referrer/referee
confusion in parameter names.
Repository: qpid-broker-j
Updated Branches:
refs/heads/master 4fbab0e59 -> c5e5cd2ab
QPID-7197: [Broker-J] Fix referrer/referee confusion in parameter names.
Project: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/commit/c5e5cd2a
Tree: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/tree/c5e5cd2a
Diff: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/diff/c5e5cd2a
Branch: refs/heads/master
Commit: c5e5cd2ab225482627009b486a1494a747e7539c
Parents: 4fbab0e
Author: Keith Wall <kw...@apache.org>
Authored: Thu Mar 22 18:12:38 2018 +0000
Committer: Keith Wall <kw...@apache.org>
Committed: Thu Mar 22 18:14:35 2018 +0000
----------------------------------------------------------------------
.../server/model/AbstractConfiguredObject.java | 83 +++++++++++---------
1 file changed, 48 insertions(+), 35 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/c5e5cd2a/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
----------------------------------------------------------------------
diff --git a/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java b/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
index 447fc59..3bc6c84 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
@@ -2246,15 +2246,15 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im
return deleteNoChecks();
}
- private void checkReferencesOnDelete(final ConfiguredObject<?> referee, final ConfiguredObject<?> referrer)
+ private void checkReferencesOnDelete(final ConfiguredObject<?> referrer, final ConfiguredObject<?> referee)
{
- if (!managesChildren(referrer))
+ if (!managesChildren(referee))
{
- getModel().getChildTypes(referrer.getCategoryClass())
- .forEach(childClass -> referrer.getChildren(childClass)
- .forEach(child -> checkReferencesOnDelete(referee, child)));
+ getModel().getChildTypes(referee.getCategoryClass())
+ .forEach(childClass -> referee.getChildren(childClass)
+ .forEach(child -> checkReferencesOnDelete(referrer, child)));
}
- checkReferences(referee, referrer);
+ checkReferences(referrer, referee);
}
private ConfiguredObject<?> getHierarchyRoot(final AbstractConfiguredObject<X> o)
@@ -2278,89 +2278,102 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im
return managesChildren(object.getCategoryClass()) || managesChildren(object.getTypeClass());
}
- private void checkReferences(final ConfiguredObject<?> referee, final ConfiguredObject<?> referrer)
+ private void checkReferences(final ConfiguredObject<?> referrer, final ConfiguredObject<?> referee)
{
- if (hasReference(referee, referrer))
+ if (hasReference(referrer, referee))
{
- throw new IntegrityViolationException(String.format("%s '%s' is in use by %s '%s'",
- referrer.getCategoryClass().getSimpleName(),
- referrer.getName(),
- referee.getCategoryClass().getSimpleName(),
- referee.getName()));
+ if (referee == this)
+ {
+ throw new IntegrityViolationException(String.format("%s '%s' is in use by %s '%s'.",
+ referee.getCategoryClass().getSimpleName(),
+ referee.getName(),
+ referrer.getCategoryClass().getSimpleName(),
+ referrer.getName()));
+ }
+ else
+ {
+ throw new IntegrityViolationException(String.format("Cannot delete %s '%s' as descendant %s '%s' is in use by %s '%s'.",
+ this.getCategoryClass().getSimpleName(),
+ this.getName(),
+ referee.getCategoryClass().getSimpleName(),
+ referee.getName(),
+ referrer.getCategoryClass().getSimpleName(),
+ referrer.getName()));
+ }
}
- if (!managesChildren(referee))
+ if (!managesChildren(referrer))
{
- getModel().getChildTypes(referee.getCategoryClass())
- .forEach(childClass -> referee.getChildren(childClass)
- .stream()
- .filter(child -> child != this)
- .forEach(child -> checkReferences(child, referrer)));
+ getModel().getChildTypes(referrer.getCategoryClass())
+ .forEach(childClass -> referrer.getChildren(childClass)
+ .stream()
+ .filter(child -> child != this)
+ .forEach(child -> checkReferences(child, referee)));
}
}
- private boolean hasReference(final ConfiguredObject<?> referee,
- final ConfiguredObject<?> referrer)
+ private boolean hasReference(final ConfiguredObject<?> referrer,
+ final ConfiguredObject<?> referee)
{
- if (referee instanceof AbstractConfiguredObject)
+ if (referrer instanceof AbstractConfiguredObject)
{
return getModel().getTypeRegistry()
- .getAttributes(referee.getClass())
+ .getAttributes(referrer.getClass())
.stream()
.anyMatch(attribute -> {
Class<?> type = attribute.getType();
Type genericType = attribute.getGenericType();
- return isReferred(referrer, type,
+ return isReferred(referee, type,
genericType,
() -> {
@SuppressWarnings("unchecked")
Object value =
- ((ConfiguredObjectAttribute) attribute).getValue(referee);
+ ((ConfiguredObjectAttribute) attribute).getValue(referrer);
return value;
});
});
}
else
{
- return referee.getAttributeNames().stream().anyMatch(name -> {
- Object value = referee.getAttribute(name);
+ return referrer.getAttributeNames().stream().anyMatch(name -> {
+ Object value = referrer.getAttribute(name);
if (value != null)
{
Class<?> type = value.getClass();
- return isReferred(referrer, type, type, () -> value);
+ return isReferred(referee, type, type, () -> value);
}
return false;
});
}
}
- private boolean isReferred(final ConfiguredObject<?> referrer,
+ private boolean isReferred(final ConfiguredObject<?> referee,
final Class<?> attributeValueType,
final Type attributeGenericType,
final Supplier<?> attributeValue)
{
- final Class<? extends ConfiguredObject> referrerCategory = referrer.getCategoryClass();
+ final Class<? extends ConfiguredObject> referrerCategory = referee.getCategoryClass();
if (referrerCategory.isAssignableFrom(attributeValueType))
{
- return attributeValue.get() == referrer;
+ return attributeValue.get() == referee;
}
else if (hasParameterOfType(attributeGenericType, referrerCategory))
{
Object value = attributeValue.get();
if (value instanceof Collection)
{
- return ((Collection<?>) value).stream().anyMatch(m -> m == referrer);
+ return ((Collection<?>) value).stream().anyMatch(m -> m == referee);
}
else if (value instanceof Object[])
{
- return Arrays.stream((Object[]) value).anyMatch(m -> m == referrer);
+ return Arrays.stream((Object[]) value).anyMatch(m -> m == referee);
}
else if (value instanceof Map)
{
return ((Map<?, ?>) value).entrySet()
.stream()
- .anyMatch(e -> e.getKey() == referrer
- || e.getValue() == referrer);
+ .anyMatch(e -> e.getKey() == referee
+ || e.getValue() == referee);
}
}
return false;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org