001: /*
002: * $Id: DummyReflector.java 2890 2005-09-24 14:06:26Z phk $
003: *
004: * Copyright 2003 (C) James Strachan and Bob Mcwhirter. All Rights Reserved.
005: *
006: * Redistribution and use of this software and associated documentation
007: * ("Software"), with or without modification, are permitted provided that the
008: * following conditions are met:
009: * 1. Redistributions of source code must retain copyright statements and
010: * notices. Redistributions must also contain a copy of this document.
011: * 2. Redistributions in binary form must reproduce the above copyright
012: * notice, this list of conditions and the following disclaimer in the
013: * documentation and/or other materials provided with the distribution.
014: * 3. The name "groovy" must not be used to endorse or promote products
015: * derived from this Software without prior written permission of The Codehaus.
016: * For written permission, please contact info@codehaus.org.
017: * 4. Products derived from this Software may not be called "groovy" nor may
018: * "groovy" appear in their names without prior written permission of The
019: * Codehaus. "groovy" is a registered trademark of The Codehaus.
020: * 5. Due credit should be given to The Codehaus - http://groovy.codehaus.org/
021: *
022: * THIS SOFTWARE IS PROVIDED BY THE CODEHAUS AND CONTRIBUTORS ``AS IS'' AND ANY
023: * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
024: * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
025: * DISCLAIMED. IN NO EVENT SHALL THE CODEHAUS OR ITS CONTRIBUTORS BE LIABLE FOR
026: * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
027: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
028: * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
029: * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
030: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
031: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
032: * DAMAGE.
033: *
034: */
035:
036: package org.codehaus.groovy.classgen;
037:
038: import java.util.List;
039:
040: import groovy.lang.MetaMethod;
041:
042: import org.codehaus.groovy.runtime.Reflector;
043:
044: /**
045: * This is a scratch class used to experiment with ASM to see what kind of
046: * stuff is output for normal Java code
047: *
048: * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
049: * @version $Revision: 2890 $
050: */
051: public class DummyReflector extends Reflector {
052:
053: public DummyReflector() {
054: }
055:
056: /*
057: public Object invoke(MetaMethod method, Object object, Object[] arguments) {
058: switch (method.getMethodIndex()) {
059: case 1 :
060: return InvokerHelper.toObject(object.hashCode());
061: case 2 :
062: return object.toString();
063: case 3 :
064: return InvokerHelper.toObject(object.equals(arguments[0]));
065: case 4 :
066: return new ObjectRange((Comparable) arguments[0], (Comparable) arguments[1]);
067: case 5 :
068: return ((String) object).toCharArray();
069: case 7 :
070: return new Character("hello".charAt(2));
071: case 8 :
072: return null;
073: default :
074: return noSuchMethod(method, object, arguments);
075: }
076: }
077: */
078:
079: public Object invoke(MetaMethod method, Object object,
080: Object[] arguments) {
081: switch (method.getMethodIndex()) {
082: case 1:
083: return ((String) object).toCharArray();
084: case 2:
085: return new Boolean(((List) object).contains(arguments[0]));
086: default:
087: return noSuchMethod(method, object, arguments);
088: }
089: }
090:
091: public Object invokeConstructorAt(Object at, Object constructor,
092: Object[] arguments) {
093: return null; // noSuchMethod(method, object, arguments);
094: }
095:
096: public Object invokeConstructorOf(Object constructor,
097: Object[] arguments) {
098: return null; // noSuchMethod(method, object, arguments);
099: }
100:
101: char[] blah() {
102: return "foo".toCharArray();
103: }
104:
105: }
|