KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mule > modules > boot > DefaultMuleClassPathConfig


1 /*
2  * $Id: DefaultMuleClassPathConfig.java 4219 2006-12-09 10:15:14Z lajos $
3  * --------------------------------------------------------------------------------------
4  * Copyright (c) MuleSource, Inc. All rights reserved. http://www.mulesource.com
5  *
6  * The software in this package is published under the terms of the MuleSource MPL
7  * license, a copy of which has been included with this distribution in the
8  * LICENSE.txt file.
9  */

10
11 package org.mule.modules.boot;
12
13 import java.io.File JavaDoc;
14 import java.io.FileFilter JavaDoc;
15 import java.io.IOException JavaDoc;
16 import java.net.MalformedURLException JavaDoc;
17 import java.net.URL JavaDoc;
18 import java.util.ArrayList JavaDoc;
19 import java.util.LinkedList JavaDoc;
20 import java.util.List JavaDoc;
21
22 /**
23  * Constructs a default set of JAR Urls located under Mule home folder.
24  */

25 public class DefaultMuleClassPathConfig
26 {
27     protected static final String JavaDoc FOLDER_MULE = "/lib/mule";
28     protected static final String JavaDoc FOLDER_OPT = "/lib/opt";
29     protected static final String JavaDoc FOLDER_USER = "/lib/user";
30
31     private List JavaDoc urls = new LinkedList JavaDoc();
32
33     /**
34      * Constructs a new DefaultMuleClassPathConfig.
35      */

36     public DefaultMuleClassPathConfig(File JavaDoc muleHome, File JavaDoc muleBase)
37     {
38         try
39         {
40             // if trailing slash is specified, the folder will be added (e.g. for
41
// properties files)
42
addURL(new URL JavaDoc("file://" + muleHome.getAbsolutePath() + FOLDER_USER + "/"));
43             addURL(new URL JavaDoc("file://" + muleHome.getAbsolutePath() + FOLDER_MULE + "/"));
44             addURL(new URL JavaDoc("file://" + muleHome.getAbsolutePath() + FOLDER_OPT + "/"));
45
46             /**
47              * Pick up any local jars, if there are any. Doing this here
48              * insures that any local class that override the global classes
49              * will in fact do so.
50              */

51             try {
52                 if (!muleHome.getCanonicalFile().equals(muleBase.getCanonicalFile()))
53                 {
54                     addURL(new URL JavaDoc("file://" + muleBase.getAbsolutePath() + FOLDER_USER + "/"));
55                     File JavaDoc[] muleJars = listJars(muleBase, FOLDER_USER);
56                     for (int i = 0; i < muleJars.length; i++)
57                     {
58                         File JavaDoc jar = muleJars[i];
59                         addURL(jar.toURL());
60                     }
61                 }
62             } catch (IOException JavaDoc ioe) {
63                 System.out.println("Unable to check to see if there are local jars to load: " + ioe.toString());
64             }
65
66             File JavaDoc[] muleJars = listJars(muleHome, FOLDER_USER);
67             for (int i = 0; i < muleJars.length; i++)
68             {
69                 File JavaDoc jar = muleJars[i];
70                 addURL(jar.toURL());
71             }
72
73             muleJars = listJars(muleHome, FOLDER_MULE);
74             for (int i = 0; i < muleJars.length; i++)
75             {
76                 File JavaDoc jar = muleJars[i];
77                 addURL(jar.toURL());
78             }
79
80             muleJars = listJars(muleHome, FOLDER_OPT);
81             for (int i = 0; i < muleJars.length; i++)
82             {
83                 File JavaDoc jar = muleJars[i];
84                 addURL(jar.toURL());
85             }
86
87         }
88         catch (MalformedURLException JavaDoc e)
89         {
90             throw new RuntimeException JavaDoc("Failed to construct a classpath URL", e);
91         }
92
93     }
94
95     /**
96      * Getter for property 'urls'.
97      *
98      * @return A copy of 'urls'. Items are java.net.URL
99      */

100     public List JavaDoc getURLs()
101     {
102         return new ArrayList JavaDoc(this.urls);
103     }
104
105     /**
106      * Setter for property 'urls'.
107      *
108      * @param urls Value to set for property 'urls'.
109      */

110     public void addURLs(List JavaDoc urls)
111     {
112         if (urls != null && !urls.isEmpty())
113         {
114             this.urls.addAll(urls);
115         }
116     }
117
118     /**
119      * Add a URL to Mule's classpath.
120      *
121      * @param url folder (should end with a slash) or jar path
122      */

123     public void addURL(URL JavaDoc url)
124     {
125         this.urls.add(url);
126     }
127
128     /**
129      * Find and if necessary filter the jars for classpath.
130      *
131      * @param muleSubfolder folder under the Mule directory to list
132      * @return a list
133      */

134     protected File JavaDoc[] listJars(File JavaDoc muleDir, String JavaDoc muleSubfolder)
135     {
136         File JavaDoc path = new File JavaDoc(muleDir, muleSubfolder);
137
138         File JavaDoc[] jars = path.listFiles(new FileFilter JavaDoc()
139         {
140             public boolean accept(File JavaDoc pathname)
141             {
142                 try
143                 {
144                     return pathname.getCanonicalPath().endsWith(".jar");
145                 }
146                 catch (IOException JavaDoc e)
147                 {
148                     throw new RuntimeException JavaDoc(e.getMessage());
149                 }
150             }
151         });
152
153         return jars == null ? new File JavaDoc[0] : jars;
154     }
155 }
156
Popular Tags