/* * Copyright 2004-2015 the Seasar Foundation and the Others. * * 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. */ package org.seasar.framework.aop.interceptors; import java.util.Date; import junit.framework.TestCase; import org.seasar.framework.aop.Aspect; import org.seasar.framework.aop.Pointcut; import org.seasar.framework.aop.impl.AspectImpl; import org.seasar.framework.aop.impl.PointcutImpl; import org.seasar.framework.aop.proxy.AopProxy; /** * @author eriguchi * */ public class ToStringInterceptorTest extends TestCase { ToStringInterceptor interceptor; protected void setUp() throws Exception { super.setUp(); interceptor = new ToStringInterceptor(); } /** * @throws Exception */ public void testIntercept() throws Exception { interceptor.setDateFormat("yy/MM/dd H:mm"); FooEntity proxy = (FooEntity) applyInterceptor(FooEntity.class); String identityHashCode = Integer.toHexString(System .identityHashCode(proxy)); System.out.println(proxy.toString()); assertEquals( "org.seasar.framework.aop.interceptors.ToStringInterceptorTest$FooEntity@" + identityHashCode + "[intVal=12,longVal=123,charVal='a',doubleVal=1234.5" + ",dateVal=70/01/01 9:00,nullVal=null,longArray={1,2,3},intArray={1,2,3},shortArray={1,2,3}" + ",byteArray={1,2,3},charArray={'1','2','3'},doubleArray={1.0,2.0,3.0},floatArray={1.0,2.0,3.0}" + ",booleanArray={true,false,true},booleanClassArray={true,false,false}," + "stringArray={\"1\",\"2\",\"3\"}]", proxy.toString()); } /** * @throws Exception */ public void testInterceptExtendsField() throws Exception { interceptor.setDateFormat("yyyy/MM/dd HH:mm:ss.SSS"); BarEntity proxy = (BarEntity) applyInterceptor(BarEntity.class); String identityHashCode = Integer.toHexString(System .identityHashCode(proxy)); System.out.println(proxy.toString()); assertEquals( "org.seasar.framework.aop.interceptors.ToStringInterceptorTest$BarEntity@" + identityHashCode + "[exIntVal=123456,exLongVal=1234567,exDoubleVal=1234567.8" + ",exDateVal=1970/01/01 09:00:00.001" + ",intVal=12,longVal=123,charVal='a',doubleVal=1234.5" + ",dateVal=1970/01/01 09:00:00.000,nullVal=null,longArray={1,2,3},intArray={1,2,3},shortArray={1,2,3}" + ",byteArray={1,2,3},charArray={'1','2','3'},doubleArray={1.0,2.0,3.0},floatArray={1.0,2.0,3.0}" + ",booleanArray={true,false,true},booleanClassArray={true,false,false}," + "stringArray={\"1\",\"2\",\"3\"}]", proxy.toString()); } /** * @throws Exception */ public void testIncludeConstant() throws Exception { interceptor.setIncludeConstant(true); interceptor.setDateFormat("yy/MM/dd H:mm"); FooEntity proxy = (FooEntity) applyInterceptor(FooEntity.class); String identityHashCode = Integer.toHexString(System .identityHashCode(proxy)); System.out.println(proxy.toString()); assertEquals( "org.seasar.framework.aop.interceptors.ToStringInterceptorTest$FooEntity@" + identityHashCode + "[CONSTANT=\"Hoge\",intVal=12,longVal=123,charVal='a',doubleVal=1234.5" + ",dateVal=70/01/01 9:00,nullVal=null,longArray={1,2,3},intArray={1,2,3},shortArray={1,2,3}" + ",byteArray={1,2,3},charArray={'1','2','3'},doubleArray={1.0,2.0,3.0},floatArray={1.0,2.0,3.0}" + ",booleanArray={true,false,true},booleanClassArray={true,false,false}," + "stringArray={\"1\",\"2\",\"3\"}]", proxy.toString()); } /** * @throws Exception */ public void testIncludeStatic() throws Exception { interceptor.setIncludeStatic(true); interceptor.setDateFormat("yy/MM/dd H:mm"); FooEntity proxy = (FooEntity) applyInterceptor(FooEntity.class); String identityHashCode = Integer.toHexString(System .identityHashCode(proxy)); System.out.println(proxy.toString()); assertEquals( "org.seasar.framework.aop.interceptors.ToStringInterceptorTest$FooEntity@" + identityHashCode + "[staticInt=1,intVal=12,longVal=123,charVal='a',doubleVal=1234.5" + ",dateVal=70/01/01 9:00,nullVal=null,longArray={1,2,3},intArray={1,2,3},shortArray={1,2,3}" + ",byteArray={1,2,3},charArray={'1','2','3'},doubleArray={1.0,2.0,3.0},floatArray={1.0,2.0,3.0}" + ",booleanArray={true,false,true},booleanClassArray={true,false,false}," + "stringArray={\"1\",\"2\",\"3\"}]", proxy.toString()); } /** * @throws Exception */ public void testIncludeConstantAndStatic() throws Exception { interceptor.setIncludeConstant(true); interceptor.setIncludeStatic(true); interceptor.setDateFormat("yy/MM/dd H:mm"); FooEntity proxy = (FooEntity) applyInterceptor(FooEntity.class); String identityHashCode = Integer.toHexString(System .identityHashCode(proxy)); System.out.println(proxy.toString()); assertEquals( "org.seasar.framework.aop.interceptors.ToStringInterceptorTest$FooEntity@" + identityHashCode + "[CONSTANT=\"Hoge\",staticInt=1,intVal=12,longVal=123,charVal='a',doubleVal=1234.5" + ",dateVal=70/01/01 9:00,nullVal=null,longArray={1,2,3},intArray={1,2,3},shortArray={1,2,3}" + ",byteArray={1,2,3},charArray={'1','2','3'},doubleArray={1.0,2.0,3.0},floatArray={1.0,2.0,3.0}" + ",booleanArray={true,false,true},booleanClassArray={true,false,false}," + "stringArray={\"1\",\"2\",\"3\"}]", proxy.toString()); } private Object applyInterceptor(Class clazz) { Pointcut pointcut = new PointcutImpl(new String[] { "toString" }); Aspect aspect = new AspectImpl(interceptor, pointcut); AopProxy aopProxy = new AopProxy(clazz, new Aspect[] { aspect }); return aopProxy.create(); } static class FooEntity { static final String CONSTANT = "Hoge"; static int staticInt = 1; int intVal = 12; /** * */ protected long longVal = 123; char charVal = 'a'; double doubleVal = 1234.5; /** * */ public Date dateVal = new Date(0); /** * */ public Date nullVal = null; /** * */ public long[] longArray = new long[] { 1, 2, 3 }; /** * */ public int[] intArray = new int[] { 1, 2, 3 }; /** * */ public short[] shortArray = new short[] { 1, 2, 3 }; /** * */ public byte[] byteArray = new byte[] { 1, 2, 3 }; /** * */ public char[] charArray = new char[] { '1', '2', '3' }; /** * */ public double[] doubleArray = new double[] { 1, 2, 3 }; /** * */ public float[] floatArray = new float[] { 1, 2, 3 }; /** * */ public boolean[] booleanArray = new boolean[] { true, false, true }; /** * */ public Boolean[] booleanClassArray = new Boolean[] { Boolean.TRUE, Boolean.FALSE, Boolean.FALSE }; /** * */ public String[] stringArray = new String[] { "1", "2", "3" }; } static class BarEntity extends FooEntity { int exIntVal = 123456; /** * */ protected long exLongVal = 1234567; double exDoubleVal = 1234567.8; /** * */ public Date exDateVal = new Date(1); } }