Index: metacat-index/src/test/java/edu/ucsb/nceas/metacat/index/SolrIndexIT.java
===================================================================
--- metacat-index/src/test/java/edu/ucsb/nceas/metacat/index/SolrIndexIT.java	(revision 8765)
+++ metacat-index/src/test/java/edu/ucsb/nceas/metacat/index/SolrIndexIT.java	(revision 8766)
@@ -4,9 +4,6 @@
 import static org.junit.Assert.assertTrue;
 
 import edu.ucsb.nceas.metacat.common.SolrServerFactory;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStream;
 import java.io.StringWriter;
 import java.io.Writer;
 import java.util.ArrayList;
@@ -74,11 +71,10 @@
     	
        //InputStream systemInputStream = new FileInputStream(new File(SYSTEMMETAFILEPATH));
        SystemMetadata systemMetadata = TypeMarshaller.unmarshalTypeFromFile(SystemMetadata.class, SYSTEMMETAFILEPATH);
-       InputStream emlInputStream = new FileInputStream(new File(EMLFILEPATH)); 
        //List<String> chain = null;
        Identifier pid = new Identifier();
        pid.setValue(id);
-       solrIndex.update(pid, systemMetadata, emlInputStream);
+       solrIndex.update(pid, systemMetadata, EMLFILEPATH);
        String result = doQuery(solrIndex.getSolrServer());
        List<String> ids = solrIndex.getSolrIds();
        //assertTrue(ids.size() == 1);
