Author: dblevins
Date: Wed Aug  8 22:43:09 2007
New Revision: 564090

URL: http://svn.apache.org/viewvc?view=rev&rev=564090
Log:
Yet another great patch from Karan Malhi, this one fixing a bug I added when 
changing the version number and not paying attention to this test case. 
OPENEJB-625: RedeployTest does not search for maven repository properly
You the man, Karan!

Modified:
    
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/RedeployTest.java

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/RedeployTest.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/RedeployTest.java?view=diff&rev=564090&r1=564089&r2=564090
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/RedeployTest.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/RedeployTest.java
 Wed Aug  8 22:43:09 2007
@@ -23,10 +23,16 @@
 import org.apache.openejb.test.stateful.AnnotatedFieldInjectionStatefulBean;
 import org.apache.openejb.test.stateful.EncStatefulHome;
 import org.apache.openejb.test.stateful.EncStatefulObject;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 
 import javax.naming.Context;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
 import java.io.File;
 import java.util.Properties;
 
@@ -36,8 +42,8 @@
 public class RedeployTest extends TestCase {
     public void test() throws Exception {
         // create reference to openejb itests
-        File file = new File(System.getProperty("user.home") + 
"/.m2/repository/org/apache/openejb/openejb-itests-beans/3.0-incubating-SNAPSHOT/openejb-itests-beans-3.0-incubating-SNAPSHOT.jar");
-        if (!file.canRead()) return;
+        File file = 
getFile("org/apache/openejb/openejb-itests-beans/3.0.0-SNAPSHOT/openejb-itests-beans-3.0.0-SNAPSHOT.jar");
+        if (file == null) return;
 
         System.setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY, 
InitContextFactory.class.getName());
 
@@ -98,5 +104,41 @@
             // this also should happen
         }
     }
-
+    /**
+     * This method tries to find a file in the default maven repository i.e. 
user.home/.m2/repository. If it cannot find the repository in this location
+     * then it tries to find user.home/settings.xml and obtains the value of 
the <localRepository> element from the settings.xml file. Once the local
+     * repository is obtained from the settings.xml file, it tries to search 
for the file in this repository and returns it. If it cannot find the 
+     * specified file here also, then it returns null
+     * @param fileName -- the name of the file to be searched
+     * @return -- java.io.File
+     */
+       private static File getFile(String fileName) {
+               String userHome = System.getProperty("user.home");
+               File file = new File(userHome + "/.m2/repository/" + fileName);
+               if (!file.canRead()) {
+                       File f = new File(userHome + "/.m2/settings.xml");
+                       if (f.canRead()) {
+                               DocumentBuilderFactory factory = 
DocumentBuilderFactory
+                                               .newInstance();
+                               try {
+                                       DocumentBuilder builder = 
factory.newDocumentBuilder();
+                                       Document document = builder.parse(f);
+                                       NodeList localRepository = document
+                                                       
.getElementsByTagName("localRepository");
+                                       Node node = localRepository.item(0);
+                                       file = new 
File(node.getFirstChild().getNodeValue() + "/"
+                                                       + fileName);
+                                       if (file.canRead())
+                                               return file;
+                                       else
+                                               return null;
+                               } catch (Exception e) {
+                                       return null;
+                               }
+                       }
+               } else {
+                       return file;
+               }
+               return null;
+       }
 }


Reply via email to