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/03/20 07:27:01 UTC

svn commit: r756340 - in /lucene/solr/trunk/contrib/dataimporthandler: CHANGES.txt src/main/java/org/apache/solr/handler/dataimport/JdbcDataSource.java

Author: shalin
Date: Fri Mar 20 06:27:01 2009
New Revision: 756340

URL: http://svn.apache.org/viewvc?rev=756340&view=rev
Log:
SOLR-1076 -- JdbcDataSource should resolve variables in all its configuration parameters

Modified:
    lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt
    lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/JdbcDataSource.java

Modified: lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt?rev=756340&r1=756339&r2=756340&view=diff
==============================================================================
--- lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt (original)
+++ lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt Fri Mar 20 06:27:01 2009
@@ -106,6 +106,9 @@
               further transformers. New methods are introduced in Context for deleting by id and query.
               (Noble Paul, Fergus McMenemie, shalin)
 
+25.SOLR-1076: JdbcDataSource should resolve variables in all its configuration parameters.
+              (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/JdbcDataSource.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/JdbcDataSource.java?rev=756340&r1=756339&r2=756340&view=diff
==============================================================================
--- lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/JdbcDataSource.java (original)
+++ lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/JdbcDataSource.java Fri Mar 20 06:27:01 2009
@@ -61,6 +61,7 @@
 
     String bsz = initProps.getProperty("batchSize");
     if (bsz != null) {
+      bsz = (String) context.getVariableResolver().resolve(bsz);
       try {
         batchSize = Integer.parseInt(bsz);
         if (batchSize == -1)
@@ -93,6 +94,9 @@
   private void createConnectionFactory(final Context context,
                                        final Properties initProps) {
 
+    final VariableResolver resolver = context.getVariableResolver();
+    resolveVariables(resolver, initProps);
+
     final String url = initProps.getProperty(URL);
     final String driver = initProps.getProperty(DRIVER);
 
@@ -117,11 +121,13 @@
 
     factory = new Callable<Connection>() {
       public Connection call() throws Exception {
+        // Resolve variables again because the variables may have changed
+        resolveVariables(resolver, initProps);
         LOG.info("Creating a connection for entity "
                 + context.getEntityAttribute(DataImporter.NAME) + " with URL: "
                 + url);
         long start = System.currentTimeMillis();
-        Connection c = null;
+        Connection c;
         try {
           c = DriverManager.getConnection(url, initProps);
           if (Boolean.parseBoolean(initProps.getProperty("readOnly"))) {
@@ -167,6 +173,14 @@
     };
   }
 
+  private void resolveVariables(VariableResolver resolver, Properties initProps) {
+    for (Map.Entry<Object, Object> entry : initProps.entrySet()) {
+      if (entry.getValue() != null) {
+        entry.setValue(resolver.replaceTokens((String) entry.getValue()));
+      }
+    }
+  }
+
   public Iterator<Map<String, Object>> getData(String query) {
     ResultSetIterator r = new ResultSetIterator(query);
     return r.getIterator();