You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by kk...@apache.org on 2017/05/05 18:04:50 UTC
flink git commit: [FLINK-6463] [cep] Throw exception when NOT-NEXT is
after OPTIONAL.
Repository: flink
Updated Branches:
refs/heads/master 8ba5c7a37 -> 28ab73750
[FLINK-6463] [cep] Throw exception when NOT-NEXT is after OPTIONAL.
Project: http://git-wip-us.apache.org/repos/asf/flink/repo
Commit: http://git-wip-us.apache.org/repos/asf/flink/commit/28ab7375
Tree: http://git-wip-us.apache.org/repos/asf/flink/tree/28ab7375
Diff: http://git-wip-us.apache.org/repos/asf/flink/diff/28ab7375
Branch: refs/heads/master
Commit: 28ab737506aa53248de8f71eed0dcff87d7e6f40
Parents: 8ba5c7a
Author: kl0u <kk...@gmail.com>
Authored: Fri May 5 15:05:52 2017 +0200
Committer: kl0u <kk...@gmail.com>
Committed: Fri May 5 17:25:08 2017 +0200
----------------------------------------------------------------------
.../org/apache/flink/cep/pattern/Pattern.java | 15 +++--
.../org/apache/flink/cep/nfa/NFAITCase.java | 67 --------------------
2 files changed, 10 insertions(+), 72 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flink/blob/28ab7375/flink-libraries/flink-cep/src/main/java/org/apache/flink/cep/pattern/Pattern.java
----------------------------------------------------------------------
diff --git a/flink-libraries/flink-cep/src/main/java/org/apache/flink/cep/pattern/Pattern.java b/flink-libraries/flink-cep/src/main/java/org/apache/flink/cep/pattern/Pattern.java
index 3cf25ef..2d10b41 100644
--- a/flink-libraries/flink-cep/src/main/java/org/apache/flink/cep/pattern/Pattern.java
+++ b/flink-libraries/flink-cep/src/main/java/org/apache/flink/cep/pattern/Pattern.java
@@ -221,6 +221,12 @@ public class Pattern<T, F extends T> {
* @return A new pattern which is appended to this one
*/
public Pattern<T, T> notNext(final String name) {
+ if (quantifier.hasProperty(Quantifier.QuantifierProperty.OPTIONAL)) {
+ throw new UnsupportedOperationException(
+ "Specifying a pattern with an optional path to NOT condition is not supported yet. " +
+ "You can simulate such pattern with two independent patterns, one with and the other without " +
+ "the optional part.");
+ }
return new Pattern<>(name, this, ConsumingStrategy.NOT_NEXT);
}
@@ -247,12 +253,11 @@ public class Pattern<T, F extends T> {
*/
public Pattern<T, T> notFollowedBy(final String name) {
if (quantifier.hasProperty(Quantifier.QuantifierProperty.OPTIONAL)) {
- throw new MalformedPatternException(
- "Specifying a pattern with an optional path to NOT condition is not supported yet. " +
- "You can simulate such pattern with two independent patterns, one with and the other without " +
- "the optional part.");
+ throw new UnsupportedOperationException(
+ "Specifying a pattern with an optional path to NOT condition is not supported yet. " +
+ "You can simulate such pattern with two independent patterns, one with and the other without " +
+ "the optional part.");
}
-
return new Pattern<>(name, this, ConsumingStrategy.NOT_FOLLOW);
}
http://git-wip-us.apache.org/repos/asf/flink/blob/28ab7375/flink-libraries/flink-cep/src/test/java/org/apache/flink/cep/nfa/NFAITCase.java
----------------------------------------------------------------------
diff --git a/flink-libraries/flink-cep/src/test/java/org/apache/flink/cep/nfa/NFAITCase.java b/flink-libraries/flink-cep/src/test/java/org/apache/flink/cep/nfa/NFAITCase.java
index ab6ff82..2cc67e5 100644
--- a/flink-libraries/flink-cep/src/test/java/org/apache/flink/cep/nfa/NFAITCase.java
+++ b/flink-libraries/flink-cep/src/test/java/org/apache/flink/cep/nfa/NFAITCase.java
@@ -3742,73 +3742,6 @@ public class NFAITCase extends TestLogger {
}
@Test
- public void testNotNextAfterZeroOrMoreSkipTillNext() {
- final List<List<Event>> matches = testNotNextAfterZeroOrMore(false);
- compareMaps(matches, Lists.<List<Event>>newArrayList(
- Lists.newArrayList(NotFollowByData.a1, NotFollowByData.d1)
- ));
- }
-
- @Test
- public void testNotNextAfterZeroOrMoreSkipTillAny() {
- final List<List<Event>> matches = testNotNextAfterZeroOrMore(true);
- compareMaps(matches, Lists.<List<Event>>newArrayList(
- Lists.newArrayList(NotFollowByData.a1, NotFollowByData.b2, NotFollowByData.d1),
- Lists.newArrayList(NotFollowByData.a1, NotFollowByData.d1)
- ));
- }
-
- private List<List<Event>> testNotNextAfterZeroOrMore(boolean allMatches) {
- List<StreamRecord<Event>> inputEvents = new ArrayList<>();
-
- int i = 0;
- inputEvents.add(new StreamRecord<>(NotFollowByData.a1, i++));
- inputEvents.add(new StreamRecord<>(NotFollowByData.b1, i++));
- inputEvents.add(new StreamRecord<>(NotFollowByData.c1, i++));
- inputEvents.add(new StreamRecord<>(NotFollowByData.b2, i++));
- inputEvents.add(new StreamRecord<>(NotFollowByData.d1, i++));
-
- Pattern<Event, ?> pattern = Pattern
- .<Event>begin("a").where(new SimpleCondition<Event>() {
- private static final long serialVersionUID = 5726188262756267490L;
-
- @Override
- public boolean filter(Event value) throws Exception {
- return value.getName().equals("a");
- }
- });
-
- pattern = (allMatches ? pattern.followedByAny("b*") : pattern.followedBy("b*")).where(new SimpleCondition<Event>() {
- private static final long serialVersionUID = 5726188262756267490L;
-
- @Override
- public boolean filter(Event value) throws Exception {
- return value.getName().equals("b");
- }
- }).oneOrMore().optional()
- .notNext("not c").where(new SimpleCondition<Event>() {
- private static final long serialVersionUID = 5726188262756267490L;
-
- @Override
- public boolean filter(Event value) throws Exception {
- return value.getName().equals("c");
- }
- })
- .followedBy("d").where(new SimpleCondition<Event>() {
- private static final long serialVersionUID = 5726188262756267490L;
-
- @Override
- public boolean filter(Event value) throws Exception {
- return value.getName().equals("d");
- }
- });
-
- NFA<Event> nfa = NFACompiler.compile(pattern, Event.createTypeSerializer(), false);
-
- return feedNFA(inputEvents, nfa);
- }
-
- @Test
public void testNotNextAfterOneOrMoreSkipTillNext() {
final List<List<Event>> matches = testNotNextAfterOneOrMore(false);
assertEquals(0, matches.size());