1 /*
2 * Copyright (c) 2003-2008 by Cosylab d. d.
3 *
4 * This file is part of Java-Common.
5 *
6 * Java-Common is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * Java-Common is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with Java-Common. If not, see <http://www.gnu.org/licenses/>.
18 */
19
20 package com.cosylab.introspection;
21
22 import java.lang.reflect.Member;
23 /**
24 * This class serves as a filter for selecting members in
25 * a <code>Class</code> or from an array.
26 *
27 * @author Miha Kadunc (miha.kadunc@cosylab.com)
28 * @version @@VERSION@@
29 */
30 public interface MemberFilter {
31 /**
32 * Should return true iff the filter allows
33 * constructors to be contained in the output.
34 * Should only some of the constructors be filtered,
35 * this method should return true and specify a
36 * custom filter in the <code>isAllowed(Member)</code> method.
37 *
38 * @return boolean
39 */
40 public boolean areConstructorsAllowed();
41
42 /**
43 * If filter is used to retrieve members from a class,
44 * this method should return true iff only members
45 * that are declared in the given class are to be
46 * returned, discarding members that are declared in
47 * superclasses or superinterfaces.
48 *
49 * @return boolean
50 */
51 public boolean areDeclaredOnly();
52
53 /**
54 * Should return true iff the filter allows fields.
55 *
56 * @return boolean
57 */
58 public boolean areFieldsAllowed();
59
60 /**
61 * Should return true iff the filter allows methods.
62 *
63 * @return boolean
64 */
65 public boolean areMethodsAllowed();
66
67 /**
68 * Should return true iff the filter discards all
69 * the non-public members.
70 *
71 * @return boolean
72 */
73 public boolean arePublicOnly();
74
75 /**
76 * When other methods in this class are not sufficient for
77 * the filter implementation, this method should be used.
78 * Members, that comply with all other requirements by this
79 * class's methods, will be passed as a parameter to this method,
80 * which decides whether a given member should be contained in the
81 * output or not.
82 *
83 * @param member Member
84 * @return boolean
85 */
86 public boolean isAllowed(Member member);
87 }