org.jvnet.jaxb2_commons.plugin.fluent_api
Class FluentApiPlugin

java.lang.Object
  extended by com.sun.tools.xjc.Plugin
      extended by org.jvnet.jaxb2_commons.plugin.fluent_api.FluentApiPlugin

public class FluentApiPlugin
extends com.sun.tools.xjc.Plugin

Support a fluent api in addition to the default (JavaBean) setter methods.

The initial idea is simply to add a "with*" method to the generated class for every "set*" method encountered, with the only functional difference of returning the class instance, instead of void.

Enhancement on 11 June 2006:
Provide fluent setter api for Lists, with support of variable arguments. This enhancement was suggested by Kenny MacLeod , and endorsed by Kohsuke Kawaguchi . Here is quoted from the original request:

By default, XJC represents Lists by generating a getter method, but no setter. This is impossible to chain with fluent-api. How about the plugin generates a withXYZ() method for List properties, taking as it's parameters a vararg list. For example:

 // This method is generated by vanilla XJC
 public List<OtherType> getMyList() {
   if (myList == null) {
     myList = new ArrayList<OtherType>();
   }
   return myList;
 }

 // This would be generated by fluent-api
 public MyClass withMyList(OtherType... values) {
   if (values!= null) {
       for(OtherType value : values) {
         getMyList().add(value);
       }
   }
   return this;
 }
Enhancement on 11 Oct 2008:
Provide fluent setter api for Lists, with support of Collection argument in addition to varargs arguments. This enhancement was suggested by Alex Wei with patch submitted. See Jira Issue 12 for more details.

Author:
Hanson Char

Constructor Summary
FluentApiPlugin()
           
 
Method Summary
 String getOptionName()
           
 String getUsage()
           
 boolean run(com.sun.tools.xjc.outline.Outline outline, com.sun.tools.xjc.Options opt, ErrorHandler errorHandler)
           
 
Methods inherited from class com.sun.tools.xjc.Plugin
getCustomizationURIs, isCustomizationTagName, onActivated, parseArgument, postProcessModel
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

FluentApiPlugin

public FluentApiPlugin()
Method Detail

getOptionName

public String getOptionName()
Specified by:
getOptionName in class com.sun.tools.xjc.Plugin

getUsage

public String getUsage()
Specified by:
getUsage in class com.sun.tools.xjc.Plugin

run

public boolean run(com.sun.tools.xjc.outline.Outline outline,
                   com.sun.tools.xjc.Options opt,
                   ErrorHandler errorHandler)
Specified by:
run in class com.sun.tools.xjc.Plugin


Copyright © 2013. All Rights Reserved.