8/15/2008

Ajax Controls for Click Framework

I'm thinking about Ajax integration for Click Framework recently.

For example, see the below page class. If you clicks AjaxRequestButton, Click invokes getAllBooks() using XMLHttpRequest. And getAllBooks() renders a Java object as JSON. AjaxRequestButton generates a HTML button that invokes Ajax.Request of prototype.js.

public class AjaxPage extends AjaxPage {
  public AjaxRequestButton button
    = new AjaxRequestButton("search", this, "getAllBooks");
  
  public AjaxPage(){
    button.addAjaxHandler(
      AjaxRequestButton.ON_COMPLETE, "displayResult");
  }
  
  public boolean getAllBooks(){
    List<Book> books = bookService.getAllBooks();
    renderJSON(books);
    return false;
  }
}
Next example. AjaxSubmit control send Form using Ajax.Request.
public class AjaxPage extends AjaxPage {

  public Form form = new Form("form");
  private TextField keyword = new TextFiled("keyword");
  private AjaxSubmit search = new AjaxSubmit("search", this, "onSearch");
  
  public AjaxPage(){
    form.add(keyword);
    form.add(search);
  }
  
  public boolean onSearch(){
    List<Book> bookList = bookService.search(keyword.getValue());
    renderJSON(books);
    return false;
  }
}
Of course, these controls need more improvement. However I think this concept matches to Click Framework well.

8/14/2008

S2Click: Seasar2 integration for Click Framework

S2Click is Seasar2 integration for Click Framework. Seasar2 is an opensource DI container made in Japan. S2Click adds powerful features to Click.
  • HOT deploy - You don't have to restart application server when you modify your sourcecode.
  • Java5 annotation - S2Click provides some annotations for ease of development
  • Ajax & File download support - The page base class S2ClickPage provides methods to render Ajax & file downloading response.
  • public field handling - You can use public fields instead of setter & getter in many places.
  • Extended controls - S2ClickForm, ToolTip, ConfirmSubmit, AjaxLinks and AjaxButtons
Now, Seasar2 and S2Click focuses to Japanese developers (So documentation is provided with Japanese mainly).

However I will introduce S2Click detailed features in this blog. And also I will feedback these features to Click Framework from S2Click in the feature.

8/03/2008

Click Framework goes to ASF!

There are very good news. Click Framework will join to the Apache Incubator! The proposal has been accepted.

This is the first step of introducing Click Framework to many Java developers. I'll make effort to incubate Click Framework in the Apache Incubator.

7/03/2008

AIR GEAR 1.0.0 Released!

Yesterday, Project Amateras released AIR GEAR 1.0.0!

AIR GEAR is an open source IDE for Adobe AIR development. It works as an Eclipse plug-in so you can use it with many other Eclipse plug-ins and powerful features of Eclipse.

AIR GEAR has following features:

  • Supports both HTML and Flex based AIR application development
  • WISYWIG graphical editor for Flex
  • Automatic build and error reporting
  • AIR application launcher on the Eclipse

See this page about detailed use.

Enjoy your development!

6/24/2008

memcached in Java

I'm looking for memcached client library for Java. Then I found two libraries.
memcached client for java
memcached client for java is simple and synchronous mamcached client libraries. This is easy to use but not support CAS commands.
spymemcached
spymemcached supports asynchronous processing and CAS commands. Updating cache is high-speed. However implementation is very complex.
I think that many web applications don't require asynchronous cache processing. So I think mamcached client for java is better solution.

6/20/2008

prototype.js and script.aculo.us

The next version of Amateras JavaScript editor supports prototype.js and script.aculo.us. These libraries are proposed in code completion proposals.

prototype.js:
script.aculo.us:
In the future version, many other JavaScript libraries will be supported!

The page auto mapping without templates

Click Framework provides the page auto mapping. This is the important feature to decrease amount of configuration.

However Click maps page classes to request-path from HTML templates. So page classes which do not have corresponded HTML template is not mapped automatically.

For example:

  • pages which share a HTML template
  • the page which returns JSON or file (response is written in the page class)
I'm thinking about annotations on Click Framework. How about the @Path annotation which specifies the auto mapping path to page classes.
@Path("/file-download.htm")
public class FileDonwloadPage extends Page {

  /**
   * Writes response for file downloading in this method.
   */
  @Override public void onRender() {
    HttpServletResponse res = getContext().getResponse();
    OutputStream out = res.getOutputStream();
    ...
  }

  /**
   * This method returns null to not render template,
   * because this class writes response contents for file download.
   */
  public String getPath(){
    return null;
  }
}
This is one idea of using annotation in Click Framework.