Revision: 18176
          http://sourceforge.net/p/gate/code/18176
Author:   johann_p
Date:     2014-07-11 15:45:13 +0000 (Fri, 11 Jul 2014)
Log Message:
-----------
Add support for overriding init parameters to the Persistence
objects. Also, make each Persistence know the name of the 
containing controller, if any. This can be used by Resources
that want to prepare the overriding of their contained 
resources. If not used, everything works as before. 

Modified Paths:
--------------
    
gate/trunk/src/main/gate/util/persistence/AnalyserRunningStrategyPersistence.java
    gate/trunk/src/main/gate/util/persistence/CollectionPersistence.java
    
gate/trunk/src/main/gate/util/persistence/ConditionalControllerPersistence.java
    
gate/trunk/src/main/gate/util/persistence/ConditionalSerialAnalyserControllerPersistence.java
    gate/trunk/src/main/gate/util/persistence/ControllerPersistence.java
    gate/trunk/src/main/gate/util/persistence/CorpusPersistence.java
    gate/trunk/src/main/gate/util/persistence/DSPersistence.java
    gate/trunk/src/main/gate/util/persistence/LRPersistence.java
    gate/trunk/src/main/gate/util/persistence/LanguageAnalyserPersistence.java
    gate/trunk/src/main/gate/util/persistence/MapPersistence.java
    gate/trunk/src/main/gate/util/persistence/PRPersistence.java
    gate/trunk/src/main/gate/util/persistence/PersistenceManager.java
    gate/trunk/src/main/gate/util/persistence/ResourcePersistence.java
    
gate/trunk/src/main/gate/util/persistence/SerialAnalyserControllerPersistence.java
    
gate/trunk/src/main/gate/util/persistence/UnconditionalRunningStrategyPersistence.java

Modified: 
gate/trunk/src/main/gate/util/persistence/AnalyserRunningStrategyPersistence.java
===================================================================
--- 
gate/trunk/src/main/gate/util/persistence/AnalyserRunningStrategyPersistence.java
   2014-07-11 01:19:37 UTC (rev 18175)
+++ 
gate/trunk/src/main/gate/util/persistence/AnalyserRunningStrategyPersistence.java
   2014-07-11 15:45:13 UTC (rev 18176)
@@ -11,7 +11,7 @@
  * Persistent holder for {@link gate.creole.AnalyserRunningStrategy}.
  */
 
