1 package org.apache.velocity.util.introspection; 2 3 /* 4 * Licensed to the Apache Software Foundation (ASF) under one 5 * or more contributor license agreements. See the NOTICE file 6 * distributed with this work for additional information 7 * regarding copyright ownership. The ASF licenses this file 8 * to you under the Apache License, Version 2.0 (the 9 * "License"); you may not use this file except in compliance 10 * with the License. You may obtain a copy of the License at 11 * 12 * http://www.apache.org/licenses/LICENSE-2.0 13 * 14 * Unless required by applicable law or agreed to in writing, 15 * software distributed under the License is distributed on an 16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 17 * KIND, either express or implied. See the License for the 18 * specific language governing permissions and limitations 19 * under the License. 20 */ 21 22 import java.util.Iterator; 23 24 /** 25 * Default implementation of a {@link ChainableUberspector chainable uberspector} that forwards all calls to the wrapped 26 * uberspector (when that is possible). It should be used as the base class for all chainable uberspectors. 27 * 28 * @version $Id: $ 29 * @since 1.6 30 * @see ChainableUberspector 31 */ 32 public abstract class AbstractChainableUberspector extends UberspectImpl implements ChainableUberspector 33 { 34 /** The wrapped (decorated) uberspector. */ 35 protected Uberspect inner; 36 37 /** 38 * {@inheritDoc} 39 * 40 * @see ChainableUberspector#wrap(org.apache.velocity.util.introspection.Uberspect) 41 * @see #inner 42 */ 43 public void wrap(Uberspect inner) 44 { 45 this.inner = inner; 46 } 47 48 /** 49 * init - the chainable uberspector is responsible for the initialization of the wrapped uberspector 50 * 51 * @see org.apache.velocity.util.introspection.Uberspect#init() 52 */ 53 //@Override 54 public void init() throws Exception 55 { 56 if (this.inner != null) { 57 this.inner.init(); 58 } 59 } 60 61 /** 62 * {@inheritDoc} 63 * 64 * @see org.apache.velocity.util.introspection.Uberspect#getIterator(java.lang.Object, 65 * org.apache.velocity.util.introspection.Info) 66 */ 67 //@SuppressWarnings("unchecked") 68 //@Override 69 public Iterator getIterator(Object obj, Info i) throws Exception 70 { 71 return (this.inner != null) ? this.inner.getIterator(obj, i) : null; 72 } 73 74 /** 75 * {@inheritDoc} 76 * 77 * @see org.apache.velocity.util.introspection.Uberspect#getMethod(java.lang.Object, java.lang.String, 78 * java.lang.Object[], org.apache.velocity.util.introspection.Info) 79 */ 80 //@Override 81 public VelMethod getMethod(Object obj, String methodName, Object[] args, Info i) throws Exception 82 { 83 return (this.inner != null) ? this.inner.getMethod(obj, methodName, args, i) : null; 84 } 85 86 /** 87 * {@inheritDoc} 88 * 89 * @see org.apache.velocity.util.introspection.Uberspect#getPropertyGet(java.lang.Object, java.lang.String, 90 * org.apache.velocity.util.introspection.Info) 91 */ 92 //@Override 93 public VelPropertyGet getPropertyGet(Object obj, String identifier, Info i) throws Exception 94 { 95 return (this.inner != null) ? this.inner.getPropertyGet(obj, identifier, i) : null; 96 } 97 98 /** 99 * {@inheritDoc} 100 * 101 * @see org.apache.velocity.util.introspection.Uberspect#getPropertySet(java.lang.Object, java.lang.String, 102 * java.lang.Object, org.apache.velocity.util.introspection.Info) 103 */ 104 //@Override 105 public VelPropertySet getPropertySet(Object obj, String identifier, Object arg, Info i) throws Exception 106 { 107 return (this.inner != null) ? this.inner.getPropertySet(obj, identifier, arg, i) : null; 108 } 109 }