Skip to Content »
online discount medstore
advair diskus for sale
buy advair diskus without prescription
allegra for sale
buy allegra without prescription
aristocort for sale
buy aristocort without prescription
astelin for sale
buy astelin without prescription
atarax for sale
buy atarax without prescription
benadryl for sale
buy benadryl without prescription
buy clarinex without prescription
clarinex for sale
buy claritin without prescription
claritin for sale
buy flonase without prescription
flonase for sale
buy ventolin without prescription
ventolin for sale
amoxil for sale
buy amoxil without prescription
augmentin for sale
buy augmentin without prescription
bactrim for sale
buy bactrim without prescription
biaxin for sale
buy biaxin without prescription
buy cipro without prescription
cipro for sale
buy cleocin without prescription
cleocin for sale
buy dexone without prescription
dexone for sale
buy flagyl without prescription
flagyl for sale
buy levaquin without prescription
levaquin for sale
buy omnicef without prescription
omnicef for sale
amaryl for sale
buy amaryl without prescription
buy cozaar without prescription
cozaar for sale
buy diabecon without prescription
diabecon for sale
buy glucophage without prescription
glucophage for sale
buy glucotrol without prescription
glucotrol for sale
buy glucovance without prescription
glucovance for sale
buy micronase without prescription
micronase for sale
buy prandin without prescription
prandin for sale
buy precose without prescription
precose for sale
buy cialis professional without prescription
cialis professional for sale
buy cialis soft without prescription
cialis soft for sale
buy cialis super active without prescription
cialis super active for sale
buy cialis without prescription
cialis for sale
buy levitra without prescription
levitra for sale
buy viagra professional without prescription
viagra professional for sale
buy viagra soft without prescription
viagra soft for sale
buy viagra super active without prescription
viagra super active for sale
buy viagra super force without prescription
viagra super force for sale
buy viagra without prescription
viagra for sale
buy celebrex without prescription
celebrex for sale
buy colcrys without prescription
colcrys for sale
buy feldene without prescription
feldene for sale
buy imitrex without prescription
imitrex for sale
buy inderal without prescription
inderal for sale
buy indocin without prescription
indocin for sale
buy naprosyn without prescription
naprosyn for sale
buy pletal without prescription
pletal for sale
buy robaxin without prescription
robaxin for sale
buy voltaren without prescription
voltaren for sale

GWT XDoclet

  • September 9th, 2006
  • 12:56 am

Having used Google Web Toolkit to build an application, I found out that I had to write a good portion of code, which might as well be generated automatically. I then decided to mess around with XDoclet a little to see if it was possible to make a new module. It was, and now you can use it too.

Download

xdoclet-gwt-module-0.5.jar
xdoclet-gwt-module-0.4.jar
xdoclet-gwt-module-0.3.jar
xdoclet-gwt-module-0.2.jar
xdoclet-gwt-module-0.1.jar

Changelog

0.5: Added support for @gwt.typeArgs in service methods.

0.4: Added support for setting ServiceFactory prefix (set prefix attribute in servicefactory tag in build.xml), @gwt.style and @gwt.script in EntryPoint classes. See this post for more information.

0.3: Added support for file upload, added @gwt.inherits tag instead of inherits parameter in @gwt.module. This means that it’s possible to inherit from multiple modules.

Documentation

Basically, it can generate service interfaces, async services interface, module definitions (.xml.gwt), and a basic web.xml file. Finally, it can create a service factory for creating new Async-objects.

Service interfaces
When creating a remote service, just annotate the class like this:
[code]
package dk.contix.gwt.service;

/**
* @gwt.interface service=”dk.contix.gwt.shared.RemoteService” path=”/remoteService”
*/
public class RemoteServiceImpl implements RemoteService {

/**
* @gwt.serviceMethod
*/
public String getStuff(String what) {
// code here
}
}
[/code]

This will create the interface dk.contix.gwt.shared.RemoteService containing all methods which are annotated with @gwt.serviceMethod. It will also generate the async interface in dk.contix.gwt.shared.RemoteServiceAsync

Modules
To generate module definitions (.gwt.xml files), annotate the EntryPoint classes, like this:
[code]
package dk.contix.gwt.client;

/**
* @gwt.module package=”dk.contix.gwt” include=”client,shared”
*/
public class Client implements EntryPint {
// code here
}
[/code]

This will generate a file in dk/contix/gwt calles Client.gwt.xml. The file will contain the entry-point declaration, all remote servlets, and additional source paths (those specified in the include parameter).

