/*
* 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.Map;
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.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;
/**
* Generates page-specification (.page) files
* @author Paolo Dona
*/
public class PageSpecificationPlugin extends GenericTapestryPlugin {
public PageSpecificationPlugin(JellyTemplateEngine jellyTemplateEngine,
QDoxCapableMetadataProvider metadataProvider, WriterMapper writerMapper) {
super(jellyTemplateEngine, metadataProvider, writerMapper);
setFileregex("\\.java");
setFilereplace("\\.page");
setPackageregex(".*");
setPackagereplace("");
setMultioutput(true);
new TagLibrary(metadataProvider);
// @TODO: check if tapestry is in the CP or will fail silently
}
public boolean shouldGenerate(Object metadata) {
JavaClass clazz = (JavaClass) metadata;
boolean hasPageTag = clazz.getTagByName("tapestry.page-specification") != null;
boolean isAPage = clazz.isA("org.apache.tapestry.IPage");
return hasPageTag && isAPage;
}
}