Added unit tests for MethodUtils copied from the beanutils component.
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/lang/trunk@137125 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
4914d5c807
commit
7b38db1c30
20
build.xml
20
build.xml
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
"Lang" component of the Jakarta Commons Subproject
|
"Lang" component of the Jakarta Commons Subproject
|
||||||
$Id: build.xml,v 1.5 2002/11/05 16:45:45 bayard Exp $
|
$Id: build.xml,v 1.6 2002/11/14 18:53:36 rdonkin Exp $
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
@ -153,7 +153,15 @@
|
||||||
<!-- ========== Unit Test Targets ========================================= -->
|
<!-- ========== Unit Test Targets ========================================= -->
|
||||||
|
|
||||||
|
|
||||||
<target name="test" depends="compile.tests, test.lang, test.exception, test.enum, test.builder, test.functor"
|
<target name="test" depends="
|
||||||
|
compile.tests,
|
||||||
|
test.lang,
|
||||||
|
test.exception,
|
||||||
|
test.enum,
|
||||||
|
test.builder,
|
||||||
|
test.functor,
|
||||||
|
test.reflect"
|
||||||
|
|
||||||
description="Run all unit test cases">
|
description="Run all unit test cases">
|
||||||
<echo message="Running tests ..."/>
|
<echo message="Running tests ..."/>
|
||||||
</target>
|
</target>
|
||||||
|
@ -203,4 +211,12 @@
|
||||||
</java>
|
</java>
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
|
<target name="test.reflect" depends="compile.tests">
|
||||||
|
<echo message="Running reflect package tests ..."/>
|
||||||
|
<java classname="${test.runner}" fork="yes"
|
||||||
|
failonerror="${test.failonerror}">
|
||||||
|
<arg value="org.apache.commons.lang.reflect.ReflectTestSuite"/>
|
||||||
|
<classpath refid="test.classpath"/>
|
||||||
|
</java>
|
||||||
|
</target>
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -0,0 +1,74 @@
|
||||||
|
/*
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* The Apache Software License, Version 1.1
|
||||||
|
*
|
||||||
|
* Copyright (c) 1999-2002 The Apache Software Foundation. All rights
|
||||||
|
* reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in
|
||||||
|
* the documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
*
|
||||||
|
* 3. The end-user documentation included with the redistribution, if
|
||||||
|
* any, must include the following acknowlegement:
|
||||||
|
* "This product includes software developed by the
|
||||||
|
* Apache Software Foundation (http://www.apache.org/)."
|
||||||
|
* Alternately, this acknowlegement may appear in the software itself,
|
||||||
|
* if and wherever such third-party acknowlegements normally appear.
|
||||||
|
*
|
||||||
|
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
|
||||||
|
* Foundation" must not be used to endorse or promote products derived
|
||||||
|
* from this software without prior written permission. For written
|
||||||
|
* permission, please contact apache@apache.org.
|
||||||
|
*
|
||||||
|
* 5. Products derived from this software may not be called "Apache"
|
||||||
|
* nor may "Apache" appear in their names without prior written
|
||||||
|
* permission of the Apache Group.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
|
||||||
|
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
||||||
|
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||||
|
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* This software consists of voluntary contributions made by many
|
||||||
|
* individuals on behalf of the Apache Software Foundation. For more
|
||||||
|
* information on the Apache Software Foundation, please see
|
||||||
|
* <http://www.apache.org/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.apache.commons.lang.reflect;
|
||||||
|
|
||||||
|
public class AbstractChild implements Child {
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
protected void setName(String name)
|
||||||
|
{
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName()
|
||||||
|
{
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,94 @@
|
||||||
|
/*
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* The Apache Software License, Version 1.1
|
||||||
|
*
|
||||||
|
* Copyright (c) 1999-2002 The Apache Software Foundation. All rights
|
||||||
|
* reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in
|
||||||
|
* the documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
*
|
||||||
|
* 3. The end-user documentation included with the redistribution, if
|
||||||
|
* any, must include the following acknowlegement:
|
||||||
|
* "This product includes software developed by the
|
||||||
|
* Apache Software Foundation (http://www.apache.org/)."
|
||||||
|
* Alternately, this acknowlegement may appear in the software itself,
|
||||||
|
* if and wherever such third-party acknowlegements normally appear.
|
||||||
|
*
|
||||||
|
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
|
||||||
|
* Foundation" must not be used to endorse or promote products derived
|
||||||
|
* from this software without prior written permission. For written
|
||||||
|
* permission, please contact apache@apache.org.
|
||||||
|
*
|
||||||
|
* 5. Products derived from this software may not be called "Apache"
|
||||||
|
* nor may "Apache" appear in their names without prior written
|
||||||
|
* permission of the Apache Group.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
|
||||||
|
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
||||||
|
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||||
|
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* This software consists of voluntary contributions made by many
|
||||||
|
* individuals on behalf of the Apache Software Foundation. For more
|
||||||
|
* information on the Apache Software Foundation, please see
|
||||||
|
* <http://www.apache.org/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.apache.commons.lang.reflect;
|
||||||
|
|
||||||
|
public abstract class AbstractParent {
|
||||||
|
|
||||||
|
private Child child;
|
||||||
|
|
||||||
|
public Child getChild()
|
||||||
|
{
|
||||||
|
return child;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method which matches signature but which has wrong parameters
|
||||||
|
*/
|
||||||
|
public String testAddChild(String badParameter) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method which matches signature but which has wrong parameters
|
||||||
|
*/
|
||||||
|
public String testAddChild2(String ignore, String badParameter) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String testAddChild(Child child) {
|
||||||
|
this.child = child;
|
||||||
|
return child.getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String testAddChild2(String ignore, Child child) {
|
||||||
|
this.child = child;
|
||||||
|
return child.getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,80 @@
|
||||||
|
/*
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* The Apache Software License, Version 1.1
|
||||||
|
*
|
||||||
|
* Copyright (c) 1999-2002 The Apache Software Foundation. All rights
|
||||||
|
* reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in
|
||||||
|
* the documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
*
|
||||||
|
* 3. The end-user documentation included with the redistribution, if
|
||||||
|
* any, must include the following acknowlegement:
|
||||||
|
* "This product includes software developed by the
|
||||||
|
* Apache Software Foundation (http://www.apache.org/)."
|
||||||
|
* Alternately, this acknowlegement may appear in the software itself,
|
||||||
|
* if and wherever such third-party acknowlegements normally appear.
|
||||||
|
*
|
||||||
|
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
|
||||||
|
* Foundation" must not be used to endorse or promote products derived
|
||||||
|
* from this software without prior written permission. For written
|
||||||
|
* permission, please contact apache@apache.org.
|
||||||
|
*
|
||||||
|
* 5. Products derived from this software may not be called "Apache"
|
||||||
|
* nor may "Apache" appear in their names without prior written
|
||||||
|
* permission of the Apache Group.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
|
||||||
|
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
||||||
|
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||||
|
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* This software consists of voluntary contributions made by many
|
||||||
|
* individuals on behalf of the Apache Software Foundation. For more
|
||||||
|
* information on the Apache Software Foundation, please see
|
||||||
|
* <http://www.apache.org/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.apache.commons.lang.reflect;
|
||||||
|
|
||||||
|
public class AlphaBean extends AbstractParent implements Child {
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
public AlphaBean(String name) {
|
||||||
|
setName(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used for testing that correct exception is thrown.
|
||||||
|
*/
|
||||||
|
public void bogus(String badParameter){}
|
||||||
|
}
|
|
@ -0,0 +1,65 @@
|
||||||
|
/*
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* The Apache Software License, Version 1.1
|
||||||
|
*
|
||||||
|
* Copyright (c) 1999-2002 The Apache Software Foundation. All rights
|
||||||
|
* reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in
|
||||||
|
* the documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
*
|
||||||
|
* 3. The end-user documentation included with the redistribution, if
|
||||||
|
* any, must include the following acknowlegement:
|
||||||
|
* "This product includes software developed by the
|
||||||
|
* Apache Software Foundation (http://www.apache.org/)."
|
||||||
|
* Alternately, this acknowlegement may appear in the software itself,
|
||||||
|
* if and wherever such third-party acknowlegements normally appear.
|
||||||
|
*
|
||||||
|
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
|
||||||
|
* Foundation" must not be used to endorse or promote products derived
|
||||||
|
* from this software without prior written permission. For written
|
||||||
|
* permission, please contact apache@apache.org.
|
||||||
|
*
|
||||||
|
* 5. Products derived from this software may not be called "Apache"
|
||||||
|
* nor may "Apache" appear in their names without prior written
|
||||||
|
* permission of the Apache Group.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
|
||||||
|
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
||||||
|
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||||
|
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* This software consists of voluntary contributions made by many
|
||||||
|
* individuals on behalf of the Apache Software Foundation. For more
|
||||||
|
* information on the Apache Software Foundation, please see
|
||||||
|
* <http://www.apache.org/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.apache.commons.lang.reflect;
|
||||||
|
|
||||||
|
public class BetaBean extends AbstractChild {
|
||||||
|
|
||||||
|
public BetaBean(String name) {
|
||||||
|
setName(name);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,64 @@
|
||||||
|
/*
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* The Apache Software License, Version 1.1
|
||||||
|
*
|
||||||
|
* Copyright (c) 1999-2002 The Apache Software Foundation. All rights
|
||||||
|
* reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in
|
||||||
|
* the documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
*
|
||||||
|
* 3. The end-user documentation included with the redistribution, if
|
||||||
|
* any, must include the following acknowlegement:
|
||||||
|
* "This product includes software developed by the
|
||||||
|
* Apache Software Foundation (http://www.apache.org/)."
|
||||||
|
* Alternately, this acknowlegement may appear in the software itself,
|
||||||
|
* if and wherever such third-party acknowlegements normally appear.
|
||||||
|
*
|
||||||
|
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
|
||||||
|
* Foundation" must not be used to endorse or promote products derived
|
||||||
|
* from this software without prior written permission. For written
|
||||||
|
* permission, please contact apache@apache.org.
|
||||||
|
*
|
||||||
|
* 5. Products derived from this software may not be called "Apache"
|
||||||
|
* nor may "Apache" appear in their names without prior written
|
||||||
|
* permission of the Apache Group.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
|
||||||
|
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
||||||
|
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||||
|
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* This software consists of voluntary contributions made by many
|
||||||
|
* individuals on behalf of the Apache Software Foundation. For more
|
||||||
|
* information on the Apache Software Foundation, please see
|
||||||
|
* <http://www.apache.org/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
package org.apache.commons.lang.reflect;
|
||||||
|
|
||||||
|
public interface Child {
|
||||||
|
|
||||||
|
public String getName();
|
||||||
|
}
|
|
@ -0,0 +1,586 @@
|
||||||
|
/*
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* The Apache Software License, Version 1.1
|
||||||
|
*
|
||||||
|
* Copyright (c) 1999-2002 The Apache Software Foundation. All rights
|
||||||
|
* reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in
|
||||||
|
* the documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
*
|
||||||
|
* 3. The end-user documentation included with the redistribution, if
|
||||||
|
* any, must include the following acknowlegement:
|
||||||
|
* "This product includes software developed by the
|
||||||
|
* Apache Software Foundation (http://www.apache.org/)."
|
||||||
|
* Alternately, this acknowlegement may appear in the software itself,
|
||||||
|
* if and wherever such third-party acknowlegements normally appear.
|
||||||
|
*
|
||||||
|
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
|
||||||
|
* Foundation" must not be used to endorse or promote products derived
|
||||||
|
* from this software without prior written permission. For written
|
||||||
|
* permission, please contact apache@apache.org.
|
||||||
|
*
|
||||||
|
* 5. Products derived from this software may not be called "Apache"
|
||||||
|
* nor may "Apache" appear in their names without prior written
|
||||||
|
* permission of the Apache Group.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
|
||||||
|
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
||||||
|
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||||
|
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* This software consists of voluntary contributions made by many
|
||||||
|
* individuals on behalf of the Apache Software Foundation. For more
|
||||||
|
* information on the Apache Software Foundation, please see
|
||||||
|
* <http://www.apache.org/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
package org.apache.commons.lang.reflect;
|
||||||
|
|
||||||
|
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
import java.lang.reflect.Modifier;
|
||||||
|
|
||||||
|
import org.apache.commons.lang.reflect.priv.PrivateBeanFactory;
|
||||||
|
import org.apache.commons.lang.reflect.priv.PublicSubBean;
|
||||||
|
|
||||||
|
import junit.framework.TestCase;
|
||||||
|
import junit.framework.Test;
|
||||||
|
import junit.framework.TestSuite;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p> Test case for <code>MethodUtils</code> </p>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class MethodUtilsTestCase extends TestCase {
|
||||||
|
|
||||||
|
// ---------------------------------------------------- Instance Variables
|
||||||
|
|
||||||
|
protected PrivateBeanFactory privateBeanFactory;
|
||||||
|
|
||||||
|
// ---------------------------------------------------------- Constructors
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct a new instance of this test case.
|
||||||
|
*
|
||||||
|
* @param name Name of the test case
|
||||||
|
*/
|
||||||
|
public MethodUtilsTestCase(String name) {
|
||||||
|
super(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// -------------------------------------------------- Overall Test Methods
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set up instance variables required by this test case.
|
||||||
|
*/
|
||||||
|
public void setUp() {
|
||||||
|
privateBeanFactory = new PrivateBeanFactory();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the tests included in this test suite.
|
||||||
|
*/
|
||||||
|
public static Test suite() {
|
||||||
|
return (new TestSuite(MethodUtilsTestCase.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tear down instance variables required by this test case.
|
||||||
|
*/
|
||||||
|
public void tearDown() {
|
||||||
|
privateBeanFactory = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ------------------------------------------------ Individual Test Methods
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p> Test <code>getAccessibleMethod</code>.
|
||||||
|
*/
|
||||||
|
public void testGetAccessibleMethod() {
|
||||||
|
// test MethodUtils.getAccessibleMethod
|
||||||
|
// we'll make things easier by using the convenience methods
|
||||||
|
|
||||||
|
// easy bit first - find a public method
|
||||||
|
// METHOD ONE
|
||||||
|
Method method = MethodUtils.getAccessibleMethod
|
||||||
|
(TestBean.class, "setStringProperty", String.class);
|
||||||
|
|
||||||
|
// check that we've found one that matches
|
||||||
|
assertNotNull(method);
|
||||||
|
assertEquals("method ONE is named correctly",
|
||||||
|
"setStringProperty", method.getName());
|
||||||
|
assertTrue("Method ONE is public",
|
||||||
|
Modifier.isPublic(method.getModifiers()));
|
||||||
|
|
||||||
|
// trickier this one - find a method in a direct interface
|
||||||
|
// METHOD TWO
|
||||||
|
method = MethodUtils.getAccessibleMethod
|
||||||
|
(privateBeanFactory.create().getClass(),
|
||||||
|
"methodBar",
|
||||||
|
String.class);
|
||||||
|
|
||||||
|
// check that we've found one that matches
|
||||||
|
assertNotNull(method);
|
||||||
|
assertEquals("Method TWO is named correctly",
|
||||||
|
"methodBar", method.getName());
|
||||||
|
assertTrue("Method TWO is public",
|
||||||
|
Modifier.isPublic(method.getModifiers()));
|
||||||
|
|
||||||
|
// trickier this one - find a method in a indirect interface
|
||||||
|
// METHOD THREE
|
||||||
|
method = MethodUtils.getAccessibleMethod
|
||||||
|
(privateBeanFactory.createSubclass().getClass(),
|
||||||
|
"methodBaz",
|
||||||
|
String.class);
|
||||||
|
|
||||||
|
// check that we've found one that matches
|
||||||
|
assertNotNull(method);
|
||||||
|
assertEquals("Method THREE is named correctly",
|
||||||
|
"methodBaz", method.getName());
|
||||||
|
assertTrue("Method THREE is public",
|
||||||
|
Modifier.isPublic(method.getModifiers()));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p> Test <code>invokeExactMethod</code>.
|
||||||
|
*/
|
||||||
|
public void testInvokeExactMethod() {
|
||||||
|
// test MethodUtils.invokeExactMethod
|
||||||
|
// easy bit first - invoke a public method
|
||||||
|
// METHOD ONE
|
||||||
|
try {
|
||||||
|
|
||||||
|
TestBean bean = new TestBean();
|
||||||
|
Object ret = MethodUtils.invokeExactMethod(bean, "setStringProperty", "TEST");
|
||||||
|
// check that the return's right and that the properties been set
|
||||||
|
assertNull(ret);
|
||||||
|
assertEquals("Method ONE was invoked", "TEST", bean.getStringProperty());
|
||||||
|
|
||||||
|
} catch (Throwable t) {
|
||||||
|
// ONE
|
||||||
|
fail("Exception in method ONE prevented invokation: " + t.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
// trickier this one - find a method in a direct interface
|
||||||
|
// METHOD TWO FAILURE
|
||||||
|
try {
|
||||||
|
|
||||||
|
Object ret = MethodUtils.invokeExactMethod(
|
||||||
|
privateBeanFactory.create(),
|
||||||
|
"methodBar",
|
||||||
|
"ANOTHER TEST");
|
||||||
|
|
||||||
|
// check that we've found one that matches
|
||||||
|
assertEquals("Method TWO was invoked correctly", "ANOTHER TEST", ret);
|
||||||
|
|
||||||
|
} catch (Throwable t) {
|
||||||
|
// METHOD TWO FAILURE
|
||||||
|
fail("Exception in method TWO prevented invokation: " + t.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// trickier this one - find a method in a indirect interface
|
||||||
|
// METHOD THREE
|
||||||
|
try {
|
||||||
|
|
||||||
|
Object ret = MethodUtils.invokeExactMethod(
|
||||||
|
privateBeanFactory.createSubclass(),
|
||||||
|
"methodBaz",
|
||||||
|
"YET ANOTHER TEST");
|
||||||
|
|
||||||
|
|
||||||
|
// check that we've found one that matches
|
||||||
|
assertEquals("Method TWO was invoked correctly", "YET ANOTHER TEST", ret);
|
||||||
|
|
||||||
|
|
||||||
|
} catch (Throwable t) {
|
||||||
|
// METHOD THREE FAILURE
|
||||||
|
fail("Exception in method THREE prevented invokation: " + t.toString());
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p> Test <code>invokeMethod</code>.
|
||||||
|
*/
|
||||||
|
public void testInvokeMethod() throws Exception {
|
||||||
|
// i'm going to test that the actual calls work first and then try them via reflection
|
||||||
|
|
||||||
|
AbstractParent parent = new AlphaBean("parent");
|
||||||
|
|
||||||
|
// try testAddChild through abstract superclass
|
||||||
|
BetaBean childOne = new BetaBean("ChildOne");
|
||||||
|
|
||||||
|
assertEquals("Oh no! Badly coded test case! (1)", "ChildOne", parent.testAddChild(childOne));
|
||||||
|
|
||||||
|
// let's try MethodUtils version
|
||||||
|
assertEquals(
|
||||||
|
"Cannot invoke through abstract class (1)",
|
||||||
|
"ChildOne",
|
||||||
|
MethodUtils.invokeMethod(parent, "testAddChild", childOne));
|
||||||
|
|
||||||
|
|
||||||
|
// try adding through interface
|
||||||
|
AlphaBean childTwo = new AlphaBean("ChildTwo");
|
||||||
|
|
||||||
|
assertEquals("Oh no! Badly coded test case! (2)", "ChildTwo", parent.testAddChild(childTwo));
|
||||||
|
|
||||||
|
// let's try MethodUtils version
|
||||||
|
assertEquals(
|
||||||
|
"Cannot invoke through interface (1)",
|
||||||
|
"ChildTwo",
|
||||||
|
MethodUtils.invokeMethod(parent, "testAddChild", childTwo));
|
||||||
|
|
||||||
|
|
||||||
|
Object[] params = new Object[2];
|
||||||
|
|
||||||
|
assertEquals("Oh no! Badly coded test case! (3)", "ChildOne", parent.testAddChild2("parameter", childOne));
|
||||||
|
|
||||||
|
|
||||||
|
// let's try MethodUtils version
|
||||||
|
params[0] = "parameter";
|
||||||
|
params[1] = childOne;
|
||||||
|
|
||||||
|
assertEquals(
|
||||||
|
"Cannot invoke through abstract class (1)",
|
||||||
|
"ChildOne",
|
||||||
|
MethodUtils.invokeMethod(parent, "testAddChild2", params));
|
||||||
|
|
||||||
|
assertEquals("Oh no! Badly coded test case! (4)", "ChildTwo", parent.testAddChild2("parameter", childTwo));
|
||||||
|
|
||||||
|
// let's try MethodUtils version
|
||||||
|
params[0] = "parameter";
|
||||||
|
params[1] = childTwo;
|
||||||
|
|
||||||
|
assertEquals(
|
||||||
|
"Cannot invoke through abstract class (1)",
|
||||||
|
"ChildTwo",
|
||||||
|
MethodUtils.invokeMethod(parent, "testAddChild2", params));
|
||||||
|
|
||||||
|
// test that exception is correctly thrown when a method cannot be found with matching params
|
||||||
|
try {
|
||||||
|
// the next line
|
||||||
|
parent = new AlphaBean("parent");
|
||||||
|
childOne = new BetaBean("ChildOne");
|
||||||
|
MethodUtils.invokeMethod(parent, "bogus", childOne);
|
||||||
|
// should get here!
|
||||||
|
fail("No exception thrown when no appropriate method exists");
|
||||||
|
|
||||||
|
} catch (NoSuchMethodException e) {
|
||||||
|
// this is what we're expecting!
|
||||||
|
}
|
||||||
|
|
||||||
|
MethodUtils.invokeMethod(parent, "getName", null);
|
||||||
|
MethodUtils.invokeMethod(parent, "getName", null, null);
|
||||||
|
MethodUtils.invokeExactMethod(parent, "getName", null);
|
||||||
|
MethodUtils.invokeExactMethod(parent, "getName", null, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p> Test <code>invokeMethod</code> with a primitive.
|
||||||
|
*/
|
||||||
|
public void testInvokeMethodWithPrimitives() throws Exception {
|
||||||
|
// first test that the bean works
|
||||||
|
PrimitiveBean bean = new PrimitiveBean();
|
||||||
|
bean.setFloat(20.0f);
|
||||||
|
bean.setLong(10l);
|
||||||
|
bean.setBoolean(true);
|
||||||
|
bean.setInt(12);
|
||||||
|
bean.setDouble(25.5d);
|
||||||
|
|
||||||
|
assertEquals("Bug in PrimitiveBean (1)", 20.0f, bean.getFloat(), 0.01f);
|
||||||
|
assertEquals("Bug in PrimitiveBean (2)", 10, bean.getLong());
|
||||||
|
assertEquals("Bug in PrimitiveBean (3)", true, bean.getBoolean());
|
||||||
|
assertEquals("Bug in PrimitiveBean (4)", 12, bean.getInt());
|
||||||
|
assertEquals("Bug in PrimitiveBean (5)", 25.5d, bean.getDouble(), 0.01f);
|
||||||
|
|
||||||
|
bean = new PrimitiveBean();
|
||||||
|
MethodUtils.invokeMethod(bean, "setBoolean", new Boolean(true));
|
||||||
|
assertEquals("Call boolean property using invokeMethod", true, bean.getBoolean());
|
||||||
|
|
||||||
|
bean = new PrimitiveBean();
|
||||||
|
MethodUtils.invokeMethod(bean, "setFloat", new Float(20.0f));
|
||||||
|
assertEquals("Call float property using invokeMethod", 20.0f, bean.getFloat(), 0.01f);
|
||||||
|
|
||||||
|
bean = new PrimitiveBean();
|
||||||
|
MethodUtils.invokeMethod(bean, "setLong", new Long(10));
|
||||||
|
assertEquals("Call float property using invokeMethod", 10, bean.getLong());
|
||||||
|
|
||||||
|
bean = new PrimitiveBean();
|
||||||
|
MethodUtils.invokeMethod(bean, "setInt", new Integer(12));
|
||||||
|
assertEquals("Set float property using invokeMethod", 12, bean.getInt());
|
||||||
|
|
||||||
|
bean = new PrimitiveBean();
|
||||||
|
MethodUtils.invokeMethod(bean, "setDouble", new Double(25.5d));
|
||||||
|
assertEquals("Set float property using invokeMethod", 25.5d, bean.getDouble(), 0.01d);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Simple tests for accessing static methods via invokeMethod().
|
||||||
|
*/
|
||||||
|
public void testSimpleStatic1() {
|
||||||
|
|
||||||
|
TestBean bean = new TestBean();
|
||||||
|
Object value = null;
|
||||||
|
int current = TestBean.currentCounter();
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
// Return initial value of the counter
|
||||||
|
value = MethodUtils.invokeMethod
|
||||||
|
(bean, "currentCounter", new Object[0], new Class[0]);
|
||||||
|
assertNotNull("currentCounter exists", value);
|
||||||
|
assertTrue("currentCounter type",
|
||||||
|
value instanceof Integer);
|
||||||
|
assertEquals("currentCounter value",
|
||||||
|
current,
|
||||||
|
((Integer) value).intValue());
|
||||||
|
|
||||||
|
// Increment via no-arguments version
|
||||||
|
MethodUtils.invokeMethod
|
||||||
|
(bean, "incrementCounter", new Object[0], new Class[0]);
|
||||||
|
|
||||||
|
// Validate updated value
|
||||||
|
current++;
|
||||||
|
value = MethodUtils.invokeMethod
|
||||||
|
(bean, "currentCounter", new Object[0], new Class[0]);
|
||||||
|
assertNotNull("currentCounter exists", value);
|
||||||
|
assertTrue("currentCounter type",
|
||||||
|
value instanceof Integer);
|
||||||
|
assertEquals("currentCounter value",
|
||||||
|
current,
|
||||||
|
((Integer) value).intValue());
|
||||||
|
|
||||||
|
// Increment via specified-argument version
|
||||||
|
MethodUtils.invokeMethod
|
||||||
|
(bean, "incrementCounter",
|
||||||
|
new Object[] { new Integer(5) },
|
||||||
|
new Class[] { Integer.TYPE });
|
||||||
|
|
||||||
|
// Validate updated value
|
||||||
|
current += 5;
|
||||||
|
value = MethodUtils.invokeMethod
|
||||||
|
(bean, "currentCounter", new Object[0], new Class[0]);
|
||||||
|
assertNotNull("currentCounter exists", value);
|
||||||
|
assertTrue("currentCounter type",
|
||||||
|
value instanceof Integer);
|
||||||
|
assertEquals("currentCounter value",
|
||||||
|
current,
|
||||||
|
((Integer) value).intValue());
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
fail("Threw exception" + e);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Simple tests for accessing static methods via invokeExactMethod().
|
||||||
|
*/
|
||||||
|
public void testSimpleStatic2() {
|
||||||
|
|
||||||
|
TestBean bean = new TestBean();
|
||||||
|
Object value = null;
|
||||||
|
int current = TestBean.currentCounter();
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
// Return initial value of the counter
|
||||||
|
value = MethodUtils.invokeExactMethod
|
||||||
|
(bean, "currentCounter", new Object[0], new Class[0]);
|
||||||
|
assertNotNull("currentCounter exists", value);
|
||||||
|
assertTrue("currentCounter type",
|
||||||
|
value instanceof Integer);
|
||||||
|
assertEquals("currentCounter value",
|
||||||
|
current,
|
||||||
|
((Integer) value).intValue());
|
||||||
|
|
||||||
|
// Increment via no-arguments version
|
||||||
|
MethodUtils.invokeExactMethod
|
||||||
|
(bean, "incrementCounter", new Object[0], new Class[0]);
|
||||||
|
|
||||||
|
// Validate updated value
|
||||||
|
current++;
|
||||||
|
value = MethodUtils.invokeExactMethod
|
||||||
|
(bean, "currentCounter", new Object[0], new Class[0]);
|
||||||
|
assertNotNull("currentCounter exists", value);
|
||||||
|
assertTrue("currentCounter type",
|
||||||
|
value instanceof Integer);
|
||||||
|
assertEquals("currentCounter value",
|
||||||
|
current,
|
||||||
|
((Integer) value).intValue());
|
||||||
|
|
||||||
|
// Increment via specified-argument version
|
||||||
|
MethodUtils.invokeExactMethod
|
||||||
|
(bean, "incrementCounter",
|
||||||
|
new Object[] { new Integer(5) },
|
||||||
|
new Class[] { Integer.TYPE });
|
||||||
|
|
||||||
|
// Validate updated value
|
||||||
|
current += 5;
|
||||||
|
value = MethodUtils.invokeExactMethod
|
||||||
|
(bean, "currentCounter", new Object[0], new Class[0]);
|
||||||
|
assertNotNull("currentCounter exists", value);
|
||||||
|
assertTrue("currentCounter type",
|
||||||
|
value instanceof Integer);
|
||||||
|
assertEquals("currentCounter value",
|
||||||
|
current,
|
||||||
|
((Integer) value).intValue());
|
||||||
|
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
fail("Threw exception" + e);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Simple tests for accessing static methods via getAccessibleMethod()
|
||||||
|
*/
|
||||||
|
public void testSimpleStatic3() {
|
||||||
|
|
||||||
|
Object value = null;
|
||||||
|
int current = TestBean.currentCounter();
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
// Acquire the methods we need
|
||||||
|
Method currentCounterMethod = MethodUtils.getAccessibleMethod
|
||||||
|
(TestBean.class, "currentCounter",
|
||||||
|
new Class[0]);
|
||||||
|
assertNotNull("currentCounterMethod exists",
|
||||||
|
currentCounterMethod);
|
||||||
|
assertEquals("currentCounterMethod name",
|
||||||
|
"currentCounter",
|
||||||
|
currentCounterMethod.getName());
|
||||||
|
assertEquals("currentCounterMethod args",
|
||||||
|
0,
|
||||||
|
currentCounterMethod.getParameterTypes().length);
|
||||||
|
assertTrue("currentCounterMethod public",
|
||||||
|
Modifier.isPublic(currentCounterMethod.getModifiers()));
|
||||||
|
assertTrue("currentCounterMethod static",
|
||||||
|
Modifier.isStatic(currentCounterMethod.getModifiers()));
|
||||||
|
Method incrementCounterMethod1 = MethodUtils.getAccessibleMethod
|
||||||
|
(TestBean.class, "incrementCounter",
|
||||||
|
new Class[0]);
|
||||||
|
assertNotNull("incrementCounterMethod1 exists",
|
||||||
|
incrementCounterMethod1);
|
||||||
|
assertEquals("incrementCounterMethod1 name",
|
||||||
|
"incrementCounter",
|
||||||
|
incrementCounterMethod1.getName());
|
||||||
|
assertEquals("incrementCounterMethod1 args",
|
||||||
|
0,
|
||||||
|
incrementCounterMethod1.getParameterTypes().length);
|
||||||
|
assertTrue("incrementCounterMethod1 public",
|
||||||
|
Modifier.isPublic(incrementCounterMethod1.getModifiers()));
|
||||||
|
assertTrue("incrementCounterMethod1 static",
|
||||||
|
Modifier.isStatic(incrementCounterMethod1.getModifiers()));
|
||||||
|
Method incrementCounterMethod2 = MethodUtils.getAccessibleMethod
|
||||||
|
(TestBean.class, "incrementCounter",
|
||||||
|
new Class[] { Integer.TYPE });
|
||||||
|
assertNotNull("incrementCounterMethod2 exists",
|
||||||
|
incrementCounterMethod2);
|
||||||
|
assertEquals("incrementCounterMethod2 name",
|
||||||
|
"incrementCounter",
|
||||||
|
incrementCounterMethod2.getName());
|
||||||
|
assertEquals("incrementCounterMethod2 args",
|
||||||
|
1,
|
||||||
|
incrementCounterMethod2.getParameterTypes().length);
|
||||||
|
assertTrue("incrementCounterMethod2 public",
|
||||||
|
Modifier.isPublic(incrementCounterMethod2.getModifiers()));
|
||||||
|
assertTrue("incrementCounterMethod2 static",
|
||||||
|
Modifier.isStatic(incrementCounterMethod2.getModifiers()));
|
||||||
|
|
||||||
|
// Return initial value of the counter
|
||||||
|
value = currentCounterMethod.invoke(null, new Object[0]);
|
||||||
|
assertNotNull("currentCounter exists", value);
|
||||||
|
assertTrue("currentCounter type",
|
||||||
|
value instanceof Integer);
|
||||||
|
assertEquals("currentCounter value",
|
||||||
|
current,
|
||||||
|
((Integer) value).intValue());
|
||||||
|
|
||||||
|
// Increment via no-arguments version
|
||||||
|
incrementCounterMethod1.invoke(null, new Object[0]);
|
||||||
|
|
||||||
|
// Validate updated value
|
||||||
|
current++;
|
||||||
|
value = currentCounterMethod.invoke(null, new Object[0]);
|
||||||
|
assertNotNull("currentCounter exists", value);
|
||||||
|
assertTrue("currentCounter type",
|
||||||
|
value instanceof Integer);
|
||||||
|
assertEquals("currentCounter value",
|
||||||
|
current,
|
||||||
|
((Integer) value).intValue());
|
||||||
|
|
||||||
|
// Increment via specified-argument version
|
||||||
|
incrementCounterMethod2.invoke(null,
|
||||||
|
new Object[] { new Integer(5) });
|
||||||
|
|
||||||
|
// Validate updated value
|
||||||
|
current += 5;
|
||||||
|
value = currentCounterMethod.invoke(null, new Object[0]);
|
||||||
|
assertNotNull("currentCounter exists", value);
|
||||||
|
assertTrue("currentCounter type",
|
||||||
|
value instanceof Integer);
|
||||||
|
assertEquals("currentCounter value",
|
||||||
|
current,
|
||||||
|
((Integer) value).intValue());
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
fail("Threw exception" + e);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testPublicSub() throws Exception {
|
||||||
|
// make sure that bean does what it should
|
||||||
|
PublicSubBean bean = new PublicSubBean();
|
||||||
|
assertEquals("Start value (foo)", bean.getFoo(), "This is foo");
|
||||||
|
assertEquals("Start value (bar)", bean.getBar(), "This is bar");
|
||||||
|
bean.setFoo("new foo");
|
||||||
|
bean.setBar("new bar");
|
||||||
|
assertEquals("Set value (foo)", bean.getFoo(), "new foo");
|
||||||
|
assertEquals("Set value (bar)", bean.getBar(), "new bar");
|
||||||
|
|
||||||
|
// see if we can access public methods in a default access superclass
|
||||||
|
// from a public access subclass instance
|
||||||
|
MethodUtils.invokeMethod(bean, "setFoo", "alpha");
|
||||||
|
assertEquals("Set value (foo:2)", bean.getFoo(), "alpha");
|
||||||
|
MethodUtils.invokeMethod(bean, "setBar", "beta");
|
||||||
|
assertEquals("Set value (bar:2)", bean.getFoo(), "alpha");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,110 @@
|
||||||
|
/*
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* The Apache Software License, Version 1.1
|
||||||
|
*
|
||||||
|
* Copyright (c) 1999-2002 The Apache Software Foundation. All rights
|
||||||
|
* reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in
|
||||||
|
* the documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
*
|
||||||
|
* 3. The end-user documentation included with the redistribution, if
|
||||||
|
* any, must include the following acknowlegement:
|
||||||
|
* "This product includes software developed by the
|
||||||
|
* Apache Software Foundation (http://www.apache.org/)."
|
||||||
|
* Alternately, this acknowlegement may appear in the software itself,
|
||||||
|
* if and wherever such third-party acknowlegements normally appear.
|
||||||
|
*
|
||||||
|
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
|
||||||
|
* Foundation" must not be used to endorse or promote products derived
|
||||||
|
* from this software without prior written permission. For written
|
||||||
|
* permission, please contact apache@apache.org.
|
||||||
|
*
|
||||||
|
* 5. Products derived from this software may not be called "Apache"
|
||||||
|
* nor may "Apache" appear in their names without prior written
|
||||||
|
* permission of the Apache Group.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
|
||||||
|
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
||||||
|
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||||
|
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* This software consists of voluntary contributions made by many
|
||||||
|
* individuals on behalf of the Apache Software Foundation. For more
|
||||||
|
* information on the Apache Software Foundation, please see
|
||||||
|
* <http://www.apache.org/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.apache.commons.lang.reflect;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bean that has primitive properties
|
||||||
|
*/
|
||||||
|
public class PrimitiveBean {
|
||||||
|
|
||||||
|
private float _float;
|
||||||
|
private double _double;
|
||||||
|
private boolean _boolean;
|
||||||
|
private long _long;
|
||||||
|
private int _int;
|
||||||
|
|
||||||
|
public float getFloat() {
|
||||||
|
return _float;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFloat(float _float) {
|
||||||
|
this._float = _float;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getDouble() {
|
||||||
|
return _double;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDouble(double _double) {
|
||||||
|
this._double = _double;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean getBoolean() {
|
||||||
|
return _boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBoolean(boolean _boolean) {
|
||||||
|
this._boolean = _boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getLong() {
|
||||||
|
return _long;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLong(long _long) {
|
||||||
|
this._long = _long;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getInt() {
|
||||||
|
return _int;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInt(int _int) {
|
||||||
|
this._int = _int;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,92 @@
|
||||||
|
/* ====================================================================
|
||||||
|
* The Apache Software License, Version 1.1
|
||||||
|
*
|
||||||
|
* Copyright (c) 2002 The Apache Software Foundation. All rights
|
||||||
|
* reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in
|
||||||
|
* the documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
*
|
||||||
|
* 3. The end-user documentation included with the redistribution, if
|
||||||
|
* any, must include the following acknowlegement:
|
||||||
|
* "This product includes software developed by the
|
||||||
|
* Apache Software Foundation (http://www.apache.org/)."
|
||||||
|
* Alternately, this acknowlegement may appear in the software itself,
|
||||||
|
* if and wherever such third-party acknowlegements normally appear.
|
||||||
|
*
|
||||||
|
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
|
||||||
|
* Foundation" must not be used to endorse or promote products derived
|
||||||
|
* from this software without prior written permission. For written
|
||||||
|
* permission, please contact apache@apache.org.
|
||||||
|
*
|
||||||
|
* 5. Products derived from this software may not be called "Apache"
|
||||||
|
* nor may "Apache" appear in their names without prior written
|
||||||
|
* permission of the Apache Software Foundation.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
|
||||||
|
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
||||||
|
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||||
|
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* This software consists of voluntary contributions made by many
|
||||||
|
* individuals on behalf of the Apache Software Foundation. For more
|
||||||
|
* information on the Apache Software Foundation, please see
|
||||||
|
* <http://www.apache.org/>.
|
||||||
|
*/
|
||||||
|
package org.apache.commons.lang.reflect;
|
||||||
|
|
||||||
|
import junit.framework.Test;
|
||||||
|
import junit.framework.TestCase;
|
||||||
|
import junit.framework.TestSuite;
|
||||||
|
import junit.textui.TestRunner;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test suite for the Reflect packages.
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:scolebourne@joda.org">Stephen Colebourne</a> (of original copied from)
|
||||||
|
* @author Robert Burrell Donkin
|
||||||
|
* @version $Id: ReflectTestSuite.java,v 1.1 2002/11/14 18:53:36 rdonkin Exp $
|
||||||
|
*/
|
||||||
|
public class ReflectTestSuite extends TestCase {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct a new instance.
|
||||||
|
*/
|
||||||
|
public ReflectTestSuite(String name) {
|
||||||
|
super(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Executor-line interface.
|
||||||
|
*/
|
||||||
|
public static void main(String[] args) {
|
||||||
|
TestRunner.run(suite());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the suite of tests
|
||||||
|
*/
|
||||||
|
public static Test suite() {
|
||||||
|
TestSuite suite = new TestSuite();
|
||||||
|
suite.addTest(MethodUtilsTestCase.suite());
|
||||||
|
return suite;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,506 @@
|
||||||
|
/*
|
||||||
|
* $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//lang/src/test/org/apache/commons/lang/reflect/Attic/TestBean.java,v 1.1 2002/11/14 18:53:36 rdonkin Exp $
|
||||||
|
* $Revision: 1.1 $
|
||||||
|
* $Date: 2002/11/14 18:53:36 $
|
||||||
|
*
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* The Apache Software License, Version 1.1
|
||||||
|
*
|
||||||
|
* Copyright (c) 1999-2002 The Apache Software Foundation. All rights
|
||||||
|
* reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in
|
||||||
|
* the documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
*
|
||||||
|
* 3. The end-user documentation included with the redistribution, if
|
||||||
|
* any, must include the following acknowlegement:
|
||||||
|
* "This product includes software developed by the
|
||||||
|
* Apache Software Foundation (http://www.apache.org/)."
|
||||||
|
* Alternately, this acknowlegement may appear in the software itself,
|
||||||
|
* if and wherever such third-party acknowlegements normally appear.
|
||||||
|
*
|
||||||
|
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
|
||||||
|
* Foundation" must not be used to endorse or promote products derived
|
||||||
|
* from this software without prior written permission. For written
|
||||||
|
* permission, please contact apache@apache.org.
|
||||||
|
*
|
||||||
|
* 5. Products derived from this software may not be called "Apache"
|
||||||
|
* nor may "Apache" appear in their names without prior written
|
||||||
|
* permission of the Apache Group.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
|
||||||
|
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
||||||
|
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||||
|
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* This software consists of voluntary contributions made by many
|
||||||
|
* individuals on behalf of the Apache Software Foundation. For more
|
||||||
|
* information on the Apache Software Foundation, please see
|
||||||
|
* <http://www.apache.org/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
package org.apache.commons.lang.reflect;
|
||||||
|
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* General purpose test bean for JUnit tests for the "beanutils" component.
|
||||||
|
*
|
||||||
|
* @author Craig R. McClanahan
|
||||||
|
* @version $Revision: 1.1 $ $Date: 2002/11/14 18:53:36 $
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class TestBean {
|
||||||
|
|
||||||
|
|
||||||
|
// ------------------------------------------------------------- Properties
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A boolean property.
|
||||||
|
*/
|
||||||
|
private boolean booleanProperty = true;
|
||||||
|
|
||||||
|
public boolean getBooleanProperty() {
|
||||||
|
return (booleanProperty);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBooleanProperty(boolean booleanProperty) {
|
||||||
|
this.booleanProperty = booleanProperty;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A boolean property that uses an "is" method for the getter.
|
||||||
|
*/
|
||||||
|
private boolean booleanSecond = true;
|
||||||
|
|
||||||
|
public boolean isBooleanSecond() {
|
||||||
|
return (booleanSecond);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBooleanSecond(boolean booleanSecond) {
|
||||||
|
this.booleanSecond = booleanSecond;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A double property.
|
||||||
|
*/
|
||||||
|
private double doubleProperty = 321.0;
|
||||||
|
|
||||||
|
public double getDoubleProperty() {
|
||||||
|
return (this.doubleProperty);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDoubleProperty(double doubleProperty) {
|
||||||
|
this.doubleProperty = doubleProperty;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An "indexed property" accessible via both array and subscript
|
||||||
|
* based getters and setters.
|
||||||
|
*/
|
||||||
|
private String dupProperty[] =
|
||||||
|
{ "Dup 0", "Dup 1", "Dup 2", "Dup 3", "Dup 4" };
|
||||||
|
|
||||||
|
public String[] getDupProperty() {
|
||||||
|
return (this.dupProperty);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDupProperty(int index) {
|
||||||
|
return (this.dupProperty[index]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDupProperty(int index, String value) {
|
||||||
|
this.dupProperty[index] = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDupProperty(String dupProperty[]) {
|
||||||
|
this.dupProperty = dupProperty;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A float property.
|
||||||
|
*/
|
||||||
|
private float floatProperty = (float) 123.0;
|
||||||
|
|
||||||
|
public float getFloatProperty() {
|
||||||
|
return (this.floatProperty);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFloatProperty(float floatProperty) {
|
||||||
|
this.floatProperty = floatProperty;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An integer array property accessed as an array.
|
||||||
|
*/
|
||||||
|
private int intArray[] = { 0, 10, 20, 30, 40 };
|
||||||
|
|
||||||
|
public int[] getIntArray() {
|
||||||
|
return (this.intArray);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIntArray(int intArray[]) {
|
||||||
|
this.intArray = intArray;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An integer array property accessed as an indexed property.
|
||||||
|
*/
|
||||||
|
private int intIndexed[] = { 0, 10, 20, 30, 40 };
|
||||||
|
|
||||||
|
public int getIntIndexed(int index) {
|
||||||
|
return (intIndexed[index]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIntIndexed(int index, int value) {
|
||||||
|
intIndexed[index] = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An integer property.
|
||||||
|
*/
|
||||||
|
private int intProperty = 123;
|
||||||
|
|
||||||
|
public int getIntProperty() {
|
||||||
|
return (this.intProperty);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIntProperty(int intProperty) {
|
||||||
|
this.intProperty = intProperty;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A List property accessed as an indexed property.
|
||||||
|
*/
|
||||||
|
private static List listIndexed = new ArrayList();
|
||||||
|
|
||||||
|
static {
|
||||||
|
listIndexed.add("String 0");
|
||||||
|
listIndexed.add("String 1");
|
||||||
|
listIndexed.add("String 2");
|
||||||
|
listIndexed.add("String 3");
|
||||||
|
listIndexed.add("String 4");
|
||||||
|
}
|
||||||
|
|
||||||
|
public List getListIndexed() {
|
||||||
|
return (listIndexed);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A long property.
|
||||||
|
*/
|
||||||
|
private long longProperty = 321;
|
||||||
|
|
||||||
|
public long getLongProperty() {
|
||||||
|
return (this.longProperty);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLongProperty(long longProperty) {
|
||||||
|
this.longProperty = longProperty;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A mapped property with only a getter and setter for a Map.
|
||||||
|
*/
|
||||||
|
private Map mapProperty = null;
|
||||||
|
|
||||||
|
public Map getMapProperty() {
|
||||||
|
// Create the map the very first time
|
||||||
|
if (mapProperty == null) {
|
||||||
|
mapProperty = new HashMap();
|
||||||
|
mapProperty.put("First Key", "First Value");
|
||||||
|
mapProperty.put("Second Key", "Second Value");
|
||||||
|
}
|
||||||
|
return (mapProperty);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMapProperty(Map mapProperty) {
|
||||||
|
// Create the map the very first time
|
||||||
|
if (mapProperty == null) {
|
||||||
|
mapProperty = new HashMap();
|
||||||
|
mapProperty.put("First Key", "First Value");
|
||||||
|
mapProperty.put("Second Key", "Second Value");
|
||||||
|
}
|
||||||
|
this.mapProperty = mapProperty;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A mapped property that has String keys and Object values.
|
||||||
|
*/
|
||||||
|
private HashMap mappedObjects = null;
|
||||||
|
|
||||||
|
public Object getMappedObjects(String key) {
|
||||||
|
// Create the map the very first time
|
||||||
|
if (mappedObjects == null) {
|
||||||
|
mappedObjects = new HashMap();
|
||||||
|
mappedObjects.put("First Key", "First Value");
|
||||||
|
mappedObjects.put("Second Key", "Second Value");
|
||||||
|
}
|
||||||
|
return (mappedObjects.get(key));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMappedObjects(String key, Object value) {
|
||||||
|
// Create the map the very first time
|
||||||
|
if (mappedObjects == null) {
|
||||||
|
mappedObjects = new HashMap();
|
||||||
|
mappedObjects.put("First Key", "First Value");
|
||||||
|
mappedObjects.put("Second Key", "Second Value");
|
||||||
|
}
|
||||||
|
mappedObjects.put(key, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A mapped property that has String keys and String values.
|
||||||
|
*/
|
||||||
|
private HashMap mappedProperty = null;
|
||||||
|
|
||||||
|
public String getMappedProperty(String key) {
|
||||||
|
// Create the map the very first time
|
||||||
|
if (mappedProperty == null) {
|
||||||
|
mappedProperty = new HashMap();
|
||||||
|
mappedProperty.put("First Key", "First Value");
|
||||||
|
mappedProperty.put("Second Key", "Second Value");
|
||||||
|
}
|
||||||
|
return ((String) mappedProperty.get(key));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMappedProperty(String key, String value) {
|
||||||
|
// Create the map the very first time
|
||||||
|
if (mappedProperty == null) {
|
||||||
|
mappedProperty = new HashMap();
|
||||||
|
mappedProperty.put("First Key", "First Value");
|
||||||
|
mappedProperty.put("Second Key", "Second Value");
|
||||||
|
}
|
||||||
|
mappedProperty.put(key, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A mapped property that has String keys and int values.
|
||||||
|
*/
|
||||||
|
private HashMap mappedIntProperty = null;
|
||||||
|
|
||||||
|
public int getMappedIntProperty(String key) {
|
||||||
|
// Create the map the very first time
|
||||||
|
if (mappedProperty == null) {
|
||||||
|
mappedProperty = new HashMap();
|
||||||
|
mappedProperty.put("One", new Integer(1));
|
||||||
|
mappedProperty.put("Two", new Integer(2));
|
||||||
|
}
|
||||||
|
Integer x = (Integer) mappedIntProperty.get(key);
|
||||||
|
return ((x == null) ? 0 : x.intValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMappedIntProperty(String key, int value) {
|
||||||
|
mappedIntProperty.put(key, new Integer(value));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A nested reference to another test bean (populated as needed).
|
||||||
|
*/
|
||||||
|
private TestBean nested = null;
|
||||||
|
|
||||||
|
public TestBean getNested() {
|
||||||
|
if (nested == null)
|
||||||
|
nested = new TestBean();
|
||||||
|
return (nested);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Another nested reference to a bean containing mapp properties
|
||||||
|
*/
|
||||||
|
class MappedTestBean {
|
||||||
|
public void setValue(String key,String val) { }
|
||||||
|
public String getValue(String key) { return "Mapped Value"; }
|
||||||
|
}
|
||||||
|
|
||||||
|
private MappedTestBean mappedNested = null;
|
||||||
|
|
||||||
|
public MappedTestBean getMappedNested() {
|
||||||
|
if (mappedNested == null)
|
||||||
|
{
|
||||||
|
mappedNested = new MappedTestBean();
|
||||||
|
}
|
||||||
|
return mappedNested;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A String property with an initial value of null.
|
||||||
|
*/
|
||||||
|
private String nullProperty = null;
|
||||||
|
|
||||||
|
public String getNullProperty() {
|
||||||
|
return (this.nullProperty);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNullProperty(String nullProperty) {
|
||||||
|
this.nullProperty = nullProperty;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A read-only String property.
|
||||||
|
*/
|
||||||
|
private String readOnlyProperty = "Read Only String Property";
|
||||||
|
|
||||||
|
public String getReadOnlyProperty() {
|
||||||
|
return (this.readOnlyProperty);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A short property.
|
||||||
|
*/
|
||||||
|
private short shortProperty = (short) 987;
|
||||||
|
|
||||||
|
public short getShortProperty() {
|
||||||
|
return (this.shortProperty);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setShortProperty(short shortProperty) {
|
||||||
|
this.shortProperty = shortProperty;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A String array property accessed as a String.
|
||||||
|
*/
|
||||||
|
private String stringArray[] =
|
||||||
|
{ "String 0", "String 1", "String 2", "String 3", "String 4" };
|
||||||
|
|
||||||
|
public String[] getStringArray() {
|
||||||
|
return (this.stringArray);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStringArray(String stringArray[]) {
|
||||||
|
this.stringArray = stringArray;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A String array property accessed as an indexed property.
|
||||||
|
*/
|
||||||
|
private String stringIndexed[] =
|
||||||
|
{ "String 0", "String 1", "String 2", "String 3", "String 4" };
|
||||||
|
|
||||||
|
public String getStringIndexed(int index) {
|
||||||
|
return (stringIndexed[index]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStringIndexed(int index, String value) {
|
||||||
|
stringIndexed[index] = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A String property.
|
||||||
|
*/
|
||||||
|
private String stringProperty = "This is a string";
|
||||||
|
|
||||||
|
public String getStringProperty() {
|
||||||
|
return (this.stringProperty);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStringProperty(String stringProperty) {
|
||||||
|
this.stringProperty = stringProperty;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A write-only String property.
|
||||||
|
*/
|
||||||
|
private String writeOnlyProperty = "Write Only String Property";
|
||||||
|
|
||||||
|
public String getWriteOnlyPropertyValue() {
|
||||||
|
return (this.writeOnlyProperty);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWriteOnlyProperty(String writeOnlyProperty) {
|
||||||
|
this.writeOnlyProperty = writeOnlyProperty;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ------------------------------------------------------- Static Variables
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A static variable that is accessed and updated via static methods
|
||||||
|
* for MethodUtils testing.
|
||||||
|
*/
|
||||||
|
private static int counter = 0;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the current value of the counter.
|
||||||
|
*/
|
||||||
|
public static int currentCounter() {
|
||||||
|
|
||||||
|
return (counter);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Increment the current value of the counter by 1.
|
||||||
|
*/
|
||||||
|
public static void incrementCounter() {
|
||||||
|
|
||||||
|
incrementCounter(1);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Increment the current value of the counter by the specified amount.
|
||||||
|
*
|
||||||
|
* @param amount Amount to be added to the current counter
|
||||||
|
*/
|
||||||
|
public static void incrementCounter(int amount) {
|
||||||
|
|
||||||
|
counter += amount;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,114 @@
|
||||||
|
/*
|
||||||
|
* $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//lang/src/test/org/apache/commons/lang/reflect/priv/Attic/PackageBean.java,v 1.1 2002/11/14 18:53:36 rdonkin Exp $
|
||||||
|
* $Revision: 1.1 $
|
||||||
|
* $Date: 2002/11/14 18:53:36 $
|
||||||
|
*
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* The Apache Software License, Version 1.1
|
||||||
|
*
|
||||||
|
* Copyright (c) 1999-2002 The Apache Software Foundation. All rights
|
||||||
|
* reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in
|
||||||
|
* the documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
*
|
||||||
|
* 3. The end-user documentation included with the redistribution, if
|
||||||
|
* any, must include the following acknowlegement:
|
||||||
|
* "This product includes software developed by the
|
||||||
|
* Apache Software Foundation (http://www.apache.org/)."
|
||||||
|
* Alternately, this acknowlegement may appear in the software itself,
|
||||||
|
* if and wherever such third-party acknowlegements normally appear.
|
||||||
|
*
|
||||||
|
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
|
||||||
|
* Foundation" must not be used to endorse or promote products derived
|
||||||
|
* from this software without prior written permission. For written
|
||||||
|
* permission, please contact apache@apache.org.
|
||||||
|
*
|
||||||
|
* 5. Products derived from this software may not be called "Apache"
|
||||||
|
* nor may "Apache" appear in their names without prior written
|
||||||
|
* permission of the Apache Group.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
|
||||||
|
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
||||||
|
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||||
|
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* This software consists of voluntary contributions made by many
|
||||||
|
* individuals on behalf of the Apache Software Foundation. For more
|
||||||
|
* information on the Apache Software Foundation, please see
|
||||||
|
* <http://www.apache.org/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
package org.apache.commons.lang.reflect.priv;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>This class is designed to test the default access jvm problem workaround.
|
||||||
|
* The issue is that public methods of a public subclass contained in a default access
|
||||||
|
* superclass are returned by reflection but an IllegalAccessException is thrown
|
||||||
|
* when they are invoked.</p>
|
||||||
|
*
|
||||||
|
* <p>This is the default access superclass</p>
|
||||||
|
*
|
||||||
|
* @author Robert Burrell Donkin
|
||||||
|
* @version $Revision: 1.1 $ $Date: 2002/11/14 18:53:36 $
|
||||||
|
*/
|
||||||
|
|
||||||
|
class PackageBean {
|
||||||
|
|
||||||
|
|
||||||
|
// ----------------------------------------------------------- Constructors
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Package private constructor - can only use factory method to create
|
||||||
|
* beans.
|
||||||
|
*/
|
||||||
|
PackageBean() {
|
||||||
|
|
||||||
|
super();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ------------------------------------------------------------- Properties
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*/
|
||||||
|
private String bar = "This is bar";
|
||||||
|
|
||||||
|
public String getBar() {
|
||||||
|
|
||||||
|
return (this.bar);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBar(String bar) {
|
||||||
|
|
||||||
|
this.bar = bar;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,155 @@
|
||||||
|
/*
|
||||||
|
* $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//lang/src/test/org/apache/commons/lang/reflect/priv/Attic/PrivateBean.java,v 1.1 2002/11/14 18:53:36 rdonkin Exp $
|
||||||
|
* $Revision: 1.1 $
|
||||||
|
* $Date: 2002/11/14 18:53:36 $
|
||||||
|
*
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* The Apache Software License, Version 1.1
|
||||||
|
*
|
||||||
|
* Copyright (c) 1999-2002 The Apache Software Foundation. All rights
|
||||||
|
* reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in
|
||||||
|
* the documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
*
|
||||||
|
* 3. The end-user documentation included with the redistribution, if
|
||||||
|
* any, must include the following acknowlegement:
|
||||||
|
* "This product includes software developed by the
|
||||||
|
* Apache Software Foundation (http://www.apache.org/)."
|
||||||
|
* Alternately, this acknowlegement may appear in the software itself,
|
||||||
|
* if and wherever such third-party acknowlegements normally appear.
|
||||||
|
*
|
||||||
|
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
|
||||||
|
* Foundation" must not be used to endorse or promote products derived
|
||||||
|
* from this software without prior written permission. For written
|
||||||
|
* permission, please contact apache@apache.org.
|
||||||
|
*
|
||||||
|
* 5. Products derived from this software may not be called "Apache"
|
||||||
|
* nor may "Apache" appear in their names without prior written
|
||||||
|
* permission of the Apache Group.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
|
||||||
|
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
||||||
|
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||||
|
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* This software consists of voluntary contributions made by many
|
||||||
|
* individuals on behalf of the Apache Software Foundation. For more
|
||||||
|
* information on the Apache Software Foundation, please see
|
||||||
|
* <http://www.apache.org/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
package org.apache.commons.lang.reflect.priv;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bean that has a private constructor that exposes properties via
|
||||||
|
* various mechanisms (based on property name):
|
||||||
|
* <ul>
|
||||||
|
* <li><strong>foo</strong> - Via direct public method
|
||||||
|
* <li><strong>bar</strong> - Via directly implemented interface
|
||||||
|
* <li><strong>baz</strong> - Via indirectly implemented interface
|
||||||
|
* </ul>
|
||||||
|
*
|
||||||
|
* @author Craig R. McClanahan
|
||||||
|
* @version $Revision: 1.1 $ $Date: 2002/11/14 18:53:36 $
|
||||||
|
*/
|
||||||
|
|
||||||
|
class PrivateBean implements PrivateDirect {
|
||||||
|
|
||||||
|
|
||||||
|
// ----------------------------------------------------------- Constructors
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Package private constructor - can only use factory method to create
|
||||||
|
* beans.
|
||||||
|
*/
|
||||||
|
PrivateBean() {
|
||||||
|
|
||||||
|
super();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ------------------------------------------------------------- Properties
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A directly implemented property.
|
||||||
|
*/
|
||||||
|
private String foo = "This is foo";
|
||||||
|
|
||||||
|
public String getFoo() {
|
||||||
|
|
||||||
|
return (this.foo);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A property accessible via a directly implemented interface.
|
||||||
|
*/
|
||||||
|
private String bar = "This is bar";
|
||||||
|
|
||||||
|
public String getBar() {
|
||||||
|
|
||||||
|
return (this.bar);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A method accessible via a directly implemented interface.
|
||||||
|
*/
|
||||||
|
public String methodBar(String in) {
|
||||||
|
|
||||||
|
return (in);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A property accessible via an indirectly implemented interface.
|
||||||
|
*/
|
||||||
|
private String baz = "This is baz";
|
||||||
|
|
||||||
|
public String getBaz() {
|
||||||
|
|
||||||
|
return (this.baz);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A method accessible via an indirectly implemented interface.
|
||||||
|
*/
|
||||||
|
public String methodBaz(String in) {
|
||||||
|
|
||||||
|
return (in);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,97 @@
|
||||||
|
/*
|
||||||
|
* $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//lang/src/test/org/apache/commons/lang/reflect/priv/Attic/PrivateBeanFactory.java,v 1.1 2002/11/14 18:53:36 rdonkin Exp $
|
||||||
|
* $Revision: 1.1 $
|
||||||
|
* $Date: 2002/11/14 18:53:36 $
|
||||||
|
*
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* The Apache Software License, Version 1.1
|
||||||
|
*
|
||||||
|
* Copyright (c) 1999-2002 The Apache Software Foundation. All rights
|
||||||
|
* reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in
|
||||||
|
* the documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
*
|
||||||
|
* 3. The end-user documentation included with the redistribution, if
|
||||||
|
* any, must include the following acknowlegement:
|
||||||
|
* "This product includes software developed by the
|
||||||
|
* Apache Software Foundation (http://www.apache.org/)."
|
||||||
|
* Alternately, this acknowlegement may appear in the software itself,
|
||||||
|
* if and wherever such third-party acknowlegements normally appear.
|
||||||
|
*
|
||||||
|
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
|
||||||
|
* Foundation" must not be used to endorse or promote products derived
|
||||||
|
* from this software without prior written permission. For written
|
||||||
|
* permission, please contact apache@apache.org.
|
||||||
|
*
|
||||||
|
* 5. Products derived from this software may not be called "Apache"
|
||||||
|
* nor may "Apache" appear in their names without prior written
|
||||||
|
* permission of the Apache Group.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
|
||||||
|
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
||||||
|
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||||
|
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* This software consists of voluntary contributions made by many
|
||||||
|
* individuals on behalf of the Apache Software Foundation. For more
|
||||||
|
* information on the Apache Software Foundation, please see
|
||||||
|
* <http://www.apache.org/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
package org.apache.commons.lang.reflect.priv;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Factory class for PrivateBean instances.
|
||||||
|
*
|
||||||
|
* @author Craig R. McClanahan
|
||||||
|
* @author Jan Sorensen
|
||||||
|
* @version $Revision: 1.1 $ $Date: 2002/11/14 18:53:36 $
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class PrivateBeanFactory {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Factory method to create new beans.
|
||||||
|
*/
|
||||||
|
public static PrivateDirect create() {
|
||||||
|
|
||||||
|
return (new PrivateBean());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Factory method to create new beans.
|
||||||
|
*/
|
||||||
|
public static PrivateDirect createSubclass() {
|
||||||
|
|
||||||
|
return (new PrivateBeanSubclass());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,103 @@
|
||||||
|
/*
|
||||||
|
* $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//lang/src/test/org/apache/commons/lang/reflect/priv/Attic/PrivateBeanSubclass.java,v 1.1 2002/11/14 18:53:36 rdonkin Exp $
|
||||||
|
* $Revision: 1.1 $
|
||||||
|
* $Date: 2002/11/14 18:53:36 $
|
||||||
|
*
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* The Apache Software License, Version 1.1
|
||||||
|
*
|
||||||
|
* Copyright (c) 1999-2002 The Apache Software Foundation. All rights
|
||||||
|
* reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in
|
||||||
|
* the documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
*
|
||||||
|
* 3. The end-user documentation included with the redistribution, if
|
||||||
|
* any, must include the following acknowlegement:
|
||||||
|
* "This product includes software developed by the
|
||||||
|
* Apache Software Foundation (http://www.apache.org/)."
|
||||||
|
* Alternately, this acknowlegement may appear in the software itself,
|
||||||
|
* if and wherever such third-party acknowlegements normally appear.
|
||||||
|
*
|
||||||
|
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
|
||||||
|
* Foundation" must not be used to endorse or promote products derived
|
||||||
|
* from this software without prior written permission. For written
|
||||||
|
* permission, please contact apache@apache.org.
|
||||||
|
*
|
||||||
|
* 5. Products derived from this software may not be called "Apache"
|
||||||
|
* nor may "Apache" appear in their names without prior written
|
||||||
|
* permission of the Apache Group.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
|
||||||
|
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
||||||
|
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||||
|
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* This software consists of voluntary contributions made by many
|
||||||
|
* individuals on behalf of the Apache Software Foundation. For more
|
||||||
|
* information on the Apache Software Foundation, please see
|
||||||
|
* <http://www.apache.org/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
package org.apache.commons.lang.reflect.priv;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bean that exposes methods defined by an interface that is implemented
|
||||||
|
* in the superclass.
|
||||||
|
*
|
||||||
|
* @author Jan Sorensen
|
||||||
|
* @version $Revision: 1.1 $ $Date: 2002/11/14 18:53:36 $
|
||||||
|
*/
|
||||||
|
|
||||||
|
class PrivateBeanSubclass extends PrivateBean {
|
||||||
|
|
||||||
|
|
||||||
|
// ----------------------------------------------------------- Constructors
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new PrivateBeanSubclass instance.
|
||||||
|
*/
|
||||||
|
PrivateBeanSubclass() {
|
||||||
|
|
||||||
|
super();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ------------------------------------------------------------- Properties
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A property accessible via the superclass.
|
||||||
|
*/
|
||||||
|
public String getBar() {
|
||||||
|
|
||||||
|
return (super.getBar());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,90 @@
|
||||||
|
/*
|
||||||
|
* $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//lang/src/test/org/apache/commons/lang/reflect/priv/Attic/PrivateDirect.java,v 1.1 2002/11/14 18:53:36 rdonkin Exp $
|
||||||
|
* $Revision: 1.1 $
|
||||||
|
* $Date: 2002/11/14 18:53:36 $
|
||||||
|
*
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* The Apache Software License, Version 1.1
|
||||||
|
*
|
||||||
|
* Copyright (c) 1999-2002 The Apache Software Foundation. All rights
|
||||||
|
* reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in
|
||||||
|
* the documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
*
|
||||||
|
* 3. The end-user documentation included with the redistribution, if
|
||||||
|
* any, must include the following acknowlegement:
|
||||||
|
* "This product includes software developed by the
|
||||||
|
* Apache Software Foundation (http://www.apache.org/)."
|
||||||
|
* Alternately, this acknowlegement may appear in the software itself,
|
||||||
|
* if and wherever such third-party acknowlegements normally appear.
|
||||||
|
*
|
||||||
|
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
|
||||||
|
* Foundation" must not be used to endorse or promote products derived
|
||||||
|
* from this software without prior written permission. For written
|
||||||
|
* permission, please contact apache@apache.org.
|
||||||
|
*
|
||||||
|
* 5. Products derived from this software may not be called "Apache"
|
||||||
|
* nor may "Apache" appear in their names without prior written
|
||||||
|
* permission of the Apache Group.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
|
||||||
|
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
||||||
|
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||||
|
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* This software consists of voluntary contributions made by many
|
||||||
|
* individuals on behalf of the Apache Software Foundation. For more
|
||||||
|
* information on the Apache Software Foundation, please see
|
||||||
|
* <http://www.apache.org/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
package org.apache.commons.lang.reflect.priv;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interface that is directly implemented by PrivateBean.
|
||||||
|
*
|
||||||
|
* @author Craig R. McClanahan
|
||||||
|
* @version $Revision: 1.1 $ $Date: 2002/11/14 18:53:36 $
|
||||||
|
*/
|
||||||
|
|
||||||
|
public interface PrivateDirect extends PrivateIndirect {
|
||||||
|
|
||||||
|
|
||||||
|
// ------------------------------------------------------------- Properties
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A property accessible via a directly implemented interface.
|
||||||
|
*/
|
||||||
|
String getBar();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A method accessible via a directly implemented interface.
|
||||||
|
*/
|
||||||
|
String methodBar(String in);
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,91 @@
|
||||||
|
/*
|
||||||
|
* $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//lang/src/test/org/apache/commons/lang/reflect/priv/Attic/PrivateIndirect.java,v 1.1 2002/11/14 18:53:36 rdonkin Exp $
|
||||||
|
* $Revision: 1.1 $
|
||||||
|
* $Date: 2002/11/14 18:53:36 $
|
||||||
|
*
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* The Apache Software License, Version 1.1
|
||||||
|
*
|
||||||
|
* Copyright (c) 1999-2002 The Apache Software Foundation. All rights
|
||||||
|
* reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in
|
||||||
|
* the documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
*
|
||||||
|
* 3. The end-user documentation included with the redistribution, if
|
||||||
|
* any, must include the following acknowlegement:
|
||||||
|
* "This product includes software developed by the
|
||||||
|
* Apache Software Foundation (http://www.apache.org/)."
|
||||||
|
* Alternately, this acknowlegement may appear in the software itself,
|
||||||
|
* if and wherever such third-party acknowlegements normally appear.
|
||||||
|
*
|
||||||
|
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
|
||||||
|
* Foundation" must not be used to endorse or promote products derived
|
||||||
|
* from this software without prior written permission. For written
|
||||||
|
* permission, please contact apache@apache.org.
|
||||||
|
*
|
||||||
|
* 5. Products derived from this software may not be called "Apache"
|
||||||
|
* nor may "Apache" appear in their names without prior written
|
||||||
|
* permission of the Apache Group.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
|
||||||
|
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
||||||
|
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||||
|
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* This software consists of voluntary contributions made by many
|
||||||
|
* individuals on behalf of the Apache Software Foundation. For more
|
||||||
|
* information on the Apache Software Foundation, please see
|
||||||
|
* <http://www.apache.org/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
package org.apache.commons.lang.reflect.priv;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interface that is indirectly implemented by PrivateBean.
|
||||||
|
*
|
||||||
|
* @author Craig R. McClanahan
|
||||||
|
* @version $Revision: 1.1 $ $Date: 2002/11/14 18:53:36 $
|
||||||
|
*/
|
||||||
|
|
||||||
|
public interface PrivateIndirect {
|
||||||
|
|
||||||
|
|
||||||
|
// ------------------------------------------------------------- Properties
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A property accessible via an indirectly implemented interface.
|
||||||
|
*/
|
||||||
|
public String getBaz();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A method accessible via an indirectly implemented interface.
|
||||||
|
*/
|
||||||
|
public String methodBaz(String in);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,114 @@
|
||||||
|
/*
|
||||||
|
* $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//lang/src/test/org/apache/commons/lang/reflect/priv/Attic/PublicSubBean.java,v 1.1 2002/11/14 18:53:36 rdonkin Exp $
|
||||||
|
* $Revision: 1.1 $
|
||||||
|
* $Date: 2002/11/14 18:53:36 $
|
||||||
|
*
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* The Apache Software License, Version 1.1
|
||||||
|
*
|
||||||
|
* Copyright (c) 1999-2002 The Apache Software Foundation. All rights
|
||||||
|
* reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in
|
||||||
|
* the documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
*
|
||||||
|
* 3. The end-user documentation included with the redistribution, if
|
||||||
|
* any, must include the following acknowlegement:
|
||||||
|
* "This product includes software developed by the
|
||||||
|
* Apache Software Foundation (http://www.apache.org/)."
|
||||||
|
* Alternately, this acknowlegement may appear in the software itself,
|
||||||
|
* if and wherever such third-party acknowlegements normally appear.
|
||||||
|
*
|
||||||
|
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
|
||||||
|
* Foundation" must not be used to endorse or promote products derived
|
||||||
|
* from this software without prior written permission. For written
|
||||||
|
* permission, please contact apache@apache.org.
|
||||||
|
*
|
||||||
|
* 5. Products derived from this software may not be called "Apache"
|
||||||
|
* nor may "Apache" appear in their names without prior written
|
||||||
|
* permission of the Apache Group.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
|
||||||
|
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
||||||
|
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||||
|
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* This software consists of voluntary contributions made by many
|
||||||
|
* individuals on behalf of the Apache Software Foundation. For more
|
||||||
|
* information on the Apache Software Foundation, please see
|
||||||
|
* <http://www.apache.org/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
package org.apache.commons.lang.reflect.priv;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>This class is designed to test the default access jvm problem workaround.
|
||||||
|
* The issue is that public methods of a public subclass contained in a default access
|
||||||
|
* superclass are returned by reflection but an IllegalAccessException is thrown
|
||||||
|
* when they are invoked.</p>
|
||||||
|
*
|
||||||
|
* <p>This is the default access superclass</p>
|
||||||
|
*
|
||||||
|
* @author Robert Burrell Donkin
|
||||||
|
* @version $Revision: 1.1 $ $Date: 2002/11/14 18:53:36 $
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class PublicSubBean extends PackageBean {
|
||||||
|
|
||||||
|
|
||||||
|
// ----------------------------------------------------------- Constructors
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Package private constructor - can only use factory method to create
|
||||||
|
* beans.
|
||||||
|
*/
|
||||||
|
public PublicSubBean() {
|
||||||
|
|
||||||
|
super();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ------------------------------------------------------------- Properties
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A directly implemented property.
|
||||||
|
*/
|
||||||
|
private String foo = "This is foo";
|
||||||
|
|
||||||
|
public String getFoo() {
|
||||||
|
|
||||||
|
return (this.foo);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFoo(String foo) {
|
||||||
|
|
||||||
|
this.foo = foo;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue