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

Reply via email to