KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > celtix > maven_plugin > BeanGenMojo


1 package org.objectweb.celtix.maven_plugin;
2
3 import java.io.File JavaDoc;
4 import java.net.MalformedURLException JavaDoc;
5 import java.net.URL JavaDoc;
6 import java.net.URLClassLoader JavaDoc;
7 import java.util.ArrayList JavaDoc;
8 import java.util.Iterator JavaDoc;
9 import java.util.List JavaDoc;
10
11 import org.apache.maven.plugin.AbstractMojo;
12 import org.apache.maven.plugin.MojoExecutionException;
13 import org.apache.maven.project.MavenProject;
14 import org.apache.tools.ant.ExitException;
15 import org.apache.tools.ant.util.optional.NoExitSecurityManager;
16 import org.objectweb.celtix.resource.ClassLoaderResolver;
17 import org.objectweb.celtix.resource.DefaultResourceManager;
18 import org.objectweb.celtix.tools.generators.spring.BeanGenerator;
19
20 /**
21  * @goal beangen
22  * @description Celtix BeanGen Tool
23  */

24 public class BeanGenMojo extends AbstractMojo {
25     /**
26      * @parameter
27      */

28     String JavaDoc testSourceRoot;
29     
30     /**
31      * @parameter expression="${project.build.directory}/generated/src/main/java"
32      * @required
33      */

34     String JavaDoc sourceRoot;
35     
36     /**
37      * @parameter expression="${basedir}/src/main/resources"
38      * @required
39      */

40     String JavaDoc resourcesRoot;
41     
42     /**
43      * @parameter expression="${project}"
44      * @required
45      */

46     MavenProject project;
47     
48     /**
49      * @parameter expression="${project.compileClasspathElements}"
50      * @required
51      */

52     List JavaDoc classpathElements;
53     
54     /**
55      * @parameter
56      */

57     String JavaDoc beanfiles[];
58
59     
60     public void execute() throws MojoExecutionException {
61         String JavaDoc outputDir = testSourceRoot == null ? sourceRoot : testSourceRoot;
62         File JavaDoc outputDirFile = new File JavaDoc(outputDir);
63         outputDirFile.mkdirs();
64         long timestamp = CodegenUtils.getCodegenTimestamp();
65         
66         List JavaDoc list = new ArrayList JavaDoc();
67         List JavaDoc doneFiles = new ArrayList JavaDoc();
68         list.add("-d");
69         list.add(outputDir);
70         for (int x = 0; x < beanfiles.length; x++) {
71             File JavaDoc file = new File JavaDoc(beanfiles[x]);
72             File JavaDoc doneFile = new File JavaDoc(outputDirFile, "." + file.getName() + ".DONE");
73             if (!doneFile.exists()
74                 || file.lastModified() > doneFile.lastModified()
75                 || timestamp > doneFile.lastModified()) {
76                 list.add(beanfiles[x]);
77                 doneFiles.add(doneFile);
78             }
79         }
80         
81         List JavaDoc urlList = new ArrayList JavaDoc();
82         Iterator JavaDoc it = classpathElements.iterator();
83         File JavaDoc file = new File JavaDoc(resourcesRoot);
84         try {
85             urlList.add(file.toURL());
86         } catch (MalformedURLException JavaDoc e) {
87             //ignore
88
}
89         while (it.hasNext()) {
90             String JavaDoc el = (String JavaDoc)it.next();
91             file = new File JavaDoc(el);
92             try {
93                 urlList.add(file.toURL());
94             } catch (MalformedURLException JavaDoc e) {
95                 //ignore
96
}
97         }
98         
99         URLClassLoader JavaDoc loader = new URLClassLoader JavaDoc((URL JavaDoc[])urlList.toArray(new URL JavaDoc[urlList.size()]),
100                                                    this.getClass().getClassLoader());
101         
102         if (list.size() > 2) {
103             SecurityManager JavaDoc oldSm = System.getSecurityManager();
104             try {
105                 try {
106                     DefaultResourceManager.instance().addResourceResolver(new ClassLoaderResolver(loader));
107                     System.setSecurityManager(new NoExitSecurityManager());
108                     
109                     BeanGenerator.main((String JavaDoc[])list.toArray(new String JavaDoc[list.size()]));
110                     throw new ExitException(0);
111                 } catch (ExitException e) {
112                     if (e.getStatus() == 0) {
113                         it = doneFiles.iterator();
114                         while (it.hasNext()) {
115                             File JavaDoc doneFile = (File JavaDoc)it.next();
116                             doneFile.delete();
117                             doneFile.createNewFile();
118                         }
119                     } else {
120                         throw e;
121                     }
122                 } finally {
123                     System.setSecurityManager(oldSm);
124                     DefaultResourceManager.clearInstance();
125                 }
126             } catch (Throwable JavaDoc e) {
127                 e.printStackTrace();
128                 throw new MojoExecutionException(e.getMessage(), e);
129             }
130         }
131                 
132         if (project != null && sourceRoot != null) {
133             project.addCompileSourceRoot(sourceRoot);
134         }
135         if (project != null && testSourceRoot != null) {
136             project.addTestCompileSourceRoot(testSourceRoot);
137         }
138     }
139 }
140
Popular Tags