You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by an...@apache.org on 2012/03/28 17:11:43 UTC

svn commit: r1306401 - in /incubator/stanbol/trunk/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web: input/impl/RESTInputFactory.java input/provider/impl/RecipeInputProvider.java resources/ReasoningServiceTaskResource.java

Author: anuzzolese
Date: Wed Mar 28 15:11:42 2012
New Revision: 1306401

URL: http://svn.apache.org/viewvc?rev=1306401&view=rev
Log:
[STANBOL-560] Updated the changes provided by the API of rules into reasoners/web. 

Modified:
    incubator/stanbol/trunk/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/input/impl/RESTInputFactory.java
    incubator/stanbol/trunk/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/input/provider/impl/RecipeInputProvider.java
    incubator/stanbol/trunk/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/resources/ReasoningServiceTaskResource.java

Modified: incubator/stanbol/trunk/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/input/impl/RESTInputFactory.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/input/impl/RESTInputFactory.java?rev=1306401&r1=1306400&r2=1306401&view=diff
==============================================================================
--- incubator/stanbol/trunk/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/input/impl/RESTInputFactory.java (original)
+++ incubator/stanbol/trunk/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/input/impl/RESTInputFactory.java Wed Mar 28 15:11:42 2012
@@ -32,6 +32,7 @@ import org.apache.stanbol.reasoners.web.
 import org.apache.stanbol.reasoners.web.input.provider.impl.OntonetInputProvider;
 import org.apache.stanbol.reasoners.web.input.provider.impl.RecipeInputProvider;
 import org.apache.stanbol.reasoners.web.input.provider.impl.UrlInputProvider;
+import org.apache.stanbol.rules.base.api.RuleAdapterManager;
 import org.apache.stanbol.rules.base.api.RuleStore;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -49,13 +50,15 @@ public class RESTInputFactory implements
     ONManager onm;
     SessionManager sessionManager;
     RuleStore rStore;
+    RuleAdapterManager adapterManager;
 
     private Logger log = LoggerFactory.getLogger(getClass());
 
