Save This Page
Home » cglib-src-2.2 » net.sf.cglib.core » [javadoc | source]
    1   /*
    2    * Copyright 2003,2004 The Apache Software Foundation
    3    *
    4    *  Licensed under the Apache License, Version 2.0 (the "License");
    5    * you may not use this file except in compliance with the License.
    6    * You may obtain a copy of the License at
    7    *
    8    *      http://www.apache.org/licenses/LICENSE-2.0
    9    *
   10    *  Unless required by applicable law or agreed to in writing, software
   11    * distributed under the License is distributed on an "AS IS" BASIS,
   12    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   13    * See the License for the specific language governing permissions and
   14    * limitations under the License.
   15    */
   16   package net.sf.cglib.core;
   17   
   18   import java.lang.reflect;
   19   import org.objectweb.asm.Type;
   20   
   21   public class VisibilityPredicate implements Predicate {
   22       private boolean protectedOk;
   23       private String pkg;
   24   
   25       public VisibilityPredicate(Class source, boolean protectedOk) {
   26           this.protectedOk = protectedOk;
   27           pkg = TypeUtils.getPackageName(Type.getType(source));
   28       }
   29   
   30       public boolean evaluate(Object arg) {
   31           int mod = (arg instanceof Member) ? ((Member)arg).getModifiers() : ((Integer)arg).intValue();
   32           if (Modifier.isPrivate(mod)) {
   33               return false;
   34           } else if (Modifier.isPublic(mod)) {
   35               return true;
   36           } else if (Modifier.isProtected(mod)) {
   37               return protectedOk;
   38           } else {
   39               return pkg.equals(TypeUtils.getPackageName(Type.getType(((Member)arg).getDeclaringClass())));
   40           }
   41       }
   42   }
   43   

Save This Page
Home » cglib-src-2.2 » net.sf.cglib.core » [javadoc | source]