| By Krishnan Viswanath | Article Rating: |
|
| March 9, 2005 12:00 AM EST | Reads: |
69,348 |
In this method of invocation we used the -nocompile to ensure that the source file specified isn't complied. The -classpath option specifies the classpath required by the processor. The -A option is ignored by the APT tool and is used by the annotation processor to get any specific processing-related information. In our case, we specified the location of the struts-config.xml in the file system.
The last step is to process the files with the annotation processor. Besides the command line, one could write an ANT Custom Task to generate the code. We strongly recommend that this be done. Since more and more projects are using ANT for automating the build process, it makes more sense to do an ANT build for automating code generation as well.
Writing an ANT task is easy and done by writing a custom task and extending the org.apache.tools.ant.Task class. Once that's done, the next step is to define the attributes and the corresponding setter methods for the attributes. The core processing logic is provided in the execute method called by the ANT framework. In our case, we delegate the bulk of the code generation work to the com.sun.tools.apt.main.Main class from the tools.jar. This is the actual byte code that's also used by the apt command line.
The following XML snippet from an ANT build shows how use the custom ANT task:
<taskdef name="apt"
classname="com.article.jdj.
annotation.task.APTTask" >
<classpath>
<pathelement
location="F:\Article\Dev\Annotation\
dist\Annotation.jar"/>
</classpath>
</taskdef>
<target name="main">
<apt factory="com.jdj.article.gen.StrutsConfigGenerator"
src="F:\Article\Dev\Annotation\src\com\jdj\article\
action\*
.java"
processorOption="struts-config=
F: \Article\Dev\Annotation\generated\
struts-config.xml" >
<classpath>
<pathelement location="C:\Sun\AppServer\
lib\j2ee.jar"/>
<pathelement location="...">
</classpath>
</apt>
</target>
Summary
In this article we introduced the idea of defining annotation types, how to use defined types as annotation and how to go about generating code or other supporting files based on annotation. This new and powerful technology is transforming the way we code. As more and more tools and products start using this facility, developers will realize improved quality in their code and a concomitant increase in productivity.
Resources
Published March 9, 2005 Reads 69,348
Copyright © 2005 SYS-CON Media, Inc. — All Rights Reserved.
Syndicated stories and blog feeds, all rights reserved by the author.
![]() |
udaykirand 09/08/08 10:15:23 AM EDT | |||
Really Excellent Information. But i have some doubts. initially i have some aversion towards annotations but after reading this article i develop some interest on it. later my R & D i want to create an annotation which is like @Singleton when ever i applied this annotation for a class then i want to make a class as singleton class. could you please help me out from this scenario. in the same way @ThrowException(exceptionType="ArithmeticException.class") many more ideas but i couldn't able to move in forward direction because there is no much information about annotations in Google also. Thanks, |
||||
![]() |
Terry Corbet 08/06/06 06:00:49 PM EDT | |||
This is a critique for the editor, not the author. A primer that uses for an example something that requires experience with Struts is not what you should have provided. Ok, so the guy you got to do all the hard work happened to be interested in solving a Struts problem, but your job, as editor, should have been to carefully think through the issues of documenting this new Java facility and providing examples with as little dependence upon some specific toolkit-framework-environment as possible. With Mustang about to add to the value of annotation, I am sure there is much need for carefully-thought-out articles demonstrating valuable, incremental information. When K&R contrived 'Hello World', it was after thoughtful consideration about learning processes. Combined with the fact that the source code was not correctly provided, the overall impression is that you, as an editor, just thought you could get something for nothing and pass it along where enough Google hits would provide the mass of advertising that is blinking all around me as I enter this suggestion. |
||||
![]() |
Vish 07/21/05 10:00:00 PM EDT | |||
Bob, Sorry about that. Can you send me an email at unicode@yahoo.com, and I will send you the src Thanks, |
||||
![]() |
Bob Shewan 07/21/05 05:40:07 PM EDT | |||
As Neil noted there isn't any source code in the zip file. Would you be kind enough to send what you have. Thanks Bob Shewan |
||||
![]() |
vish krishnan 03/13/05 10:23:16 AM EST | |||
Neil, sorry about that. Send me an email and I will send you all the source that I have got. My email is unicode at yahoo dot com (OR) krviswanath at Deloitte dot com thanks |
||||
![]() |
Neil Hornbeck 03/11/05 07:33:41 AM EST | |||
The source zip file Viswanth1003.zip only contains compiled code. |
||||
- Kindle 2 vs Nook
- Why IBM’s Server Chief Got Busted
- Is Cloud Computing Like Teenage Sex?
- Industry Experts Discuss the State of Cloud Computing
- Performance Tuning Essentials for Java
- Confessions of a Ulitzer Addict
- Tactical Cloud Computing Panel at 1st Annual GovIT Expo
- It's the Java vs. C++ Shootout Revisited!
- Cloud Computing Can Revitalize Your Career as Software Developer
- IBM Could "Reinvent" Java: Mills
- Oracle & Cloud Computing: Exclusive Q&A with SVP Richard Sarwal
- A Brief History of Cloud Computing
- Kindle 2 vs Nook
- Cloud CEOs, CTOs & SVPs to Speak at 4th International Cloud Computing Expo
- Why IBM’s Server Chief Got Busted
- Is Cloud Computing Like Teenage Sex?
- Industry Experts Discuss the State of Cloud Computing
- Performance Tuning Essentials for Java
- The Difference Between Web Hosting and Cloud Computing
- Cloud Computing Expo: Exclusive Q&A with Yahoo! SVP Cloud Computing
- Ajax in RichFaces 3.3, JSF 2 and RichFaces 4
- Confessions of a Ulitzer Addict
- My Thoughts on Ulitzer
- Tactical Cloud Computing Panel at 1st Annual GovIT Expo
- A Cup of AJAX? Nay, Just Regular Java Please
- Java Developer's Journal Exclusive: 2006 "JDJ Editors' Choice" Awards
- The i-Technology Right Stuff
- JavaServer Faces (JSF) vs Struts
- Rich Internet Applications with Adobe Flex 2 and Java
- Java vs C++ "Shootout" Revisited
- Bean-Managed Persistence Using a Proxy List
- Reporting Made Easy with JasperReports and Hibernate
- Creating a Pet Store Application with JavaServer Faces, Spring, and Hibernate
- What's New in Eclipse?
- Why Do 'Cool Kids' Choose Ruby or PHP to Build Websites Instead of Java?
- i-Technology Predictions for 2007: Where's It All Headed?





































