public void remove(JID owner)
    {
        final JID address = owner.asBareJID();
        final Lock lock = pepServices.getLock(address);
        lock.lock();
        try {
            final PEPService pepService = getPEPService(address, false);
            if ( pepService == null ) {
                return;
            }

            // To remove individual nodes, the PEPService must still be registered. Do not remove the service until
            // after all nodes are deleted (OF-2020)
            pubSubEngine.shutdown(pepService); // TODO would shutting down first, and deleting after unrighteously withhold notifications reflecting the deletion of nodes?

            // Delete the user's PEP nodes from memory and the database.
            // FIXME OF-2104: this implementation does not appear to remove all data.
            CollectionNode rootNode = pepService.getRootCollectionNode();
            for ( final Node node : pepService.getNodes() )
            {
                if ( rootNode.isChildNode(node) )
                {
                    node.delete();
                }
            }
            rootNode.delete();

            // All nodes are now deleted. The service itself can now be deleted.

            // Remove from cache if it was in.
            pepServices.remove(address).get();
            Log.debug("PEPService destroyed for: '{}'", address);
        } finally {
            lock.unlock();
        }
    }
Deletes the {@link PEPService} belonging to the specified owner.

@param owner
           The JID of the owner of the service to be deleted.
xmppserver/src/main/java/org/jivesoftware/openfire/pep/PEPServiceManager.java