1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.discovery.ant;
18
19 import java.util.Vector;
20
21 import org.apache.commons.discovery.ResourceNameIterator;
22 import org.apache.commons.discovery.jdk.JDKHooks;
23 import org.apache.commons.discovery.resource.DiscoverResources;
24
25
26 /***
27 * Small ant task that will use discovery to locate a particular impl.
28 * and display all values.
29 *
30 * You can execute this and save it with an id, then other classes can use it.
31 *
32 * @author Costin Manolache
33 */
34 public class ServiceDiscoveryTask
35 {
36 String name;
37 int debug=0;
38 String[] drivers = null;
39
40 public void setServiceName(String name ) {
41 this.name=name;
42 }
43
44 public void setDebug(int i) {
45 this.debug=i;
46 }
47
48 public String[] getServiceInfo() {
49 return drivers;
50 }
51
52 public void execute() throws Exception {
53 System.out.println("XXX ");
54
55 DiscoverResources disc = new DiscoverResources();
56 disc.addClassLoader( JDKHooks.getJDKHooks().getThreadContextClassLoader() );
57 disc.addClassLoader( this.getClass().getClassLoader() );
58
59 ResourceNameIterator iterator = disc.findResources(name);
60
61 Vector vector = new Vector();
62 while (iterator.hasNext()) {
63 String resourceInfo = iterator.nextResourceName();
64 vector.add(resourceInfo);
65 if( debug > 0 ) {
66 System.out.println("Found " + resourceInfo);
67 }
68 }
69
70 drivers = new String[vector.size()];
71 vector.copyInto(drivers);
72 }
73
74 }