class ServiceUpdatedEvent implements ClusterTask<Void> {
    
    private static final Logger Log = LoggerFactory.getLogger(ServiceUpdatedEvent.class);

    private String subdomain;

    public ServiceUpdatedEvent() {
    }

    public ServiceUpdatedEvent(String subdomain) {
        this.subdomain = subdomain;
    }

    @Override
    public Void getResult() {
        return null;
    }

    @Override
    public void run() {<FILL_FUNCTION_BODY>}

    @Override
    public void writeExternal(ObjectOutput out) throws IOException {
        ExternalizableUtil.getInstance().writeSafeUTF(out, subdomain);
    }

    @Override
    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
        subdomain = ExternalizableUtil.getInstance().readSafeUTF(in);
    }
}

        MultiUserChatService service = XMPPServer.getInstance().getMultiUserChatManager().getMultiUserChatService(subdomain);
        if (service != null) {
            // Reload properties from database (OF-2164)
            XMPPServer.getInstance().getMultiUserChatManager().refreshService(subdomain);
            if (service instanceof MultiUserChatServiceImpl) {
                MUCPersistenceManager.refreshProperties(subdomain);
                ((MultiUserChatServiceImpl)service).initializeSettings();
            }
            else {
                // Ok.  We don't handle non default implementations for this.  Why are we seeing it?
                Log.warn("Processing an update event for service '{}' that is of an unknown implementation: {}", subdomain, service.getClass());
            }
        }
        else {
            // Hrm.  We got an update for something that we don't have.
            Log.warn("ServiceUpdatedEvent: Received update for service we are not running: {}", subdomain);
        }
    
<no_super_class>