Repository: oodt
Updated Branches:
  refs/heads/staging-curator b1c5560d9 -> a47b088a8


http://git-wip-us.apache.org/repos/asf/oodt/blob/a47b088a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/datatransfer/LocalDataTransferer.java
----------------------------------------------------------------------
diff --git 
a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/datatransfer/LocalDataTransferer.java
 
b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/datatransfer/LocalDataTransferer.java
index 3d6ed95..8c3fb19 100644
--- 
a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/datatransfer/LocalDataTransferer.java
+++ 
b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/datatransfer/LocalDataTransferer.java
@@ -18,13 +18,17 @@
 package org.apache.oodt.cas.filemgr.datatransfer;
 
 //APACHE Imports
+import org.apache.commons.compress.compressors.FileNameUtil;
 import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.FilenameUtils;
 import org.apache.oodt.cas.filemgr.structs.Product;
 import org.apache.oodt.cas.filemgr.structs.Reference;
+import org.apache.oodt.cas.filemgr.structs.exceptions.CatalogException;
 import org.apache.oodt.cas.filemgr.structs.exceptions.ConnectionException;
 import org.apache.oodt.cas.filemgr.structs.exceptions.DataTransferException;
 import org.apache.oodt.cas.filemgr.system.XmlRpcFileManagerClient;
 import org.apache.oodt.cas.filemgr.versioning.VersioningUtils;
+import org.apache.oodt.cas.metadata.Metadata;
 import org.apache.tika.mime.MimeTypeException;
 import org.apache.tika.mime.MimeTypes;
 import org.apache.tika.mime.MimeTypesFactory;
@@ -35,13 +39,14 @@ import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
 import java.net.URLEncoder;
+import java.nio.file.Files;
 import java.util.List;
 import java.util.Vector;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-//OODT imports
-//JDK imports
+import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
+
 
 /**
  * @author mattmann
@@ -111,6 +116,8 @@ public class LocalDataTransferer implements DataTransfer {
                               .getOrigReference() + ": Message: "
                         + e.getMessage());
             throw new DataTransferException(e);
+         } catch (CatalogException e) {
+             LOG.log(Level.WARNING, "Unable to read metadata: "+ 
e.getLocalizedMessage());
          }
       } else if (product.getProductStructure().equals(Product.STRUCTURE_FLAT)) 
{
          try {
@@ -121,6 +128,8 @@ public class LocalDataTransferer implements DataTransfer {
                   "URI Syntax Exception when moving files: Message: "
                         + e.getMessage());
             throw new DataTransferException(e);
+         } catch (CatalogException e) {
+             LOG.log(Level.WARNING, "Unable to read metadata: "+ 
e.getLocalizedMessage());
          }
       } else if 
(product.getProductStructure().equals(Product.STRUCTURE_STREAM)) {
             LOG.log(Level.INFO,"Streaming products are not moved.");
@@ -316,7 +325,7 @@ public class LocalDataTransferer implements DataTransfer {
    }
 
    private void moveDirToProductRepo(Product product) throws IOException,
-         URISyntaxException {
+           URISyntaxException, CatalogException {
       Reference dirRef = product.getProductReferences().get(0);
       LOG.log(
             Level.INFO,
@@ -331,7 +340,7 @@ public class LocalDataTransferer implements DataTransfer {
        File fileRef = new File(new URI(r.getOrigReference()));
 
        if (fileRef.isFile()) {
-         moveFile(r, false);
+         moveFile(r, false, product);
        } else if (fileRef.isDirectory()
                   && (fileRef.list() != null && fileRef.list().length == 0)) {
          // if it's a directory and it doesn't exist yet, we should
@@ -359,14 +368,14 @@ public class LocalDataTransferer implements DataTransfer {
    }
 
    private void moveFilesToProductRepo(Product product) throws IOException,
-         URISyntaxException {
+           URISyntaxException, CatalogException {
       List<Reference> refs = product.getProductReferences();
 
       // notify the file manager that we started
       quietNotifyTransferProduct(product);
 
      for (Reference r : refs) {
-       moveFile(r, true);
+       moveFile(r, true, product);
      }
 
       // notify the file manager that we're done
@@ -381,8 +390,8 @@ public class LocalDataTransferer implements DataTransfer {
      }
    }
 
-   private void moveFile(Reference r, boolean log) throws IOException,
-         URISyntaxException {
+   private void moveFile(Reference r, boolean log, Product product) throws 
IOException,
+           URISyntaxException, CatalogException {
       if (log) {
          LOG.log(Level.INFO,
                "LocalDataTransfer: Moving File: " + r.getOrigReference()
@@ -391,7 +400,29 @@ public class LocalDataTransferer implements DataTransfer {
       File srcFileRef = new File(new URI(r.getOrigReference()));
       File destFileRef = new File(new URI(r.getDataStoreReference()));
 
-      FileUtils.copyFile(srcFileRef, destFileRef);
+       boolean move = 
Boolean.getBoolean("org.apache.oodt.cas.filemgr.datatransferer.local.move");
+       if(move){
+           if (client == null) {
+               LOG.log(Level.WARNING,
+                       "File Manager service not defined: this move will not 
be tracked");
+               return;
+           }
+           else{
+               Metadata metadata = client.getMetadata(product);
+               metadata.addMetadata("Original Location", r.getOrigReference());
+               client.updateMetadata(product, metadata);
+           }
+           if(!srcFileRef.toPath().toString().contains("/dev/null")) {
+               String fullpath = 
FilenameUtils.getFullPath(destFileRef.getAbsolutePath());
+               LOG.log(Level.INFO, "Creating directory: "+fullpath);
+               FileUtils.forceMkdir(new File(fullpath));
+               Files.move(srcFileRef.toPath(), destFileRef.toPath(), 
REPLACE_EXISTING);
+           }
+       }
+       else{
+           FileUtils.copyFile(srcFileRef, destFileRef);
+       }
+
    }
 
    private void copyFile(Reference r, File directory) throws IOException,

http://git-wip-us.apache.org/repos/asf/oodt/blob/a47b088a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/Element.java
----------------------------------------------------------------------
diff --git 
a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/Element.java 
b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/Element.java
index d4e3838..d49276e 100644
--- a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/Element.java
+++ b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/Element.java
@@ -17,8 +17,12 @@
 
 package org.apache.oodt.cas.filemgr.structs;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * @author mattmann
+ * @author starchmd
  * @version $Revision$
  * 
  * <p>
@@ -40,6 +44,9 @@ public class Element {
     /* the element's string description. */
     private String description = null;
 
+    /* a list of properties attached to this element */
+    private Map<String,String> attachments = new HashMap<String,String>();
+
     /**
      * <p>
      * Default constructor
@@ -137,6 +144,19 @@ public class Element {
      */
     public void setDescription(String description) {
         this.description = description;
-    }  
-
+    }
+    /**
+     * Set attachments to this elements
+     * @param attachments - attachment map to add
+     */
+    public void setAttachments(Map<String,String> attachments) {
+        this.attachments = attachments;
+    }
+    /**
+     * Return the current attachments
+     * @return attachments
+     */
+    public Map<String,String> getAttachments() {
+        return this.attachments;
+    }
 }

