/[debian]/libjpfcodegen-java/trunk/index.html
ViewVC logotype

Annotation of /libjpfcodegen-java/trunk/index.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1612 - (hide annotations)
Sun Mar 1 18:00:46 2009 UTC (12 years, 3 months ago) by gregoa
File MIME type: text/html
File size: 12633 byte(s)
[svn-inject] Forking libjpfcodegen-java source to Trunk
1 gregoa 1609 <?xml version="1.0" encoding="utf-8"?>
2     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3     <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
4    
5     <head>
6     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7     <title>JPF Code Generator - 0.4</title>
8     <script type="text/javascript" src="resources/website/sh_main.min.js" />
9     <script type="text/javascript" src="resources/website/sh_java.js" />
10     <script type="text/javascript" src="resources/website/sh_xml.min.js" />
11     <link type="text/css" rel="stylesheet"
12     href="resources/website/sh_ide-eclipse.css" />
13     <style type="text/css">
14     /*<![CDATA[*/
15     body {
16     margin: 0;
17     margin-bottom: 20px;
18     padding: 0;
19     background-color: #CCCCCC;
20     font-family: Verdana, Arial, Helvetica, sans-serif;
21     font-size: 10pt;
22     color: #000000;
23     }
24    
25     h1,h2,h3,p {
26     margin-top: 10pt;
27     margin-bottom: 3pt;
28     padding-left: 15pt;
29     padding-right: 15pt;
30     }
31    
32     h2 {
33     padding-top: 15pt;
34     border-top: solid 1px #999999;
35     }
36    
37     .example {
38     margin: 15pt;
39     padding-left: 10pt;
40     padding-right: 10pt;
41     background-color: #EEEEEE;
42     border: solid 1px #999999;
43     color: #000000;
44     }
45    
46     .example pre {
47     margin: 10pt;
48     padding: 5pt;
49     border: solid 1px #999999;
50     background-color: #FFFFFF;
51     }
52    
53     .example p {
54     padding: 0;
55     }
56    
57     dl,ul,ol {
58     margin-top: 3pt;
59     margin-bottom: 3pt;
60     padding-left: 15pt;
61     padding-right: 15pt;
62     }
63    
64     dt {
65     margin: 10pt 0 0 0;
66     padding: 0;
67     font-weight: bold;
68     }
69    
70     dd {
71     margin: 0;
72     padding: 0;
73     }
74    
75     li,img {
76     margin-left: 15pt;
77     }
78    
79     a {
80     text-decoration: none;
81     color: #990000;
82     }
83    
84     hr {
85     margin-top: 0;
86     margin-bottom: 0;
87     }
88     /*]]>*/
89     </style>
90     </head>
91    
92     <body>
93    
94     <h1>JPF Code Generator - 0.4</h1>
95    
96     <h2>Table of Contents</h2>
97     <ol>
98     <li><a href="#introduction">Introduction</a></li>
99     <li><a href="#examples">Examples / Tutorials</a></li>
100     <li><a href="#download">Download and Bugtracker</a></li>
101     <li><a href="#dependencies">Dependencies</a></li>
102     <li><a href="#version">Version information</a></li>
103     <li><a href="#release">Release announcements</a></li>
104     <li><a href="#contact">Contact &amp; License</a></li>
105     </ol>
106    
107     <h2>Introduction</h2>
108    
109     <p>This is a handy little tool that generates classes for accessing
110     the attributes and extensions of JPF plug-ins from plugin.xml files.
111     This has the advantage of providing a strongly typed access to the
112     plug-in and simplyfies working with plug-ins.</p>
113    
114     <div class="example">
115     <p>Run it using...</p>
116     <pre>jar -jar jpfCodeGenerator-x.x.jar &lt;comma separated plug-in locations&gt; &lt;overwrite:true|false&gt;</pre>
117     <p>...and pass it a comma separated list of plug-in locations
118     (folders in which to search for plugin.xml) and a boolean whether
119     generated files from previous runs should be overwritten.</p>
120     </div>
121    
122     <div class="example">
123     <p>The plugin.xml needs to contain the class attribute:</p>
124     <pre class="sh_xml">&lt;plugin id="pluginID" version="0.1.0" class="com.example.MyPlugin"&gt;</pre>
125     <p>or have an attribute with id "helperClassName" set:</p>
126     <pre class="sh_xml">&lt;attributes&gt;
127     &lt;attribute id="jpfcodegen"&gt;
128     &lt;attribute id="helperClassName" value="com.example.MyPluginHelper"/&gt;
129     &lt;/attribute&gt;
130     &lt;/attributes&gt;</pre>
131     <p>so that the script knows which class to generate.</p>
132     </div>
133    
134     <div class="example">
135     <p>The script will generate two files (in a src-folder in the same
136     folder as the plugin.xml):</p>
137     <pre class="sh_java">com.example.MyPlugin</pre>
138     <p>and</p>
139     <pre class="sh_java">com.example.generated._MyPlugin</pre></div>
140     <p>_MyPlugin contains all the essential method for accessing the
141     attributes and extensions of the plug-in but will be regenerated when
142     you re-run the code generator. All customizations should thus be put
143     into MyPlugin (which extends _MyPlugin), which by default is not
144     recreated. To recreate MyPlugin also, pass true as a second parameter to
145     the script.</p>
146     <p>If you choose to use the attribute helperClassName version, then
147     a separate class is generated that is independent of the plugin-class
148     (you don't even need one at all).</p>
149    
150     <h2 id="examples">Examples / Tutorials</h2>
151     <p>The source distribution of the code generator comes with the
152     following examples / tutorials:</p>
153     <ul>
154     <li><a href="tutorials/basic/index.html">Basic Tutorial for
155     the JPF CodeGenerator</a></li>
156     </ul>
157    
158     <h2 id="downloads">Downloads</h2>
159     <p>The latest version of the code generator can be downloaded from
160     the <a href="http://forge.spline.inf.fu-berlin.de/projects/jpfcodegen/">JPF
161     Code Generator project homepage</a> where you also find <a
162     href="http://forge.spline.inf.fu-berlin.de/tracker/?group_id=75">the
163     bug-tracker of the project</a>.</p>
164    
165     <ul>
166     <li>Version 0.4 - <a
167     href="http://forge.spline.inf.fu-berlin.de/frs/?group_id=75">Download
168     Page</a>
169     <ul>
170     <li>JPFCodeGenerator-0.4.jar - Binary jar for running the code
171     generator.</li>
172     <li>JPFCodeGenerator-0.4-rt.jar - Runtime Jar, needed for running
173     applications that use code generated by the code generator.</li>
174     <li>JPFCodeGenerator-0.4-src.jar - Source Distribution including
175     examples and documentation.</li>
176     </ul>
177     </li>
178     <li>Version 0.3 - <a
179     href="http://forge.spline.inf.fu-berlin.de/frs/?group_id=75&release_id=46">Download
180     Page</a>
181     <ul>
182     <li>JPFCodeGenerator-0.3.jar - Binary jar for running the code
183     generator.</li>
184     <li>JPFCodeGenerator-0.3-rt.jar - Runtime Jar, needed for running
185     applications that use code generated by the code generator.</li>
186     <li>JPFCodeGenerator-0.3-src.jar - Source Distribution including
187     examples and documentation.</li>
188     </ul>
189     </li>
190     </ul>
191    
192     <h2 id="configuration">Configuration</h2>
193    
194     <p>There are a couple of attributes that can be used to configure
195     the code generation behavior of the JPF code generator. Each attribute
196     needs to be defined in the <code>&lt;attributes&gt;</code>-element of
197     the plugin.xml as a sub-<code>attribute</code> of an <code>attribute</code>
198     with id <code>jpfcodegen</code></p>
199    
200     <p>Possible attributes include</p>
201     <ul>
202     <li><code>helperClassName</code> - If defined will cause the code
203     generator to not create a plug-in class with helper methods to access
204     the attributes and extensions of the plug-in, but rather an independent
205     helper class. If not defined the code generator will use the name of
206     the plugin class attribute.</li>
207     <li><code>targetDir</code> - If defined will alter the output
208     directory into which the code generator will write the resulting java
209     files. If the attribute is not given the default directory is <code>src/</code></li>
210     </ul>
211    
212     <div class="example">
213     <p>An example of how to tell the code generator to create a
214     standalone helper class with class name <code>com.example.MyPluginHelper</code>
215     in the <code>src</code> two levels up from the location of the
216     plugin.xml:</p>
217    
218     <pre class="sh_xml">&lt;attributes&gt;
219     &lt;attribute id="jpfcodegen"&gt;
220     &lt;attribute id="helperClassName" value="com.example.MyPluginHelper"/&gt;
221     &lt;attribute id="targetDir" value="../../src/"/&gt;
222     &lt;/attribute&gt;
223     &lt;/attributes&gt;</pre></div>
224    
225     <h2 id="dependencies">Dependencies</h2>
226    
227     <p>To run the code generator jar you need (from the lib directory):</p>
228     <ul>
229     <li>Velocity-dep-1.5.jar - Apache Velocity Template Engine is used
230     to create the classes.</li>
231     <li>jpf.jar - JPF engine is used to read the plugin.xml</li>
232     <li>jpf-boot.jar - The boot library is used to collect
233     plugin-locations.</li>
234     </ul>
235    
236     <p>To run the code that gets generated you need:</p>
237     <ul>
238     <li>jpf.jar - You need this anyway to use JPF ;-)</li>
239     <li>JPFCodeGenerator-x.x-rt.jar - Contains some helper classes
240     needed by the generated classes.</li>
241     <li>commons-logging.jar - This is both needed by JPF and the
242     classes generated by the code generator.</li>
243     </ul>
244    
245     <h2 id="version">Version / Todo</h2>
246    
247     <p>Todo:</p>
248     <ul>
249     <li>Advanced examples.</li>
250     <li>Support extension multiplicity.</li>
251     <li>Support inheritance of extension points.</li>
252     <li>Support extension plugin attributes (normal and nested).</li>
253     <li>Support for documentation nodes</li>
254     <li>Support for all extension parameter types (plugin-ID,
255     extension-point-ID, extension-ID are missing).</li>
256     <li>Improve support for naming choices. At the moment if you
257     define extension-attributes using type "fixed", the values you use must
258     be valid Java identifiers.</li>
259     <li>Add JUnit tests.</li>
260     </ul>
261    
262     <p>0.4 - 2007-07-19</p>
263    
264     <ul>
265     <li>Bug in generator template that caused a wrong classname to be generated.</li>
266     <li>Can now create classes in a user-defined target directory.</li>
267     <li>Bug fixes for parameter that are not set in an extension.</li>
268     <li>Documentation improvement for Helper Classes.</li>
269     <li>Added support for parameters of type resource.</li>
270     </ul>
271    
272     <p>0.3 - 2007-07-11</p>
273     <ul>
274     <li>Date/time extension parameters are now supported.</li>
275     <li>Basic Tutorial added to documentation.</li>
276     <li>Nested extension parameters are now possible.</li>
277     </ul>
278    
279     <p>0.2 - 2007-07-05</p>
280     <ul>
281     <li>Added option to generate HelperClass instead of putting the
282     code into the Plugin class</li>
283     <li>Added ant build.xml to generate rt.jar and run the Code
284     Generator</li>
285     <li>Added support for type "fixed" attributes using enums. See
286     limitations.</li>
287     <li>Multiplicity support for parameter attributes (so far only
288     String (and Class), Number, Fixed, Boolean parameters are supported).</li>
289     </ul>
290    
291     <p>0.1 - 2007-07-03</p>
292     <ul>
293     <li>Initial release posted on SF.net</li>
294     </ul>
295    
296     <h2 id="release">Release Announcements</h2>
297    
298     <div class="example">
299     <p>0.3 - 2007-07-11</p>
300     <pre>
301     Hi Guys,
302     version 0.3 of the code generator is ready. It comes with better documentation
303     (a tutorial at http://www.inf.fu-berlin.de/~oezbek/jpf/tutorials/basic/) and
304     some additional features like nested extension-point-parameters. I also
305     added a small homepage for it at http://www.inf.fu-berlin.de/~oezbek/jpf/
306     where you will also find the link for downloading it.
307    
308     Suggestions and comments are highly welcome: Send them to oezi[at]oezi.de
309    
310     Cheers,
311     Christopher
312     </pre>
313     <p>0.2 - 2007-07-05</p>
314     <pre>
315     Hi Guys,
316     I have just extended the code generator a little bit to also support
317     extension-point parameter multiplicity, attributes of type fixed and
318     a standalone mode:
319    
320     1.) If you have a parameter with a multiplicity that might result in several
321     parameter values:
322    
323     &lt;parameter-def type="string" id="name" multiplicity="any"/&gt;
324    
325     then this will now generate this code:
326    
327     public Collection&lt;String&gt; getNames(){
328     return getStringParameters("name");
329     }
330    
331     2.) If you have a parameter with a type fixed then this will be mapped to
332     an enum in Java:
333    
334     &lt;parameter-def type="fixed" id="alignment" custom-data="left|right|top|bottom"/&gt;
335    
336     will generate:
337    
338     public enum Alignment {
339     LEFT, RIGHT, TOP, BOTTOM;
340     }
341    
342     public Alignment getAlignment(){
343     return Alignment.valueOf(getStringParameter("alignment").toUpperCase());
344     }
345    
346     3.) If you don't want to use the plugin class-attribute as a target
347     class to generate, you can now also use plugin-attributes to define
348     the name of the class to generate:
349    
350     &lt;attributes&gt;
351     &lt;attribute id="helperClassName" value="com.example.MyPluginHelper"/&gt;
352     &lt;/attributes&gt;
353    
354     4.) The Code Generator also now comes in 3 handy jars:
355    
356     http://page.mi.fu-berlin.de/oezbek/jpf/JPFCodeGenerator-0.2.jar
357     -&gt; The code generator as a binary package to run using
358    
359     java -jar JPFCodeGenerator-0.2.jar &lt;comma separated plug-in locations&gt; &lt;overwrite:true|false&gt;
360    
361     http://page.mi.fu-berlin.de/oezbek/jpf/JPFCodeGenerator-0.2-rt.jar
362    
363     The runtime dependencies needed to use the generated classes, add
364     this to your buildpath in the project.
365    
366     http://page.mi.fu-berlin.de/oezbek/jpf/JPFCodeGenerator-0.2-src.jar
367    
368     The source code if anybody is interested to play with it.
369    
370     Cheers,
371     Christopher
372     </pre></div>
373    
374     <h2 id="contact">Contact &amp; License</h2>
375    
376     <p>Copyright (C) Christopher Oezbek (2007) - <a
377     href="mailto:oezi[at]oezi.de">oezi[at]oezi.de</a></p>
378    
379     <p>This tool was created as part of the ongoing migration in the <a
380     href="http://jabref.sf.net">JabRef reference manager</a> to move to a
381     modular plug-in architecture and is released under the <a
382     href="http://www.gnu.org">LGPL 3.0</a>.</p>
383    
384     <p>Your <a href="mailto:oezi[at]oezi.de">improvements and
385     suggestions are welcome</a>.</p>
386    
387     </body>
388     </html>
389    
390    

  ViewVC Help
Powered by ViewVC 1.1.26