001    /*
002     * Copyright 2007 the original author or authors.
003     *
004     * Licensed under the Apache License, Version 2.0 (the "License"); you may not
005     * use this file except in compliance with the License. You may obtain a copy of
006     * the License at
007     *
008     * http://www.apache.org/licenses/LICENSE-2.0
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
012     * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
013     * License for the specific language governing permissions and limitations under
014     * the License.
015     */
016    package org.springframework.richclient.util;
017    
018    import java.lang.reflect.Constructor;
019    import java.lang.reflect.Field;
020    import java.lang.reflect.Member;
021    import java.lang.reflect.Method;
022    import java.lang.reflect.Modifier;
023    
024    /**
025     * Utility to make class-members accessible.
026     *
027     * @author Arne Limburg
028     */
029    public class ReflectionUtils extends org.springframework.util.ReflectionUtils {
030    
031       public static void makeAccessible(Member member) {
032           if (!Modifier.isPublic(member.getModifiers()) ||
033                   !Modifier.isPublic(member.getDeclaringClass().getModifiers())) {
034               if (member instanceof Field) {
035                   ((Field)member).setAccessible(true);
036               } else if (member instanceof Constructor) {
037                   ((Constructor)member).setAccessible(true);
038               } else if (member instanceof Method) {
039                   ((Method)member).setAccessible(true);
040               }
041           }
042       }
043    }