[savara-commits] savara SVN: r676 - branches/experimental/2.0.x/integration/jboss/common/src/main/java/org/savara/validator/service.

do-not-reply at jboss.org do-not-reply at jboss.org
Tue Feb 15 18:29:24 EST 2011


Author: objectiser
Date: 2011-02-15 18:29:24 -0500 (Tue, 15 Feb 2011)
New Revision: 676

Modified:
   branches/experimental/2.0.x/integration/jboss/common/src/main/java/org/savara/validator/service/ServiceValidatorService.java
Log:
Hook existing ServiceValidationManager as an ActivityValidator implementation.

Modified: branches/experimental/2.0.x/integration/jboss/common/src/main/java/org/savara/validator/service/ServiceValidatorService.java
===================================================================
--- branches/experimental/2.0.x/integration/jboss/common/src/main/java/org/savara/validator/service/ServiceValidatorService.java	2011-02-15 18:57:28 UTC (rev 675)
+++ branches/experimental/2.0.x/integration/jboss/common/src/main/java/org/savara/validator/service/ServiceValidatorService.java	2011-02-15 23:29:24 UTC (rev 676)
@@ -22,12 +22,16 @@
 import org.savara.activity.ActivityNotifier;
 import org.savara.activity.ActivityProcessor;
 import org.savara.activity.ActivityProcessorFactory;
+import org.savara.activity.ActivityValidator;
 import org.savara.activity.DefaultActivityProcessor;
 import org.savara.activity.model.Activity;
+import org.savara.activity.model.InteractionActivity;
+import org.savara.activity.model.ProtocolAnalysis;
 import org.savara.activity.notifier.jms.JMSActivityNotifier;
 import org.savara.activity.util.ActivityModelUtil;
 import org.savara.common.config.Configuration;
 import org.savara.common.config.file.FileConfiguration;
+import org.savara.validator.Endpoint;
 import org.savara.validator.ServiceValidator;
 import org.savara.validator.ServiceValidatorManager;
 import org.jboss.util.naming.NonSerializableFactory;
@@ -99,6 +103,10 @@
 			
 		});
 		
+		ActivityValidator validator=new SavaraActivityValidator();
+		
+		dap.addActivityValidator(validator);
+		
 		ActivityProcessorFactory.setActivityProcessor(dap);
 	}
 
@@ -164,4 +172,56 @@
 			logger.severe("Failed to unbind map: "+e);
 		}
 	}
+	
+	public class SavaraActivityValidator implements ActivityValidator {
+
+		public void validate(Activity activity) {
+			
+			if (activity instanceof InteractionActivity) {
+				InteractionActivity ia=(InteractionActivity)activity;
+				java.util.List<ServiceValidator> validators=null;
+				Endpoint endpoint=new Endpoint(ia.getDestinationType() != null ?
+								ia.getDestinationType() : ia.getDestinationAddress());
+				
+				if (ia.isOutbound() == ia.isRequest()) {
+					validators = m_serviceValidatorManager.getOutputServiceValidators(endpoint);
+				} else {
+					validators = m_serviceValidatorManager.getInputServiceValidators(endpoint);
+				}
+				
+				process(validators, ia);
+			}
+		}
+		
+		public void process(java.util.List<ServiceValidator> validators, InteractionActivity ia) {
+		
+			if (validators != null && validators.size() > 0 && ia.getParameter().size() == 1) {
+	
+				for (int i=0; validators != null &&
+							i < validators.size(); i++) {
+					boolean validated=false;
+					
+			        try {
+			        	if (ia.isOutbound()) {
+				        	validators.get(i).messageSent(ia.getParameter().get(0).getType(),
+	        						ia.getParameter().get(0).getValue());
+			        	} else {
+				        	validators.get(i).messageReceived(ia.getParameter().get(0).getType(),
+	        						ia.getParameter().get(0).getValue());
+			        	}
+			        	validated = true;
+			        } catch(Exception t) {
+			        	// Ignore
+			        }
+			        
+			        ProtocolAnalysis pa=new ProtocolAnalysis();
+			        pa.setProtocol(validators.get(i).getValidatorName().getModelName());
+			        pa.setRole(validators.get(i).getValidatorName().getRole());
+			        pa.setExpected(validated);
+			        
+			        ia.getAnalysis().add(pa);
+				}
+			}
+		}
+	}
 }



More information about the savara-commits mailing list