Lightweight REST framework for Java
Do you want to embrace the architecture of the Web and benefit from its simplicity and scalability?
Leverage our innovative REST engine and start blending
... [More] your Web Sites and Web Services into uniform Web Applications! [Less]
This project's main objective is to provide routing functionality to PostGIS / PostgreSQL. pgRouting is part of PostLBS, which provides core tools for Location Based Services (LBS) as Open Source
... [More] Software (OSS). Its tools are similar to those found on proprietary software. [Less]
Edgebox, the application-over-web development toolkit
News11/16/08, RestGwt 0.0.1 released. Maven repository and site are also updated. Edgebox maven repository
edgebox-release
... [More] http://edgebox.googlecode.com/svn/repo-release/
edgebox-snapshot
http://edgebox.googlecode.com/svn/repo-snapshot/ [Less]
Fulworx provides restful interfaces to applications by leveraging XWork, Restlets, and JAXB2 to perform CRUD functionality.
How? Standard XWork Actions are annotated and exposed through a simple
... [More] Spring configuration. These same actions can be used with Struts2 or WebWork with very little overhead, simply create a struts.xml (or webwork.xml) and invoke the action.
Release 2.0 almost ready Due to hefty changes in the packaging and config, expect a 2.0 release next. This will decouple object factories (makes it trivial to include non Spring factories, or build your own), guards will be in place, major code cleanup, and the test framework will be deprecated (I'm working on another more robust framework that's not Fulworx specific). Code has been checked in, a download hasn't been built yet pending some more testing.
FulTest is deprecated! Am now using MASH. Will soon have sample page using it, but if you want venture over and check it out.
Groupshttp://groups.google.com/group/fulworx-dev
OverviewXML and URI parameters are mapped into XWork Actions providing a clear separation of layers. A URI such as
"/someURI/user/squarepants/spongebob"
submitting XML via an HTTP PUT such as
user@somewhere.com
555.123.4567
is mapped to an action like:
@URITemplate(uri="/someURI/user/{lastname}/{firstname}")
@Accessor("user")
public class UserAction implements CreateAction, ReadAction
{
private User user;
private String firstname;
private String lastname;
private UserService userService;
public UserAction(UserService service){
this.userService=service;
}
public String create()
{
user = this.userService.create(firstname,
lastname,
user.getEmail(),
user.getPhone());
if(user == null){
//if user isn't found, insert firstname and lastname into
//resource bundle message, and return a 404 status code
throw new ApplicationException(
new BundledErrorDetail("user.error.notfound",
ResourceBundle.getBundle("ErrorMessages"),
new Object[]{firstname, lastname}),
404);
}
return EntityAction.ENTITY_SUCCESS;
}
public String read()
{
user = this.userService.read(firstname, lastname);
return EntityAction.ENTITY_SUCCESS;
}
public User getUser()
{
return user;
}
public void setUser(User user)
{
this.user = user;
}
//also, getter / setter for firstname, lastname
}would create a user on the system and respond with:
1
spongebob
squarepants
user@somewhere.com
555.123.4567
The user object with JAXB annotations looks something like:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"id",
"firstname",
"lastname",
"email",
"phone"
})
@XmlRootElement(name = "user")
public class User implements Serializable
{
@XmlElement(name = "id", required = false)
protected Integer id;
@XmlElement(name = "firstname", required = false)
protected String firstname;
@XmlElement(name = "lastname", required = false)
protected String lastname;
@XmlElement(name = "email", required = true)
protected String email;
@XmlElement(name = "phone", required = false)
protected String phone;
//all appropriate getter / setter methods
}
To cache the UserAction's read method, various cache annotations are available at the class level. Calls to 'update', 'delete', and 'create' update the cache appropriately. For more on cache configuration, see CacheAnnotations.
This is configured via Spring by importing the fulworx-applicationContext.xml and configuring the actions to be exposed outlined here: AnnotatedActionConfiguration
Other representations of this xml can be retrieved by very simple changes to the uri:
"/someURI/user/spongebob/squarepants.xml" will return xml (default) "/someURI/user/spongebob/squarepants.json" will return JSON "/someURI/user/spongebob/squarepants.badgerfish" will return badgerfish "/schema/someURI/user/spongebob/squarepants" will return the schema
HTTP methods are mapped to CRUD functionality following the rules:
PUT = create GET = read POST = update DELTE = delete
To learn more, check out the Main page.
Analytics [Less]
RMEP means RESTful Mail Exchange Protocol, a modern alternative to SMTP, POP and IMAP protocols that wants to fully leverage the Web architecture and break the limits of existing mail systems, while
... [More] providing a smooth evolution path.
Our goals are to:
openly define a specification based on HTTP provide a reference implementation
You can contribute to our wiki and join us in the discussion list! [Less]