You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by ay...@apache.org on 2014/07/30 11:16:28 UTC
git commit: [CXF-5878] Disabling policy engine causes NPE
Repository: cxf
Updated Branches:
refs/heads/master d391d9371 -> d45de9c25
[CXF-5878] Disabling policy engine causes NPE
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/d45de9c2
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/d45de9c2
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/d45de9c2
Branch: refs/heads/master
Commit: d45de9c2548f38798954016faa6ac207257ad12c
Parents: d391d93
Author: Akitoshi Yoshida <ay...@apache.org>
Authored: Wed Jul 30 11:07:19 2014 +0200
Committer: Akitoshi Yoshida <ay...@apache.org>
Committed: Wed Jul 30 11:15:50 2014 +0200
----------------------------------------------------------------------
.../apache/cxf/ws/policy/EndpointPolicyImpl.java | 8 +++++++-
.../cxf/ws/policy/EndpointPolicyImplTest.java | 16 ++++++++++++++++
2 files changed, 23 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/d45de9c2/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/EndpointPolicyImpl.java
----------------------------------------------------------------------
diff --git a/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/EndpointPolicyImpl.java b/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/EndpointPolicyImpl.java
index 2cc8341..7a8bad5 100644
--- a/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/EndpointPolicyImpl.java
+++ b/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/EndpointPolicyImpl.java
@@ -21,6 +21,7 @@ package org.apache.cxf.ws.policy;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
@@ -158,7 +159,12 @@ public class EndpointPolicyImpl implements EndpointPolicy {
void chooseAlternative(Message m) {
Collection<Assertion> alternative = null;
if (requestor) {
- alternative = engine.getAlternativeSelector().selectAlternative(policy, engine, assertor, null, m);
+ if (engine.isEnabled()) {
+ alternative = engine.getAlternativeSelector().selectAlternative(policy, engine, assertor, null, m);
+ } else {
+ // use an empty list to avoid getting NPE
+ alternative = Collections.emptyList();
+ }
} else {
alternative = getSupportedAlternatives(m);
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/d45de9c2/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/EndpointPolicyImplTest.java
----------------------------------------------------------------------
diff --git a/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/EndpointPolicyImplTest.java b/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/EndpointPolicyImplTest.java
index e3bb7b3..42dc83b 100644
--- a/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/EndpointPolicyImplTest.java
+++ b/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/EndpointPolicyImplTest.java
@@ -166,6 +166,7 @@ public class EndpointPolicyImplTest extends Assert {
EndpointPolicyImpl epi = new EndpointPolicyImpl(null, engine, true, assertor);
epi.setPolicy(policy);
+ EasyMock.expect(engine.isEnabled()).andReturn(true).anyTimes();
EasyMock.expect(engine.getAlternativeSelector()).andReturn(selector);
EasyMock.expect(selector.selectAlternative(policy, engine, assertor, null, m)).andReturn(null);
@@ -179,6 +180,7 @@ public class EndpointPolicyImplTest extends Assert {
control.verify();
control.reset();
+ EasyMock.expect(engine.isEnabled()).andReturn(true).anyTimes();
EasyMock.expect(engine.getAlternativeSelector()).andReturn(selector);
Collection<Assertion> alternative = new ArrayList<Assertion>();
EasyMock.expect(selector.selectAlternative(policy, engine, assertor, null, m)).andReturn(alternative);
@@ -187,6 +189,20 @@ public class EndpointPolicyImplTest extends Assert {
Collection<Assertion> choice = epi.getChosenAlternative();
assertSame(choice, alternative);
control.verify();
+
+ control.reset();
+ EasyMock.expect(engine.isEnabled()).andReturn(false).anyTimes();
+ EasyMock.expect(engine.getAlternativeSelector()).andReturn(null).anyTimes();
+ control.replay();
+ try {
+ epi.chooseAlternative(m);
+ } catch (Exception ex) {
+ // no NPE expected
+ fail("No Exception expected: " + ex);
+ }
+ choice = epi.getChosenAlternative();
+ assertTrue("not an empty list", choice != null && choice.isEmpty());
+ control.verify();
}
private MessageImpl createMessage() {