Update of
/cvsroot/xdoclet-plugins/xdoclet-plugins/plugin-ejb/src/test/java/org/xdoclet/plugin/ejb
In directory
sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv31117/plugin-ejb/src/test/java/org/xdoclet/plugin/ejb
Added Files:
AbstractEjbJavaClassBuilderTestCase.java
Log Message:
EjbJavaGenerating plugin now support in memory generation of artifacts.
This will be important for not needing second passes like xd1 does.
A better management of hierarchy of from related tags is still needed to
prepare PluginCMP and PluginBMP.
--- NEW FILE: AbstractEjbJavaClassBuilderTestCase.java ---
/*
* Copyright (c) 2005
* XDoclet Team
* All rights reserved.
*/
package org.xdoclet.plugin.ejb;
import java.io.IOException;
import java.io.Writer;
import java.net.URL;
import java.util.Collection;
import org.apache.commons.collections.Closure;
import org.apache.commons.collections.CollectionUtils;
import org.generama.Plugin;
import org.generama.QDoxCapableMetadataProvider;
import org.generama.astunit.ASTTestCase;
import org.generama.defaults.Outcome;
import org.generama.tests.SinkWriterMapper;
import org.xdoclet.AbstractJavaGeneratingPluginTestCase;
import antlr.RecognitionException;
import antlr.TokenStreamException;
import com.thoughtworks.qdox.JavaDocBuilder;
import com.thoughtworks.qdox.junit.APITestCase;
import com.thoughtworks.qdox.model.JavaClass;
import com.thoughtworks.qdox.model.JavaSource;
public abstract class AbstractEjbJavaClassBuilderTestCase extends
AbstractJavaGeneratingPluginTestCase {
protected Plugin plugin;
protected SinkWriterMapper writerMapper;
protected QDoxCapableMetadataProvider provider;
protected void setUp() throws Exception {
writerMapper = new SinkWriterMapper();
provider = (QDoxCapableMetadataProvider) createMetadataProvider();
plugin = createPlugin(provider, writerMapper);
}
protected final void compareApi(URL expected, URL actual) throws
RecognitionException, TokenStreamException, IOException {
APITestCase.assertApiEquals(expected, actual);
// ASTTestCase.assertAstEquals(expected, actual);
}
public void testGenerateContent() throws Throwable {
try {
plugin.start();
Outcome out = writerMapper.getOutcome(null, null);
compare(getExpected(), out.getURL());
} catch (Throwable e) {
// print out all of it
System.out.println("**** START GENERATED CONTENT ****");
System.out.println(writerMapper.getContent());
System.out.println("**** END GENERATED CONTENT ****");
throw e;
}
// assert that the content was written to a file
}
public void testGeneratedJavaClass() throws Throwable {
SinkWriterMapper writerBuilderMapper = new SinkWriterMapper();
SinkWriterMapper builderMapper = new SinkWriterMapper();
final EjbJavaClassBuilder builder = (EjbJavaClassBuilder) plugin;
try {
plugin.start();
// Generate files through plugin
Outcome outPlugin = writerMapper.getOutcome(null, null);
JavaDocBuilder docBuilder = new JavaDocBuilder();
JavaSource resultJavaSource =
docBuilder.addSource(outPlugin.getURL());
JavaClass[] classes = resultJavaSource.getClasses();
assertNotNull(classes);
// Serialize classes for comparization
Outcome outBuilded = writerBuilderMapper.getOutcome(null, null);
Writer outBuildedWrt = outBuilded.getWriter();
for (int i = 0; i < classes.length; i++) {
assertNotNull(classes[i]);
outBuildedWrt.write(classes[i].toString());
}
// Generate builder classes
Collection metadata = provider.getMetadata();
Outcome outBuilderClasses = builderMapper.getOutcome(null, null);
final Writer outBuilderClassesWrt = outBuilderClasses.getWriter();
CollectionUtils.forAllDo(metadata, new Closure() {
public void execute(Object arg0) {
JavaClass clz = (JavaClass) arg0;
JavaClass[] buildedClass = builder.buildFor(clz);
try {
for (int i = 0; buildedClass != null && i <
buildedClass.length; i++)
outBuilderClassesWrt.write(buildedClass[i].toString());
} catch (IOException e) {
fail(e.getMessage());
}
// boolean shouldGenerate = plugin.shouldGenerate(clz);
// if (shouldGenerate) {
// assertTrue("I should generate for " + clz.getName() +
" but buildedClass is NULL",
// buildedClass != null);
// try {
// for (int i = 0; i < buildedClass.length; i++)
//
outBuilderClassesWrt.write(buildedClass[i].toString());
// } catch (IOException e) {
// fail(e.getMessage());
// }
// } else {
// for (int i = 0; buildedClass != null && i <
buildedClass.length; i++) {
// JavaClass class1 = buildedClass[i];
//
System.out.println(".execute()clz.getName()="+clz.getName()+",
class1="+class1.getFullyQualifiedName());
// }
// assertTrue("I shouldn't generate for " + clz.getName()
// + " but buildedClass is NOT NULL",
buildedClass == null);
// }
}
});
compareApi(outBuilded.getURL(), outBuilderClasses.getURL());
} catch (Throwable e) {
// print out all of it
System.out.println("**** START GENERATED CONTENT ****");
// System.out.println(writerMapper.getContent());
// System.out.println("**** ------- DERIVES ------- ****");
System.out.println(writerBuilderMapper.getContent());
System.out.println("**** ------- BUILDED ------- ****");
System.out.println(builderMapper.getContent());
System.out.println("**** END GENERATED CONTENT ****");
throw e;
}
}
}
_______________________________________________
xdoclet-plugins-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xdoclet-plugins-commits