private  static  void  createContext
        ( String subscriptionClassName, String[] parameterValues, String connectionURL )
        throws Exception
    {
        Class<?>                       subscriptionClass = Class.forName( subscriptionClassName );
        SubscriptionSignature       subscriptionSignature = (SubscriptionSignature) subscriptionClass.getAnnotation( SubscriptionSignature.class );
        HashMap<String, String>     parameterMap = null;
        String[]                    parameterNames = subscriptionSignature.parameters();

        if ( parameterValues != null )
        {        
            parameterMap = new HashMap<String, String>();
            int                         count = parameterNames.length;
            int                         actual = parameterValues.length;

            if ( count != actual )
            {
                throw new SQLException( "Expected " + count + " parameters, but saw " + actual );
            }

            for ( int i = 0; i < count; i++ )
            {
                parameterMap.put( parameterNames[ i ], parameterValues[ i ] );
            }
        }

        SubscriptionContext            newContext = new SubscriptionContext( subscriptionSignature, parameterMap, connectionURL );
        SubscriptionContext            oldContext = getContext( subscriptionClassName, false );

        if ( oldContext != null )
        {
            throw new SQLException( subscriptionClassName + " already in use. Try again later." );
        }
        
        _contexts.put( subscriptionClassName, newContext );
    }