MixinEverythingEmitter.java revision 674060f01e9090cd21b3c5656cc3204912ad17a6
1c216a01c96d83bd9a90e214af64913e93d39aaccRichard Smith/* 259efe266b804330f4c1f3a1b0ff783e67dd90378Richard Smith * Copyright 2004 The Apache Software Foundation 359efe266b804330f4c1f3a1b0ff783e67dd90378Richard Smith * 459efe266b804330f4c1f3a1b0ff783e67dd90378Richard Smith * Licensed under the Apache License, Version 2.0 (the "License"); 559efe266b804330f4c1f3a1b0ff783e67dd90378Richard Smith * you may not use this file except in compliance with the License. 69eed49c2bb0f37bbfefefd0998b6303a686a66c0Richard Smith * You may obtain a copy of the License at 79eed49c2bb0f37bbfefefd0998b6303a686a66c0Richard Smith * 859efe266b804330f4c1f3a1b0ff783e67dd90378Richard Smith * http://www.apache.org/licenses/LICENSE-2.0 959efe266b804330f4c1f3a1b0ff783e67dd90378Richard Smith * 1059efe266b804330f4c1f3a1b0ff783e67dd90378Richard Smith * Unless required by applicable law or agreed to in writing, software 111d238ea926bbdd04356ce475934fcd4cac654c4bRichard Smith * distributed under the License is distributed on an "AS IS" BASIS, 121d238ea926bbdd04356ce475934fcd4cac654c4bRichard Smith * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131d238ea926bbdd04356ce475934fcd4cac654c4bRichard Smith * See the License for the specific language governing permissions and 141d238ea926bbdd04356ce475934fcd4cac654c4bRichard Smith * limitations under the License. 151d238ea926bbdd04356ce475934fcd4cac654c4bRichard Smith */ 161d238ea926bbdd04356ce475934fcd4cac654c4bRichard Smithpackage org.mockito.cglib.proxy; 171d238ea926bbdd04356ce475934fcd4cac654c4bRichard Smith 181d238ea926bbdd04356ce475934fcd4cac654c4bRichard Smithimport java.lang.reflect.Method; 191d238ea926bbdd04356ce475934fcd4cac654c4bRichard Smithimport java.lang.reflect.Modifier; 201d238ea926bbdd04356ce475934fcd4cac654c4bRichard Smithimport java.util.*; 211d238ea926bbdd04356ce475934fcd4cac654c4bRichard Smith 2259efe266b804330f4c1f3a1b0ff783e67dd90378Richard Smithimport org.mockito.asm.ClassVisitor; 2359efe266b804330f4c1f3a1b0ff783e67dd90378Richard Smithimport org.mockito.cglib.core.CollectionUtils; 2459efe266b804330f4c1f3a1b0ff783e67dd90378Richard Smithimport org.mockito.cglib.core.ReflectUtils; 2559efe266b804330f4c1f3a1b0ff783e67dd90378Richard Smithimport org.mockito.cglib.core.RejectModifierPredicate; 2659efe266b804330f4c1f3a1b0ff783e67dd90378Richard Smith 2759efe266b804330f4c1f3a1b0ff783e67dd90378Richard Smith/** 2859efe266b804330f4c1f3a1b0ff783e67dd90378Richard Smith * @author Chris Nokleberg 2959efe266b804330f4c1f3a1b0ff783e67dd90378Richard Smith * @version $Id: MixinEverythingEmitter.java,v 1.3 2004/06/24 21:15:19 herbyderby Exp $ 3059efe266b804330f4c1f3a1b0ff783e67dd90378Richard Smith */ 3159efe266b804330f4c1f3a1b0ff783e67dd90378Richard Smithclass MixinEverythingEmitter extends MixinEmitter { 3259efe266b804330f4c1f3a1b0ff783e67dd90378Richard Smith 3359efe266b804330f4c1f3a1b0ff783e67dd90378Richard Smith public MixinEverythingEmitter(ClassVisitor v, String className, Class[] classes) { 3459efe266b804330f4c1f3a1b0ff783e67dd90378Richard Smith super(v, className, classes, null); 3559efe266b804330f4c1f3a1b0ff783e67dd90378Richard Smith } 3659efe266b804330f4c1f3a1b0ff783e67dd90378Richard Smith 3759efe266b804330f4c1f3a1b0ff783e67dd90378Richard Smith protected Class[] getInterfaces(Class[] classes) { 3859efe266b804330f4c1f3a1b0ff783e67dd90378Richard Smith List list = new ArrayList(); 3959efe266b804330f4c1f3a1b0ff783e67dd90378Richard Smith for (int i = 0; i < classes.length; i++) { 40f15fda02e9c8c82b4a716618f4010b9af8bff796Richard Smith ReflectUtils.addAllInterfaces(classes[i], list); 419eed49c2bb0f37bbfefefd0998b6303a686a66c0Richard Smith } 429eed49c2bb0f37bbfefefd0998b6303a686a66c0Richard Smith return (Class[])list.toArray(new Class[list.size()]); 439eed49c2bb0f37bbfefefd0998b6303a686a66c0Richard Smith } 4459efe266b804330f4c1f3a1b0ff783e67dd90378Richard Smith 4559efe266b804330f4c1f3a1b0ff783e67dd90378Richard Smith protected Method[] getMethods(Class type) { 4659efe266b804330f4c1f3a1b0ff783e67dd90378Richard Smith List methods = new ArrayList(Arrays.asList(type.getMethods())); 479eed49c2bb0f37bbfefefd0998b6303a686a66c0Richard Smith CollectionUtils.filter(methods, new RejectModifierPredicate(Modifier.FINAL | Modifier.STATIC)); 489eed49c2bb0f37bbfefefd0998b6303a686a66c0Richard Smith return (Method[])methods.toArray(new Method[methods.size()]); 499eed49c2bb0f37bbfefefd0998b6303a686a66c0Richard Smith } 5059efe266b804330f4c1f3a1b0ff783e67dd90378Richard Smith} 5159efe266b804330f4c1f3a1b0ff783e67dd90378Richard Smith