Revision 1405 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
25 25

  
26 26
import java.util.HashMap;
27 27
import java.util.Map;
28
import org.gvsig.tools.ToolsLocator;
29 28

  
30 29
import org.gvsig.tools.dataTypes.CoercionException;
31 30
import org.gvsig.tools.dynobject.DelegatedDynObject;
32 31
import org.gvsig.tools.dynobject.DynClass;
33 32
import org.gvsig.tools.dynobject.DynField;
33
import org.gvsig.tools.dynobject.DynField_v2;
34 34
import org.gvsig.tools.dynobject.DynMethod;
35 35
import org.gvsig.tools.dynobject.DynObject;
36
import org.gvsig.tools.dynobject.DynObjectManager;
37 36
import org.gvsig.tools.dynobject.DynObjectRuntimeException;
38 37
import org.gvsig.tools.dynobject.DynStruct;
39 38
import org.gvsig.tools.dynobject.exception.DynFieldNotFoundException;
......
74 73
        
75 74
        DynField field = dynClass.getDynField(name);
76 75
        if( field != null ) {
76
            if( field instanceof DynField_v2 && ((DynField_v2)field).isCalculated() ) {
77
                return ((DynField_v2)field).getCalculatedValue(this);
78
            }
77 79
            if( values.containsKey(name) ) {
78 80
                return values.get(name);
79 81
            }
......
210 212
        this.delegateds = newValues;
211 213
    }
212 214

  
213
    public Object invokeDynMethod(String name, DynObject context)
215
    @Override
216
    public Object invokeDynMethod(String name, Object[] args)
214 217
            throws DynMethodException {
215
        throw new IllegalArgumentException("self required");
218
        return this.invokeDynMethod(this, name, args);
216 219
    }
217 220

  
218
    public Object invokeDynMethod(int code, DynObject context) throws DynMethodException {
219
        throw new IllegalArgumentException("self required");
221
    @Override
222
    public Object invokeDynMethod(int code, Object[] args) throws DynMethodException {
223
        return this.invokeDynMethod(this, code, args);
220 224
    }
221

  
222
    public Object invokeDynMethod(Object self, String methodName,
223
            DynObject context) throws DynMethodException {
225
    
226
    @Override
227
    public Object invokeDynMethod(Object self, String methodName, Object[] args) throws DynMethodException {
224 228
        DynMethod method = this.dynClass.getDynMethod(methodName);
225
        if ( method == null ) {
226
            if ( delegateds != null ) {
227
                for ( int i = 0; i < delegateds.length; i++ ) {
228
                    try {
229
                        return delegateds[i].invokeDynMethod(methodName,
230
                                context);
231
                    } catch (DynMethodNotSupportedException e) {
232
                        // continue next delegated
233
                    }
229
        if (method != null) {
230
            return method.invoke((DynObject)self, args);
231
        }
232
        if ( delegateds != null ) {
233
            for ( int i = 0; i < delegateds.length; i++ ) {
234
                try {
235
                    return delegateds[i].invokeDynMethod(methodName,args);
236
                } catch (DynMethodNotSupportedException e) {
237
                    // continue next delegated
234 238
                }
235

  
236 239
            }
237
            throw new DynMethodNotSupportedException(methodName, self
238
                    .getClass().getName());
239

  
240 240
        }
241
        return method.invoke(self, context);
241
        throw new DynMethodNotSupportedException(methodName, self.getClass().getName());
242 242
    }
243 243

  
244
    public Object invokeDynMethod(Object self, int methodCode, DynObject context) throws DynMethodException {
244
    @Override
245
    public Object invokeDynMethod(Object self, int methodCode, Object[] args) throws DynMethodException {
245 246
        DynMethod method = this.dynClass.getDynMethod(methodCode);
246
        if ( method == null ) {
247
            if ( delegateds != null ) {
248
                for ( int i = 0; i < delegateds.length; i++ ) {
249
                    try {
250
                        return delegateds[i].invokeDynMethod(methodCode,
251
                                context);
252
                    } catch (DynMethodNotSupportedException e) {
253
                        // continue next delegated
254
                    }
247
        if (method != null) {
248
            return method.invoke((DynObject)self, args);
249
        }
250
        if ( delegateds != null ) {
251
            for ( int i = 0; i < delegateds.length; i++ ) {
252
                try {
253
                    return delegateds[i].invokeDynMethod(methodCode,args);
254
                } catch (DynMethodNotSupportedException e) {
255
                    // continue next delegated
255 256
                }
256
                throw new DynMethodNotSupportedException(methodCode, self
257
                        .getClass().getName());
258

  
259
            } else {
260
                throw new DynMethodNotSupportedException(methodCode, self
261
                        .getClass().getName());
262 257
            }
263 258
        }
264
        DynObjectManager manager = ToolsLocator.getDynObjectManager();
265
        return manager.invokeDynMethod(self, methodCode, context);
259
        throw new DynMethodNotSupportedException(methodCode, self.getClass().getName());
266 260
    }
267 261

  
268 262
    public void clear() {

Also available in: Unified diff