001 /*
002 * Copyright 2005 John G. Wilson
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 *
016 */
017
018 package groovy.lang;
019
020 import java.lang.reflect.Method;
021 import java.util.List;
022
023 import org.codehaus.groovy.ast.ClassNode;
024 import org.codehaus.groovy.runtime.InvokerHelper;
025
026 /**
027 * @author John Wilson
028 *
029 */
030
031 public class DelegatingMetaClass extends MetaClass {
032 protected final MetaClass delegate;
033
034 public DelegatingMetaClass(final MetaClass delegate) {
035 super(delegate.theClass);
036
037 this.delegate = delegate;
038 }
039
040 public DelegatingMetaClass(final Class theClass) {
041 this(new MetaClassImpl(InvokerHelper.getInstance().getMetaRegistry(), theClass));
042 }
043
044 /* (non-Javadoc)
045 * @see groovy.lang.MetaClass#addNewInstanceMethod(java.lang.reflect.Method)
046 */
047 public void addNewInstanceMethod(Method method) {
048 delegate.addNewInstanceMethod(method);
049 }
050 /* (non-Javadoc)
051 * @see groovy.lang.MetaClass#addNewStaticMethod(java.lang.reflect.Method)
052 */
053 public void addNewStaticMethod(Method method) {
054 delegate.addNewStaticMethod(method);
055 }
056 /* (non-Javadoc)
057 * @see groovy.lang.MetaClass#initialize()
058 */
059 public void initialize() {
060 delegate.initialize();
061 }
062
063 /* (non-Javadoc)
064 * @see groovy.lang.MetaClass#getAttribute(java.lang.Object, java.lang.String)
065 */
066 public Object getAttribute(Object object, String attribute) {
067 return delegate.getAttribute(object, attribute);
068 }
069 /* (non-Javadoc)
070 * @see groovy.lang.MetaClass#getClassNode()
071 */
072 public ClassNode getClassNode() {
073 return delegate.getClassNode();
074 }
075 /* (non-Javadoc)
076 * @see groovy.lang.MetaClass#getMetaMethods()
077 */
078 public List getMetaMethods() {
079 return delegate.getMetaMethods();
080 }
081 /* (non-Javadoc)
082 * @see groovy.lang.MetaClass#getMethods()
083 */
084 public List getMethods() {
085 return delegate.getMethods();
086 }
087 /* (non-Javadoc)
088 * @see groovy.lang.MetaClass#getProperties()
089 */
090 public List getProperties() {
091 return delegate.getProperties();
092 }
093 /* (non-Javadoc)
094 * @see groovy.lang.MetaClass#getProperty(java.lang.Object, java.lang.String)
095 */
096 public Object getProperty(Object object, String property) {
097 return delegate.getProperty(object, property);
098 }
099 /* (non-Javadoc)
100 * @see groovy.lang.MetaClass#invokeConstructor(java.lang.Object[])
101 */
102 public Object invokeConstructor(Object[] arguments) {
103 return delegate.invokeConstructor(arguments);
104 }
105
106 /* (non-Javadoc)
107 * @see groovy.lang.MetaClass#invokeMethod(java.lang.Object, java.lang.String, java.lang.Object)
108 */
109 public Object invokeMethod(Object object, String methodName, Object arguments) {
110 return delegate.invokeMethod(object, methodName, arguments);
111 }
112 /* (non-Javadoc)
113 * @see groovy.lang.MetaClass#invokeMethod(java.lang.Object, java.lang.String, java.lang.Object[])
114 */
115 public Object invokeMethod(Object object, String methodName, Object[] arguments) {
116 return delegate.invokeMethod(object, methodName, arguments);
117 }
118 /* (non-Javadoc)
119 * @see groovy.lang.MetaClass#invokeStaticMethod(java.lang.Object, java.lang.String, java.lang.Object[])
120 */
121 public Object invokeStaticMethod(Object object, String methodName, Object[] arguments) {
122 return delegate.invokeStaticMethod(object, methodName, arguments);
123 }
124
125 /* (non-Javadoc)
126 * @see groovy.lang.MetaClass#setAttribute(java.lang.Object, java.lang.String, java.lang.Object)
127 */
128 public void setAttribute(Object object, String attribute, Object newValue) {
129 delegate.setAttribute(object, attribute, newValue);
130 }
131 /* (non-Javadoc)
132 * @see groovy.lang.MetaClass#setProperty(java.lang.Object, java.lang.String, java.lang.Object)
133 */
134 public void setProperty(Object object, String property, Object newValue) {
135 delegate.setProperty(object, property, newValue);
136 }
137 /* (non-Javadoc)
138 * @see java.lang.Object#equals(java.lang.Object)
139 */
140 public boolean equals(Object obj) {
141 return delegate.equals(obj);
142 }
143 /* (non-Javadoc)
144 * @see java.lang.Object#hashCode()
145 */
146 public int hashCode() {
147 return delegate.hashCode();
148 }
149 /* (non-Javadoc)
150 * @see java.lang.Object#toString()
151 */
152 public String toString() {
153 return delegate.toString();
154 }
155 /**
156 * @deprecated
157 */
158 public MetaMethod pickMethod(String methodName, Class[] arguments) {
159 return delegate.pickMethod(methodName,arguments);
160 }
161 /**
162 * @deprecated
163 */
164 protected MetaMethod retrieveMethod(String methodName, Class[] arguments) {
165 return delegate.retrieveMethod(methodName,arguments);
166 }
167 }