0
|
1 // MODIFIED FOR THE MSGPACK PROJECT
|
|
2 // Licensed to the Apache Software Foundation (ASF) under one or more
|
|
3 // contributor license agreements. See the NOTICE file distributed with
|
|
4 // this work for additional information regarding copyright ownership.
|
|
5 // The ASF licenses this file to You under the Apache License, Version 2.0
|
|
6 // (the "License"); you may not use this file except in compliance with
|
|
7 // the License. You may obtain a copy of the License at
|
|
8 //
|
|
9 // http://www.apache.org/licenses/LICENSE-2.0
|
|
10 //
|
|
11 // Unless required by applicable law or agreed to in writing, software
|
|
12 // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
13 // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
14 // License for the specific language governing permissions and limitations under
|
|
15 // the License.
|
|
16 //
|
|
17
|
|
18 package org.msgpack.template.builder.beans;
|
|
19
|
|
20 import java.lang.reflect.Method;
|
|
21
|
|
22 /**
|
|
23 * Describes a bean's method.
|
|
24 */
|
|
25 public class MethodDescriptor extends FeatureDescriptor {
|
|
26
|
|
27 private Method method;
|
|
28
|
|
29 private ParameterDescriptor[] parameterDescriptors;
|
|
30
|
|
31 /**
|
|
32 * <p>
|
|
33 * Constructs an instance with the given {@link Method} and
|
|
34 * {@link ParameterDescriptor}s. The {@link #getName()} is set as the name
|
|
35 * of the <code>method</code> passed.
|
|
36 * </p>
|
|
37 *
|
|
38 * @param method
|
|
39 * The Method to set.
|
|
40 * @param parameterDescriptors
|
|
41 * An array of parameter descriptors.
|
|
42 */
|
|
43 public MethodDescriptor(Method method,
|
|
44 ParameterDescriptor[] parameterDescriptors) {
|
|
45 super();
|
|
46
|
|
47 if (method == null) {
|
|
48 throw new NullPointerException();
|
|
49 }
|
|
50 this.method = method;
|
|
51 this.parameterDescriptors = parameterDescriptors;
|
|
52
|
|
53 setName(method.getName());
|
|
54 }
|
|
55
|
|
56 /**
|
|
57 * <p>
|
|
58 * Constructs an instance with the given {@link Method}. The
|
|
59 * {@link #getName()} is set as the name of the <code>method</code>
|
|
60 * passed.
|
|
61 * </p>
|
|
62 *
|
|
63 * @param method
|
|
64 * The Method to set.
|
|
65 */
|
|
66 public MethodDescriptor(Method method) {
|
|
67 super();
|
|
68
|
|
69 if (method == null) {
|
|
70 throw new NullPointerException();
|
|
71 }
|
|
72 this.method = method;
|
|
73
|
|
74 setName(method.getName());
|
|
75 }
|
|
76
|
|
77 /**
|
|
78 * <p>
|
|
79 * Gets the method.
|
|
80 * </p>
|
|
81 *
|
|
82 * @return A {@link Method} instance.
|
|
83 */
|
|
84 public Method getMethod() {
|
|
85 return method;
|
|
86 }
|
|
87
|
|
88 /**
|
|
89 * <p>
|
|
90 * Gets the parameter descriptors.
|
|
91 * </p>
|
|
92 *
|
|
93 * @return An array of {@link ParameterDescriptor} instance or
|
|
94 * <code>null</code>.
|
|
95 */
|
|
96 public ParameterDescriptor[] getParameterDescriptors() {
|
|
97 return parameterDescriptors;
|
|
98 }
|
|
99
|
|
100 void merge(MethodDescriptor anotherMethod){
|
|
101 super.merge(anotherMethod);
|
|
102 if(method == null){
|
|
103 method = anotherMethod.method;
|
|
104 }
|
|
105 if(parameterDescriptors == null){
|
|
106 parameterDescriptors = anotherMethod.parameterDescriptors;
|
|
107 }
|
|
108 }
|
|
109 }
|