CVS: jcontainer/loom/plugins/maven-sar/src/test/org/jcontainer/loom/info PhoenixJavaClassFilterTestCase.java,NONE,1.1 PhoenixAttributeInterceptorTestCase.java,NONE,1.1 GenerateLoomDescriptorsTaskTestCase.java,NONE,1.1

mauro-yCVjj/[email protected]
Newsgroups gmane.comp.java.jcontainer.cvs
Message-ID <[email protected]>
Update of /cvsroot/jcontainer/jcontainer/loom/plugins/maven-sar/src/test/org/jcontainer/loom/info
In directory hogshead.codehaus.org:/tmp/cvs-serv13989/loom/plugins/maven-sar/src/test/org/jcontainer/loom/info

Added Files:
	PhoenixJavaClassFilterTestCase.java 
	PhoenixAttributeInterceptorTestCase.java 
	GenerateLoomDescriptorsTaskTestCase.java 
Log Message:
Folded loom-info code in maven-sar plugin 

--- NEW FILE: PhoenixJavaClassFilterTestCase.java ---
/*
 * Copyright (C) The Spice Group. All rights reserved.
 *
 * This software is published under the terms of the Spice
 * Software License version 1.1, a copy of which has been included
 * with this distribution in the LICENSE.txt file.
 */
package org.jcontainer.loom.info;

import junit.framework.TestCase;
import com.thoughtworks.qdox.model.JavaClass;
import com.thoughtworks.qdox.model.DocletTag;
import java.util.ArrayList;

/**
 *
 * @author <a href="mailto:peter at realityforge.org">Peter Donald</a>
 * @version $Revision: 1.1 $ $Date: 2003/11/01 13:15:31 $
 */
public class PhoenixJavaClassFilterTestCase
    extends TestCase
{
    public void testClassWithoutPhoenixMetaData()
        throws Exception
    {
        final PhoenixJavaClassFilter filter = new PhoenixJavaClassFilter();
        final JavaClass javaClass = new JavaClass();
        final JavaClass result = filter.filterClass( javaClass );
        assertNull( "javaClass", result );
    }

    public void testClassWithPhoenixMxTopic()
        throws Exception
    {
        final PhoenixJavaClassFilter filter = new PhoenixJavaClassFilter();
        final JavaClass javaClass = new JavaClass();
        final ArrayList tags = new ArrayList();
        tags.add( new DocletTag( "phoenix:mx-topic", "" ) );
        javaClass.setTags( tags );
        final JavaClass result = filter.filterClass( javaClass );
        assertEquals( "javaClass", javaClass, result );
    }

    public void testClassWithPhoenixBlock()
        throws Exception
    {
        final PhoenixJavaClassFilter filter = new PhoenixJavaClassFilter();
        final JavaClass javaClass = new JavaClass();
        final ArrayList tags = new ArrayList();
        tags.add( new DocletTag( "phoenix:block", "" ) );
        javaClass.setTags( tags );
        final JavaClass result = filter.filterClass( javaClass );
        assertEquals( "javaClass", javaClass, result );
    }

    public void testClassWithMXComponent()
        throws Exception
    {
        final PhoenixJavaClassFilter filter = new PhoenixJavaClassFilter();
        final JavaClass javaClass = new JavaClass();
        final ArrayList tags = new ArrayList();
        tags.add( new DocletTag( "mx.component", "" ) );
        javaClass.setTags( tags );
        final JavaClass result = filter.filterClass( javaClass );
        assertEquals( "javaClass", javaClass, result );
    }

    public void testClassWithDNAComponent()
        throws Exception
    {
        final PhoenixJavaClassFilter filter = new PhoenixJavaClassFilter();
        final JavaClass javaClass = new JavaClass();
        final ArrayList tags = new ArrayList();
        tags.add( new DocletTag( "dna.component", "" ) );
        javaClass.setTags( tags );
        final JavaClass result = filter.filterClass( javaClass );
        assertEquals( "javaClass", javaClass, result );
    }
}

