git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271202 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -0,0 +1,22 @@ | |||
| /* | |||
| * Copyright (C) The Apache Software Foundation. All rights reserved. | |||
| * | |||
| * This software is published under the terms of the Apache Software License | |||
| * version 1.1, a copy of which has been included with this distribution in | |||
| * the LICENSE.txt file. | |||
| */ | |||
| package org.apache.myrmidon.interfaces.type; | |||
| /** | |||
| * A basic implementation of a type to test the type factory. | |||
| * | |||
| * @author <a href="mailto:peter@apache.org">Peter Donald</a> | |||
| * @version $Revision$ $Date$ | |||
| */ | |||
| public class MyType1 | |||
| { | |||
| public boolean equals( final Object object ) | |||
| { | |||
| return object.getClass() == getClass(); | |||
| } | |||
| } | |||
| @@ -0,0 +1,22 @@ | |||
| /* | |||
| * Copyright (C) The Apache Software Foundation. All rights reserved. | |||
| * | |||
| * This software is published under the terms of the Apache Software License | |||
| * version 1.1, a copy of which has been included with this distribution in | |||
| * the LICENSE.txt file. | |||
| */ | |||
| package org.apache.myrmidon.interfaces.type; | |||
| /** | |||
| * A basic implementation of a type to test the type factory. | |||
| * | |||
| * @author <a href="mailto:peter@apache.org">Peter Donald</a> | |||
| * @version $Revision$ $Date$ | |||
| */ | |||
| public class MyType2 | |||
| { | |||
| public boolean equals( final Object object ) | |||
| { | |||
| return object.getClass() == getClass(); | |||
| } | |||
| } | |||
| @@ -0,0 +1,88 @@ | |||
| /* | |||
| * Copyright (C) The Apache Software Foundation. All rights reserved. | |||
| * | |||
| * This software is published under the terms of the Apache Software License | |||
| * version 1.1, a copy of which has been included with this distribution in | |||
| * the LICENSE.txt file. | |||
| */ | |||
| package org.apache.myrmidon.interfaces.type; | |||
| import java.io.File; | |||
| import java.net.URL; | |||
| import junit.framework.TestCase; | |||
| /** | |||
| * These are unit tests that test the basic operation of TypeFactorys. | |||
| * | |||
| * @author <a href="mailto:peter@apache.org">Peter Donald</a> | |||
| * @version $Revision$ $Date$ | |||
| */ | |||
| public class TypeFactoryTest | |||
| extends TestCase | |||
| { | |||
| private final static String TYPE_NAME1 = "my-type1"; | |||
| private final static String TYPE_NAME2 = "my-type2"; | |||
| private final static Class TYPE_CLASS1 = MyType1.class; | |||
| private final static Class TYPE_CLASS2 = MyType2.class; | |||
| private final static String TYPE_CLASSNAME1 = TYPE_CLASS1.getName(); | |||
| private final static String TYPE_CLASSNAME2 = TYPE_CLASS2.getName(); | |||
| private final static String TYPE_JAR = | |||
| "src/testcases/org/apache/myrmidon/interfaces/type/types.jar".replace( '/', File.separatorChar ); | |||
| public TypeFactoryTest( final String name ) | |||
| { | |||
| super( name ); | |||
| } | |||
| /** | |||
| * Make sure that you can load a basic type from DefaultTypeManager. | |||
| */ | |||
| public void testBasicType() | |||
| { | |||
| final ClassLoader classLoader = getClass().getClassLoader(); | |||
| final DefaultTypeFactory factory = new DefaultTypeFactory( classLoader ); | |||
| factory.addNameClassMapping( TYPE_NAME2, TYPE_CLASSNAME2 ); | |||
| try | |||
| { | |||
| final Object type = factory.create( TYPE_NAME2 ); | |||
| final Class typeClass = type.getClass(); | |||
| assertEquals( "The type loaded for factory should be same class as in current classloader", | |||
| typeClass, TYPE_CLASS2 ); | |||
| } | |||
| catch( TypeException e ) | |||
| { | |||
| fail( "Unable to create Type due to " + e ); | |||
| } | |||
| } | |||
| /** | |||
| * Make sure that when you load a type from a RelaodableTypeFactory | |||
| * that it is actually reloaded. | |||
| */ | |||
| public void testReloadingTypeFactory() | |||
| throws Exception | |||
| { | |||
| final File file = new File( TYPE_JAR ); | |||
| assertTrue( "Support Jar exists", file.exists() ); | |||
| final URL[] classpath = new URL[]{file.toURL()}; | |||
| final ClassLoader classLoader = getClass().getClassLoader(); | |||
| final ReloadingTypeFactory factory = new ReloadingTypeFactory( classpath, null ); | |||
| factory.addNameClassMapping( TYPE_NAME1, TYPE_CLASSNAME1 ); | |||
| try | |||
| { | |||
| final Object type = factory.create( TYPE_NAME1 ); | |||
| final Class typeClass = type.getClass(); | |||
| final boolean sameClass = typeClass == TYPE_CLASS1; | |||
| assertTrue( "The type loaded for factory should not be same class as in current classloader", | |||
| !sameClass ); | |||
| } | |||
| catch( TypeException e ) | |||
| { | |||
| fail( "Unable to create Type due to " + e ); | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,22 @@ | |||
| /* | |||
| * Copyright (C) The Apache Software Foundation. All rights reserved. | |||
| * | |||
| * This software is published under the terms of the Apache Software License | |||
| * version 1.1, a copy of which has been included with this distribution in | |||
| * the LICENSE.txt file. | |||
| */ | |||
| package org.apache.myrmidon.interfaces.type; | |||
| /** | |||
| * A basic implementation of a type to test the type factory. | |||
| * | |||
| * @author <a href="mailto:peter@apache.org">Peter Donald</a> | |||
| * @version $Revision$ $Date$ | |||
| */ | |||
| public class MyType1 | |||
| { | |||
| public boolean equals( final Object object ) | |||
| { | |||
| return object.getClass() == getClass(); | |||
| } | |||
| } | |||
| @@ -0,0 +1,22 @@ | |||
| /* | |||
| * Copyright (C) The Apache Software Foundation. All rights reserved. | |||
| * | |||
| * This software is published under the terms of the Apache Software License | |||
| * version 1.1, a copy of which has been included with this distribution in | |||
| * the LICENSE.txt file. | |||
| */ | |||
| package org.apache.myrmidon.interfaces.type; | |||
| /** | |||
| * A basic implementation of a type to test the type factory. | |||
| * | |||
| * @author <a href="mailto:peter@apache.org">Peter Donald</a> | |||
| * @version $Revision$ $Date$ | |||
| */ | |||
| public class MyType2 | |||
| { | |||
| public boolean equals( final Object object ) | |||
| { | |||
| return object.getClass() == getClass(); | |||
| } | |||
| } | |||
| @@ -0,0 +1,88 @@ | |||
| /* | |||
| * Copyright (C) The Apache Software Foundation. All rights reserved. | |||
| * | |||
| * This software is published under the terms of the Apache Software License | |||
| * version 1.1, a copy of which has been included with this distribution in | |||
| * the LICENSE.txt file. | |||
| */ | |||
| package org.apache.myrmidon.interfaces.type; | |||
| import java.io.File; | |||
| import java.net.URL; | |||
| import junit.framework.TestCase; | |||
| /** | |||
| * These are unit tests that test the basic operation of TypeFactorys. | |||
| * | |||
| * @author <a href="mailto:peter@apache.org">Peter Donald</a> | |||
| * @version $Revision$ $Date$ | |||
| */ | |||
| public class TypeFactoryTest | |||
| extends TestCase | |||
| { | |||
| private final static String TYPE_NAME1 = "my-type1"; | |||
| private final static String TYPE_NAME2 = "my-type2"; | |||
| private final static Class TYPE_CLASS1 = MyType1.class; | |||
| private final static Class TYPE_CLASS2 = MyType2.class; | |||
| private final static String TYPE_CLASSNAME1 = TYPE_CLASS1.getName(); | |||
| private final static String TYPE_CLASSNAME2 = TYPE_CLASS2.getName(); | |||
| private final static String TYPE_JAR = | |||
| "src/testcases/org/apache/myrmidon/interfaces/type/types.jar".replace( '/', File.separatorChar ); | |||
| public TypeFactoryTest( final String name ) | |||
| { | |||
| super( name ); | |||
| } | |||
| /** | |||
| * Make sure that you can load a basic type from DefaultTypeManager. | |||
| */ | |||
| public void testBasicType() | |||
| { | |||
| final ClassLoader classLoader = getClass().getClassLoader(); | |||
| final DefaultTypeFactory factory = new DefaultTypeFactory( classLoader ); | |||
| factory.addNameClassMapping( TYPE_NAME2, TYPE_CLASSNAME2 ); | |||
| try | |||
| { | |||
| final Object type = factory.create( TYPE_NAME2 ); | |||
| final Class typeClass = type.getClass(); | |||
| assertEquals( "The type loaded for factory should be same class as in current classloader", | |||
| typeClass, TYPE_CLASS2 ); | |||
| } | |||
| catch( TypeException e ) | |||
| { | |||
| fail( "Unable to create Type due to " + e ); | |||
| } | |||
| } | |||
| /** | |||
| * Make sure that when you load a type from a RelaodableTypeFactory | |||
| * that it is actually reloaded. | |||
| */ | |||
| public void testReloadingTypeFactory() | |||
| throws Exception | |||
| { | |||
| final File file = new File( TYPE_JAR ); | |||
| assertTrue( "Support Jar exists", file.exists() ); | |||
| final URL[] classpath = new URL[]{file.toURL()}; | |||
| final ClassLoader classLoader = getClass().getClassLoader(); | |||
| final ReloadingTypeFactory factory = new ReloadingTypeFactory( classpath, null ); | |||
| factory.addNameClassMapping( TYPE_NAME1, TYPE_CLASSNAME1 ); | |||
| try | |||
| { | |||
| final Object type = factory.create( TYPE_NAME1 ); | |||
| final Class typeClass = type.getClass(); | |||
| final boolean sameClass = typeClass == TYPE_CLASS1; | |||
| assertTrue( "The type loaded for factory should not be same class as in current classloader", | |||
| !sameClass ); | |||
| } | |||
| catch( TypeException e ) | |||
| { | |||
| fail( "Unable to create Type due to " + e ); | |||
| } | |||
| } | |||
| } | |||