You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-commits@lucene.apache.org by sh...@apache.org on 2009/01/27 08:21:52 UTC

svn commit: r738015 - in /lucene/solr/trunk/contrib/dataimporthandler: ./ src/main/java/org/apache/solr/handler/dataimport/

Author: shalin
Date: Tue Jan 27 07:21:52 2009
New Revision: 738015

URL: http://svn.apache.org/viewvc?rev=738015&view=rev
Log:
SOLR-988 -- Add a new scope for session data stored in Context to store objects across imports

Modified:
    lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt
    lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/Context.java
    lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/ContextImpl.java
    lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImportHandler.java
    lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java

Modified: lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt?rev=738015&r1=738014&r2=738015&view=diff
==============================================================================
--- lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt (original)
+++ lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt Tue Jan 27 07:21:52 2009
@@ -53,6 +53,9 @@
 11.SOLR-801:  Add support for configurable pre-import and post-import delete query per root-entity.
               (Noble Paul via shalin)
 
+12.SOLR-988:  Add a new scope for session data stored in Context to store objects across imports.
+              (Noble Paul via shalin)
+
 Optimizations
 ----------------------
 1. SOLR-846:  Reduce memory consumption during delta import by removing keys when used

Modified: lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/Context.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/Context.java?rev=738015&r1=738014&r2=738015&view=diff
==============================================================================
--- lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/Context.java (original)
+++ lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/Context.java Tue Jan 27 07:21:52 2009
@@ -41,8 +41,26 @@
 public abstract class Context {
   public static final int FULL_DUMP = 1, DELTA_DUMP = 2, FIND_DELTA = 3;
 
-  public static final String SCOPE_ENTITY = "entity", SCOPE_GLOBAL = "global",
-          SCOPE_DOC = "document";
+  /**
+   * An object stored in entity scope is valid only for the current entity for the current document only.
+   */
+  public static final String SCOPE_ENTITY = "entity";
+
+  /**
+   * An object stored in global scope is available for the current import only but across entities and documents.
+   */
+  public static final String SCOPE_GLOBAL = "global";
+
+  /**
+   * An object stored in document scope is available for the current document only but across entities.
+   */
+  public static final String SCOPE_DOC = "document";
+
+  /**
+   * An object stored in 'solrcore' scope is available across imports, entities and documents throughout the life of
+   * a solr core. A solr core unload or reload will destroy this data. 
+   */
+  public static final String SCOPE_SOLR_CORE = "solrcore";
 
   /**
    * Get the value of any attribute put into this entity

Modified: lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/ContextImpl.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/ContextImpl.java?rev=738015&r1=738014&r2=738015&view=diff
==============================================================================
--- lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/ContextImpl.java (original)
+++ lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/ContextImpl.java Tue Jan 27 07:21:52 2009
@@ -126,6 +126,8 @@
       Map<String, Object> docsession = getDocSession();
       if (docsession != null)
         docsession.put(name, val);
+    } else if (SCOPE_SOLR_CORE.equals(scope)){
+      if(dataImporter != null) dataImporter.getCoreScopeSession().put(name, val);
     }
   }
 
@@ -142,6 +144,8 @@
       Map<String, Object> docsession = getDocSession();
       if (docsession != null)
         return docsession.get(name);
+    } else if (SCOPE_SOLR_CORE.equals(scope)){
+       return dataImporter == null ? null : dataImporter.getCoreScopeSession().get(name);
     }
     return null;
   }

Modified: lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImportHandler.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImportHandler.java?rev=738015&r1=738014&r2=738015&view=diff
==============================================================================
--- lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImportHandler.java (original)
+++ lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImportHandler.java Tue Jan 27 07:21:52 2009
@@ -32,7 +32,6 @@
 import org.apache.solr.request.RawResponseWriter;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.request.SolrQueryResponse;
-import org.apache.solr.schema.IndexSchema;
 import org.apache.solr.update.processor.UpdateRequestProcessor;
 import org.apache.solr.update.processor.UpdateRequestProcessorChain;
 import org.apache.solr.util.plugin.SolrCoreAware;
@@ -67,15 +66,14 @@
 
   private DataImporter importer;
 
-  private Map<String, String> variables = new HashMap<String, String>();
-
-
   private Map<String, Properties> dataSources = new HashMap<String, Properties>();
 
   private List<SolrInputDocument> debugDocuments;
 
   private boolean debugEnabled = true;
 
+  private Map<String , Object> coreScopeSession = new HashMap<String, Object>();
+
   @Override
   @SuppressWarnings("unchecked")
   public void init(NamedList args) {
@@ -96,7 +94,7 @@
 
           importer = new DataImporter(SolrWriter.getResourceAsString(core
                   .getResourceLoader().openResource(configLoc)), core,
-                  dataSources);
+                  dataSources, coreScopeSession);
         }
       }
     } catch (Throwable e) {
@@ -142,7 +140,7 @@
         try {
           processConfiguration((NamedList) initArgs.get("defaults"));
           importer = new DataImporter(requestParams.dataConfig, req.getCore()
-                  , dataSources);
+                  , dataSources, coreScopeSession);
         } catch (RuntimeException e) {
           rsp.add("exception", DebugLogger.getStacktraceString(e));
           importer = null;
@@ -229,7 +227,6 @@
     LOG.info("Processing configuration from solrconfig.xml: " + defaults);
 
     dataSources = new HashMap<String, Properties>();
-    variables = new HashMap<String, String>();
 
     int position = 0;
 
@@ -245,9 +242,6 @@
           props.put(dsConfig.getName(i), dsConfig.getVal(i));
         LOG.info("Adding properties to datasource: " + props);
         dataSources.put((String) dsConfig.get("name"), props);
-      } else if (!name.equals("config")) {
-        String value = (String) defaults.getVal(position);
-        variables.put(name, value);
       }
       position++;
     }

Modified: lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java?rev=738015&r1=738014&r2=738015&view=diff
==============================================================================
--- lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java (original)
+++ lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java Tue Jan 27 07:21:52 2009
@@ -75,20 +75,25 @@
 
   private ReentrantLock importLock = new ReentrantLock();
 
+  private final Map<String , Object> coreScopeSession;
+
   /**
    * Only for testing purposes
    */
   DataImporter() {
+    coreScopeSession = new HashMap<String, Object>();
   }
 
-  DataImporter(String dataConfig, SolrCore core,
-               Map<String, Properties> ds) {
+  DataImporter(String dataConfig, SolrCore core, Map<String, Properties> ds, Map<String, Object> session) {
     if (dataConfig == null)
       throw new DataImportHandlerException(DataImportHandlerException.SEVERE,
               "Configuration not found");
     this.core = core;
     this.schema = core.getSchema();
     dataSourceProps = ds;
+    if (session == null)
+      session = new HashMap<String, Object>();
+    coreScopeSession = session;
     loadDataConfig(dataConfig);
 
     for (Map.Entry<String, SchemaField> entry : schema.getFields().entrySet()) {
@@ -516,6 +521,10 @@
     return schema;
   }
 
+  Map<String, Object> getCoreScopeSession() {
+    return coreScopeSession;
+  }
+
   SolrCore getCore() {
     return core;
   }