[savara-commits] savara SVN: r661 - in branches/experimental/2.0.x/bundles/org.savara.activity/src: test/java/org/savara/activity and 1 other directory.
do-not-reply at jboss.org
do-not-reply at jboss.org
Fri Feb 11 13:04:08 EST 2011
Author: objectiser
Date: 2011-02-11 13:04:07 -0500 (Fri, 11 Feb 2011)
New Revision: 661
Added:
branches/experimental/2.0.x/bundles/org.savara.activity/src/main/java/org/savara/activity/ActivityFilter.java
Modified:
branches/experimental/2.0.x/bundles/org.savara.activity/src/main/java/org/savara/activity/ActivityProcessor.java
branches/experimental/2.0.x/bundles/org.savara.activity/src/main/java/org/savara/activity/DefaultActivityProcessor.java
branches/experimental/2.0.x/bundles/org.savara.activity/src/test/java/org/savara/activity/DefaultActivityProcessorTest.java
Log:
Add filter component and implement flow through the activity processor in the default implementation.
Added: branches/experimental/2.0.x/bundles/org.savara.activity/src/main/java/org/savara/activity/ActivityFilter.java
===================================================================
--- branches/experimental/2.0.x/bundles/org.savara.activity/src/main/java/org/savara/activity/ActivityFilter.java (rev 0)
+++ branches/experimental/2.0.x/bundles/org.savara.activity/src/main/java/org/savara/activity/ActivityFilter.java 2011-02-11 18:04:07 UTC (rev 661)
@@ -0,0 +1,36 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008-11, Red Hat Middleware LLC, and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ */
+package org.savara.activity;
+
+import org.savara.activity.model.Activity;
+
+/**
+ * This interface is used to provide activity filter capabilities.
+ *
+ */
+public interface ActivityFilter {
+
+ /**
+ * This method determines whether the supplied activity
+ * should be processed.
+ *
+ * @param activity The activity to be filtered
+ */
+ public boolean isRelevant(Activity activity);
+
+}
Modified: branches/experimental/2.0.x/bundles/org.savara.activity/src/main/java/org/savara/activity/ActivityProcessor.java
===================================================================
--- branches/experimental/2.0.x/bundles/org.savara.activity/src/main/java/org/savara/activity/ActivityProcessor.java 2011-02-11 16:47:02 UTC (rev 660)
+++ branches/experimental/2.0.x/bundles/org.savara.activity/src/main/java/org/savara/activity/ActivityProcessor.java 2011-02-11 18:04:07 UTC (rev 661)
@@ -29,6 +29,34 @@
public interface ActivityProcessor {
/**
+ * This method adds a new activity analyser.
+ *
+ * @param analyser The analyser
+ */
+ public void addActivityAnalyser(ActivityAnalyser analyser);
+
+ /**
+ * This method removes an existing activity analyser.
+ *
+ * @param analyser The analyser
+ */
+ public void removeActivityAnalyser(ActivityAnalyser analyser);
+
+ /**
+ * This method adds a new activity filter.
+ *
+ * @param filter The filter
+ */
+ public void addActivityFilter(ActivityFilter filter);
+
+ /**
+ * This method removes an existing activity filter.
+ *
+ * @param filter The filter
+ */
+ public void removeActivityFilter(ActivityFilter filter);
+
+ /**
* This method adds a new activity validator.
*
* @param validator The validator
@@ -43,20 +71,34 @@
public void removeActivityValidator(ActivityValidator validator);
/**
- * This method adds a new activity analyser.
+ * This method adds a new activity store.
*
- * @param analyser The analyser
+ * @param store The store
*/
- public void addActivityAnalyser(ActivityAnalyser analyser);
+ public void addActivityStore(ActivityStore store);
/**
- * This method removes an existing activity analyser.
+ * This method removes an existing activity store.
*
- * @param analyser The analyser
+ * @param store The store
*/
- public void removeActivityAnalyser(ActivityAnalyser analyser);
+ public void removeActivityStore(ActivityStore store);
/**
+ * This method adds a new activity notifier.
+ *
+ * @param notifier The notifier
+ */
+ public void addActivityNotifier(ActivityNotifier notifier);
+
+ /**
+ * This method removes an existing activity notifier.
+ *
+ * @param notifier The notifier
+ */
+ public void removeActivityNotifier(ActivityNotifier notifier);
+
+ /**
* This method processes the supplied activity event against
* any predefined analysers and validators.
*
Modified: branches/experimental/2.0.x/bundles/org.savara.activity/src/main/java/org/savara/activity/DefaultActivityProcessor.java
===================================================================
--- branches/experimental/2.0.x/bundles/org.savara.activity/src/main/java/org/savara/activity/DefaultActivityProcessor.java 2011-02-11 16:47:02 UTC (rev 660)
+++ branches/experimental/2.0.x/bundles/org.savara.activity/src/main/java/org/savara/activity/DefaultActivityProcessor.java 2011-02-11 18:04:07 UTC (rev 661)
@@ -28,18 +28,69 @@
*/
public class DefaultActivityProcessor implements ActivityProcessor {
+ private java.util.List<ActivityAnalyser> m_analysers=new java.util.Vector<ActivityAnalyser>();
+ private java.util.List<ActivityFilter> m_filters=new java.util.Vector<ActivityFilter>();
private java.util.List<ActivityValidator> m_validators=new java.util.Vector<ActivityValidator>();
- private java.util.List<ActivityAnalyser> m_analysers=new java.util.Vector<ActivityAnalyser>();
+ private java.util.List<ActivityStore> m_stores=new java.util.Vector<ActivityStore>();
+ private java.util.List<ActivityNotifier> m_notifiers=new java.util.Vector<ActivityNotifier>();
protected java.util.List<ActivityAnalyser> getAnalysers() {
return(m_analysers);
}
+ protected java.util.List<ActivityFilter> getFilters() {
+ return(m_filters);
+ }
+
protected java.util.List<ActivityValidator> getValidators() {
return(m_validators);
}
+ protected java.util.List<ActivityStore> getStores() {
+ return(m_stores);
+ }
+
+ protected java.util.List<ActivityNotifier> getNotifiers() {
+ return(m_notifiers);
+ }
+
/**
+ * This method adds a new activity analyser.
+ *
+ * @param analyser The analyser
+ */
+ public void addActivityAnalyser(ActivityAnalyser analyser) {
+ m_analysers.add(analyser);
+ }
+
+ /**
+ * This method removes an existing activity analyser.
+ *
+ * @param analyser The analyser
+ */
+ public void removeActivityAnalyser(ActivityAnalyser analyser) {
+ m_analysers.remove(analyser);
+ }
+
+ /**
+ * This method adds a new activity filter.
+ *
+ * @param filter The filter
+ */
+ public void addActivityFilter(ActivityFilter filter) {
+ m_filters.add(filter);
+ }
+
+ /**
+ * This method removes an existing activity filter.
+ *
+ * @param filter The filter
+ */
+ public void removeActivityFilter(ActivityFilter filter) {
+ m_filters.remove(filter);
+ }
+
+ /**
* This method adds a new activity validator.
*
* @param validator The validator
@@ -58,36 +109,80 @@
}
/**
- * This method adds a new activity analyser.
+ * This method adds a new activity notifier.
*
- * @param analyser The analyser
+ * @param notifier The notifier
*/
- public void addActivityAnalyser(ActivityAnalyser analyser) {
- m_analysers.add(analyser);
+ public void addActivityNotifier(ActivityNotifier notifier) {
+ m_notifiers.add(notifier);
}
/**
- * This method removes an existing activity analyser.
+ * This method removes an existing activity notifier.
*
- * @param analyser The analyser
+ * @param notifier The notifier
*/
- public void removeActivityAnalyser(ActivityAnalyser analyser) {
- m_analysers.remove(analyser);
+ public void removeActivityNotifier(ActivityNotifier notifier) {
+ m_notifiers.remove(notifier);
}
/**
+ * This method adds a new activity store.
+ *
+ * @param store The store
+ */
+ public void addActivityStore(ActivityStore store) {
+ m_stores.add(store);
+ }
+
+ /**
+ * This method removes an existing activity store.
+ *
+ * @param store The store
+ */
+ public void removeActivityStore(ActivityStore store) {
+ m_stores.remove(store);
+ }
+
+ /**
* This method processes the supplied activity event against
* any predefined analysers and validators.
*
* @param activity The activity event to be processed
*/
public void process(Activity activity) {
- for (ActivityAnalyser aa : m_analysers) {
+
+ // Invoke the analysers to derive any additional information
+ for (ActivityAnalyser aa : getAnalysers()) {
aa.analyse(activity);
}
- for (ActivityValidator av : m_validators) {
- av.validate(activity);
+
+ // Immediately consider the activity relevant if no filters
+ boolean process=(getFilters().size() == 0);
+
+ // If filters defined, then check them until one indicates interest
+ for (ActivityFilter af : getFilters()) {
+ process = af.isRelevant(activity);
+
+ if (process) {
+ break;
+ }
}
+
+ if (process) {
+ // Validate the activity
+ for (ActivityValidator av : getValidators()) {
+ av.validate(activity);
+ }
+
+ // Store the activity
+ for (ActivityStore as : getStores()) {
+ as.store(activity);
+ }
+
+ for (ActivityNotifier an : getNotifiers()) {
+ an.publish(activity);
+ }
+ }
}
-
}
Modified: branches/experimental/2.0.x/bundles/org.savara.activity/src/test/java/org/savara/activity/DefaultActivityProcessorTest.java
===================================================================
--- branches/experimental/2.0.x/bundles/org.savara.activity/src/test/java/org/savara/activity/DefaultActivityProcessorTest.java 2011-02-11 16:47:02 UTC (rev 660)
+++ branches/experimental/2.0.x/bundles/org.savara.activity/src/test/java/org/savara/activity/DefaultActivityProcessorTest.java 2011-02-11 18:04:07 UTC (rev 661)
@@ -23,6 +23,7 @@
import org.savara.activity.ActivityValidator;
import org.savara.activity.DefaultActivityProcessor;
import org.savara.activity.model.Activity;
+import org.savara.common.config.Configuration;
import static org.junit.Assert.*;
@@ -78,6 +79,82 @@
avm.process(act);
}
+ @Test
+ public void testNoFilterStore() {
+ ActivityProcessor ap=new DefaultActivityProcessor();
+
+ TestStore store=new TestStore();
+
+ ap.addActivityStore(store);
+
+ Activity act=new Activity();
+
+ ap.process(act);
+
+ if (store.getStore().size() == 0) {
+ fail("Activity event not stored");
+ }
+ }
+
+ @Test
+ public void testOneTrueFilterStore() {
+ ActivityProcessor ap=new DefaultActivityProcessor();
+
+ TestStore store=new TestStore();
+ TestFilter filter=new TestFilter(true);
+
+ ap.addActivityFilter(filter);
+ ap.addActivityStore(store);
+
+ Activity act=new Activity();
+
+ ap.process(act);
+
+ if (store.getStore().size() == 0) {
+ fail("Activity event not stored");
+ }
+ }
+
+ @Test
+ public void testOneFalseFilterStore() {
+ ActivityProcessor ap=new DefaultActivityProcessor();
+
+ TestStore store=new TestStore();
+ TestFilter filter=new TestFilter(false);
+
+ ap.addActivityFilter(filter);
+ ap.addActivityStore(store);
+
+ Activity act=new Activity();
+
+ ap.process(act);
+
+ if (store.getStore().size() != 0) {
+ fail("Activity event should not have been stored");
+ }
+ }
+
+
+ @Test
+ public void testOneFalseOneTrueFilterStore() {
+ ActivityProcessor ap=new DefaultActivityProcessor();
+
+ TestStore store=new TestStore();
+ TestFilter filterFalse=new TestFilter(false);
+ TestFilter filterTrue=new TestFilter(true);
+
+ ap.addActivityFilter(filterFalse);
+ ap.addActivityFilter(filterTrue);
+ ap.addActivityStore(store);
+
+ Activity act=new Activity();
+
+ ap.process(act);
+
+ if (store.getStore().size() == 0) {
+ fail("Activity event should have been stored");
+ }
+ }
public class TestAnalyser implements ActivityAnalyser {
private Activity m_activity=null;
@@ -91,7 +168,20 @@
}
}
+
+ public class TestFilter implements ActivityFilter {
+
+ boolean m_isRelevant=false;
+
+ public TestFilter(boolean relevant) {
+ m_isRelevant = relevant;
+ }
+ public boolean isRelevant(Activity activity) {
+ return(m_isRelevant);
+ }
+ }
+
public class TestValidator implements ActivityValidator {
private Activity m_activity=null;
@@ -104,7 +194,30 @@
m_activity = activity;
}
}
+
+ public class TestStore implements ActivityStore {
+
+ private java.util.List<Activity> m_store=new java.util.Vector<Activity>();
+ public void initialize(Configuration config) {
+ }
+
+ public void store(Activity activity) {
+ m_store.add(activity);
+ }
+
+ public java.util.List<Activity> getStore() {
+ return(m_store);
+ }
+
+ public Activity queryById(String id) {
+ return(null);
+ }
+
+ public void close() {
+ }
+ }
+
public class TestOrderAnalyserValidator implements ActivityAnalyser, ActivityValidator {
private Activity m_activity=null;
More information about the savara-commits
mailing list