/*
* Copyright (c) 2003-2005
* XDoclet Team
* All rights reserved.
*/
package org.xdoclet.plugin.tapestry;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.Predicate;
import org.generama.JellyTemplateEngine;
import org.generama.QDoxCapableMetadataProvider;
import org.generama.WriterMapper;
import org.generama.defaults.QDoxPlugin;
import org.generama.defaults.XMLOutputValidator;
import org.xdoclet.plugin.tapestry.qtags.*;
import org.xdoclet.plugin.tapestry.qtags.TagLibrary;
import com.thoughtworks.qdox.model.BeanProperty;
import com.thoughtworks.qdox.model.DocletTag;
import com.thoughtworks.qdox.model.JavaClass;
import com.thoughtworks.qdox.model.JavaField;
import com.thoughtworks.qdox.model.JavaMethod;
/**
* A base class for Tapestry4 related plugins.
* @author Paolo Don�
*/
public class GenericTapestryPlugin extends QDoxPlugin {
public static final String PUBLIC_ID_4_0 = "-//Apache Software Foundation//Tapestry Specification 4.0//EN";
public static final String SYSTEM_ID_4_0 = "http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd";
private String publicId = PUBLIC_ID_4_0;
private String systemId = SYSTEM_ID_4_0;
public GenericTapestryPlugin(JellyTemplateEngine jellyTemplateEngine, QDoxCapableMetadataProvider metadataProvider,
WriterMapper writerMapper) {
super(jellyTemplateEngine, metadataProvider, writerMapper);
Map dtds = new HashMap();
dtds.put(SYSTEM_ID_4_0, getClass().getResource("dtd/Tapestry_4_0.dtd"));
setOutputValidator(new XMLOutputValidator(dtds));
}
public String getPublicId() {
return publicId;
}
public String getSystemId() {
return systemId;
}
/**
* Determines all the abstract getters in a JavaClass
* @return a Set of JavaMethod objects
*/
public Set getAbstractGetters(JavaClass clazz) {
Set abstractGetters = new HashSet();
JavaMethod[] methods = clazz.getMethods();
for (int i = 0; i < methods.length; i++) {
boolean abztract = methods[i].isAbstract();
boolean getter = methods[i].isPropertyAccessor();
if (abztract && getter) {
abstractGetters.add(methods[i]);
}
}
return abstractGetters;
}
}