ServiceFactory
If a service factory is generated, a class with static methods for creating instances of the Async interfaces will be created. The factory class will automatically detect url prefixes (if the application is deployed in another context than ROOT).

Generating the files
Create a build.xml file for Ant, if you don’t already have one. Include the following target:

[code]












[/code]

Finally, place xdoclet-gwt-module-0.2.jar in lib/ so that it becomes a part of the classpath. xdoclet-*.jar and xjavadoc-*.jar is also required. They can be downloaded from xdoclet.sourceforge.net.

Bootstrapping
When a new remote service is created, there’s no interface to implement. I work around this simply by annotating the service implementation, generating the code, and then adding the implements declaration.

Inheritance
If a module inherits another, this can be specified too, like this:
[code]
/**
* @gwt.inherits name=”dk.contix.gwt.BaseModule”
* @gwt.inherits name=”com.google.gwt.user.User”
*/
public class Module implements EntryPoint {

}
[/code]

File Uploads
The XDoclet module supports code generation for file upload support. The generated code includes a factory class for FormPanels, GWT module xml configuration and web.xml configuration. To use, add one or more @gwt.upload annotations to client classes which need upload capabilities:

[code]
package dk.contix.gwt.client;

/**
* @gwt.upload path=”/upload” servlet=”dk.contix.gwt.service.FileUpload”
* @gwt.upload path=”/jpegUpload” servlet=”dk.contix.gwt.service.FileUpload”
*/
public class UploadPanel extends Composite {
public UploadPanel() {
VerticalPanel p = new VerticalPanel();
final FormPanel fp1 = UploadFactory.createUpload();
fp1.setWidget(p);
fp1.addFormHandler(…);

final FormPanel fp2 = UploadFactory.createJpegUpload();
fp2.setWidget(p);

}
}
[/code]

To generate the factory, a line needs to be added to the ant build target in the gwtdoclet tag:
[code]









[/code]

The upload servlet isn’t generated, so you need to implement it yourself. Search for implementations in the GWT group.

typeArgs
Add @gwt.typeArgs to service methods to tell the GWT compiler which types are contained in a collection:

[code]
/**
* @gwt.serviceMethod
* @gwt.typeArgs dk.contix.Test
*/
public List getObjects() {
return new ArrayList();
}
[/code]

Don’t include <> in the annotation as you would do when using GWT directly.

29,841 People had this to say...

Gravatar

Have уou ever thought about publishing an ebook or
guеѕt authoring on other blogs? I have a blog centered on the same ideas you dіѕcuss and would
love to have you share some stоries/information. I know mу viewers would
aρpreciate уour work. If you’re even remotely interested, feel free
to shoօt me an e mail.

Gravatar

Ornaments can be made from craft balls. The thickness of the fences may vary according to the use that it will be put in to. Following the tricksand tips as well as the suggest that these experts give you can help you in the long run.youtube.2m.

Gravatar

My neighbors are still anticipating a bit of sunshine to warm their solid pool covers and sadly loose most of their heat every day in the beginning. When process of photo retouching is complete, it should not look like it has been gone under the procedure; the slight changes should go ignored but in its place should give a new look to the photo. We want to give them the very best that delights them. Cutting and gluing felt can be placed on the underside along with a beautiful card holiday scene, and add some yarnaround the edge of the top and hang on your tree. A certified client is more likely to get better alternatives than the one who does not know what to do.

Gravatar

If you are bringing a new person into your mlm home business, you need to be prepared to train and teach them. Of course it is usually advised to determine the legitimacy of every company, because it is always easier to know exactly what you are getting yourself into. When process of photo retouching is complete, it should not look like it has been gone under the procedure; the slight changes should go ignored but in its place should give a new look to the photo.SpyBubble logs all the files on the cell phone you handle the installation and you can view that data with aweb page any time. As the SMP procedure is carried out, an operator must ensure that the pigment is placed in the dermis because if it is placed on the epidermis only, the pigment shall spill out in a small number of weeks after the process has been undertaken, and the procedure will be seen to have failed.

Gravatar

They assist us in memorizing a specific time or moment whenever we look at the photos and make us smirk. If they can show them to you, it will be an excellent element because it indicates that you can evaluate the type of quality standards to expect from each one of them.After a summer of more than $400 gas bills, I eventually decided to invest in a good quality above ground pool cover. 2. Many of these can be made with minimal expense for the needed supplies to make your tree personalized and unique.

Want your say?

* Required fields. Your e-mail address will not be published on this site

You can use the following XHTML tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>