public void deleteProperty(String name) {
        final Lock writeLock = readWriteLock.writeLock();
        writeLock.lock();
        try {
            // Remove property from cache.
            propertyCache.remove(name);

            String[] propName = parsePropertyName(name);
            // Search for this property by traversing down the XML hierarchy.
            Element element = document.getRootElement();
            for (int i = 0; i < propName.length - 1; i++) {
                element = element.element(propName[i]);
                // Can't find the property so return.
                if (element == null) {
                    return;
                }
            }
            // Found the correct element to remove, so remove it...
            element.remove(element.element(propName[propName.length - 1]));
            if (element.elements().isEmpty()) {
                element.getParent().remove(element);
            }
            // .. then write to disk.
            saveProperties();

            JiveGlobals.setPropertyEncrypted(name, false);
        } finally {
            writeLock.unlock();
        }

        // Generate event.
        Map<String, Object> params = Collections.emptyMap();
        PropertyEventDispatcher.dispatchEvent(name, PropertyEventDispatcher.EventType.xml_property_deleted, params);
    }
Deletes the specified property.

@param name the property to delete.
xmppserver/src/main/java/org/jivesoftware/util/XMLProperties.java