| OLD | NEW | 
|---|
| (Empty) |  | 
|  | 1 /* | 
|  | 2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 
|  | 3  * Copyright (C) 2006-2016 Eyeo GmbH | 
|  | 4  * | 
|  | 5  * Adblock Plus is free software: you can redistribute it and/or modify | 
|  | 6  * it under the terms of the GNU General Public License version 3 as | 
|  | 7  * published by the Free Software Foundation. | 
|  | 8  * | 
|  | 9  * Adblock Plus is distributed in the hope that it will be useful, | 
|  | 10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | 11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|  | 12  * GNU General Public License for more details. | 
|  | 13  * | 
|  | 14  * You should have received a copy of the GNU General Public License | 
|  | 15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 
|  | 16  */ | 
|  | 17 | 
|  | 18 package org.adblockplus.android; | 
|  | 19 | 
|  | 20 import java.lang.reflect.Field; | 
|  | 21 import java.lang.reflect.Method; | 
|  | 22 | 
|  | 23 public class ReflectionUtils | 
|  | 24 { | 
|  | 25   public static Object extractProperty(Object target, String field) | 
|  | 26   { | 
|  | 27     return extractProperty(target, target.getClass(), field); | 
|  | 28   } | 
|  | 29 | 
|  | 30   public static Object extractProperty(Object target, Class clazz, String field) | 
|  | 31   { | 
|  | 32     try | 
|  | 33     { | 
|  | 34       Field f = clazz.getDeclaredField(field); | 
|  | 35       if (!f.isAccessible()) | 
|  | 36       { | 
|  | 37         f.setAccessible(true); | 
|  | 38       } | 
|  | 39       return f.get(target); | 
|  | 40     } | 
|  | 41     catch (NoSuchFieldException e) | 
|  | 42     { | 
|  | 43       return extractProperty(target, clazz.getSuperclass(), field); | 
|  | 44     } | 
|  | 45     catch (Exception e) | 
|  | 46     { | 
|  | 47       return null; | 
|  | 48     } | 
|  | 49   } | 
|  | 50 | 
|  | 51   public static Object extractProperty(Object target, String []fields) | 
|  | 52   { | 
|  | 53     Object eachTarget = target; | 
|  | 54     for (int i = 0; i < fields.length; i++) | 
|  | 55     { | 
|  | 56       eachTarget = extractProperty(eachTarget, eachTarget.getClass(), fields[i])
     ; | 
|  | 57       if (eachTarget == null) | 
|  | 58       { | 
|  | 59         return null; | 
|  | 60       } | 
|  | 61     } | 
|  | 62     return eachTarget; | 
|  | 63   } | 
|  | 64 | 
|  | 65   public static boolean injectProperty(Object target, String field, Object value
     ) | 
|  | 66   { | 
|  | 67     try | 
|  | 68     { | 
|  | 69       Field f = target.getClass().getDeclaredField(field); | 
|  | 70       if (!f.isAccessible()) | 
|  | 71       { | 
|  | 72         f.setAccessible(true); | 
|  | 73       } | 
|  | 74       f.set(target, value); | 
|  | 75       return true; | 
|  | 76     } | 
|  | 77     catch (Exception e) | 
|  | 78     { | 
|  | 79       return false; | 
|  | 80     } | 
|  | 81   } | 
|  | 82 | 
|  | 83   public static boolean invokeMethod(Object target, String methodName, Object[] 
     args) | 
|  | 84   { | 
|  | 85     Method[] methods = target.getClass().getDeclaredMethods(); | 
|  | 86     for (Method eachMethod : methods) | 
|  | 87     { | 
|  | 88       if (eachMethod.getName().equals(methodName)) | 
|  | 89       { | 
|  | 90         try | 
|  | 91         { | 
|  | 92           if (!eachMethod.isAccessible()) | 
|  | 93           { | 
|  | 94             eachMethod.setAccessible(true); | 
|  | 95           } | 
|  | 96           eachMethod.invoke(target, args); | 
|  | 97           return true; | 
|  | 98         } | 
|  | 99         catch (Exception e) | 
|  | 100         { | 
|  | 101           return false; | 
|  | 102         } | 
|  | 103       } | 
|  | 104     } | 
|  | 105     return false; | 
|  | 106   } | 
|  | 107 } | 
| OLD | NEW | 
|---|