@@ -100,12 +96,11 @@
     public void testUpdate() throws Exception {
        //InputStream systemInputStream = new FileInputStream(new File(SYSTEMMETAFILEPATH));
        SystemMetadata systemMetadata = TypeMarshaller.unmarshalTypeFromFile(SystemMetadata.class, SYSTEMMETAUPDATEFILEPATH);
-       InputStream emlInputStream = new FileInputStream(new File(EMLUPDATEFILEPATH));  
        /*obsoletes.add(id);
        obsoletes.add("tao");*/
        Identifier pid = new Identifier();
        pid.setValue(newId);
-       solrIndex.update(pid, systemMetadata, emlInputStream);
+       solrIndex.update(pid, systemMetadata, EMLFILEPATH);
        String result = doQuery(solrIndex.getSolrServer());
        assertTrue(result.contains("version1"));
        assertTrue(result.contains("version2"));
@@ -115,8 +110,7 @@
        SystemMetadata obsoletedSystemMetadata = TypeMarshaller.unmarshalTypeFromFile(SystemMetadata.class, SYSTEMMETAFILEPATH);
        assertTrue(obsoletedSystemMetadata.getIdentifier().getValue().equals(obsoletedPid.getValue()));
        obsoletedSystemMetadata.setObsoletedBy(pid);
-       InputStream obsoletedEmlInputStream = new FileInputStream(new File(EMLFILEPATH));  
-       solrIndex.update(obsoletedPid, obsoletedSystemMetadata, obsoletedEmlInputStream);
+       solrIndex.update(obsoletedPid, obsoletedSystemMetadata, EMLFILEPATH);
        
        // old version should be marked as obsoleted and not returned
        result = doQuery(solrIndex.getSolrServer(), "&fq=-obsoletedBy:*");
@@ -133,13 +127,12 @@
        //InputStream systemInputStream = new FileInputStream(new File(SYSTEMMETAFILEPATH));
        //System metadata's archive is true.
        SystemMetadata systemMetadata = TypeMarshaller.unmarshalTypeFromFile(SystemMetadata.class, SYSTEMMETAARCHIVEFILEPATH);
-       InputStream emlInputStream = new FileInputStream(new File(EMLUPDATEFILEPATH));    
        /*ArrayList<String> obsoletes = new ArrayList<String>();
        obsoletes.add(id);
        obsoletes.add("tao");*/
        Identifier pid = new Identifier();
        pid.setValue(newId);
-       solrIndex.update(pid, systemMetadata, emlInputStream);
+       solrIndex.update(pid, systemMetadata, EMLUPDATEFILEPATH);
        String result = doQuery(solrIndex.getSolrServer());
        assertTrue(result.contains("version1"));
        assertTrue(!result.contains("version2"));
@@ -153,10 +146,9 @@
     public void testDynamicFields() throws Exception {
     	
        SystemMetadata systemMetadata = TypeMarshaller.unmarshalTypeFromFile(SystemMetadata.class, SYSTEMMETAFILEPATH);
-       InputStream emlInputStream = new FileInputStream(new File(EMLFILEPATH)); 
        Identifier pid = new Identifier();
        pid.setValue(id);
-       solrIndex.update(pid, systemMetadata, emlInputStream);
+       solrIndex.update(pid, systemMetadata, EMLFILEPATH);
        String result = doQuery(solrIndex.getSolrServer());
        List<String> ids = solrIndex.getSolrIds();
        boolean foundId = false;
@@ -197,10 +189,9 @@
     public void testOpenAnnotation() throws Exception {
     	
        SystemMetadata systemMetadata = TypeMarshaller.unmarshalTypeFromFile(SystemMetadata.class, SYSTEMMETAFILEPATH);
-       InputStream emlInputStream = new FileInputStream(new File(EMLFILEPATH)); 
        Identifier pid = new Identifier();
        pid.setValue(id);
-       solrIndex.update(pid, systemMetadata, emlInputStream);
+       solrIndex.update(pid, systemMetadata, EMLFILEPATH);
        String result = doQuery(solrIndex.getSolrServer());
        List<String> ids = solrIndex.getSolrIds();
        boolean foundId = false;
@@ -214,10 +205,9 @@
        
        // augment with the dynamic field
        SystemMetadata annotationSystemMetadata = TypeMarshaller.unmarshalTypeFromFile(SystemMetadata.class, ANNOTATION_SYSTEM_META_FILE_PATH);
-       InputStream annotationInputStream = new FileInputStream(new File(OA_FILE_PATH)); 
        Identifier annotationPid = new Identifier();
        annotationPid.setValue(annotation_id);
-       solrIndex.update(annotationPid, annotationSystemMetadata, annotationInputStream);
+       solrIndex.update(annotationPid, annotationSystemMetadata, OA_FILE_PATH);
        String annotationResult = doQuery(solrIndex.getSolrServer(), "&fq=standard_sm:\"http://ecoinformatics.org/oboe/oboe.1.0/oboe-standards.owl#Gram\"");
        assertTrue(annotationResult.contains(pid.getValue()));
        assertTrue(annotationResult.contains("http://ecoinformatics.org/oboe/oboe.1.0/oboe-standards.owl#Gram"));
Index: metacat-index/src/main/java/edu/ucsb/nceas/metacat/index/SolrIndex.java
===================================================================
--- metacat-index/src/main/java/edu/ucsb/nceas/metacat/index/SolrIndex.java	(revision 8765)
+++ metacat-index/src/main/java/edu/ucsb/nceas/metacat/index/SolrIndex.java	(revision 8766)
@@ -23,7 +23,6 @@
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
-import java.net.MalformedURLException;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
@@ -176,7 +175,7 @@
      * @throws NotFound 
      * @throws NotImplemented 
      */
-    private Map<String, SolrDoc> process(String id, SystemMetadata systemMetadata, InputStream dataStream)
+    private Map<String, SolrDoc> process(String id, SystemMetadata systemMetadata, String objectPath)
                     throws IOException, SAXException, ParserConfigurationException,
                     XPathExpressionException, JiBXException, EncoderException, SolrServerException, NotImplemented, NotFound, UnsupportedType{
 
@@ -209,6 +208,7 @@
                                 // metadata document.
                                 // note that resource map processing touches all objects
                                 // referenced by the resource map.
+                            	InputStream dataStream = new FileInputStream(objectPath);
                                 Document docObject = generateXmlDocument(dataStream);
                                 if (docObject == null) {
                                     throw new Exception("Could not load OBJECT for ID " + id );
@@ -333,7 +333,7 @@
      * @param data
      * @throws SolrServerException
      */
-    private void checkParams(Identifier pid, SystemMetadata systemMetadata, InputStream data) throws SolrServerException {
+    private void checkParams(Identifier pid, SystemMetadata systemMetadata, String objectPath) throws SolrServerException {
         if(pid == null || pid.getValue() == null || pid.getValue().trim().equals("")) {
             throw new SolrServerException("The identifier of the indexed document should not be null or blank.");
         }
@@ -340,7 +340,7 @@
         if(systemMetadata == null) {
             throw new SolrServerException("The system metadata of the indexed document "+pid.getValue()+ " should not be null.");
         }
-        if(data == null) {
+        if(objectPath == null) {
             throw new SolrServerException("The indexed document itself for pid "+pid.getValue()+" should not be null.");
         }
     }
@@ -349,7 +349,7 @@
      * Insert the indexes for a document.
      * @param pid  the id of this document
      * @param systemMetadata  the system metadata associated with the data object
-     * @param data  the data object itself
+     * @param data  the path to the object file itself
      * @throws SolrServerException 
      * @throws JiBXException 
      * @throws EncoderException 
@@ -357,11 +357,11 @@
      * @throws NotFound 
      * @throws NotImplemented 
      */
-    private synchronized void insert(Identifier pid, SystemMetadata systemMetadata, InputStream data) 
+    private synchronized void insert(Identifier pid, SystemMetadata systemMetadata, String objectPath) 
                     throws IOException, SAXException, ParserConfigurationException,
                     XPathExpressionException, SolrServerException, JiBXException, EncoderException, NotImplemented, NotFound, UnsupportedType {
-        checkParams(pid, systemMetadata, data);
-        Map<String, SolrDoc> docs = process(pid.getValue(), systemMetadata, data);
+        checkParams(pid, systemMetadata, objectPath);
+        Map<String, SolrDoc> docs = process(pid.getValue(), systemMetadata, objectPath);
         
         //transform the Map to the SolrInputDocument which can be used by the solr server
         if(docs != null) {
@@ -514,11 +514,9 @@
      */
     public void update(Identifier pid, SystemMetadata systemMetadata) {
         String objectPath = null;
-        InputStream data = null;
         try {
             objectPath = DistributedMapsFactory.getObjectPathMap().get(pid);
-            data = new FileInputStream(objectPath);
-            update(pid, systemMetadata, data);
+            update(pid, systemMetadata, objectPath);
             EventlogFactory.createIndexEventLog().remove(pid);
         } catch (Exception e) {
             String error = "SolrIndex.update - could not update the solr index since " + e.getMessage();
@@ -550,10 +548,10 @@
      * @throws JiBXException
      * @throws EncoderException
      */
-    void update(Identifier pid, SystemMetadata systemMetadata, InputStream data) throws SolrServerException, 
+    void update(Identifier pid, SystemMetadata systemMetadata, String objectPath) throws SolrServerException, 
                                 ServiceFailure, XPathExpressionException, NotImplemented, NotFound, UnsupportedType, 
                                 IOException, SAXException, ParserConfigurationException, OREParserException, JiBXException, EncoderException {
-        checkParams(pid, systemMetadata, data);
+        checkParams(pid, systemMetadata, objectPath);
         boolean isArchive = systemMetadata.getArchived() != null && systemMetadata.getArchived();
         if(isArchive ) {
             //delete the index for the archived objects
@@ -561,7 +559,7 @@
             log.info("SolrIndex.update============================= archive the idex for the identifier "+pid);
         } else {
             //generate index for either add or update.
-            insert(pid, systemMetadata, data);
+            insert(pid, systemMetadata, objectPath);
             log.info("SolrIndex.update============================= insert index for the identifier "+pid);
         }
     }