-public class AnalyserRunningStrategyPersistence implements Persistence {
+public class AnalyserRunningStrategyPersistence extends AbstractPersistence {
 
   @Override
   public void extractDataFromSource(Object source) throws PersistenceException 
{
@@ -32,9 +32,9 @@
   @Override
   public Object createObject() throws PersistenceException,
                                       ResourceInstantiationException {
-    return new AnalyserRunningStrategy((LanguageAnalyser)
-                                       PersistenceManager.
-                                       getTransientRepresentation(pr),
+    return new AnalyserRunningStrategy(
+            (LanguageAnalyser)PersistenceManager.getTransientRepresentation(
+              pr,containingControllerName,initParamOverrides),
                                        runMode, featureName, featureValue);
   }
 

Modified: gate/trunk/src/main/gate/util/persistence/CollectionPersistence.java
===================================================================
--- gate/trunk/src/main/gate/util/persistence/CollectionPersistence.java        
2014-07-11 01:19:37 UTC (rev 18175)
+++ gate/trunk/src/main/gate/util/persistence/CollectionPersistence.java        
2014-07-11 15:45:13 UTC (rev 18176)
@@ -26,7 +26,7 @@
 import java.util.List;
 
 
-public class CollectionPersistence implements Persistence {
+public class CollectionPersistence extends AbstractPersistence {
 
   /**
    * Populates this Persistence with the data that needs to be stored from the
@@ -79,7 +79,8 @@
     //now we have the collection let's populate it
     for(Object local : localList) {
       try {
-        result.add(PersistenceManager.getTransientRepresentation(local));
+        result.add(PersistenceManager.getTransientRepresentation(
+                local,containingControllerName,initParamOverrides));
       }
       catch(PersistenceException pe) {
         exceptionsOccurred.add(pe.getMessage());

Modified: 
gate/trunk/src/main/gate/util/persistence/ConditionalControllerPersistence.java
===================================================================
--- 
gate/trunk/src/main/gate/util/persistence/ConditionalControllerPersistence.java 
    2014-07-11 01:19:37 UTC (rev 18175)
+++ 
gate/trunk/src/main/gate/util/persistence/ConditionalControllerPersistence.java 
    2014-07-11 15:45:13 UTC (rev 18176)
@@ -49,12 +49,10 @@
   public Object createObject()throws PersistenceException,
                                      ResourceInstantiationException{
     ConditionalController controller =
-        (ConditionalController)super.createObject();
-//    if(controller.getRunningStrategies().isEmpty()){
+      (ConditionalController)super.createObject();
     controller.setRunningStrategies(
-          (Collection<RunningStrategy>)PersistenceManager.
-          getTransientRepresentation(strategiesList));
-//    }
+      
(Collection<RunningStrategy>)PersistenceManager.getTransientRepresentation(
+            strategiesList,resourceName,initParamOverrides));
     return controller;
   }
   protected Serializable strategiesList;

Modified: 
gate/trunk/src/main/gate/util/persistence/ConditionalSerialAnalyserControllerPersistence.java
===================================================================
--- 
gate/trunk/src/main/gate/util/persistence/ConditionalSerialAnalyserControllerPersistence.java
       2014-07-11 01:19:37 UTC (rev 18175)
+++ 
gate/trunk/src/main/gate/util/persistence/ConditionalSerialAnalyserControllerPersistence.java
       2014-07-11 15:45:13 UTC (rev 18176)
@@ -54,7 +54,8 @@
                                      ResourceInstantiationException{
     ConditionalSerialAnalyserController sac = 
(ConditionalSerialAnalyserController)
                                   super.createObject();
-    
sac.setCorpus((Corpus)PersistenceManager.getTransientRepresentation(corpus));
+    sac.setCorpus((Corpus)PersistenceManager.getTransientRepresentation(
+            corpus,resourceName,initParamOverrides));
     return sac;
   }
   protected Object corpus;

Modified: gate/trunk/src/main/gate/util/persistence/ControllerPersistence.java
===================================================================
--- gate/trunk/src/main/gate/util/persistence/ControllerPersistence.java        
2014-07-11 01:19:37 UTC (rev 18175)
+++ gate/trunk/src/main/gate/util/persistence/ControllerPersistence.java        
2014-07-11 15:45:13 UTC (rev 18176)
@@ -59,14 +59,12 @@
   @Override
   public Object createObject()throws PersistenceException,
                                      ResourceInstantiationException{
-
     Controller controller = (Controller)super.createObject();
-
     if(controller.getPRs().isEmpty()){
-      prList = PersistenceManager.getTransientRepresentation(prList);
+      prList = PersistenceManager.getTransientRepresentation(
+              prList,resourceName,initParamOverrides);
       controller.setPRs((Collection<ProcessingResource>)prList);
     }
-
     return controller;
   }
 

Modified: gate/trunk/src/main/gate/util/persistence/CorpusPersistence.java
===================================================================
--- gate/trunk/src/main/gate/util/persistence/CorpusPersistence.java    
2014-07-11 01:19:37 UTC (rev 18175)
+++ gate/trunk/src/main/gate/util/persistence/CorpusPersistence.java    
2014-07-11 15:45:13 UTC (rev 18176)
@@ -74,8 +74,8 @@
       if(!docList.isEmpty() && corpus.isEmpty()){
         Iterator<Serializable> docIter = docList.iterator();
         while(docIter.hasNext()){
-          corpus.add((Document) PersistenceManager.
-                     getTransientRepresentation(docIter.next()));
+          corpus.add((Document) PersistenceManager.getTransientRepresentation(
+                  docIter.next(),containingControllerName,initParamOverrides));
         }
 
       }

Modified: gate/trunk/src/main/gate/util/persistence/DSPersistence.java
===================================================================
--- gate/trunk/src/main/gate/util/persistence/DSPersistence.java        
2014-07-11 01:19:37 UTC (rev 18175)
+++ gate/trunk/src/main/gate/util/persistence/DSPersistence.java        
2014-07-11 15:45:13 UTC (rev 18176)
@@ -22,7 +22,7 @@
 import gate.persist.PersistenceException;
 import java.net.URL;
 
-public class DSPersistence implements Persistence{
+public class DSPersistence extends AbstractPersistence{
 
 
   /**

Modified: gate/trunk/src/main/gate/util/persistence/LRPersistence.java
===================================================================
--- gate/trunk/src/main/gate/util/persistence/LRPersistence.java        
2014-07-11 01:19:37 UTC (rev 18175)
+++ gate/trunk/src/main/gate/util/persistence/LRPersistence.java        
2014-07-11 15:45:13 UTC (rev 18176)
@@ -65,10 +65,11 @@
     if(dsData == null) return super.createObject();
     else{
       //persistent doc
-      initParams = PersistenceManager.getTransientRepresentation(initParams);
+      initParams = PersistenceManager.getTransientRepresentation(
+              initParams,containingControllerName,initParamOverrides);
 
-      DataStore ds = (DataStore)PersistenceManager.
-                     getTransientRepresentation(dsData);
+      DataStore ds = (DataStore)PersistenceManager.getTransientRepresentation(
+              dsData,containingControllerName,initParamOverrides);
       ((Map<Object,Object>)initParams).put(DataStore.DATASTORE_FEATURE_NAME, 
ds);
       ((Map<Object,Object>)initParams).put(DataStore.LR_ID_FEATURE_NAME, 
persistenceID);
       return super.createObject();

Modified: 
gate/trunk/src/main/gate/util/persistence/LanguageAnalyserPersistence.java
===================================================================
--- gate/trunk/src/main/gate/util/persistence/LanguageAnalyserPersistence.java  
2014-07-11 01:19:37 UTC (rev 18175)
+++ gate/trunk/src/main/gate/util/persistence/LanguageAnalyserPersistence.java  
2014-07-11 15:45:13 UTC (rev 18176)
@@ -52,8 +52,8 @@
                                      ResourceInstantiationException{
     LanguageAnalyser la = (LanguageAnalyser)super.createObject();
     
la.setCorpus((Corpus)PersistenceManager.getTransientRepresentation(corpus));
-    la.setDocument((Document)PersistenceManager.
-                             getTransientRepresentation(document));
+    la.setDocument((Document)PersistenceManager.getTransientRepresentation(
+            document,containingControllerName,initParamOverrides));
     return la;
   }
 

Modified: gate/trunk/src/main/gate/util/persistence/MapPersistence.java
===================================================================
--- gate/trunk/src/main/gate/util/persistence/MapPersistence.java       
2014-07-11 01:19:37 UTC (rev 18175)
+++ gate/trunk/src/main/gate/util/persistence/MapPersistence.java       
2014-07-11 15:45:13 UTC (rev 18176)
@@ -22,7 +22,7 @@
 import java.util.Iterator;
 import java.util.Map;
 
-public class MapPersistence implements Persistence {
+public class MapPersistence extends AbstractPersistence {
   /**
    * Populates this Persistence with the data that needs to be stored from the
    * original source object.
@@ -75,7 +75,8 @@
       Object value = localMap.get(key);
 
       key = PersistenceManager.getTransientRepresentation(key);
-      value = PersistenceManager.getTransientRepresentation(value);
+      value = PersistenceManager.getTransientRepresentation(
+              value,containingControllerName,initParamOverrides);
       result.put(key, value);
     }
 

Modified: gate/trunk/src/main/gate/util/persistence/PRPersistence.java
===================================================================
--- gate/trunk/src/main/gate/util/persistence/PRPersistence.java        
2014-07-11 01:19:37 UTC (rev 18175)
+++ gate/trunk/src/main/gate/util/persistence/PRPersistence.java        
2014-07-11 15:45:13 UTC (rev 18176)
@@ -86,10 +86,10 @@
     //now add the runtime parameters
     if(runtimeParams != null){
       runtimeParams = PersistenceManager.
-                      getTransientRepresentation(runtimeParams);
+                      getTransientRepresentation(
+              runtimeParams,containingControllerName,initParamOverrides);
       ((Resource)res).setParameterValues((FeatureMap)runtimeParams);
     }
-
     return res;
   }
 

Modified: gate/trunk/src/main/gate/util/persistence/PersistenceManager.java
===================================================================
--- gate/trunk/src/main/gate/util/persistence/PersistenceManager.java   
2014-07-11 01:19:37 UTC (rev 18175)
+++ gate/trunk/src/main/gate/util/persistence/PersistenceManager.java   
2014-07-11 15:45:13 UTC (rev 18176)
@@ -469,6 +469,12 @@
 
   public static Object getTransientRepresentation(Object target)
           throws PersistenceException, ResourceInstantiationException {
+    return getTransientRepresentation(target,null,null);
+  }
+  
+  public static Object getTransientRepresentation(Object target, 
+          String containingControllerName, Map<String,Map<String,Object>> 
initParamOverrides)
+          throws PersistenceException, ResourceInstantiationException {
 
     if(target == null || target instanceof SlashDevSlashNull) return null;
     if(target instanceof Persistence) {
@@ -478,6 +484,10 @@
       if(result != null) return result;
 
       // we didn't find the value: create it
+      if(containingControllerName != null && target instanceof 
AbstractPersistence) {
+        ((AbstractPersistence)target).containingControllerName = 
containingControllerName;
+        ((AbstractPersistence)target).initParamOverrides = initParamOverrides;
+      }
       result = ((Persistence)target).createObject();
       existingTransientValues.get().getFirst().put(resultKey, result);
       return result;

Modified: gate/trunk/src/main/gate/util/persistence/ResourcePersistence.java
===================================================================
--- gate/trunk/src/main/gate/util/persistence/ResourcePersistence.java  
2014-07-11 01:19:37 UTC (rev 18175)
+++ gate/trunk/src/main/gate/util/persistence/ResourcePersistence.java  
2014-07-11 15:45:13 UTC (rev 18176)
@@ -27,14 +27,19 @@
 
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 
+import org.apache.log4j.Logger;
+
 /**
  * Holds the data needed to serialise and recreate a {@link Resource}.
  * This data is considered to be: the resource class name, the resource name,
  * the resource features and the resource initialistion parameters.
  */
-class ResourcePersistence implements Persistence{
+class ResourcePersistence extends AbstractPersistence{
 
+  protected static final Logger log = 
Logger.getLogger(ResourcePersistence.class);
+  
   @Override
   public void extractDataFromSource(Object source) throws PersistenceException{
     if(! (source instanceof Resource)){
@@ -85,9 +90,33 @@
   public Object createObject()throws PersistenceException,
                                      ResourceInstantiationException {
     if(initParams != null)
-      initParams = PersistenceManager.getTransientRepresentation(initParams);
+      initParams = PersistenceManager.getTransientRepresentation(
+              initParams,containingControllerName,initParamOverrides);
     if(features != null)
-      features = PersistenceManager.getTransientRepresentation(features);
+      features = PersistenceManager.getTransientRepresentation(
+              features,containingControllerName,initParamOverrides);
+    if(initParamOverrides != null) {
+      // check if there is a map for this resource Id in the overrides
+      String containingControllerNameToUse = 
+              containingControllerName == null ? "" : containingControllerName;
+      String resourceId = containingControllerNameToUse+"\t"+resourceName;
+      if(initParamOverrides.containsKey(resourceId)) {
+        Map<String,Object> parmOverrides = initParamOverrides.get(resourceId);
+        if(initParams instanceof FeatureMap) {
+          FeatureMap fm = (FeatureMap)initParams;
+          // override the values
+          // do this in a loop instead of using putAll so we can log the 
changes
+          for(String name : parmOverrides.keySet()) {
+            Object obj = parmOverrides.get(name);
+            log.info(
+                    "Overriding init parameter "+name+
+                    " for "+containingControllerNameToUse+
+                    "//"+resourceName+" with "+obj);
+            fm.put(name, obj);
+          }
+        }
+      }
+    } 
     Resource res = Factory.createResource(resourceType, (FeatureMap)initParams,
                                           (FeatureMap)features,resourceName);
     return res;

Modified: 
gate/trunk/src/main/gate/util/persistence/SerialAnalyserControllerPersistence.java
===================================================================
--- 
gate/trunk/src/main/gate/util/persistence/SerialAnalyserControllerPersistence.java
  2014-07-11 01:19:37 UTC (rev 18175)
+++ 
gate/trunk/src/main/gate/util/persistence/SerialAnalyserControllerPersistence.java
  2014-07-11 15:45:13 UTC (rev 18176)
@@ -54,7 +54,8 @@
                                      ResourceInstantiationException{
     SerialAnalyserController sac = (SerialAnalyserController)
                                   super.createObject();
-    
sac.setCorpus((Corpus)PersistenceManager.getTransientRepresentation(corpus));
+    sac.setCorpus((Corpus)PersistenceManager.getTransientRepresentation(
+            corpus,resourceName,initParamOverrides));
     return sac;
   }
   protected Object corpus;

Modified: 
gate/trunk/src/main/gate/util/persistence/UnconditionalRunningStrategyPersistence.java
===================================================================
--- 
gate/trunk/src/main/gate/util/persistence/UnconditionalRunningStrategyPersistence.java
      2014-07-11 01:19:37 UTC (rev 18175)
+++ 
gate/trunk/src/main/gate/util/persistence/UnconditionalRunningStrategyPersistence.java
      2014-07-11 15:45:13 UTC (rev 18176)
@@ -11,7 +11,7 @@
  * Persistent holder for {@link 
gate.creole.RunningStrategy.UnconditionalRunningStrategy}.
  */
 
-public class UnconditionalRunningStrategyPersistence implements Persistence {
+public class UnconditionalRunningStrategyPersistence extends 
AbstractPersistence {
 
   @Override
   public void extractDataFromSource(Object source) throws PersistenceException 
{
@@ -32,7 +32,7 @@
                                       ResourceInstantiationException {
     return new UnconditionalRunningStrategy(
             (ProcessingResource)PersistenceManager.
-               getTransientRepresentation(pr),
+               
getTransientRepresentation(pr,containingControllerName,initParamOverrides),
             shouldRun);
   }
 

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
_______________________________________________
GATE-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gate-cvs

Reply via email to