@Override
    public void updateValue() throws DevFailed {
        xlogger.entry(getName());
        // invoke on device
        // final Profiler profilerPeriod = new Profiler("read attribute " + name);
        // profilerPeriod.start("invoke");
        if (!config.getWritable().equals(AttrWriteType.READ) && behavior instanceof ISetValueUpdater) {
            // write value is managed by the user
            try {
                final AttributeValue setValue = ((ISetValueUpdater) behavior).getSetValue();
                if (setValue != null) {
                    writeValue = (AttributeValue) ((ISetValueUpdater) behavior).getSetValue().clone();
                    // get as array if necessary (for image)
                    writeValue.setValueWithoutDim(ArrayUtils.from2DArrayToArray(writeValue.getValue()));
                } else {
                    writeValue = null;
                }
            } catch (final CloneNotSupportedException e) {
                throw DevFailedUtils.newDevFailed(e);
            }
        }
        if (config.getWritable().equals(AttrWriteType.WRITE)) {
            if (writeValue == null) {
                readValue = new AttributeValue();
                readValue.setValue(AttributeTangoType.getDefaultValue(config.getType()));
            } else {
                readValue = writeValue;
            }
        } else {
            // attribute with a read part
            final AttributeValue returnedValue = behavior.getValue();
            this.updateValue(returnedValue);
        }

        // profilerPeriod.stop().print();
        xlogger.exit(getName());
    }
@ Override public void updateValue ( ) throws DevFailed { xlogger . entry ( getName ( ) ) ; if ( ! config . getWritable ( ) . equals ( AttrWriteType . READ ) && behavior instanceof ISetValueUpdater ) { try { final AttributeValue setValue = ( ( ISetValueUpdater ) behavior ) . getSetValue ( ) ; if ( setValue != null ) { writeValue = ( AttributeValue ) ( ( ISetValueUpdater ) behavior ) . getSetValue ( ) . clone ( ) ; writeValue . setValueWithoutDim ( ArrayUtils . from2DArrayToArray ( writeValue . getValue ( ) ) ) ; } else { writeValue = null ; } } catch ( final CloneNotSupportedException e ) { throw DevFailedUtils . newDevFailed ( e ) ; } } if ( config . getWritable ( ) . equals ( AttrWriteType . WRITE ) ) { if ( writeValue == null ) { readValue = new AttributeValue ( ) ; readValue . setValue ( AttributeTangoType . getDefaultValue ( config . getType ( ) ) ) ; } else { readValue = writeValue ; } } else { final AttributeValue returnedValue = behavior . getValue ( ) ; this . updateValue ( returnedValue ) ; } xlogger . exit ( getName ( ) ) ; }
read attribute on device

@throws DevFailed