Revision 1548 org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/dynobject/impl/DefaultDynObject.java

View differences:

DefaultDynObject.java
34 34
import org.gvsig.tools.dynobject.DynMethod;
35 35
import org.gvsig.tools.dynobject.DynObject;
36 36
import org.gvsig.tools.dynobject.DynObjectRuntimeException;
37
import org.gvsig.tools.dynobject.DynObject_v2;
37 38
import org.gvsig.tools.dynobject.DynStruct;
38 39
import org.gvsig.tools.dynobject.exception.DynFieldNotFoundException;
39 40
import org.gvsig.tools.dynobject.exception.DynMethodException;
40 41
import org.gvsig.tools.dynobject.exception.DynMethodNotSupportedException;
41 42

  
42
public class DefaultDynObject implements DelegatedDynObject {
43
public class DefaultDynObject implements DelegatedDynObject, DynObject_v2 {
43 44

  
44 45
    protected DynClass dynClass;
45 46
    protected Map values;
......
161 162
        return this.dynClass;
162 163
    }
163 164

  
165
    @Override
166
    public boolean hasDynMethod(String name) {
167
        name = name.toLowerCase();
168
        
169
        DynMethod method;
170
        try {
171
            method = this.dynClass.getDynMethod(name);
172
            if( method!=null ) {
173
                return true;
174
            }
175
        } catch (DynMethodException ex) {
176
        }
177
        if ( delegateds != null ) {
178
            for( DynObject dynObj : delegateds ) {
179
                try {
180
                    if( dynObj instanceof DynObject_v2 ) {
181
                        if( ((DynObject_v2)dynObj).hasDynMethod(name) ) {
182
                            return true;
183
                        }
184
                    } else {
185
                        DynClass dynClass = dynObj.getDynClass();
186
                        if( dynClass.getDynMethod(name)!=null ) {
187
                            return true;
188
                        }
189
                    }
190
                } catch(Throwable th) {
191
                    // continue checking others
192
                }
193
            }
194
        }
195
        return false;
196
    }
197

  
164 198
    public boolean hasDynValue(String name) throws DynFieldNotFoundException {
165 199
        boolean defined = false;
166 200
        name = name.toLowerCase();

Also available in: Unified diff