001    /*
002     * Copyright 2006 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 org.codehaus.groovy.runtime.wrappers;
019    
020    import groovy.lang.GroovyObject;
021    import groovy.lang.MetaClass;
022    
023    /**
024     * @author John Wilson
025     *
026     */
027    
028    public class GroovyObjectWrapper extends Wrapper {
029      protected final GroovyObject wrapped;
030      
031      public GroovyObjectWrapper(final GroovyObject wrapped, final Class constrainedType) {
032        super(constrainedType);
033        this.wrapped = wrapped;
034      }
035      
036      public Object unwrap() {
037        return this.wrapped;
038      }
039      
040      /**
041       * Note the rest of these method will only be used post 1.0
042       */
043    
044      /* (non-Javadoc)
045       * @see groovy.lang.GroovyObject#getProperty(java.lang.String)
046       */
047      public Object getProperty(final String property) {
048        return this.wrapped.getProperty(property);
049      }
050    
051      /* (non-Javadoc)
052       * @see groovy.lang.GroovyObject#invokeMethod(java.lang.String, java.lang.Object)
053       */
054      public Object invokeMethod(final String name, final Object args) {
055        return this.wrapped.invokeMethod(name, args);
056      }
057    
058      /* (non-Javadoc)
059       * @see groovy.lang.GroovyObject#setMetaClass(groovy.lang.MetaClass)
060       */
061      public void setMetaClass(final MetaClass metaClass) {
062        this.wrapped.setMetaClass(metaClass);
063      }
064    
065      /* (non-Javadoc)
066       * @see groovy.lang.GroovyObject#setProperty(java.lang.String, java.lang.Object)
067       */
068      public void setProperty(final String property, final Object newValue) {
069        this.wrapped.setProperty(property, newValue);
070      }
071    
072      protected Object getWrapped() {
073        return this.wrapped;
074      }
075    
076      protected MetaClass getDelegatedMetaClass() {
077        return this.wrapped.getMetaClass();
078      }
079    }