-    public RESTInputFactory(ONManager onm, SessionManager sm, RuleStore rStore) {
+    public RESTInputFactory(ONManager onm, SessionManager sm, RuleStore rStore, RuleAdapterManager adapterManager) {
         this.onm = onm;
         this.sessionManager = sm;
         this.rStore = rStore;
+        this.adapterManager = adapterManager;
     }
 
     @Override
@@ -104,7 +107,7 @@ public class RESTInputFactory implements
 
             } else if (entry.getKey().equals("recipe")) {
                 if (!entry.getValue().isEmpty()) {
-                    inmgr.addInputProvider(new RecipeInputProvider(rStore, entry.getValue().iterator().next()));
+                    inmgr.addInputProvider(new RecipeInputProvider(rStore, adapterManager, entry.getValue().iterator().next()));
                 } else {
                     // Parameter exists with no value
                     log.error("Parameter 'recipe' must have a value!");

Modified: incubator/stanbol/trunk/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/input/provider/impl/RecipeInputProvider.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/input/provider/impl/RecipeInputProvider.java?rev=1306401&r1=1306400&r2=1306401&view=diff
==============================================================================
--- incubator/stanbol/trunk/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/input/provider/impl/RecipeInputProvider.java (original)
+++ incubator/stanbol/trunk/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/input/provider/impl/RecipeInputProvider.java Wed Mar 28 15:11:42 2012
@@ -22,13 +22,17 @@ import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 
+import org.apache.clerezza.rdf.core.UriRef;
 import org.apache.stanbol.reasoners.servicesapi.ReasoningServiceInputProvider;
 import org.apache.stanbol.rules.base.api.NoSuchRecipeException;
 import org.apache.stanbol.rules.base.api.Recipe;
+import org.apache.stanbol.rules.base.api.RecipeConstructionException;
+import org.apache.stanbol.rules.base.api.RuleAdapter;
+import org.apache.stanbol.rules.base.api.RuleAdapterManager;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
 import org.apache.stanbol.rules.base.api.RuleStore;
-import org.apache.stanbol.rules.base.api.util.RuleList;
-import org.semanticweb.owlapi.apibinding.OWLManager;
-import org.semanticweb.owlapi.model.IRI;
+import org.apache.stanbol.rules.base.api.UnavailableRuleObjectException;
+import org.apache.stanbol.rules.base.api.UnsupportedTypeForExportException;
 import org.semanticweb.owlapi.model.SWRLRule;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -46,6 +50,7 @@ public class RecipeInputProvider impleme
     private final Logger log = LoggerFactory.getLogger(RecipeInputProvider.class);
 
     private RuleStore store;
+    private RuleAdapterManager adapterManager;
     private String recipeId;
 
     /**
@@ -54,12 +59,14 @@ public class RecipeInputProvider impleme
      * @param store
      * @param recipeId
      */
-    public RecipeInputProvider(RuleStore store,String recipeId){
+    public RecipeInputProvider(RuleStore store, RuleAdapterManager adapterManager, String recipeId){
         this.store = store;
+        this.adapterManager = adapterManager;
         this.recipeId = recipeId;
     }
     
-    @Override
+    @SuppressWarnings("unchecked")
+	@Override
     public <T> Iterator<T> getInput(Class<T> type) throws IOException {
     	
     	ReasoningProvider reasoningProvider = null;
@@ -87,16 +94,39 @@ public class RecipeInputProvider impleme
 	            try {
 	                Recipe recipe = null;
 	                synchronized (store) {
-	                    recipe = store.getRecipe(IRI.create(recipeId));                    
+	                    try {
+							recipe = store.getRecipe(new UriRef(recipeId));
+						} catch (RecipeConstructionException e) {
+							log.error("An error occurred while generating the recipe.", e);
+						}                    
 	                }
 	                log.debug("Recipe is: {}", recipe);
-	                RuleList ruleList = recipe.getkReSRuleList();
+	                
+	                /*
+	                 * We ask to the adapter manager to get the right adapter in order to transform
+	                 * recipes into SWRLRule objects.
+	                 */
+	                RuleAdapter adapter;
+					try {
+						adapter = adapterManager.getAdapter(recipe, SWRLRule.class);
+						rules = (List<SWRLRule>) adapter.adaptTo(recipe, SWRLRule.class);
+					} catch (UnavailableRuleObjectException e) {
+						log.error(e.getMessage(), e);
+					} catch (RuleAtomCallExeption e) {
+						log.error(e.getMessage(), e);
+					} catch (UnsupportedTypeForExportException e) {
+						log.error(e.getMessage(), e);
+					}
+	                
+	                
+	                /*
+	                RuleList ruleList = recipe.getRuleList();
 	                log.debug("RuleList is: {}",ruleList);
 	                for(org.apache.stanbol.rules.base.api.Rule r : ruleList ){
 	                    SWRLRule swrl = r.toSWRL(OWLManager.getOWLDataFactory());
 	                    log.debug("Prepared rule: {}",swrl);
 	                    rules.add(swrl);
-	                }
+	                }*/
 	            } catch (NoSuchRecipeException e) {
 	                log.error("Recipe {} does not exists", recipeId);
 	                throw new IOException(e);
@@ -140,12 +170,36 @@ public class RecipeInputProvider impleme
 	            try {
 	                Recipe recipe = null;
 	                synchronized (store) {
-	                    recipe = store.getRecipe(IRI.create(recipeId));                    
+	                    try {
+							recipe = store.getRecipe(new UriRef(recipeId));
+						} catch (RecipeConstructionException e) {
+							log.error("An error occurred while generating the recipe.", e);
+						}                    
 	                }
-	                log.debug("Recipe is: {}", recipe);
 	                
 	                
-	                jenaRules = recipe.toJenaRules();
+	                if(recipe != null){
+		                log.debug("Recipe is: {}", recipe);
+		                
+		                /*
+		                 * We ask to the adapter manager to get the right adapter in order to transform
+		                 * recipes into Jena Rule objects.
+		                 */
+		                RuleAdapter adapter;
+						try {
+							adapter = adapterManager.getAdapter(recipe, Rule.class);
+							jenaRules = (List<Rule>) adapter.adaptTo(recipe, Rule.class);
+						} catch (UnavailableRuleObjectException e) {
+							log.error(e.getMessage(), e);
+						} catch (RuleAtomCallExeption e) {
+							log.error(e.getMessage(), e);
+						} catch (UnsupportedTypeForExportException e) {
+							log.error(e.getMessage(), e);
+						}
+		                
+	                }
+	                
+	                //jenaRules = recipe.toJenaRules();
 	            } catch (NoSuchRecipeException e) {
 	                log.error("Recipe {} does not exists", recipeId);
 	                throw new IOException(e);

Modified: incubator/stanbol/trunk/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/resources/ReasoningServiceTaskResource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/resources/ReasoningServiceTaskResource.java?rev=1306401&r1=1306400&r2=1306401&view=diff
==============================================================================
--- incubator/stanbol/trunk/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/resources/ReasoningServiceTaskResource.java (original)
+++ incubator/stanbol/trunk/reasoners/web/src/main/java/org/apache/stanbol/reasoners/web/resources/ReasoningServiceTaskResource.java Wed Mar 28 15:11:42 2012
@@ -72,6 +72,7 @@ import org.apache.stanbol.reasoners.web.
 import org.apache.stanbol.reasoners.web.utils.ReasoningServiceExecutor;
 import org.apache.stanbol.reasoners.web.utils.ReasoningServiceResult;
 import org.apache.stanbol.reasoners.web.utils.ResponseTaskBuilder;
+import org.apache.stanbol.rules.base.api.RuleAdapterManager;
 import org.apache.stanbol.rules.base.api.RuleStore;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -110,6 +111,7 @@ public class ReasoningServiceTaskResourc
     private ONManager onm;
     private SessionManager sessionManager;
     private RuleStore ruleStore;
+    private RuleAdapterManager adapterManager;
     private boolean job = false;
     private String jobLocation = "";
 
@@ -154,8 +156,11 @@ public class ReasoningServiceTaskResourc
         this.sessionManager = (SessionManager) ContextHelper.getServiceFromContext(SessionManager.class,
             servletContext);
 
-        // Retrieve the ontology network manager
+        // Retrieve the rule store
         this.ruleStore = (RuleStore) ContextHelper.getServiceFromContext(RuleStore.class, servletContext);
+        
+        // Retrieve the rule adapter manager
+        this.adapterManager = (RuleAdapterManager) ContextHelper.getServiceFromContext(RuleAdapterManager.class, servletContext);
 
         // Check if method is allowed
         // FIXME Supported methods are only GET and POST, but also PUT comes here, why?
@@ -466,7 +471,7 @@ public class ReasoningServiceTaskResourc
 
             } else if (entry.getKey().equals("recipe")) {
                 if (!entry.getValue().isEmpty()) {
-                    inmgr.addInputProvider(new RecipeInputProvider(ruleStore, entry.getValue().iterator()
+                    inmgr.addInputProvider(new RecipeInputProvider(ruleStore, adapterManager, entry.getValue().iterator()
                             .next()));
                     // We remove it form the additional parameter list
                     this.parameters.remove("url");