private void checkAcceptingFMUCJoiningNodePreconditions( @Nonnull final JID joiningPeer ) throws FMUCException
    {
        if ( !joiningPeer.asBareJID().equals(joiningPeer) ) {
            throw new IllegalArgumentException( "Expected argument 'joiningPeer' to be a bare JID, but it was not: " + joiningPeer );
        }

        if ( !(room.isFmucEnabled() && FMUC_ENABLED.getValue()) )
        {
            Log.info( "(room: '{}'): Rejecting join request of remote joining peer '{}': FMUC functionality is not enabled.", room.getJID(), joiningPeer );
            throw new FMUCException( "FMUC functionality is not enabled." );
        }

        if ( this.outboundJoinConfiguration != null && joiningPeer.equals(this.outboundJoinConfiguration.getPeer()) ) {
            Log.info( "(room: '{}'): Rejecting join request of remote joining peer '{}': The local, joined node is set up to federate with the joining node (cannot have circular federation).", room.getJID(), joiningPeer );
            throw new FMUCException( "The joined node is set up to federate with the joining node (cannot have circular federation)." );
        }

        Log.debug( "(room: '{}'): Accepting join request of remote joining peer '{}'.", room.getJID(), joiningPeer );
    }
Checks if the entity that attempts to join, which is assumed to represent a remote, joining FMUC node, is allowed
to join the local ('joined') FMUC node.

@param joiningPeer the address of the remote room that attempts to join the local FMUC node.
@throws FMUCException when the peer cannot join the local FMUC node.
xmppserver/src/main/java/org/jivesoftware/openfire/muc/spi/FMUCHandler.java