+++ /dev/null
-/*-
- * ============LICENSE_START=======================================================
- * org.onap.dmaap
- * ================================================================================
- * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-package org.onap.dmaap.dbcapi.model;
-
-import static org.junit.Assert.*;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Type;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import static java.lang.System.out;
-import static java.lang.System.err;
-
-public class ReflectionHarness {
- private static final String fmt = "%24s: %s%n";
-
-
- // following 2 functions taken from: http://tutorials.jenkov.com/java-reflection/getters-setters.html
- public static boolean isGetter(Method method){
- if(!method.getName().startsWith("get")) return false;
- if(method.getParameterTypes().length != 0) return false;
- if(void.class.equals(method.getReturnType())) return false;
- return true;
- }
-
- public static boolean isSetter(Method method){
- if(!method.getName().startsWith("set")) return false;
- if(method.getParameterTypes().length != 1) return false;
- return true;
- }
-
- private void testGetter( Class<?> c, Method m, Class<?>[] pType, String val ) {
- //out.format( fmt, "testGetter: Method Name", m.getName() );
- Class retType = m.getReturnType();
- //out.format( fmt, "testGetter: Return Type ", retType );
- //out.format( fmt, "testGetter: val ", (val != null)?val:"null" );
- assertTrue( pType.length == 0 );
-
- try {
- Object t = c.newInstance();
-
- try {
- m.setAccessible(true);
- Object o = m.invoke( t );
-
- if( retType.equals( Class.forName( "java.lang.String" ) ) ) {
- if ( val == null ) {
- //out.format( fmt, "testGetter: expected null, got ", (o != null)?o:"null" );
- assert( o == null );
- } else {
- //out.format( fmt, "testGetter: expected val, got ", (o != null)?o:"null" );
- assert( o.equals( val ) );
- }
- } else {
- out.format( fmt, "testGetter: " + m.getName() + " untested retType", retType );
-
- }
-
- } catch (InvocationTargetException e ) {
- Throwable cause = e.getCause();
- err.format( "%s() returned %x%n", m.getName(), cause.getMessage() );
- }
-
- } catch (ClassNotFoundException nfe ){
- nfe.printStackTrace();
- } catch (IllegalArgumentException ae ) {
- ae.printStackTrace();
- } catch (InstantiationException ie ) {
- ie.printStackTrace();
- } catch (IllegalAccessException iae ) {
- iae.printStackTrace();
- }
- }
-
- private void testSetter( Class<?> c, Method m, Class<?>[] pType ) {
- //out.format( fmt, "testSetter: Method Name", m.getName() );
- Class retType = m.getReturnType();
- //out.format( fmt, "testSetter: Return Type ", retType );
- //out.format( fmt, "testSetter: val ", (val != null)?val:"null" );
- assertTrue( pType.length == 1 );
-
- try {
- Object t = c.newInstance();
-
- try {
- m.setAccessible(true);
- //out.format( fmt, "testSetter: " + m.getName() + " to try pType", pType[0] );
- if ( pType[0].equals( Class.forName( "java.lang.String" ) ) ) {
- String val = "Validate123";
- Object o = m.invoke( t, val );
- } else if ( pType[0].equals( boolean.class ) ) { // note primitive class notation
- boolean b = true;
- Object o = m.invoke( t, b );
- } else {
- out.format( fmt, "testSetter: " + m.getName() + " untested pType", pType[0] );
- }
-
- } catch (InvocationTargetException e ) {
- Throwable cause = e.getCause();
- err.format( "%s() returned %x%n", m.getName(), cause.getMessage() );
- }
-
- } catch (ClassNotFoundException nfe ){
- nfe.printStackTrace();
- } catch (IllegalArgumentException ae ) {
- ae.printStackTrace();
- } catch (InstantiationException ie ) {
- ie.printStackTrace();
- } catch (IllegalAccessException iae ) {
- iae.printStackTrace();
- }
- }
-
- public void reflect(String... args) {
- try {
- Class<?> c = Class.forName(args[0]);
- Method[] allMethods = c.getDeclaredMethods();
- String methodPrefix = args[1];
- for (Method m : allMethods) {
- if (!m.getName().startsWith(methodPrefix)) {
- continue;
- }
- //out.format("%s%n", m.toGenericString());
-
- //out.format(fmt, "ReturnType", m.getReturnType());
- //out.format(fmt, "GenericReturnType", m.getGenericReturnType());
-
- Class<?>[] pType = m.getParameterTypes();
- Type[] gpType = m.getGenericParameterTypes();
- for (int i = 0; i < pType.length; i++) {
- //out.format(fmt,"ParameterType", pType[i]);
- //out.format(fmt,"GenericParameterType", gpType[i]);
- }
- if ( isGetter( m ) ) {
- testGetter( c, m, pType , args[2]);
- } else if ( isSetter( m ) ) {
- testSetter( c, m, pType );
- }
-
- Class<?>[] xType = m.getExceptionTypes();
- Type[] gxType = m.getGenericExceptionTypes();
- for (int i = 0; i < xType.length; i++) {
- //out.format(fmt,"ExceptionType", xType[i]);
- //out.format(fmt,"GenericExceptionType", gxType[i]);
- }
- }
-
- // production code should handle these exceptions more gracefully
- } catch (ClassNotFoundException x) {
- x.printStackTrace();
- }
- }
-}