Clover Coverage Report - perfectjpattern(Aggregated)
Coverage timestamp: Sat Feb 28 2009 14:35:07 CET
0   86   0   -
0   15   -   0
0     -  
1    
 
  IAdaptingStrategy       Line # 45 0 - 0 0 - -1.0
 
No Tests
 
1    //----------------------------------------------------------------------
2    //
3    // PerfectJPattern: "Design patterns are good but components are better!"
4    // IAdaptingStrategy.java Copyright (c) 2009 Giovanni Azua Garcia
5    // bravegag@hotmail.com
6    //
7    // This program is free software; you can redistribute it and/or
8    // modify it under the terms of the GNU General Public License
9    // as published by the Free Software Foundation; either version 3
10    // of the License, or (at your option) any later version.
11    //
12    // This program is distributed in the hope that it will be useful,
13    // but WITHOUT ANY WARRANTY; without even the implied warranty of
14    // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15    // GNU General Public License for more details.
16    //
17    // You should have received a copy of the GNU General Public License
18    // along with this program; if not, see <http://www.gnu.org/licenses/>.
19    //
20    //----------------------------------------------------------------------
21    package org.perfectjpattern.core.api.structural.adapter;
22   
23    import java.lang.reflect.Method;
24   
25    import org.perfectjpattern.core.api.behavioral.strategy.IStrategy;
26   
27   
28    /**
29    * Abstract definition of the adapting strategy to use e.g.
30    * <ul>
31    * <li>Signature exact matching: the Adaptee and Target methods (name and
32    * parameters) must match or at least the Adaptee methods must be a subset
33    * of Target methods</li>
34    * <li>Signature types matching: the Adaptee and Target methods must
35    * match or at least the Adaptee methods must be a subset of the type
36    * signature of the Target methods</li>
37    * <li>Names mapping: The user defines dynamically the correspondence
38    * between methods in Adaptee and Target by name</li>
39    * </ul>
40    *
41    * @author <a href="mailto:bravegag@hotmail.com">Giovanni Azua</a>
42    * @version $Revision: 1.0 $Date: Jan 28, 2009 1:00:42 PM $
43    */
44    public
 
45    interface IAdaptingStrategy
46    extends IStrategy
47    {
48    //------------------------------------------------------------------------
49    // public
50    //------------------------------------------------------------------------
51    /**
52    * According to the definition of this strategy validates the tuple <code>
53    * Target</code>/<code>Adaptee</code>. Should the two not match an
54    * {@link NoSuchMethodError} will be thrown.
55    *
56    * @param aTargetClass Target class type
57    * @param anAdaptee Adaptee instance
58    * @param anAdapter Adapter instance
59    * @throws NoSuchMethodError
60    */
61    public void
62    validate(Class<?> aTargetClass, Object anAdaptee, Object anAdapter)
63    throws NoSuchMethodError;
64   
65    //------------------------------------------------------------------------
66    /**
67    * Returns the <code>Adaptee</code> or otherwise <code>Adapter</code> method
68    * that corresponds to the given <code>Target</code> class type. If the
69    * corresponding method is not found an {@link NoSuchMethodError} will
70    * be thrown.
71    *
72    * @see #validate(Class, Object, Object)
73    *
74    * @param aTargetClass Target class type
75    * @param anAdaptee Adaptee instance
76    * @param anAdapter Adapter instance
77    * @param aTargetMethod Target method to search for in the Adaptee
78    * @return <code>Adaptee</code> method that corresponds to the given
79    * <code>Target</code> class type
80    * @throws NoSuchMethodError
81    */
82    public Method
83    resolve(Class<?> aTargetClass, Object anAdaptee, Object anAdapter,
84    Method aTargetMethod)
85    throws NoSuchMethodError;
86    }