KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > puppycrawl > tools > checkstyle > checks > usage > transmogrify > ExternalSignature


1
2 // Transmogrify License
3
//
4
// Copyright (c) 2001, ThoughtWorks, Inc.
5
// All rights reserved.
6
// Redistribution and use in source and binary forms, with or without
7
// modification, are permitted provided that the following conditions
8
// are met:
9
// - Redistributions of source code must retain the above copyright notice,
10
// this list of conditions and the following disclaimer.
11
// - Redistributions in binary form must reproduce the above copyright
12
// notice, this list of conditions and the following disclaimer in the
13
// documentation and/or other materials provided with the distribution.
14
// Neither the name of the ThoughtWorks, Inc. nor the names of its
15
// contributors may be used to endorse or promote products derived from this
16
// software without specific prior written permission.
17
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19
// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
21
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
24
// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
26
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
27
// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28

29 package com.puppycrawl.tools.checkstyle.checks.usage.transmogrify;
30
31 public class ExternalSignature implements ISignature {
32
33   private IClass[] _parameters;
34
35   public ExternalSignature(Class JavaDoc[] parameters) {
36     _parameters = new IClass[parameters.length];
37     for (int i = 0; i < parameters.length; i++) {
38       if (parameters[i].isArray()) {
39         _parameters[i] =
40           new ArrayDef(new ExternalClass(parameters[i].getComponentType()));
41       }
42       else {
43         _parameters[i] = new ExternalClass(parameters[i]);
44       }
45     }
46   }
47
48   /**
49    * Whether this method signature is compatible with the signature of the
50    * argument. That is to say, each type for this signature are subclasses,
51    * subinterfaces, or implement the interface for each corresponding type
52    * in the argument signature.
53    *
54    * @param signature the signature of the method definition being compared
55    * @return whether the signatures are compatible
56    */

57   public boolean isCompatibleWith(ISignature signature) {
58     boolean result = true;
59
60     if (_parameters.length == signature.getParameters().length) {
61       for (int i = 0; i < _parameters.length; i++) {
62         if (!getParameters()[i].isCompatibleWith(signature.getParameters()[i])) {
63           result = false;
64           break;
65         }
66       }
67     }
68     else {
69       result = false;
70     }
71
72     return result;
73   }
74
75   public boolean isSame(ISignature signature) {
76     return java.util.Arrays.equals(_parameters, signature.getParameters());
77   }
78
79   public IClass[] getParameters() {
80     return _parameters;
81   }
82
83   public String JavaDoc toString() {
84     StringBuffer JavaDoc result = new StringBuffer JavaDoc();
85     result.append("(");
86     for (int i = 0; i < _parameters.length; i++) {
87       result.append(_parameters[i]);
88       if (i < _parameters.length - 1) {
89         result.append(", ");
90       }
91     }
92     result.append(")");
93
94     return result.toString();
95   }
96
97 }
98
Popular Tags