Author: shalin
Date: Fri Aug 29 00:18:52 2008
New Revision: 690134

URL: http://svn.apache.org/viewvc?rev=690134&view=rev
Log:
Using svn merge to sync branch with trunk for changes to 
contrib/dataimporthandler

Added:
    
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/test/resources/solr/conf/data-config-with-transformer.xml
      - copied unchanged from r690132, 
lucene/solr/trunk/contrib/dataimporthandler/src/test/resources/solr/conf/data-config-with-transformer.xml
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/ContextImpl.java
    
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataConfig.java
    
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImportHandler.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/main/java/org/apache/solr/handler/dataimport/DocBuilder.java
    
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/EntityProcessorBase.java
    
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/JdbcDataSource.java
    
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/SolrWriter.java
    
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestDocBuilder.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=690134&r1=690133&r2=690134&view=diff
==============================================================================
--- lucene/solr/branches/branch-1.3/contrib/dataimporthandler/CHANGES.txt 
(original)
+++ lucene/solr/branches/branch-1.3/contrib/dataimporthandler/CHANGES.txt Fri 
Aug 29 00:18:52 2008
@@ -35,6 +35,9 @@
 2. SOLR-729:  Context.getDataSource(String) gives current entity's DataSource 
instance regardless of argument.
               (Noble Paul, shalin)
 
+3. SOLR-726:  Jdbc Drivers and DataSources fail to load if placed in multicore 
sharedLib or core's lib directory.
+              (Walter Ferrara, Noble Paul, shalin)
+
 Other Changes
 
 

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=690134&r1=690133&r2=690134&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
 Fri Aug 29 00:18:52 2008
@@ -137,6 +137,6 @@
 
 
   public SolrCore getSolrCore() {
-    return dataImporter.getCore();
+    return dataImporter == null ? null : dataImporter.getCore();
   }
 }

Modified: 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataConfig.java
URL: 
http://svn.apache.org/viewvc/lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataConfig.java?rev=690134&r1=690133&r2=690134&view=diff
==============================================================================
--- 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataConfig.java
 (original)
+++ 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataConfig.java
 Fri Aug 29 00:18:52 2008