--- NEW FILE: PhoenixAttributeInterceptorTestCase.java ---
/*
 * Copyright (C) The JContainer Group. All rights reserved.
 *
 * This software is published under the terms of the JContainer
 * Software License version 1.1, a copy of which has been included
 * with this distribution in the LICENSE.txt file.
 */
package org.jcontainer.loom.info;

import junit.framework.TestCase;
import com.thoughtworks.qdox.model.JavaClass;
import com.thoughtworks.qdox.model.DocletTag;
import com.thoughtworks.qdox.model.JavaMethod;
import org.realityforge.metaclass.model.Attribute;
import java.util.Properties;
import java.util.ArrayList;

/**
 *
 * @author <a href="mailto:peter at realityforge.org">Peter Donald</a>
 * @version $Revision: 1.1 $ $Date: 2003/11/01 13:15:31 $
 */
public class PhoenixAttributeInterceptorTestCase
    extends TestCase
{
    public void testProcessClassAttributeWithoutTransformations()
        throws Exception
    {
        final PhoenixAttributeInterceptor interceptor = new PhoenixAttributeInterceptor();
        final Attribute attribute = new Attribute( "ignored" );
        final Attribute result =
            interceptor.processClassAttribute( new JavaClass(), attribute );
        assertNotNull( "attribute", result );
        assertEquals( "attribute.name", "ignored", result.getName() );
        assertEquals( "attribute.value", null, result.getValue() );
        assertEquals( "attribute.parameterCount", 0, result.getParameterCount() );
    }

    public void testProcessClassAttributeWithPhoenixBlock()
        throws Exception
    {
        final PhoenixAttributeInterceptor interceptor = new PhoenixAttributeInterceptor();
        final Attribute attribute = new Attribute( "phoenix:block" );
        final Attribute result =
            interceptor.processClassAttribute( new JavaClass(), attribute );
        assertNotNull( "attribute", result );
        assertEquals( "attribute.name", "dna.component", result.getName() );
        assertEquals( "attribute.value", null, result.getValue() );
        assertEquals( "attribute.parameterCount", 0, result.getParameterCount() );
    }

    public void testProcessClassAttributeWithPhoenixMxTopic()
        throws Exception
    {
        final PhoenixAttributeInterceptor interceptor = new PhoenixAttributeInterceptor();
        final Properties parameters = new Properties();
        parameters.setProperty( "name", "MyTopic" );
        final Attribute attribute = new Attribute( "phoenix:mx-topic", parameters );
        final Attribute result =
            interceptor.processClassAttribute( new JavaClass(), attribute );
        assertNotNull( "attribute", result );
        assertEquals( "attribute.name", "mx.component", result.getName() );
        assertEquals( "attribute.value", null, result.getValue() );
        assertEquals( "attribute.parameterCount", 1, result.getParameterCount() );
        assertEquals( "attribute.parameter(description)", "MyTopic", result.getParameter( "description" ) );
    }

    public void testProcessClassAttributeWithPhoenixService()
        throws Exception
    {
        final PhoenixAttributeInterceptor interceptor = new PhoenixAttributeInterceptor();
        final Properties parameters = new Properties();
        parameters.setProperty( "name", "X" );
        final Attribute attribute = new Attribute( "phoenix:service", parameters );
        final Attribute result =
            interceptor.processClassAttribute( new JavaClass(), attribute );
        assertNotNull( "attribute", result );
        assertEquals( "attribute.name", "dna.service", result.getName() );
        assertEquals( "attribute.value", null, result.getValue() );
        assertEquals( "attribute.parameterCount", 1, result.getParameterCount() );
        assertEquals( "attribute.parameter(type)", "X", result.getParameter( "type" ) );
    }

    public void testProcessClassAttributeWithPhoenixMXProxy()
        throws Exception
    {
        final PhoenixAttributeInterceptor interceptor = new PhoenixAttributeInterceptor();
        final Properties parameters = new Properties();
        parameters.setProperty( "class", "X" );
        final Attribute attribute = new Attribute( "phoenix:mx-proxy", parameters );
        final Attribute result =
            interceptor.processClassAttribute( new JavaClass(), attribute );
        assertNotNull( "attribute", result );
        assertEquals( "attribute.name", "mx.proxy", result.getName() );
        assertEquals( "attribute.value", null, result.getValue() );
        assertEquals( "attribute.parameterCount", 1, result.getParameterCount() );
        assertEquals( "attribute.parameter(type)", "X", result.getParameter( "type" ) );
    }

    public void testProcessMethodAttributeWithoutTransformation()
        throws Exception
    {
        final PhoenixAttributeInterceptor interceptor = new PhoenixAttributeInterceptor();
        final Attribute attribute = new Attribute( "ignore-me" );
        final Attribute result =
            interceptor.processMethodAttribute( new JavaMethod(), attribute );
        assertNotNull( "attribute", result );
        assertEquals( "attribute.name", "ignore-me", result.getName() );
        assertEquals( "attribute.value", null, result.getValue() );
        assertEquals( "attribute.parameterCount", 0, result.getParameterCount() );
    }

    public void testProcessMethodAttributeWithMXDescription()
        throws Exception
    {
        final PhoenixAttributeInterceptor interceptor = new PhoenixAttributeInterceptor();
        final Attribute attribute = new Attribute( "phoenix:mx-description" );
        final Attribute result =
            interceptor.processMethodAttribute( new JavaMethod(), attribute );
        assertNull( "attribute", result );
    }

    public void testProcessMethodAttributeWithMXAttributeAndNoDescriptionOrComment()
        throws Exception
    {
        final PhoenixAttributeInterceptor interceptor = new PhoenixAttributeInterceptor();
        final Attribute attribute = new Attribute( "phoenix:mx-attribute" );
        final Attribute result =
            interceptor.processMethodAttribute( new JavaMethod(), attribute );
        assertNotNull( "attribute", result );
        assertEquals( "attribute.name", "mx.attribute", result.getName() );
        assertEquals( "attribute.value", null, result.getValue() );
        assertEquals( "attribute.parameterCount", 0, result.getParameterCount() );
    }

    public void testProcessMethodAttributeWithMXAttributeAndDescription()
        throws Exception
    {
        final String description = "A Random Thought";
        final PhoenixAttributeInterceptor interceptor = new PhoenixAttributeInterceptor();
        final Attribute attribute = new Attribute( "phoenix:mx-attribute" );
        final JavaMethod method = new JavaMethod();
        final ArrayList tags = new ArrayList();
        tags.add( new DocletTag( "phoenix:mx-description", description ) );
        method.setTags( tags );
        final Attribute result =
            interceptor.processMethodAttribute( method, attribute );
        assertNotNull( "attribute", result );
        assertEquals( "attribute.name", "mx.attribute", result.getName() );
        assertEquals( "attribute.value", null, result.getValue() );
        assertEquals( "attribute.parameterCount", 1, result.getParameterCount() );
        assertEquals( "attribute.parameter(description)",
                      description, result.getParameter( "description" ) );
    }

    public void testProcessMethodAttributeWithMXAttributeAndComment()
        throws Exception
    {
        final String description = "A Random Thought";
        final PhoenixAttributeInterceptor interceptor = new PhoenixAttributeInterceptor();
        final Attribute attribute = new Attribute( "phoenix:mx-attribute" );
        final JavaMethod method = new JavaMethod();
        method.setComment( description );
        final Attribute result =
            interceptor.processMethodAttribute( method, attribute );
        assertNotNull( "attribute", result );
        assertEquals( "attribute.name", "mx.attribute", result.getName() );
        assertEquals( "attribute.value", null, result.getValue() );
        assertEquals( "attribute.parameterCount", 1, result.getParameterCount() );
        assertEquals( "attribute.parameter(description)",
                      description, result.getParameter( "description" ) );
    }

    public void testProcessMethodAttributeWithMXOperationAndNoDescriptionOrComment()
        throws Exception
    {
        final PhoenixAttributeInterceptor interceptor = new PhoenixAttributeInterceptor();
        final Attribute attribute = new Attribute( "phoenix:mx-operation" );
        final Attribute result =
            interceptor.processMethodAttribute( new JavaMethod(), attribute );
        assertNotNull( "attribute", result );
        assertEquals( "attribute.name", "mx.operation", result.getName() );
        assertEquals( "attribute.value", null, result.getValue() );
        assertEquals( "attribute.parameterCount", 0, result.getParameterCount() );
    }

    public void testProcessMethodAttributeWithMXOperationAndDescription()
        throws Exception
    {
        final String description = "A Random Thought";
        final PhoenixAttributeInterceptor interceptor = new PhoenixAttributeInterceptor();
        final Attribute attribute = new Attribute( "phoenix:mx-operation" );
        final JavaMethod field = new JavaMethod();
        final ArrayList tags = new ArrayList();
        tags.add( new DocletTag( "phoenix:mx-description", description ) );
        field.setTags( tags );
        final Attribute result =
            interceptor.processMethodAttribute( field, attribute );
        assertNotNull( "attribute", result );
        assertEquals( "attribute.name", "mx.operation", result.getName() );
        assertEquals( "attribute.value", null, result.getValue() );
        assertEquals( "attribute.parameterCount", 1, result.getParameterCount() );
        assertEquals( "attribute.parameter(description)",
                      description, result.getParameter( "description" ) );
    }

    public void testProcessMethodAttributeWithMXOperationAndComment()
        throws Exception
    {
        final String description = "A Random Thought";
        final PhoenixAttributeInterceptor interceptor = new PhoenixAttributeInterceptor();
        final Attribute attribute = new Attribute( "phoenix:mx-operation" );
        final JavaMethod field = new JavaMethod();
        field.setComment( description );
        final Attribute result =
            interceptor.processMethodAttribute( field, attribute );
        assertNotNull( "attribute", result );
        assertEquals( "attribute.name", "mx.operation", result.getName() );
        assertEquals( "attribute.value", null, result.getValue() );
        assertEquals( "attribute.parameterCount", 1, result.getParameterCount() );
        assertEquals( "attribute.parameter(description)",
                      description, result.getParameter( "description" ) );
    }

    public void testProcessMethodAttributeWithPhoenixConfigurationSchema()
        throws Exception
    {
        final PhoenixAttributeInterceptor interceptor = new PhoenixAttributeInterceptor();
        final Attribute attribute = new Attribute( "phoenix:configuration-schema" );
        final JavaClass javaClass = new JavaClass();
        javaClass.setName( "com.biz.MyClass" );
        final JavaMethod method = new JavaMethod();
        method.setParentClass( javaClass );
        final Attribute result =
            interceptor.processMethodAttribute( method, attribute );
        assertNotNull( "attribute", result );
        assertEquals( "attribute.name", "dna.configuration", result.getName() );
        assertEquals( "attribute.value", null, result.getValue() );
        assertEquals( "attribute.parameterCount", 0, result.getParameterCount() );
    }

    public void testProcessMethodAttributeWithPhoenixConfigurationSchemaSpecifyingType()
        throws Exception
    {
        final PhoenixAttributeInterceptor interceptor = new PhoenixAttributeInterceptor();
        final Properties parameters = new Properties();
        final String type = "BobbaFett";
        parameters.setProperty( "type", type );
        final Attribute attribute = new Attribute( "phoenix:configuration-schema", parameters );
        final JavaClass javaClass = new JavaClass();
        javaClass.setName( "com.biz.MyClass" );
        final JavaMethod method = new JavaMethod();
        method.setParentClass( javaClass );
        final Attribute result =
            interceptor.processMethodAttribute( method, attribute );
        assertNotNull( "attribute", result );
        assertEquals( "attribute.name", "dna.configuration", result.getName() );
        assertEquals( "attribute.value", null, result.getValue() );
        assertEquals( "attribute.parameterCount", 1, result.getParameterCount() );
        assertEquals( "attribute.parameter(type)",
                      type, result.getParameter( "type" ) );
    }

    public void testProcessMethodAttributeWithPhoenixConfigurationSchemaSpecifyingRelaxType()
        throws Exception
    {
        final PhoenixAttributeInterceptor interceptor = new PhoenixAttributeInterceptor();
        final Properties parameters = new Properties();
        parameters.setProperty( "type", "relax-ng" );
        final Attribute attribute = new Attribute( "phoenix:configuration-schema", parameters );
        final JavaClass javaClass = new JavaClass();
        javaClass.setName( "com.biz.MyClass" );
        final JavaMethod method = new JavaMethod();
        method.setParentClass( javaClass );
        final Attribute result =
            interceptor.processMethodAttribute( method, attribute );
        assertNotNull( "attribute", result );
        assertEquals( "attribute.name", "dna.configuration", result.getName() );
        assertEquals( "attribute.value", null, result.getValue() );
        assertEquals( "attribute.parameterCount", 1, result.getParameterCount() );
        assertEquals( "attribute.parameter(type)",
                      "http://relaxng.org/ns/structure/1.0",
                      result.getParameter( "type" ) );
    }

    public void testProcessMethodAttributeWithPhoenixDependency()
        throws Exception
    {
        final PhoenixAttributeInterceptor interceptor = new PhoenixAttributeInterceptor();
        final Properties parameters = new Properties();
        final String type = "BobbaFett";
        parameters.setProperty( "name", type );
        final Attribute attribute = new Attribute( "phoenix:dependency", parameters );
        final Attribute result =
            interceptor.processMethodAttribute( new JavaMethod(), attribute );
        assertNotNull( "attribute", result );
        assertEquals( "attribute.name", "dna.dependency", result.getName() );
        assertEquals( "attribute.value", null, result.getValue() );
        assertEquals( "attribute.parameterCount", 1, result.getParameterCount() );
        assertEquals( "attribute.parameter(type)",
                      type, result.getParameter( "type" ) );
    }

    public void testProcessMethodAttributeWithPhoenixDependencyWithRoleSpecified()
        throws Exception
    {
        final PhoenixAttributeInterceptor interceptor = new PhoenixAttributeInterceptor();
        final Properties parameters = new Properties();
        final String type = "BobbaFett";
        final String key = "myKey";
        parameters.setProperty( "name", type );
        parameters.setProperty( "role", key );
        final Attribute attribute = new Attribute( "phoenix:dependency", parameters );
        final Attribute result =
            interceptor.processMethodAttribute( new JavaMethod(), attribute );
        assertNotNull( "attribute", result );
        assertEquals( "attribute.name", "dna.dependency", result.getName() );
        assertEquals( "attribute.value", null, result.getValue() );
        assertEquals( "attribute.parameterCount", 2, result.getParameterCount() );
        assertEquals( "attribute.parameter(type)",
                      type, result.getParameter( "type" ) );
        assertEquals( "attribute.parameter(key)",
                      key, result.getParameter( "key" ) );
    }

    public void testProcessClassAttributesWithoutMXService()
        throws Exception
    {
        final PhoenixAttributeInterceptor interceptor = new PhoenixAttributeInterceptor();
        final Attribute[] input = new Attribute[]{new Attribute( "RandomJAttribute" )};
        final Attribute[] attributes =
            interceptor.processClassAttributes( new JavaClass(), input );
        assertEquals( "attributes.length", 1, attributes.length );
        assertEquals( "attributes[0].name", "RandomJAttribute", attributes[ 0 ].getName() );
        assertEquals( "attributes[0].value", null, attributes[ 0 ].getValue() );
        assertEquals( "attributes[0].parameterCount", 0, attributes[ 0 ].getParameterCount() );
    }

    public void testProcessClassAttributesWithMXService()
        throws Exception
    {
        final PhoenixAttributeInterceptor interceptor = new PhoenixAttributeInterceptor();
        final Properties parameters = new Properties();
        final String type = "PerformMagicService";
        parameters.setProperty( "name", type );
        final Attribute attribute = new Attribute( "phoenix:mx", parameters );
        final Attribute[] input = new Attribute[]{attribute};
        final Attribute[] attributes =
            interceptor.processClassAttributes( new JavaClass(), input );
        assertEquals( "attributes.length", 2, attributes.length );
        assertEquals( "attributes[0].name", "dna.service", attributes[ 0 ].getName() );
        assertEquals( "attributes[0].value", null, attributes[ 0 ].getValue() );
        assertEquals( "attributes[0].parameterCount", 1, attributes[ 0 ].getParameterCount() );
        assertEquals( "attributes[0].parameter(type)",
                      type, attributes[ 0 ].getParameter( "type" ) );
        assertEquals( "attributes[1].name", "mx.interface", attributes[ 1 ].getName() );
        assertEquals( "attributes[1].value", null, attributes[ 1 ].getValue() );
        assertEquals( "attributes[1].parameterCount", 2, attributes[ 1 ].getParameterCount() );
        assertEquals( "attributes[1].parameter(type)",
                      type, attributes[ 1 ].getParameter( "type" ) );
        assertEquals( "attributes[1].parameter(topic)",
                      "PerformMagicService", attributes[ 1 ].getParameter( "type" ) );
    }

    public void testProcessMethodAttributesWithoutMXOperation()
        throws Exception
    {
        final PhoenixAttributeInterceptor interceptor = new PhoenixAttributeInterceptor();
        final Attribute[] input = new Attribute[]{new Attribute( "RandomJAttribute" )};
        final Attribute[] attributes =
            interceptor.processMethodAttributes( new JavaMethod(), input );
        assertEquals( "attributes.length", 1, attributes.length );
        assertEquals( "attributes[0].name", "RandomJAttribute", attributes[ 0 ].getName() );
        assertEquals( "attributes[0].value", null, attributes[ 0 ].getValue() );
        assertEquals( "attributes[0].parameterCount", 0, attributes[ 0 ].getParameterCount() );

    }

    public void testProcessMethodAttributesWithMXOperationWithoutParameters()
        throws Exception
    {
        final PhoenixAttributeInterceptor interceptor = new PhoenixAttributeInterceptor();
        final Attribute[] input = new Attribute[]{new Attribute( "mx.operation" )};
        final Attribute[] attributes =
            interceptor.processMethodAttributes( new JavaMethod(), input );
        assertEquals( "attributes.length", 1, attributes.length );
        assertEquals( "attributes[0].name", "mx.operation", attributes[ 0 ].getName() );
        assertEquals( "attributes[0].value", null, attributes[ 0 ].getValue() );
        assertEquals( "attributes[0].parameterCount", 0, attributes[ 0 ].getParameterCount() );
    }

    public void testProcessMethodAttributesWithMXOperationWithMalformedParameter()
        throws Exception
    {
        final PhoenixAttributeInterceptor interceptor = new PhoenixAttributeInterceptor();
        final Attribute[] input =
            new Attribute[]{new Attribute( "mx.operation" ),
                            new Attribute( "param", "var" )};
        final Attribute[] attributes =
            interceptor.processMethodAttributes( new JavaMethod(), input );
        assertEquals( "attributes.length", 2, attributes.length );
        assertEquals( "attributes[0].name", "mx.operation", attributes[ 0 ].getName() );
        assertEquals( "attributes[0].value", null, attributes[ 0 ].getValue() );
        assertEquals( "attributes[0].parameterCount", 0, attributes[ 0 ].getParameterCount() );
        assertEquals( "attributes[1].name", "param", attributes[ 1 ].getName() );
        assertEquals( "attributes[1].value", "var", attributes[ 1 ].getValue() );
        assertEquals( "attributes[1].parameterCount", 0, attributes[ 1 ].getParameterCount() );
    }

    public void testProcessMethodAttributesWithMXOperationWithParameter()
        throws Exception
    {
        final PhoenixAttributeInterceptor interceptor = new PhoenixAttributeInterceptor();
        final Attribute[] input =
            new Attribute[]{new Attribute( "mx.operation" ),
                            new Attribute( "param", "var This is the description" )};
        final Attribute[] attributes =
            interceptor.processMethodAttributes( new JavaMethod(), input );
        assertEquals( "attributes.length", 3, attributes.length );
        assertEquals( "attributes[0].name", "mx.operation", attributes[ 0 ].getName() );
        assertEquals( "attributes[0].value", null, attributes[ 0 ].getValue() );
        assertEquals( "attributes[0].parameterCount", 0, attributes[ 0 ].getParameterCount() );
        assertEquals( "attributes[1].name", "param", attributes[ 1 ].getName() );
        assertEquals( "attributes[1].value", "var This is the description", attributes[ 1 ].getValue() );
        assertEquals( "attributes[1].parameterCount", 0, attributes[ 1 ].getParameterCount() );
        assertEquals( "attributes[2].name", "mx.parameter", attributes[ 2 ].getName() );
        assertEquals( "attributes[2].value", null, attributes[ 2 ].getValue() );
        assertEquals( "attributes[2].parameterCount", 2, attributes[ 2 ].getParameterCount() );
        assertEquals( "attributes[2].parameter(name)",
                      "var",
                      attributes[ 2 ].getParameter( "name" ) );
        assertEquals( "attributes[2].parameter(description)",
                      "This is the description",
                      attributes[ 2 ].getParameter( "description" ) );
    }
}

