in maven2-plugins/myfaces-faces-plugin/src/main/java/org/apache/myfaces/buildtools/maven2/plugin/faces/generator/component/AbstractComponentGenerator.java [53:204]
public void writeClassBegin(
PrettyWriter out,
String className,
String superclassName,
ComponentBean component,
SourceTemplate template)
{
out.println("/**");
// TODO: restore description (needs escaping?)
// String description = component.getDescription();
// if (description != null)
// {
// out.println(" *");
// out.println(" * " + convertMultilineComment(description));
// }
String longDescription = component.getLongDescription();
if (longDescription != null)
{
out.println(" *");
out.println(" * " + convertMultilineComment(longDescription));
}
if (component.hasEvents(true))
{
// the events javadoc
out.println(" *");
out.println(" * <h4>Events:</h4>");
out.println(" * <table border=\"1\" width=\"100%\" cellpadding=\"3\" summary=\"\">");
out.println(" * <tr bgcolor=\"#CCCCFF\" class=\"TableHeadingColor\">");
out.println(" * <th align=\"left\">Type</th>");
out.println(" * <th align=\"left\">Phases</th>");
out.println(" * <th align=\"left\">Description</th>");
out.println(" * </tr>");
Iterator events = component.events(true);
while (events.hasNext())
{
EventRefBean eventRef = (EventRefBean) events.next();
EventBean event = eventRef.resolveEventType();
if (event != null)
{
String eventClass = event.getEventClass();
String[] eventPhases = eventRef.getEventDeliveryPhases();
String eventDescription = event.getDescription();
out.println(" * <tr class=\"TableRowColor\">");
out.println(" * <td valign=\"top\"><code>" + eventClass + "</code></td>");
out.print(" * <td valign=\"top\" nowrap>");
if (eventPhases != null)
{
for (int i = 0; i < eventPhases.length; i++)
{
if (i > 0)
out.print("<br>");
out.print(eventPhases[i]);
}
}
out.println("</td>");
out.println(" * <td valign=\"top\">" + eventDescription + "</td>");
out.println(" * </tr>");
}
}
out.println(" * </table>");
}
if (!component.hasChildren())
{
out.println(" * <p>");
out.println(" * It does not support any children.");
}
out.println(" */");
// TODO: eliminate <mfp:component-class-modifier> metadata
int modifiers = component.getComponentClassModifiers();
String classStart = Modifier.toString(modifiers);
// TODO: use canonical ordering
classStart = classStart.replaceAll("public abstract", "abstract public");
out.println(classStart + " class " + className +
" extends " + superclassName);
Set interfaces = new HashSet();
if (template != null)
interfaces.addAll(template.getImplements());
if (component.getComponentImplements() != null){
StringTokenizer st = new StringTokenizer(component.getComponentImplements(),",",false);
while (st.hasMoreTokens()){
interfaces.add(st.nextToken());
}
}
if (component.isNamingContainer())
interfaces.add("javax.faces.component.NamingContainer");
Iterator events = component.events();
while (events.hasNext())
{
EventRefBean eventRef = (EventRefBean) events.next();
EventBean event = eventRef.resolveEventType();
if (event != null)
{
if (!eventRef.isIgnoreSourceInterface())
{
String source = event.getEventSourceInterface();
if (source != null)
interfaces.add(Util.getClassFromFullClass(source));
}
}
}
if (!interfaces.isEmpty())
{
Set implementsSet = new HashSet();
for (Iterator iter = interfaces.iterator(); iter.hasNext();)
{
String fcqn = (String) iter.next();
implementsSet.add(Util.getClassFromFullClass(fcqn));
}
// implements clause spans multiple lines
char[] indent = new char[classStart.length() +
" class ".length() +
className.length() + 1];
Arrays.fill(indent, ' ');
out.print(indent);
out.print("implements ");
for (Iterator iter = implementsSet.iterator(); iter.hasNext();)
{
out.print((String) iter.next());
if (iter.hasNext())
{
out.println(",");
out.print(indent);
out.print(" "); // same length as "implements "
}
}
out.println();
}
out.println("{");
out.indent();
//Write serialVersionUID
if (component.getComponentSerialUID() != null &&
!"".equals(component.getComponentSerialUID())){
out.println();
out.println("private static final long serialVersionUID = "+
component.getComponentSerialUID()+";");
out.println();
}
}