@@ -262,7 +262,7 @@
                   DataImportHandlerException.SEVERE,
                   "<function> must have a 'name' and 'class' attributes");
         try {
-          evaluators.put(func, (Evaluator) DocBuilder.loadClass(clz)
+          evaluators.put(func, (Evaluator) DocBuilder.loadClass(clz, null)
                   .newInstance());
         } catch (Exception exp) {
           throw new DataImportHandlerException(

Modified: 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImportHandler.java
URL: 
http://svn.apache.org/viewvc/lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImportHandler.java?rev=690134&r1=690133&r2=690134&view=diff
==============================================================================
--- 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImportHandler.java
 (original)
+++ 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImportHandler.java
 Fri Aug 29 00:18:52 2008
@@ -170,7 +170,7 @@
     }
 
     if (command != null && DataImporter.ABORT_CMD.equals(command)) {
-      importer.rumCmd(requestParams, null, null);
+      importer.runCmd(requestParams, null, null);
     } else if (importer.getStatus() != DataImporter.Status.IDLE) {
       message = DataImporter.MSG.CMD_RUNNING;
     } else if (command != null) {
@@ -187,7 +187,7 @@
         if (requestParams.debug) {
           if (debugEnabled) {
             // Synchronous request for the debug mode
-            importer.rumCmd(requestParams, sw, variables);
+            importer.runCmd(requestParams, sw, variables);
             rsp.add("mode", "debug");
             rsp.add("documents", debugDocuments);
             if (debugLogger != null)
@@ -300,9 +300,6 @@
       }
 
 
-      public Class loadClass(String name) throws ClassNotFoundException {
-        return loader.findClass(name);
-      }
 
       public SolrDoc getSolrDocInstance() {
         return new SolrDocumentWrapper();

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=690134&r1=690133&r2=690134&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
 Fri Aug 29 00:18:52 2008
@@ -82,7 +82,7 @@
   DataImporter() {
   }
 
-  public DataImporter(String dataConfig, SolrCore core,
+  DataImporter(String dataConfig, SolrCore core,
                       Map<String, Properties> ds) {
     if (dataConfig == null)
       throw new DataImportHandlerException(DataImportHandlerException.SEVERE,
@@ -236,31 +236,31 @@
 
   }
 
-  public DataConfig getConfig() {
+  DataConfig getConfig() {
     return config;
   }
 
-  public Date getIndexStartTime() {
+  Date getIndexStartTime() {
     return indexStartTime;
   }
 
-  public void setIndexStartTime(Date indextStartTime) {
+  void setIndexStartTime(Date indextStartTime) {
     this.indexStartTime = indextStartTime;
   }
 
-  public Date getLastIndexTime() {
+  Date getLastIndexTime() {
     return lastIndexTime;
   }
 
-  public void setLastIndexTime(Date lastIndexTime) {
+  void setLastIndexTime(Date lastIndexTime) {
     this.lastIndexTime = lastIndexTime;
   }
 
-  public void store(Object key, Object value) {
+  void store(Object key, Object value) {
     store.put(key, value);
   }
 
-  public Object retrieve(Object key) {
+  Object retrieve(Object key) {
     return store.get(key);
   }
 
@@ -291,7 +291,7 @@
       dataSrc = new JdbcDataSource();
     } else {
       try {
-        dataSrc = (DataSource) DocBuilder.loadClass(impl).newInstance();
+        dataSrc = (DataSource) DocBuilder.loadClass(impl, 
getCore()).newInstance();
       } catch (Exception e) {
         throw new DataImportHandlerException(DataImportHandlerException.SEVERE,
                 "Invalid type for data source: " + impl, e);
@@ -374,12 +374,12 @@
     new Thread() {
       @Override
       public void run() {
-        rumCmd(reqParams, sw, variables);
+        runCmd(reqParams, sw, variables);
       }
     }.start();
   }
 
-  void rumCmd(RequestParams reqParams, SolrWriter sw,
+  void runCmd(RequestParams reqParams, SolrWriter sw,
               Map<String, String> variables) {
     String command = reqParams.command;
     if (command.equals("full-import")) {
@@ -406,11 +406,11 @@
 
   }
 
-  public DocBuilder getDocBuilder() {
+  DocBuilder getDocBuilder() {
     return docBuilder;
   }
 
-  public static final ThreadLocal<AtomicLong> QUERY_COUNT = new 
ThreadLocal<AtomicLong>() {
+  static final ThreadLocal<AtomicLong> QUERY_COUNT = new 
ThreadLocal<AtomicLong>() {
     protected AtomicLong initialValue() {
       return new AtomicLong();
     }
@@ -516,7 +516,7 @@
   }
 
 
-  public SolrCore getCore() {
+  SolrCore getCore() {
     return core;
   }
 

Modified: 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DocBuilder.java
URL: 
http://svn.apache.org/viewvc/lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DocBuilder.java?rev=690134&r1=690133&r2=690134&view=diff
==============================================================================
--- 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DocBuilder.java
 (original)
+++ 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DocBuilder.java
 Fri Aug 29 00:18:52 2008
@@ -17,6 +17,8 @@
 
 package org.apache.solr.handler.dataimport;
 
+import org.apache.solr.core.SolrCore;
+
 import java.util.*;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -232,7 +234,7 @@
                              Map<String, Object> pk, DataConfig.Entity entity, 
boolean isRoot,
                              ContextImpl parentCtx) {
 
-    EntityProcessor entityProcessor = getEntityProcessor(entity);
+    EntityProcessor entityProcessor = getEntityProcessor(entity, 
dataImporter.getCore());
     DataSource ds = entity.dataSrc;
     if (verboseDebug) {
       ds = DebugLogger.wrapDs(ds);
@@ -415,7 +417,7 @@
     }
   }
 
-  public static EntityProcessor getEntityProcessor(DataConfig.Entity entity) {
+  public static EntityProcessor getEntityProcessor(DataConfig.Entity entity, 
SolrCore core) {
     if (entity.processor != null)
       return entity.processor;
     EntityProcessor entityProcessor;
@@ -423,7 +425,7 @@
       entityProcessor = new SqlEntityProcessor();
     } else {
       try {
-        entityProcessor = (EntityProcessor) loadClass(entity.proc)
+        entityProcessor = (EntityProcessor) loadClass(entity.proc, core)
                 .newInstance();
       } catch (Exception e) {
         throw new DataImportHandlerException(DataImportHandlerException.SEVERE,
@@ -469,7 +471,7 @@
 
     Set<Map<String, Object>> deltaSet = new HashSet<Map<String, Object>>();
     resolver.addNamespace(null, (Map) entity.allAttributes);
-    EntityProcessor entityProcessor = getEntityProcessor(entity);
+    EntityProcessor entityProcessor = getEntityProcessor(entity, 
context.getCore());
     entityProcessor.init(new ContextImpl(entity, resolver, entity.dataSrc,
             Context.FIND_DELTA, requestParameters.requestParams, session, null,
             dataImporter));
@@ -506,7 +508,7 @@
     myModifiedPks.addAll(deltaSet);
     Set<Map<String, Object>> parentKeyList = new HashSet<Map<String, 
Object>>();
     if (parentEntity != null && parentEntity.isDocRoot) {
-      EntityProcessor parentEntityProcessor = getEntityProcessor(parentEntity);
+      EntityProcessor parentEntityProcessor = getEntityProcessor(parentEntity, 
context.getCore());
       parentEntityProcessor.init(new ContextImpl(parentEntity, resolver,
               parentEntity.dataSrc, Context.FIND_DELTA,
               requestParameters.requestParams, session, null, dataImporter));
@@ -570,18 +572,17 @@
   }
 
   @SuppressWarnings("unchecked")
-  static Class loadClass(String name) throws ClassNotFoundException {
-    DocBuilder inst = INSTANCE.get();
+  static Class loadClass(String name, SolrCore core) throws 
ClassNotFoundException {
     try {
-      return inst != null ?
-              inst.writer.loadClass(name) :
+      return core != null ?
+              core.getResourceLoader().findClass(name) :
               Class.forName(name);
     } catch (Exception e) {
       try {
         String n = DocBuilder.class.getPackage().getName() + "." + name;
-        return inst != null ?
-                inst.writer.loadClass(n) :
-                Class.forName(n);
+        return core != null ?
+                core.getResourceLoader().findClass(n) :
+              Class.forName(n);
       } catch (Exception e1) {
         throw new ClassNotFoundException("Unable to load " + name + " or " + 
DocBuilder.class.getPackage().getName() + "." + name, e);
       }

Modified: 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/EntityProcessorBase.java
URL: 
http://svn.apache.org/viewvc/lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/EntityProcessorBase.java?rev=690134&r1=690133&r2=690134&view=diff
==============================================================================
--- 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/EntityProcessorBase.java
 (original)
+++ 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/EntityProcessorBase.java
 Fri Aug 29 00:18:52 2008
@@ -93,7 +93,7 @@
         continue;
       }
       try {
-        Class clazz = DocBuilder.loadClass(trans);
+        Class clazz = DocBuilder.loadClass(trans, context.getSolrCore());
         if (clazz.newInstance() instanceof Transformer) {
           transformers.add((Transformer) clazz.newInstance());
         } else {

Modified: 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/JdbcDataSource.java
URL: 
http://svn.apache.org/viewvc/lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/JdbcDataSource.java?rev=690134&r1=690133&r2=690134&view=diff
==============================================================================
--- 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/JdbcDataSource.java
 (original)
+++ 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/JdbcDataSource.java
 Fri Aug 29 00:18:52 2008
@@ -16,6 +16,8 @@
  */
 package org.apache.solr.handler.dataimport;
 
+import org.apache.solr.common.SolrException;
+
 import java.sql.*;
 import java.util.*;
 import java.util.concurrent.Callable;
@@ -97,26 +99,39 @@
                                        final Properties initProps) {
 
     final String url = initProps.getProperty(URL);
-    String driver = initProps.getProperty(DRIVER);
+    final String driver = initProps.getProperty(DRIVER);
 
     if (url == null)
       throw new DataImportHandlerException(DataImportHandlerException.SEVERE,
               "JDBC URL cannot be null");
 
-    try {
-      if (driver != null)
-        Class.forName(driver);
-    } catch (ClassNotFoundException e) {
-      throw new DataImportHandlerException(DataImportHandlerException.SEVERE,
-              "driver could not be loaded");
+    if (driver != null) {
+      try {
+        DocBuilder.loadClass(driver, context.getSolrCore());
+      } catch (ClassNotFoundException e) {
+        throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Could 
not load driver: " + driver, e);
+      }
+    } else {
+      throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Driver 
must be specified");
     }
+
     factory = new Callable<Connection>() {
       public Connection call() throws Exception {
         LOG.info("Creating a connection for entity "
                 + context.getEntityAttribute(DataImporter.NAME) + " with URL: "
                 + url);
         long start = System.currentTimeMillis();
-        Connection c = DriverManager.getConnection(url, initProps);
+        Connection c = null;
+        try {
+          c = DriverManager.getConnection(url, initProps);
+        } catch (SQLException e) {
+          // DriverManager does not allow you to use a driver which is not 
loaded through
+          // the class loader of the class which is trying to make the 
connection.
+          // This is a workaround for cases where the user puts the driver jar 
in the
+          // solr.home/lib or solr.home/core/lib directories.
+          Driver d = (Driver) DocBuilder.loadClass(driver, 
context.getSolrCore()).newInstance();
+          c = d.connect(url, initProps);
+        }
         LOG.info("Time taken for getConnection(): "
                 + (System.currentTimeMillis() - start));
         return c;

Modified: 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/SolrWriter.java
URL: 
http://svn.apache.org/viewvc/lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/SolrWriter.java?rev=690134&r1=690133&r2=690134&view=diff
==============================================================================
--- 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/SolrWriter.java
 (original)
+++ 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/SolrWriter.java
 Fri Aug 29 00:18:52 2008
@@ -230,10 +230,6 @@
     return this.getStartTime();
   }
 
-  public Class loadClass(String name) throws ClassNotFoundException {
-    return Class.forName(name);
-  }
-
   /**
    * <p>
    * Stores the last indexed time into the <code>IMPORTER_PROPERTIES</code>

Modified: 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestDocBuilder.java
URL: 
http://svn.apache.org/viewvc/lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestDocBuilder.java?rev=690134&r1=690133&r2=690134&view=diff
==============================================================================
--- 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestDocBuilder.java
 (original)
+++ 
lucene/solr/branches/branch-1.3/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestDocBuilder.java
 Fri Aug 29 00:18:52 2008
@@ -38,7 +38,7 @@
 
   @Test
   public void loadClass() throws Exception {
-    Class clz = DocBuilder.loadClass("RegexTransformer");
+    Class clz = DocBuilder.loadClass("RegexTransformer", null);
     Assert.assertNotNull(clz);
   }
 
@@ -58,7 +58,7 @@
       DataImporter.RequestParams rp = new DataImporter.RequestParams();
       rp.command = "full-import";
       SolrWriterImpl swi = new SolrWriterImpl();
-      di.rumCmd(rp, swi, Collections.EMPTY_MAP);
+      di.runCmd(rp, swi, Collections.EMPTY_MAP);
       Assert.assertEquals(Boolean.TRUE, swi.deleteAllCalled);
       Assert.assertEquals(Boolean.TRUE, swi.commitCalled);
       Assert.assertEquals(0, swi.docs.size());
@@ -91,7 +91,7 @@
       DataImporter.RequestParams rp = new DataImporter.RequestParams();
       rp.command = "full-import";
       SolrWriterImpl swi = new SolrWriterImpl();
-      di.rumCmd(rp, swi, Collections.EMPTY_MAP);
+      di.runCmd(rp, swi, Collections.EMPTY_MAP);
       Assert.assertEquals(Boolean.TRUE, swi.deleteAllCalled);
       Assert.assertEquals(Boolean.TRUE, swi.commitCalled);
       Assert.assertEquals(1, swi.docs.size());
@@ -136,7 +136,7 @@
       MockDataSource.setIterator("select * from x", l.iterator());
       ent.dataSrc = new MockDataSource();
       SolrWriterImpl swi = new SolrWriterImpl();
-      di.rumCmd(rp, swi, Collections.EMPTY_MAP);
+      di.runCmd(rp, swi, Collections.EMPTY_MAP);
       Assert.assertEquals(Boolean.TRUE, swi.deleteAllCalled);
       Assert.assertEquals(Boolean.TRUE, swi.commitCalled);
       Assert.assertEquals(3, swi.docs.size());


Reply via email to