http://git-wip-us.apache.org/repos/asf/oodt/blob/a47b088a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/system/CommonsXmlRpcTransport.java
----------------------------------------------------------------------
diff --git 
a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/system/CommonsXmlRpcTransport.java
 
b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/system/CommonsXmlRpcTransport.java
new file mode 100644
index 0000000..baf9e73
--- /dev/null
+++ 
b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/system/CommonsXmlRpcTransport.java
@@ -0,0 +1,183 @@
+//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by Fernflower decompiler)
+//
+
+package org.apache.oodt.cas.filemgr.system;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.zip.GZIPInputStream;
+import java.util.zip.GZIPOutputStream;
+
+import org.apache.http.Header;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpHost;
+import org.apache.http.HttpResponse;
+import org.apache.http.auth.*;
+import org.apache.http.client.CredentialsProvider;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.config.AuthSchemes;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.config.Registry;
+import org.apache.http.config.RegistryBuilder;
+import org.apache.http.entity.ByteArrayEntity;
+
+import org.apache.http.impl.auth.BasicSchemeFactory;
+import org.apache.http.impl.auth.DigestSchemeFactory;
+import org.apache.http.impl.client.BasicCredentialsProvider;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.message.BasicHeader;
+import org.apache.xmlrpc.XmlRpcClientException;
+import org.apache.xmlrpc.XmlRpcTransport;
+
+public class CommonsXmlRpcTransport implements XmlRpcTransport {
+    private URL url;
+    private HttpClient client;
+    private Header userAgentHeader;
+    private boolean http11;
+    private boolean gzip;
+    private boolean rgzip;
+    private Credentials creds;
+    protected HttpPost method;
+    private int timeout = 10;
+    private int connecttimeout = 10;
+    private String password;
+    private String user;
+    private String auth;
+
+    public CommonsXmlRpcTransport(URL url, HttpClient client) {
+        this.userAgentHeader = new BasicHeader("User-Agent", "Apache XML-RPC 
2.0");
+        this.http11 = false;
+        this.gzip = false;
+        this.rgzip = false;
+        this.url = url;
+        if(client == null) {
+            RequestConfig config = RequestConfig.custom()
+                    .setSocketTimeout(timeout * 1000)
+                    .setConnectTimeout(connecttimeout * 1000)
+                    .build();
+            CredentialsProvider credsProvider = new BasicCredentialsProvider();
+            if(!user.equals(null)) {
+                credsProvider.setCredentials(AuthScope.ANY, new 
UsernamePasswordCredentials(user));
+            }
+            else if(!user.equals(null)&& !password.equals(null)){
+                credsProvider.setCredentials(AuthScope.ANY, new 
UsernamePasswordCredentials(user, password));
+            }
+            else if(!auth.equals(null)){
+
+            }
+
+            System.out.println("building empty registry");
+            Registry<AuthSchemeProvider> r = 
RegistryBuilder.<AuthSchemeProvider>create().build();
+            HttpClient newClient = 
HttpClients.custom().setDefaultAuthSchemeRegistry(r).setDefaultCredentialsProvider(credsProvider).setDefaultRequestConfig(config).build();
+            this.client = newClient;
+        } else {
+            this.client = client;
+        }
+
+    }
+
+    public CommonsXmlRpcTransport(URL url) {
+        this(url, (HttpClient)null);
+    }
+
+
+
+    public InputStream sendXmlRpc(byte[] request) throws IOException, 
XmlRpcClientException {
+        this.method = new HttpPost(this.url.toString());
+        //this.method.setHttp11(this.http11);
+        this.method.setHeader(new BasicHeader("Content-Type", "text/xml"));
+        if(this.rgzip) {
+            this.method.setHeader(new BasicHeader("Content-Encoding", "gzip"));
+        }
+
+        if(this.gzip) {
+            this.method.setHeader(new BasicHeader("Accept-Encoding", "gzip"));
+        }
+
+        this.method.setHeader(this.userAgentHeader);
+        if(this.rgzip) {
+            ByteArrayOutputStream hostURI = new ByteArrayOutputStream();
+            GZIPOutputStream hostConfig = new GZIPOutputStream(hostURI);
+            hostConfig.write(request);
+            hostConfig.finish();
+            hostConfig.close();
+            byte[] lgzipo = hostURI.toByteArray();
+
+            HttpEntity entity = new ByteArrayEntity(lgzipo);
+
+
+            this.method.setEntity(entity);
+
+            //this.method.setRequestContentLength(-1);
+        } else {
+            HttpEntity entity = new ByteArrayEntity(request);
+            this.method.setEntity(entity);
+//            this.method.setRequestBody(new ByteArrayInputStream(request));
+        }
+
+        URI hostURI1 = null;
+        try {
+            hostURI1 = new URI(this.url.toString());
+        } catch (URISyntaxException e) {
+            e.printStackTrace();
+        }
+        HttpHost hostConfig1 = new HttpHost(hostURI1.toString());
+        HttpResponse response = this.client.execute(this.method);
+        boolean lgzipo1 = false;
+        Header[] lHeader = response.getHeaders("Content-Encoding");
+        if(lHeader != null && lHeader.length>0) {
+            String lValue = lHeader[0].getValue();
+            if(lValue != null) {
+                lgzipo1 = lValue.indexOf("gzip") >= 0;
+            }
+        }
+
+        return (InputStream)(lgzipo1?new 
GZIPInputStream(response.getEntity().getContent()):response.getEntity().getContent());
+    }
+
+    public void setHttp11(boolean http11) {
+        this.http11 = http11;
+    }
+
+    public void setGzip(boolean gzip) {
+        this.gzip = gzip;
+    }
+
+    public void setRGzip(boolean gzip) {
+        this.rgzip = gzip;
+    }
+
+    public void setUserAgent(String userAgent) {
+        this.userAgentHeader =new BasicHeader("User-Agent", userAgent);
+    }
+
+    public void setTimeout(int timeout) {
+        this.timeout = timeout;
+    }
+
+    public void setConnectionTimeout(int ctimeout) {
+        this.connecttimeout = ctimeout;
+    }
+
+    public void setBasicAuthentication(String user, String password) {
+        this.user = user;
+        this.password = password;
+
+    }
+
+    public void setBasicAuthentication(String auth) {
+        this.auth = auth;
+    }
+
+    public void endClientRequest() throws XmlRpcClientException {
+        this.method.releaseConnection();
+    }
+}

http://git-wip-us.apache.org/repos/asf/oodt/blob/a47b088a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/system/XmlRpcFileManagerClient.java
----------------------------------------------------------------------
diff --git 
a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/system/XmlRpcFileManagerClient.java
 
b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/system/XmlRpcFileManagerClient.java
index 5e84249..f589d86 100644
--- 
a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/system/XmlRpcFileManagerClient.java
+++ 
b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/system/XmlRpcFileManagerClient.java
@@ -17,10 +17,14 @@
 
 package org.apache.oodt.cas.filemgr.system;
 
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.HttpMethod;
-import org.apache.commons.httpclient.HttpMethodRetryHandler;
-import org.apache.commons.httpclient.params.HttpMethodParams;
+import org.apache.http.auth.AuthSchemeProvider;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.HttpRequestRetryHandler;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.config.Registry;
+import org.apache.http.config.RegistryBuilder;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.protocol.HttpContext;
 import org.apache.oodt.cas.cli.CmdLineUtility;
 import org.apache.oodt.cas.filemgr.datatransfer.DataTransfer;
 import org.apache.oodt.cas.filemgr.exceptions.FileManagerException;
@@ -43,7 +47,6 @@ import 
org.apache.oodt.cas.filemgr.util.GenericFileManagerObjectFactory;
 import org.apache.oodt.cas.filemgr.util.XmlRpcStructFactory;
 import org.apache.oodt.cas.filemgr.versioning.Versioner;
 import org.apache.oodt.cas.metadata.Metadata;
-import org.apache.xmlrpc.CommonsXmlRpcTransport;
 import org.apache.xmlrpc.XmlRpcClient;
 import org.apache.xmlrpc.XmlRpcClientException;
 import org.apache.xmlrpc.XmlRpcException;
@@ -118,32 +121,43 @@ public class XmlRpcFileManagerClient {
 
       public XmlRpcTransport createTransport()
           throws XmlRpcClientException {
-        HttpClient client = new HttpClient();
-        client.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
-            new HttpMethodRetryHandler() {
 
-              public boolean retryMethod(HttpMethod method,
-                                         IOException e, int count) {
-                if (count < Integer
+        HttpRequestRetryHandler myRetryHandler = new HttpRequestRetryHandler() 
{
+          public boolean retryRequest(
+                  IOException exception,
+                  int count,
+                  HttpContext context){
+            if (count < Integer
                     .getInteger(
-                        
"org.apache.oodt.cas.filemgr.system.xmlrpc.connection.retries",
-                        3)) {
-                  try {
-                    Thread
+                            
"org.apache.oodt.cas.filemgr.system.xmlrpc.connection.retries",
+                            3)) {
+              try {
+                Thread
                         .sleep(Integer
-                                   .getInteger(
-                                       
"org.apache.oodt.cas.filemgr.system.xmlrpc.connection.retry.interval.seconds",
-                                       0) * 1000);
-                    return true;
-                  } catch (Exception ignored) {
-                  }
-                }
-                return false;
+                                .getInteger(
+                                        
"org.apache.oodt.cas.filemgr.system.xmlrpc.connection.retry.interval.seconds",
+                                        0) * 1000);
+                return true;
+              } catch (Exception ignored) {
               }
+            }
+            return false;
+          }
+        };
+        RequestConfig config = RequestConfig.custom()
+                .setSocketTimeout(Integer
+                        .getInteger(
+                                
"org.apache.oodt.cas.filemgr.system.xmlrpc.connectionTimeout.minutes",
+                                20) * 60 * 1000)
+                .setConnectTimeout(Integer
+                        .getInteger(
+                                
"org.apache.oodt.cas.filemgr.system.xmlrpc.requestTimeout.minutes",
+                                60) * 60 * 1000)
+                .build();
+        Registry<AuthSchemeProvider> r = 
RegistryBuilder.<AuthSchemeProvider>create().build();
+        HttpClient client = 
HttpClients.custom().setRetryHandler(myRetryHandler).setDefaultAuthSchemeRegistry(r).setDefaultRequestConfig(config).build();
 
-            });
-        CommonsXmlRpcTransport transport = new CommonsXmlRpcTransport(
-            url, client);
+        CommonsXmlRpcTransport transport = new CommonsXmlRpcTransport(url, 
client);
         transport
             .setConnectionTimeout(Integer
                                       .getInteger(

http://git-wip-us.apache.org/repos/asf/oodt/blob/a47b088a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/tools/SolrIndexer.java
----------------------------------------------------------------------
diff --git 
a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/tools/SolrIndexer.java 
b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/tools/SolrIndexer.java
index 20ed97f..9801fd2 100755
--- a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/tools/SolrIndexer.java
+++ b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/tools/SolrIndexer.java
@@ -27,6 +27,7 @@ import org.apache.commons.cli.OptionBuilder;
 import org.apache.commons.cli.OptionGroup;
 import org.apache.commons.cli.Options;
 import org.apache.commons.cli.ParseException;
+import org.apache.http.impl.client.SystemDefaultHttpClient;
 import org.apache.oodt.cas.filemgr.metadata.CoreMetKeys;
 import org.apache.oodt.cas.filemgr.structs.Product;
 import org.apache.oodt.cas.filemgr.structs.ProductPage;
@@ -38,9 +39,8 @@ import 
org.apache.oodt.cas.filemgr.system.XmlRpcFileManagerClient;
 import org.apache.oodt.cas.metadata.Metadata;
 import org.apache.oodt.cas.metadata.SerializableMetadata;
 import org.apache.oodt.cas.metadata.util.PathUtils;
-import org.apache.solr.client.solrj.SolrServer;
 import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer;
+import org.apache.solr.client.solrj.impl.HttpSolrClient;
 import org.apache.solr.common.SolrInputDocument;
 import org.springframework.util.StringUtils;
 
@@ -73,8 +73,8 @@ public class SolrIndexer {
        private final static String ACCESS_KEY = "access.key";
        private final static String ACCESS_URL = "access.url";
        private final static String PRODUCT_NAME = "CAS.ProductName";
+       private final HttpSolrClient server;
        private IndexerConfig config = null;
-       private final SolrServer server;
        private String fmUrl;
        private String solrUrl;
        private static Logger LOG = 
Logger.getLogger(SolrIndexer.class.getName());
@@ -132,13 +132,10 @@ public class SolrIndexer {
                }
 
                LOG.info("Using Solr: " + this.solrUrl + " FileManager: " + 
this.fmUrl);
+               SystemDefaultHttpClient httpClient = new 
SystemDefaultHttpClient();
+               server = new HttpSolrClient(this.solrUrl, httpClient);
 
-               try {
-                       server = new CommonsHttpSolrServer(this.solrUrl);
-               } catch (MalformedURLException e) {
-                       LOG.severe("Could not connect to Solr server " + 
this.solrUrl);
-                       throw new InstantiationException(e.getMessage());
-               }
+//             server = new SolrClient(this.solrUrl);
 
        }
 
@@ -173,6 +170,8 @@ public class SolrIndexer {
        private SolrInputDocument getSolrDocument(Metadata metadata) {
                SolrInputDocument doc = new SolrInputDocument();
                // Only grab metadata which have a mapping in the 
indexer.properties
+               String official = "";
+
                for (Object objKey : config.getMapProperties().keySet()) {
                        // The key in the metadata object
                        String key = (String) objKey;
@@ -183,12 +182,14 @@ public class SolrIndexer {
                                for (String value : values) {
                                        // Add each metadata value into the
                                        if (value != null && 
!config.getIgnoreValues().contains(value.trim())) {
-                                               LOG.fine("Adding field: " + 
fieldName + " value: " + value);
+                                               official += " Key: " + key + " 
Value: " + value;
                                                doc.addField(fieldName, value);
                                        }
                                }
                        }
                }
+       //      LOG.info("KEYS WERE:" +official);
+
                return doc;
        }
 
@@ -326,20 +327,21 @@ public class SolrIndexer {
                        List<ProductType> types = fmClient.getProductTypes();
                        for (ProductType type : types) {
                                if 
(!config.getIgnoreTypes().contains(type.getName().trim())) {
+                                       ProductPage page = 
safeFirstPage(fmClient, type);
                                        LOG.info("Paging through products for 
product type: "
-                                           + type.getName());
-                                       ProductPage page = 
safeFirstPage(fmClient, type); 
+                                                       + type.getName()+" 
Total pages are "+page.getTotalPages());
                                        while (page != null) {
                                            for (Product product : 
page.getPageProducts()) {
                                                        try {
-                                                               
this.indexProduct(product.getProductId(), fmClient
-                                                                   
.getMetadata(product), type.getTypeMetadata());
+                                                               String p = 
product.getProductId();
+                                                               Metadata m = 
fmClient.getMetadata(product);
+                                                               
this.indexProduct(p, m, type.getTypeMetadata());
                                                        } catch (Exception e) {
                                                                
LOG.severe("Could not index " + product.getProductId() + ": "
-                                                                   + 
e.getMessage());
+                                                                   + 
e.getLocalizedMessage());
                                                        }
                                                }
-                                           if (page.isLastPage()) {
+                                           if (page.getPageNum() >= 
page.getTotalPages() || page.isLastPage()) {
                                                break;
                                            }
                                            page = fmClient.getNextPage(type, 
page);
@@ -378,6 +380,17 @@ public class SolrIndexer {
                            this.fmUrl));
                        Product product = fmClient.getProductById(productId);
                        Metadata productMetadata = 
fmClient.getMetadata(product);
+                       List<String> keys = productMetadata.getAllKeys();
+                       String logger = "";
+                       for(String k :keys){
+                               logger+=" key: "+keys;
+                               List<String> values = 
productMetadata.getAllValues(k);
+
+                               for(String v : values){
+                                       logger+=" value: "+v + ", ";
+                               }
+                       }
+                       LOG.info("Metadata: "+ logger);
                        indexProduct(product.getProductId(), productMetadata, 
product
                            .getProductType().getTypeMetadata());
                } catch (MalformedURLException e) {
@@ -472,7 +485,7 @@ public class SolrIndexer {
                                server.add(this.getSolrDocument(metadata));
                                LOG.info("Indexed product: " + productId);
                        } catch (IOException e) {
-                               LOG.severe("Could not index product: " + 
productId);
+                               LOG.severe("Could not index product: " + 
productId+ "Exception:"+e.getLocalizedMessage());
                        }
                } else {
                        LOG.info("Could not find metadata for product: " + 
productId);
@@ -546,10 +559,12 @@ public class SolrIndexer {
                                List<String> values = 
metadata.getAllMetadata(keyString);
                                if (values != null) {
                                        List<String> newValues = new 
ArrayList<String>();
-                                       SimpleDateFormat format = new 
SimpleDateFormat(config
-                                           
.getFormatProperties().getProperty(keyString).trim());
+
+                               /*      SimpleDateFormat format = new 
SimpleDateFormat(config
+                                           
.getFormatProperties().getProperty(keyString).trim());*/
                                        for (String value : values) {
-                                               
newValues.add(formatDate(format, value));
+                                               String d = value.trim();
+                                               newValues.add(d);
                                        }
                                        metadata.removeMetadata(keyString);
                                        metadata.addMetadata(keyString, 
newValues);

http://git-wip-us.apache.org/repos/asf/oodt/blob/a47b088a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/util/XmlRpcStructFactory.java
----------------------------------------------------------------------
diff --git 
a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/util/XmlRpcStructFactory.java
 
b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/util/XmlRpcStructFactory.java
index 6094320..211dc10 100644
--- 
a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/util/XmlRpcStructFactory.java
+++ 
b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/util/XmlRpcStructFactory.java
@@ -605,7 +605,7 @@ public final class XmlRpcStructFactory {
   }
 
   public static Map<String, Object> getXmlRpcElement(Element element) {
-    Map<String, Object> elementHash = new HashMap<String, Object>();
+    Map<String, Object> elementHash = new Hashtable<>();
 
     elementHash.put("id", element.getElementId());
     elementHash.put("name", element.getElementName());

http://git-wip-us.apache.org/repos/asf/oodt/blob/a47b088a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/util/XmlStructFactory.java
----------------------------------------------------------------------
diff --git 
a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/util/XmlStructFactory.java 
b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/util/XmlStructFactory.java
index 15ed172..5f5b170 100644
--- 
a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/util/XmlStructFactory.java
+++ 
b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/util/XmlStructFactory.java
@@ -35,6 +35,7 @@ import java.util.ArrayList;
 import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Properties;
 import java.util.Vector;
 import java.util.concurrent.ConcurrentHashMap;
@@ -454,12 +455,20 @@ public final class XmlStructFactory {
             description = XMLUtils.getElementText("description", elementElem,
                     true);
         }
-
+        Map<String,String> attributes = new HashMap<String,String>();
+        Node child = elementNode.getFirstChild();
+        while (child != null) {
+            if (child.getNodeType() == Node.ELEMENT_NODE) {
+                attributes.put(child.getNodeName(), child.getTextContent());
+            }
+            child = child.getNextSibling();
+        }
         org.apache.oodt.cas.filemgr.structs.Element element = new 
org.apache.oodt.cas.filemgr.structs.Element();
         element.setDCElement(dcElement);
         element.setDescription(description);
         element.setElementId(id);
         element.setElementName(name);
+        element.setAttachments(attributes);
         return element;
     }
 

http://git-wip-us.apache.org/repos/asf/oodt/blob/a47b088a/filemgr/src/test/java/org/apache/oodt/cas/filemgr/cli/action/TestLuceneQueryCliAction.java
----------------------------------------------------------------------
diff --git 
a/filemgr/src/test/java/org/apache/oodt/cas/filemgr/cli/action/TestLuceneQueryCliAction.java
 
b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/cli/action/TestLuceneQueryCliAction.java
index 3de2515..ba0a53d 100644
--- 
a/filemgr/src/test/java/org/apache/oodt/cas/filemgr/cli/action/TestLuceneQueryCliAction.java
+++ 
b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/cli/action/TestLuceneQueryCliAction.java
@@ -98,7 +98,7 @@ public class TestLuceneQueryCliAction extends TestCase {
       assertEquals("TestProductName", ((TermQueryCriteria) bqc.getTerms()
             .get(1)).getValue());
 
-      cliAction
+     /* cliAction
             .setQuery("ProductId:TestProductId NominalDate:[20020101 TO 
20030101]");
       cliAction.execute(printer);
       assertEquals(1, clientSetQuery.getCriteria().size());
@@ -115,9 +115,9 @@ public class TestLuceneQueryCliAction extends TestCase {
             ((RangeQueryCriteria) bqc.getTerms().get(1)).getStartValue());
       assertEquals("20030101",
             ((RangeQueryCriteria) bqc.getTerms().get(1)).getEndValue());
-      assertTrue(((RangeQueryCriteria) bqc.getTerms().get(1)).getInclusive());
+      assertTrue(((RangeQueryCriteria) 
bqc.getTerms().get(1)).getInclusive());*/
 
-      cliAction
+/*      cliAction
             .setQuery("ProductId:TestProductId NominalDate:{20020101 TO 
20030101}");
       cliAction.execute(printer);
       cliAction.execute(printer);
@@ -135,7 +135,7 @@ public class TestLuceneQueryCliAction extends TestCase {
             ((RangeQueryCriteria) bqc.getTerms().get(1)).getStartValue());
       assertEquals("20030101",
             ((RangeQueryCriteria) bqc.getTerms().get(1)).getEndValue());
-      assertFalse(((RangeQueryCriteria) bqc.getTerms().get(1)).getInclusive());
+      assertFalse(((RangeQueryCriteria) 
bqc.getTerms().get(1)).getInclusive());*/
 
       cliAction
             .setQuery("ProductId:TestProductId AND 
ProductName:TestProductName");

http://git-wip-us.apache.org/repos/asf/oodt/blob/a47b088a/filemgr/src/test/resources/filemgr.properties
----------------------------------------------------------------------
diff --git a/filemgr/src/test/resources/filemgr.properties 
b/filemgr/src/test/resources/filemgr.properties
index d79896a..c82a2ea 100644
--- a/filemgr/src/test/resources/filemgr.properties
+++ b/filemgr/src/test/resources/filemgr.properties
@@ -307,4 +307,7 @@ org.apache.oodt.cas.filemgr.metadata.expandProduct=false
 
#org.apache.oodt.cas.filemgr.versioning.configuration.<product_type>=[Year]/[Month]/[Filename]
 
 # Enable to use only server-side versioning.
-#org.apache.oodt.cas.filemgr.serverside.versioning=true
\ No newline at end of file
+#org.apache.oodt.cas.filemgr.serverside.versioning=true
+
+
+org.apache.oodt.cas.filemgr.datatransferer.local.move=false
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/oodt/blob/a47b088a/metadata/src/main/java/org/apache/oodt/cas/metadata/extractors/MetadataProvidedMetExtractor.java
----------------------------------------------------------------------
diff --git 
a/metadata/src/main/java/org/apache/oodt/cas/metadata/extractors/MetadataProvidedMetExtractor.java
 
b/metadata/src/main/java/org/apache/oodt/cas/metadata/extractors/MetadataProvidedMetExtractor.java
new file mode 100644
index 0000000..b489772
--- /dev/null
+++ 
b/metadata/src/main/java/org/apache/oodt/cas/metadata/extractors/MetadataProvidedMetExtractor.java
@@ -0,0 +1,32 @@
+/**
+ * 
+ */
+package org.apache.oodt.cas.metadata.extractors;
+
+import org.apache.oodt.cas.metadata.AbstractMetExtractor;
+import org.apache.oodt.cas.metadata.MetExtractorConfigReader;
+import org.apache.oodt.cas.metadata.Metadata;
+
+/**
+ * A metadata extractor that allows the user to specify an attached metadata 
object
+ * 
+ * @author starchmd
+ */
+public abstract class MetadataProvidedMetExtractor extends 
AbstractMetExtractor {
+
+    protected Metadata attached = new Metadata();
+    /**
+     * Pass-through constructor
+     * @param reader - reader to read configuration
+     */
+    public MetadataProvidedMetExtractor(MetExtractorConfigReader reader) {
+        super(reader);
+    }
+    /**
+     * Attache a different metadata object
+     * @param metadata - metadata object to attach
+     */
+    public void attachMetadata(Metadata metadata) {
+        this.attached = metadata;
+    }
+}

http://git-wip-us.apache.org/repos/asf/oodt/blob/a47b088a/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index f5b1c3c..9362332 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,6 +49,7 @@ the License.
     <module>resource</module>
     <module>curator/services</module>
     <module>curator/webapp</module>
+    <module>curator2</module>
     <module>pge</module>
     <module>mvn/plugins/cas-install</module>
     <module>mvn/archetypes</module>
@@ -62,6 +63,7 @@ the License.
     <module>webapp/fmbrowser</module>
     <module>webapp/fmprod</module>
     <module>webapp/wmonitor</module>
+    <module>webapp/curator</module>
     <module>app/fmbrowser</module>
     <module>app/weditor</module>
     <module>pcs/core</module>

http://git-wip-us.apache.org/repos/asf/oodt/blob/a47b088a/profile/pom.xml
----------------------------------------------------------------------
diff --git a/profile/pom.xml b/profile/pom.xml
index 3d67496..544a57f 100644
--- a/profile/pom.xml
+++ b/profile/pom.xml
@@ -59,17 +59,20 @@
     <dependency>
       <groupId>commons-codec</groupId>
       <artifactId>commons-codec</artifactId>
-      <version>1.3</version>
     </dependency>
     <dependency>
-      <groupId>commons-httpclient</groupId>
-      <artifactId>commons-httpclient</artifactId>
-      <version>3.0-alpha1</version>
+      <groupId>org.apache.httpcomponents</groupId>
+      <artifactId>httpclient</artifactId>
+      <exclusions>
+        <exclusion>
+          <artifactId>commons-logging</artifactId>
+          <groupId>commons-logging</groupId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>commons-logging</groupId>
       <artifactId>commons-logging</artifactId>
-      <version>1.0.4</version>
     </dependency>
     <dependency>
       <groupId>junit</groupId>

http://git-wip-us.apache.org/repos/asf/oodt/blob/a47b088a/protocol/http/pom.xml
----------------------------------------------------------------------
diff --git a/protocol/http/pom.xml b/protocol/http/pom.xml
index 22013f5..af93645 100644
--- a/protocol/http/pom.xml
+++ b/protocol/http/pom.xml
@@ -41,8 +41,14 @@
   -->
   <dependencies>
     <dependency>
-      <groupId>commons-httpclient</groupId>
-      <artifactId>commons-httpclient</artifactId>
+      <groupId>org.apache.httpcomponents</groupId>
+      <artifactId>httpclient</artifactId>
+      <exclusions>
+        <exclusion>
+          <artifactId>commons-logging</artifactId>
+          <groupId>commons-logging</groupId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>junit</groupId>

http://git-wip-us.apache.org/repos/asf/oodt/blob/a47b088a/resource/pom.xml
----------------------------------------------------------------------
diff --git a/resource/pom.xml b/resource/pom.xml
index 6ccb724..f1189e6 100644
--- a/resource/pom.xml
+++ b/resource/pom.xml
@@ -73,8 +73,14 @@ the License.
       <artifactId>commons-dbcp</artifactId>
     </dependency>
     <dependency>
-      <groupId>commons-httpclient</groupId>
-      <artifactId>commons-httpclient</artifactId>
+      <groupId>org.apache.httpcomponents</groupId>
+      <artifactId>httpclient</artifactId>
+      <exclusions>
+        <exclusion>
+          <artifactId>commons-logging</artifactId>
+          <groupId>commons-logging</groupId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>commons-io</groupId>

http://git-wip-us.apache.org/repos/asf/oodt/blob/a47b088a/resource/src/main/java/org/apache/oodt/cas/resource/system/CommonsXmlRpcTransport.java
----------------------------------------------------------------------
diff --git 
a/resource/src/main/java/org/apache/oodt/cas/resource/system/CommonsXmlRpcTransport.java
 
b/resource/src/main/java/org/apache/oodt/cas/resource/system/CommonsXmlRpcTransport.java
new file mode 100644
index 0000000..605a14d
--- /dev/null
+++ 
b/resource/src/main/java/org/apache/oodt/cas/resource/system/CommonsXmlRpcTransport.java
@@ -0,0 +1,181 @@
+//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by Fernflower decompiler)
+//
+
+package org.apache.oodt.cas.resource.system;
+
+import org.apache.http.Header;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpHost;
+import org.apache.http.HttpResponse;
+import org.apache.http.auth.AuthSchemeProvider;
+import org.apache.http.auth.AuthScope;
+import org.apache.http.auth.Credentials;
+import org.apache.http.auth.UsernamePasswordCredentials;
+import org.apache.http.client.CredentialsProvider;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.config.Registry;
+import org.apache.http.config.RegistryBuilder;
+import org.apache.http.entity.ByteArrayEntity;
+import org.apache.http.impl.client.BasicCredentialsProvider;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.message.BasicHeader;
+import org.apache.xmlrpc.XmlRpcClientException;
+import org.apache.xmlrpc.XmlRpcTransport;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.zip.GZIPInputStream;
+import java.util.zip.GZIPOutputStream;
+
+public class CommonsXmlRpcTransport implements XmlRpcTransport {
+    private URL url;
+    private HttpClient client;
+    private Header userAgentHeader;
+    private boolean http11;
+    private boolean gzip;
+    private boolean rgzip;
+    private Credentials creds;
+    protected HttpPost method;
+    private int timeout = 10;
+    private int connecttimeout = 10;
+    private String password;
+    private String user;
+    private String auth;
+
+    public CommonsXmlRpcTransport(URL url, HttpClient client) {
+        this.userAgentHeader = new BasicHeader("User-Agent", "Apache XML-RPC 
2.0");
+        this.http11 = false;
+        this.gzip = false;
+        this.rgzip = false;
+        this.url = url;
+        if(client == null) {
+            RequestConfig config = RequestConfig.custom()
+                    .setSocketTimeout(timeout * 1000)
+                    .setConnectTimeout(connecttimeout * 1000)
+                    .build();
+            CredentialsProvider credsProvider = new BasicCredentialsProvider();
+            if(!user.equals(null)) {
+                credsProvider.setCredentials(AuthScope.ANY, new 
UsernamePasswordCredentials(user));
+            }
+            else if(!user.equals(null)&& !password.equals(null)){
+                credsProvider.setCredentials(AuthScope.ANY, new 
UsernamePasswordCredentials(user, password));
+            }
+            else if(!auth.equals(null)){
+
+            }
+
+            System.out.println("building empty registry");
+            Registry<AuthSchemeProvider> r = 
RegistryBuilder.<AuthSchemeProvider>create().build();
+            HttpClient newClient = 
HttpClients.custom().setDefaultAuthSchemeRegistry(r).setDefaultCredentialsProvider(credsProvider).setDefaultRequestConfig(config).build();
+            this.client = newClient;
+        } else {
+            this.client = client;
+        }
+
+    }
+
+    public CommonsXmlRpcTransport(URL url) {
+        this(url, (HttpClient)null);
+    }
+
+
+
+    public InputStream sendXmlRpc(byte[] request) throws IOException, 
XmlRpcClientException {
+        this.method = new HttpPost(this.url.toString());
+        //this.method.setHttp11(this.http11);
+        this.method.setHeader(new BasicHeader("Content-Type", "text/xml"));
+        if(this.rgzip) {
+            this.method.setHeader(new BasicHeader("Content-Encoding", "gzip"));
+        }
+
+        if(this.gzip) {
+            this.method.setHeader(new BasicHeader("Accept-Encoding", "gzip"));
+        }
+
+        this.method.setHeader(this.userAgentHeader);
+        if(this.rgzip) {
+            ByteArrayOutputStream hostURI = new ByteArrayOutputStream();
+            GZIPOutputStream hostConfig = new GZIPOutputStream(hostURI);
+            hostConfig.write(request);
+            hostConfig.finish();
+            hostConfig.close();
+            byte[] lgzipo = hostURI.toByteArray();
+
+            HttpEntity entity = new ByteArrayEntity(lgzipo);
+
+
+            this.method.setEntity(entity);
+
+            //this.method.setRequestContentLength(-1);
+        } else {
+            HttpEntity entity = new ByteArrayEntity(request);
+            this.method.setEntity(entity);
+//            this.method.setRequestBody(new ByteArrayInputStream(request));
+        }
+
+        URI hostURI1 = null;
+        try {
+            hostURI1 = new URI(this.url.toString());
+        } catch (URISyntaxException e) {
+            e.printStackTrace();
+        }
+        HttpHost hostConfig1 = new HttpHost(hostURI1.toString());
+        HttpResponse response = this.client.execute(this.method);
+        boolean lgzipo1 = false;
+        Header[] lHeader = response.getHeaders("Content-Encoding");
+        if(lHeader != null && lHeader.length>0) {
+            String lValue = lHeader[0].getValue();
+            if(lValue != null) {
+                lgzipo1 = lValue.indexOf("gzip") >= 0;
+            }
+        }
+
+        return (InputStream)(lgzipo1?new 
GZIPInputStream(response.getEntity().getContent()):response.getEntity().getContent());
+    }
+
+    public void setHttp11(boolean http11) {
+        this.http11 = http11;
+    }
+
+    public void setGzip(boolean gzip) {
+        this.gzip = gzip;
+    }
+
+    public void setRGzip(boolean gzip) {
+        this.rgzip = gzip;
+    }
+
+    public void setUserAgent(String userAgent) {
+        this.userAgentHeader =new BasicHeader("User-Agent", userAgent);
+    }
+
+    public void setTimeout(int timeout) {
+        this.timeout = timeout;
+    }
+
+    public void setConnectionTimeout(int ctimeout) {
+        this.connecttimeout = ctimeout;
+    }
+
+    public void setBasicAuthentication(String user, String password) {
+        this.user = user;
+        this.password = password;
+
+    }
+
+    public void setBasicAuthentication(String auth) {
+        this.auth = auth;
+    }
+
+    public void endClientRequest() throws XmlRpcClientException {
+        this.method.releaseConnection();
+    }
+}

http://git-wip-us.apache.org/repos/asf/oodt/blob/a47b088a/resource/src/main/java/org/apache/oodt/cas/resource/system/XmlRpcResourceManagerClient.java
----------------------------------------------------------------------
diff --git 
a/resource/src/main/java/org/apache/oodt/cas/resource/system/XmlRpcResourceManagerClient.java
 
b/resource/src/main/java/org/apache/oodt/cas/resource/system/XmlRpcResourceManagerClient.java
index c700e61..0931e35 100644
--- 
a/resource/src/main/java/org/apache/oodt/cas/resource/system/XmlRpcResourceManagerClient.java
+++ 
b/resource/src/main/java/org/apache/oodt/cas/resource/system/XmlRpcResourceManagerClient.java
@@ -20,6 +20,14 @@ package org.apache.oodt.cas.resource.system;
 
 
 //OODTimports
+import org.apache.http.auth.AuthSchemeProvider;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.HttpRequestRetryHandler;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.config.Registry;
+import org.apache.http.config.RegistryBuilder;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.protocol.HttpContext;
 import org.apache.oodt.cas.cli.CmdLineUtility;
 import org.apache.oodt.cas.resource.structs.Job;
 import org.apache.oodt.cas.resource.structs.JobInput;
@@ -29,9 +37,7 @@ import org.apache.oodt.cas.resource.structs.exceptions.*;
 import org.apache.oodt.cas.resource.util.XmlRpcStructFactory;
 
 //APACHE imports
-import org.apache.xmlrpc.CommonsXmlRpcTransportFactory;
-import org.apache.xmlrpc.XmlRpcClient;
-import org.apache.xmlrpc.XmlRpcException;
+import org.apache.xmlrpc.*;
 
 //JDK imports
 import java.io.File;
@@ -79,7 +85,7 @@ public class XmlRpcResourceManagerClient {
      * @param url
      *            The url pointer to the xml rpc resource manager service.
      */
-    public XmlRpcResourceManagerClient(URL url) {
+    public XmlRpcResourceManagerClient(final URL url) {
         // set up the configuration, if there is any
         if (System.getProperty("org.apache.oodt.cas.resource.properties") != 
null) {
             String configFile = System
@@ -98,20 +104,57 @@ public class XmlRpcResourceManagerClient {
 
         }
 
-        CommonsXmlRpcTransportFactory transportFactory = new 
CommonsXmlRpcTransportFactory(
-                url);
-        int connectionTimeoutMins = Integer
-            .getInteger(
-                
"org.apache.oodt.cas.resource.system.xmlrpc.connectionTimeout.minutes",
-                VAL);
-        int connectionTimeout = connectionTimeoutMins * INT * 1000;
-        int requestTimeoutMins = Integer
-            .getInteger(
-                
"org.apache.oodt.cas.resource.system.xmlrpc.requestTimeout.minutes",
-                VAL1);
-        int requestTimeout = requestTimeoutMins * INT1 * 1000;
-        transportFactory.setConnectionTimeout(connectionTimeout);
-        transportFactory.setTimeout(requestTimeout);
+        XmlRpcTransportFactory transportFactory = new XmlRpcTransportFactory() 
{
+
+
+            public XmlRpcTransport createTransport()
+                    throws XmlRpcClientException {
+                HttpRequestRetryHandler myRetryHandler = new 
HttpRequestRetryHandler() {
+                    public boolean retryRequest(
+                            IOException exception,
+                            int count,
+                            HttpContext context) {
+                        if (count < Integer
+                                .getInteger(
+                                        
"org.apache.oodt.cas.filemgr.system.xmlrpc.connection.retries",
+                                        3)) {
+                            try {
+                                Thread
+                                        .sleep(Integer
+                                                .getInteger(
+                                                        
"org.apache.oodt.cas.filemgr.system.xmlrpc.connection.retry.interval.seconds",
+                                                        0) * 1000);
+                                return true;
+                            } catch (Exception ignored) {
+                            }
+                        }
+                        return false;
+                    }
+                };
+                RequestConfig config = RequestConfig.custom()
+                        .setSocketTimeout(Integer
+                                .getInteger(
+                                        
"org.apache.oodt.cas.resource.system.xmlrpc.connectionTimeout.minutes",
+                                        20) * 60 * 1000)
+                        .setConnectTimeout(Integer
+                                .getInteger(
+                                        
"org.apache.oodt.cas.resource.system.xmlrpc.requestTimeout.minutes",
+                                        60) * 60 * 1000)
+                        .build();
+                Registry<AuthSchemeProvider> r = 
RegistryBuilder.<AuthSchemeProvider>create().build();
+
+                HttpClient client = 
HttpClients.custom().setRetryHandler(myRetryHandler).setDefaultAuthSchemeRegistry(r).setDefaultRequestConfig(config).build();
+
+                CommonsXmlRpcTransport transport = new 
CommonsXmlRpcTransport(url, client);
+                return transport;
+            }
+
+            @Override
+            public void setProperty(String s, Object o) {
+
+            }
+        };
+
         client = new XmlRpcClient(url, transportFactory);
         resMgrUrl = url;
     }

http://git-wip-us.apache.org/repos/asf/oodt/blob/a47b088a/sso/pom.xml
----------------------------------------------------------------------
diff --git a/sso/pom.xml b/sso/pom.xml
index cdb59a2..567c639 100644
--- a/sso/pom.xml
+++ b/sso/pom.xml
@@ -50,17 +50,20 @@ the License.
     <dependency>
       <groupId>commons-codec</groupId>
       <artifactId>commons-codec</artifactId>
-      <version>1.3</version>
     </dependency>
     <dependency>
-      <groupId>commons-httpclient</groupId>
-      <artifactId>commons-httpclient</artifactId>
-      <version>3.0</version>
+      <groupId>org.apache.httpcomponents</groupId>
+      <artifactId>httpclient</artifactId>
+      <exclusions>
+        <exclusion>
+          <artifactId>commons-logging</artifactId>
+          <groupId>commons-logging</groupId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>javax.servlet</groupId>
       <artifactId>servlet-api</artifactId>
-      <version>2.4</version>
     </dependency>
     <dependency>
       <groupId>org.apache.oodt</groupId>

http://git-wip-us.apache.org/repos/asf/oodt/blob/a47b088a/sso/src/main/java/org/apache/oodt/security/sso/opensso/SSOProxy.java
----------------------------------------------------------------------
diff --git 
a/sso/src/main/java/org/apache/oodt/security/sso/opensso/SSOProxy.java 
b/sso/src/main/java/org/apache/oodt/security/sso/opensso/SSOProxy.java
index 5d77083..8cef0b7 100755
--- a/sso/src/main/java/org/apache/oodt/security/sso/opensso/SSOProxy.java
+++ b/sso/src/main/java/org/apache/oodt/security/sso/opensso/SSOProxy.java
@@ -18,16 +18,23 @@
 package org.apache.oodt.security.sso.opensso;
 
 
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.HttpException;
-import org.apache.commons.httpclient.HttpStatus;
-import org.apache.commons.httpclient.NameValuePair;
-import org.apache.commons.httpclient.methods.PostMethod;
-
-import java.io.BufferedReader;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
+
+import org.apache.http.HttpException;
+import org.apache.http.HttpResponse;
+import org.apache.http.HttpStatus;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.ResponseHandler;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.impl.client.BasicResponseHandler;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.message.BasicNameValuePair;
+
+import java.io.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -84,23 +91,33 @@ public class SSOProxy implements SSOMetKeys {
   }
 
   public String authenticate(String username, String password) {
-    HttpClient httpClient = new HttpClient();
-    PostMethod post = new PostMethod(AUTH_ENDPOINT);
+    HttpClient httpClient = new DefaultHttpClient();
+    HttpPost post = new HttpPost(AUTH_ENDPOINT);
+    //PostMethod post = new PostMethod(AUTH_ENDPOINT);
     String response;
     String ssoToken = null;
 
-    NameValuePair[] data = { new NameValuePair("username", username),
-        new NameValuePair("password", password),
-        new NameValuePair("uri", "realm/lmmp") };
+    NameValuePair[] data = { new BasicNameValuePair("username", username),
+        new BasicNameValuePair("password", password),
+        new BasicNameValuePair("uri", "realm/lmmp") };
 
-    post.setRequestBody(data);
+    UrlEncodedFormEntity entity = null;
+    try {
+      entity = new UrlEncodedFormEntity(Arrays.asList(data), "UTF-8");
+    } catch (UnsupportedEncodingException e) {
+      e.printStackTrace();
+    }
+
+    post.setEntity(entity);
 
     try {
-      httpClient.executeMethod(post);
-      if (post.getStatusCode() != HttpStatus.SC_OK) {
-        throw new HttpException(post.getStatusLine().toString());
+      HttpResponse response1 = httpClient.execute(post);
+      if (response1.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
+        throw new HttpException(response1.getStatusLine().toString());
       }
-      response = post.getResponseBodyAsString().trim();
+      ResponseHandler<String> handler = new BasicResponseHandler();
+
+      response = handler.handleResponse(response1);
       ssoToken = response.substring(9);
     } catch (Exception e) {
       LOG.log(Level.SEVERE, e.getMessage());
@@ -113,55 +130,84 @@ public class SSOProxy implements SSOMetKeys {
 
   public IdentityDetails readIdentity(String username, String token)
       throws IOException, SingleSignOnException {
-    HttpClient httpClient = new HttpClient();
-    PostMethod post = new PostMethod(IDENT_READ_ENDPOINT);
+    HttpClient httpClient = new DefaultHttpClient();
+    HttpPost post = new HttpPost(IDENT_READ_ENDPOINT);
     LOG.log(Level.INFO, "Obtaining identity: username: [" + username
         + "]: token: [" + token + "]: REST url: [" + IDENT_READ_ENDPOINT
         + "]");
-    NameValuePair[] data = { new NameValuePair("name", username),
-        new NameValuePair("admin", token) };
+    NameValuePair[] data = { new BasicNameValuePair("name", username),
+        new BasicNameValuePair("admin", token) };
 
-    post.setRequestBody(data);
+    UrlEncodedFormEntity entity = null;
+    try {
+      entity = new UrlEncodedFormEntity(Arrays.asList(data), "UTF-8");
+    } catch (UnsupportedEncodingException e) {
+      e.printStackTrace();
+    }
+
+    post.setEntity(entity);
 
-    httpClient.executeMethod(post);
-    if (post.getStatusCode() != HttpStatus.SC_OK) {
-      throw new SingleSignOnException(post.getStatusLine().toString());
+    HttpResponse response1 = httpClient.execute(post);
+    if (response1.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
+      throw new SingleSignOnException(response1.getStatusLine().toString());
     }
 
-    return parseIdentityDetails(post.getResponseBodyAsString().trim());
+    ResponseHandler<String> handler = new BasicResponseHandler();
+
+
+    return parseIdentityDetails(handler.handleResponse(response1).trim());
 
   }
 
   public UserDetails getUserAttributes(String token) throws IOException, 
SingleSignOnException {
-    HttpClient httpClient = new HttpClient();
-    PostMethod post = new PostMethod(IDENT_ATTR_ENDPOINT);
+    HttpClient httpClient = new DefaultHttpClient();
+    HttpPost post = new HttpPost(IDENT_READ_ENDPOINT);
     LOG.log(Level.INFO, "Obtaining user attributes: token: [" + token
         + "]: REST url: [" + IDENT_ATTR_ENDPOINT + "]");
-    NameValuePair[] data = { new NameValuePair("subjectid", token) };
+    NameValuePair[] data = { new BasicNameValuePair("subjectid", token) };
 
-    post.setRequestBody(data);
+    UrlEncodedFormEntity entity = null;
+    try {
+      entity = new UrlEncodedFormEntity(Arrays.asList(data), "UTF-8");
+    } catch (UnsupportedEncodingException e) {
+      e.printStackTrace();
+    }
+
+    post.setEntity(entity);
 
-    httpClient.executeMethod(post);
-    if (post.getStatusCode() != HttpStatus.SC_OK) {
-      throw new SingleSignOnException(post.getStatusLine().toString());
+    HttpResponse response1 = httpClient.execute(post);
+    if (response1.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
+      throw new SingleSignOnException(response1.getStatusLine().toString());
     }
 
-    return parseUserDetails(post.getResponseBodyAsString().trim());
+    ResponseHandler<String> handler = new BasicResponseHandler();
+
+
+    return parseUserDetails(handler.handleResponse(response1).trim());
 
   }
 
   public void logout(String token) {
-    HttpClient httpClient = new HttpClient();
-    PostMethod post = new PostMethod(LOG_ENDPOINT);
+    HttpClient httpClient = new DefaultHttpClient();
+    HttpPost post = new HttpPost(LOG_ENDPOINT);
     LOG.log(Level.INFO, "Logging out: token: [" + token + "]: REST url: ["
         + LOG_ENDPOINT + "]");
-    NameValuePair[] data = { new NameValuePair("subjectid", token) };
-    post.setRequestBody(data);
+    NameValuePair[] data = { new BasicNameValuePair("subjectid", token) };
+
+
+    UrlEncodedFormEntity entity = null;
+    try {
+      entity = new UrlEncodedFormEntity(Arrays.asList(data), "UTF-8");
+    } catch (UnsupportedEncodingException e) {
+      e.printStackTrace();
+    }
+
+    post.setEntity(entity);
 
     try {
-      httpClient.executeMethod(post);
-      if (post.getStatusCode() != HttpStatus.SC_OK) {
-        throw new HttpException(post.getStatusLine().toString());
+      HttpResponse response1 = httpClient.execute(post);
+      if (response1.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
+        throw new HttpException(response1.getStatusLine().toString());
       }
     } catch (HttpException e) {
       // TODO Auto-generated catch block

http://git-wip-us.apache.org/repos/asf/oodt/blob/a47b088a/workflow/pom.xml
----------------------------------------------------------------------
diff --git a/workflow/pom.xml b/workflow/pom.xml
index 0abb354..be7fad8 100644
--- a/workflow/pom.xml
+++ b/workflow/pom.xml
@@ -64,8 +64,14 @@ the License.
       <artifactId>commons-dbcp</artifactId>
     </dependency>
     <dependency>
-      <groupId>commons-httpclient</groupId>
-      <artifactId>commons-httpclient</artifactId>
+      <groupId>org.apache.httpcomponents</groupId>
+      <artifactId>httpclient</artifactId>
+      <exclusions>
+        <exclusion>
+          <artifactId>commons-logging</artifactId>
+          <groupId>commons-logging</groupId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>commons-io</groupId>

Reply via email to