Author: shalin
Date: Thu Aug 28 12:38:05 2008
New Revision: 689947

URL: http://svn.apache.org/viewvc?rev=689947&view=rev
Log:
SOLR-729 -- Context.getDataSource(String) gives current entity's DataSource 
instance regardless of argument.

Added:
    
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/test/resources/solr/conf/data-config-with-transformer.xml
   (with props)
Modified:
    lucene/solr/branches/branch-1.3/contrib/dataimporthandler/CHANGES.txt
    
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/Context.java
    
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/ContextImpl.java
    
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java
    
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestDocBuilder2.java

Modified: lucene/solr/branches/branch-1.3/contrib/dataimporthandler/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/lucene/solr/branches/branch-1.3/contrib/dataimporthandler/CHANGES.txt?rev=689947&r1=689946&r2=689947&view=diff
==============================================================================
--- lucene/solr/branches/branch-1.3/contrib/dataimporthandler/CHANGES.txt 
(original)
+++ lucene/solr/branches/branch-1.3/contrib/dataimporthandler/CHANGES.txt Thu 
Aug 28 12:38:05 2008
@@ -32,6 +32,9 @@
               use the complete string for parsing. Failure to do so will 
result in an exception.
               (Stefan Oestreicher via shalin)
 
+2. SOLR-729:  Context.getDataSource(String) gives current entity's DataSource 
instance regardless of argument.
+              (Noble Paul, shalin)
+
 Other Changes
 
 

Modified: 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/Context.java
URL: 
http://svn.apache.org/viewvc/lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/Context.java?rev=689947&r1=689946&r2=689947&view=diff
==============================================================================
--- 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/Context.java
 (original)
+++ 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/Context.java
 Thu Aug 28 12:38:05 2008
@@ -72,18 +72,21 @@
   public abstract VariableResolver getVariableResolver();
 
   /**
-   * Gets the datasource instance defined for this entity.
+   * Gets the datasource instance defined for this entity. Do not close() this 
instance.
+   * Transformers should use the getDataSource(String name) method.
    *
    * @return a new DataSource instance as configured for the current entity
    * @see org.apache.solr.handler.dataimport.DataSource
+   * @see #getDataSource(String)
    */
   public abstract DataSource getDataSource();
 
   /**
-   * Gets a new DataSource instance with a name.
-   *
+   * Gets a new DataSource instance with a name. Ensure that you close() this 
after use
+   * because this is created just for this method call.
+   *  
    * @param name Name of the dataSource as defined in the dataSource tag
-   * @return a new DataSource instance as configured for the named entity
+   * @return a new DataSource instance
    * @see org.apache.solr.handler.dataimport.DataSource
    */
   public abstract DataSource getDataSource(String name);

Modified: 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/ContextImpl.java
URL: 
http://svn.apache.org/viewvc/lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/ContextImpl.java?rev=689947&r1=689946&r2=689947&view=diff
==============================================================================
--- 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/ContextImpl.java
 (original)
+++ 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/ContextImpl.java
 Thu Aug 28 12:38:05 2008
@@ -63,7 +63,7 @@
   }
 
   public DataSource getDataSource(String name) {
-    return dataImporter.getDataSourceInstance(entity);
+    return dataImporter.getDataSourceInstance(entity, name, this);
   }
 
   public boolean isRootEntity() {

Modified: 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java
URL: 
http://svn.apache.org/viewvc/lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java?rev=689947&r1=689946&r2=689947&view=diff
==============================================================================
--- 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java
 (original)
+++ 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java
 Thu Aug 28 12:38:05 2008
@@ -270,20 +270,20 @@
       key.dataSrc = new MockDataSource();
       return;
     }
-    key.dataSrc = getDataSourceInstance(key);
+    key.dataSrc = getDataSourceInstance(key, key.dataSource, null);
   }
 
-  DataSource getDataSourceInstance(DataConfig.Entity key) {
-    Properties p = dataSourceProps.get(key.dataSource);
+  DataSource getDataSourceInstance(DataConfig.Entity key, String name, Context 
ctx ) {
+    Properties p = dataSourceProps.get(name);
     if (p == null)
-      p = config.dataSources.get(key.dataSource);
+      p = config.dataSources.get(name);
     if (p == null)
       p = dataSourceProps.get(null);// for default data source
     if (p == null)
       p = config.dataSources.get(null);
     if (p == null)
       throw new DataImportHandlerException(DataImportHandlerException.SEVERE,
-              "No dataSource :" + key.dataSource + " available for entity :"
+              "No dataSource :" + name + " available for entity :"
                       + key.name);
     String impl = p.getProperty(TYPE);
     DataSource dataSrc = null;
@@ -300,8 +300,10 @@
     try {
       Properties copyProps = new Properties();
       copyProps.putAll(p);
-      dataSrc.init(new ContextImpl(key, null, dataSrc, 0,
-              Collections.EMPTY_MAP, new HashMap(), null, this), copyProps);
+      if(ctx == null)
+        ctx = new ContextImpl(key, null, dataSrc, 0,
+              Collections.EMPTY_MAP, new HashMap(), null, this);
+      dataSrc.init(ctx, copyProps);
     } catch (Exception e) {
       throw new DataImportHandlerException(DataImportHandlerException.SEVERE,
               "Failed to initialize DataSource: " + key.dataSource, e);

Modified: 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestDocBuilder2.java
URL: 
http://svn.apache.org/viewvc/lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestDocBuilder2.java?rev=689947&r1=689946&r2=689947&view=diff
==============================================================================
--- 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestDocBuilder2.java
 (original)
+++ 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestDocBuilder2.java
 Thu Aug 28 12:38:05 2008
@@ -19,9 +19,11 @@
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.Assert;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -65,4 +67,25 @@
     assertQ(req("id:1"), "//[EMAIL PROTECTED]'1']");
   }
 
+  @Test
+  @SuppressWarnings("unchecked")
+  public void testContext() throws Exception {
+    List rows = new ArrayList();
+    rows.add(createMap("id", "1", "desc", "one"));
+    MockDataSource.setIterator("select * from x", rows.iterator());
+
+    super.runFullImport(loadDataConfig("data-config-with-transformer.xml"));
+  }
+
+  public static class MockTransformer extends Transformer {
+    public Object transformRow(Map<String, Object> row, Context context) {
+      Assert.assertTrue("Context gave incorrect data source", 
context.getDataSource("mockDs") instanceof MockDataSource2);
+      return row;
+    }
+  }
+
+  public static class MockDataSource2 extends MockDataSource  {
+    
+  }
+
 }

Added: 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/test/resources/solr/conf/data-config-with-transformer.xml
URL: 
http://svn.apache.org/viewvc/lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/test/resources/solr/conf/data-config-with-transformer.xml?rev=689947&view=auto
==============================================================================
--- 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/test/resources/solr/conf/data-config-with-transformer.xml
 (added)
+++ 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/test/resources/solr/conf/data-config-with-transformer.xml
 Thu Aug 28 12:38:05 2008
@@ -0,0 +1,10 @@
+<dataConfig>
+       <dataSource  type="MockDataSource" />
+       <dataSource name="mockDs" type="TestDocBuilder2$MockDataSource2" />
+       <document>
+               <entity name="x" query="select * from x" 
transformer="TestDocBuilder2$MockTransformer">
+                       <field column="id" />
+                       <field column="desc" />
+               </entity>
+       </document>
+</dataConfig>

Propchange: 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/test/resources/solr/conf/data-config-with-transformer.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/test/resources/solr/conf/data-config-with-transformer.xml
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL


Reply via email to