remove an attribute of the device. Not possible to remove State or Status

@param attribute
@throws DevFailed
333819
public synchronized void removeAttribute(final AttributeImpl attribute) throws DevFailed {
        if (attribute.getName().equalsIgnoreCase(STATUS_NAME) || attribute.getName().equalsIgnoreCase(STATE_NAME)) {
            return;
        }
        pollingManager.removeAttributePolling(attribute.getName());
        statusImpl.removeAttributeAlarm(attribute.getName());
        stateImpl.removeAttributeAlarm(attribute.getName());
        attributeList.remove(attribute);
    }
288971
public void delete_attribute_property(String attributeName, String propertyName) throws DevFailed {
        database.delete_class_attribute_property(className, attributeName, propertyName);
    }
375813
public int (final DeviceAttribute da, final boolean fwd) throws DevFailed {
	final int rid = _i(da, fwd, next_req_id());
	arp.put(new Integer(rid), new Boolean(fwd));
	return rid;
    }
751149
public void write_attribute_asynch(DeviceAttribute attr, CallBack cb) throws DevFailed {
        deviceProxyDAO.write_attribute_asynch(this, attr, cb);
    }
197427
@Override
    public void setAttributeProperties(final String deviceName, final String attributeName,
            final Map<String, String[]> properties) throws DevFailed {
        cache.setAttributeProperties(deviceName, attributeName, properties);
    }
433343
public void addAttribute(final IAttributeBehavior behavior) throws DevFailed {
        final AttributeConfiguration configuration = behavior.getConfiguration();
        final String attributeName = configuration.getName();
        xlogger.entry("adding dynamic attribute {}", attributeName);
        if (behavior instanceof ForwardedAttribute) {
            // init attribute with either the attribute property value, or the value defined in its constructor
            final ForwardedAttribute att = (ForwardedAttribute) behavior;
            final String deviceName = deviceImpl.getName();
            final String rootAttributeName = behavior.getConfiguration().getAttributeProperties()
                    .loadAttributeRootName(deviceName, attributeName);
            if (rootAttributeName == null || rootAttributeName.isEmpty()
                    || rootAttributeName.equalsIgnoreCase(Constants.NOT_SPECIFIED)) {
                att.init(deviceName);
                // persist root attribute name in tango db
                behavior.getConfiguration().getAttributeProperties()
                        .persistAttributeRootName(deviceName, attributeName);
            } else {
                // use attribute property
                att.init(deviceName, rootAttributeName);
            }
            // check if this attribute is already created
            final String lower = att.getRootName().toLowerCase(Locale.ENGLISH);
            if (forwardedAttributes.contains(lower)) {
                throw DevFailedUtils.newDevFailed(ExceptionMessages.FWD_DOUBLE_USED,
                        "root attribute already used in this device");
            } else {
                forwardedAttributes.add(lower);
            }
        } else {
            // set default properties
            final AttributePropertiesImpl prop = configuration.getAttributeProperties();
            if (prop.getLabel().isEmpty()) {
                prop.setLabel(configuration.getName());
            }
            if (prop.getFormat().equals(Constants.NOT_SPECIFIED)) {
                prop.setDefaultFormat(configuration.getScalarType());
            }
        }
        final AttributeImpl attrImpl = new AttributeImpl(behavior, deviceImpl.getName());
        attrImpl.setStateMachine(behavior.getStateMachine());
        deviceImpl.addAttribute(attrImpl);
        dynamicAttributes.put(attributeName.toLowerCase(Locale.ENGLISH), attrImpl);
        deviceImpl.pushInterfaceChangeEvent(false);
        if (configuration.isPolled() && configuration.getPollingPeriod() > 0) {
            deviceImpl.addAttributePolling(attributeName, configuration.getPollingPeriod());
        }
        xlogger.exit();
    }
979872
public void setAttributeProperties(final String attributeName, final AttributePropertiesImpl properties)
            throws DevFailed {
        final AttributeImpl attr = AttributeGetterSetter.getAttribute(attributeName, device.getAttributeList());
        attr.setProperties(properties);
    }
937397
public void pushDataReadyEvent(final String attributeName, final int counter) throws DevFailed {
        EventManager.getInstance().pushAttributeDataReadyEvent(name, attributeName, counter);
    }
137162
public synchronized void removeAttributePolling(final AttributeImpl attr) throws DevFailed {
        if (attributeCacheMap.containsKey(attr)) {
            final AttributeCache cache = attributeCacheMap.get(attr);
            cache.stopRefresh();
            attributeCacheMap.remove(attr);
        } else if (extTrigAttributeCacheMap.containsKey(attr)) {
            extTrigAttributeCacheMap.remove(attr);
        } else if (attr.getName().equalsIgnoreCase(DeviceImpl.STATE_NAME) && stateCache != null) {
            stateCache.stopRefresh();
            stateCache = null;
        } else if (attr.getName().equalsIgnoreCase(DeviceImpl.STATUS_NAME) && statusCache != null) {
            statusCache.stopRefresh();
            statusCache = null;
        }
    }
135444
public void removeTangoUserListener(ITangoUserListener listener, String attrName)
            throws DevFailed {
        synchronized (moni) {
            TangoUser tangoUser;
            String key = deviceName+"/"+attrName;
            if ((tangoUser = tango_user_source.get(key)) != null)
                tangoUser.removeTangoUserListener(listener);
        }
    }
1106988
public void delete_device_attribute_property(Database database, String deviceName, String attname, String propname)
            throws DevFailed {
        String[] array = new String[1];
        array[0] = propname;
        delete_device_attribute_property(database, deviceName, attname, array);
    }
974944
public void put_property(DbDatum property)
            throws DevFailed {
        DbAttribute db_att = new DbAttribute(deviceName);
        db_att.add(property);
        dev.put_attribute_property(db_att);
    }
576220
public void write_attribute_asynch(final DeviceProxy deviceProxy, final DeviceAttribute attr,
	    final CallBack cb) throws DevFailed {
        final DeviceAttribute[] attribs = new DeviceAttribute[1];
        attribs[0] = attr;
        write_attribute_asynch(deviceProxy, attribs, cb);
    }
1111725
public void delete_device_attribute_property(String devname, DbAttribute[] attr) throws DevFailed {
		databaseDAO.delete_device_attribute_property(this, devname, attr);
	}
699963
public DeviceAttribute[] write_read_attribute(DeviceAttribute[] deviceAttributes,
                                                  String[] readNames) throws DevFailed {
        return deviceProxyDAO.write_read_attribute(this, deviceAttributes, readNames);
    }
837750
public void deleteAllDevicePipeProperty(String deviceName, String pipeName) throws DevFailed {
        ArrayList<String>   list = new ArrayList<String>(1);
        list.add(pipeName);
        deleteAllDevicePipeProperty(deviceName, list);
    }
150857
public void delete_property(String name, DbDatum[] properties) throws DevFailed {
		databaseDAO.delete_property(this, name, properties);
	}