[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