--- NEW FILE: GenerateLoomDescriptorsTaskTestCase.java ---
/*
 * Copyright (C) The Spice Group. All rights reserved.
 *
 * This software is published under the terms of the Spice
 * Software License version 1.1, a copy of which has been included
 * with this distribution in the LICENSE.txt file.
 */
package org.jcontainer.loom.info;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import junit.framework.TestCase;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.types.FileSet;
import org.realityforge.metaclass.Attributes;
import org.realityforge.metaclass.introspector.DefaultMetaClassAccessor;
import org.realityforge.metaclass.io.MetaClassIOBinary;
import org.realityforge.metaclass.model.Attribute;
import org.realityforge.metaclass.model.ClassDescriptor;

/**
 *
 * @author <a href="mailto:peter at realityforge.org">Peter Donald</a>
 * @version $Revision: 1.1 $ $Date: 2003/11/01 13:15:31 $
 */
public class GenerateLoomDescriptorsTaskTestCase
    extends TestCase
{
    public void testSourceFile()
        throws Exception
    {
        final String source =
            "package com.biz;\n" +
            "\n" +
            "/**\n" +
            " * @phoenix:block\n" +
            " */\n" +
            "public class MyClass\n" +
            "{\n" +
            "}\n";

        final File sourceDirectory = generateDirectory();
        final File destDirectory = generateDirectory();
        final FileSet fileSet = new FileSet();
        fileSet.setDir( sourceDirectory );
        fileSet.setIncludes( "**/*.java" );

        final String sourceFilename =
            sourceDirectory + File.separator + "com" + File.separator + "biz" + File.separator + "MyClass.java";
        final File sourceFile = new File( sourceFilename );
        sourceFile.getParentFile().mkdirs();
        final FileOutputStream output = new FileOutputStream( sourceFile );
        output.write( source.getBytes() );
        output.close();

        final GenerateLoomDescriptorsTask task = new GenerateLoomDescriptorsTask();
        final Project project = new Project();
        project.setBaseDir( getBaseDirectory() );
        task.setProject( project );
        task.setDestDir( destDirectory );
        task.addFileset( fileSet );
        task.execute();
        final String destFilename =
            destDirectory + File.separator + "com" + File.separator + "biz" + File.separator + "MyClass" + DefaultMetaClassAccessor.BINARY_EXT;
        final File destFile = new File( destFilename );

        assertTrue( "destFile.exists()", destFile.exists() );
        final MetaClassIOBinary io = new MetaClassIOBinary();
        final FileInputStream input = new FileInputStream( destFile );
        final ClassDescriptor descriptor = io.deserializeClass( input );
        assertEquals( "descriptor.name", "com.biz.MyClass", descriptor.getName() );
        assertEquals( "descriptor.attributes.length", 1, descriptor.getAttributes().length );
        assertEquals( "descriptor.attributes[0].name", "dna.component", descriptor.getAttributes()[ 0 ].getName() );
        assertEquals( "descriptor.methods.length", 0, descriptor.getMethods().length );
        assertEquals( "descriptor.fields.length", 0, descriptor.getFields().length );
    }

    public void testSourceFileWithTypeResolutionAndDefaultsAddition()
        throws Exception
    {
        final String source =
            "package com.biz;\n" +
            "\n" +
            "/**\n" +
            " * @phoenix:block\n" +
            " */\n" +
            "public class MyClass\n" +
            "{\n" +
            "  /**\n" +
            "   * @dna.configuration\n" +
            "   * @dna.dependency type=\"ClassLoader\"\n" +
            "   */\n" +
            "  public void myMethod()\n" +
            "  {\n" +
            "  }\n" +
            "}\n";

        final File sourceDirectory = generateDirectory();
        final File destDirectory = generateDirectory();
        final FileSet fileSet = new FileSet();
        fileSet.setDir( sourceDirectory );
        fileSet.setIncludes( "**/*.java" );

        final String sourceFilename =
            sourceDirectory + File.separator + "com" + File.separator + "biz" + File.separator + "MyClass.java";
        final File sourceFile = new File( sourceFilename );
        sourceFile.getParentFile().mkdirs();
        final FileOutputStream output = new FileOutputStream( sourceFile );
        output.write( source.getBytes() );
        output.close();

        final GenerateLoomDescriptorsTask task = new GenerateLoomDescriptorsTask();
        final Project project = new Project();
        project.setBaseDir( getBaseDirectory() );
        task.setProject( project );
        task.setDestDir( destDirectory );
        task.addFileset( fileSet );
        task.execute();
        final String destFilename =
            destDirectory + File.separator + "com" + File.separator + "biz" + File.separator + "MyClass" + DefaultMetaClassAccessor.BINARY_EXT;
        final File destFile = new File( destFilename );

        assertTrue( "destFile.exists()", destFile.exists() );
        final MetaClassIOBinary io = new MetaClassIOBinary();
        final FileInputStream input = new FileInputStream( destFile );
        final ClassDescriptor descriptor = io.deserializeClass( input );
        assertEquals( "descriptor.name", "com.biz.MyClass", descriptor.getName() );
        final Attribute[] classAttributes = descriptor.getAttributes();
        assertEquals( "descriptor.attributes.length", 1, classAttributes.length );
        final Attribute componentAttribute =
            Attributes.getAttributeByName( classAttributes, "dna.component" );
        assertNotNull( "dna.component", componentAttribute );

        assertEquals( "descriptor.methods.length", 1, descriptor.getMethods().length );
        final Attribute[] methodAttributes = descriptor.getMethods()[ 0 ].getAttributes();
        assertEquals( "descriptor.methods[0].attributes.length",
                      2, methodAttributes.length );

        final Attribute configAttribute =
            Attributes.getAttributeByName( methodAttributes, "dna.configuration" );
        assertNotNull( "dna.configuration", configAttribute );
        assertEquals( "dna.configuration location",
                      "MyClass-schema.xml",
                      configAttribute.getParameter( "location" ) );
        final Attribute dependencyAttribute =
            Attributes.getAttributeByName( methodAttributes, "dna.dependency" );
        assertNotNull( "dna.dependency", dependencyAttribute );
        assertEquals( "dna.dependency type",
                      "java.lang.ClassLoader",
                      dependencyAttribute.getParameter( "type" ) );

        assertEquals( "descriptor.fields.length", 0, descriptor.getFields().length );
    }

    private static final File generateDirectory()
        throws IOException
    {
        final File baseDirectory = getBaseDirectory();
        final File dir =
            File.createTempFile( "mgtest", ".tmp", baseDirectory ).getCanonicalFile();
        dir.delete();
        dir.mkdirs();
        assertTrue( "dir.exists()", dir.exists() );
        return dir;
    }

    private static final File getBaseDirectory()
    {
        final String tempDir = System.getProperty( "java.io.tmpdir" );
        final String baseDir = System.getProperty( "basedir", tempDir );

        final File base = new File( baseDir ).getAbsoluteFile();
        final String pathname =
            base + File.separator + "target" + File.separator + "test-data";
        final File dir = new File( pathname );
        dir.mkdirs();
        return dir;
    }
}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.