Nirmal Fernando created STRATOS-777:
---------------------------------------

             Summary: Introduce subscription filters to intercept a new 
subscription
                 Key: STRATOS-777
                 URL: https://issues.apache.org/jira/browse/STRATOS-777
             Project: Stratos
          Issue Type: New Feature
          Components: Stratos Manager
    Affects Versions: 4.0.0
            Reporter: Nirmal Fernando
            Assignee: Nirmal Fernando
             Fix For: 4.1.0


Currently, there's no clean way to intercept a subscription request and do some 
pre-processing. As of now, we do some pre-processing of a subscription request 
in order to identify the need of a load balancer and act accordingly. I 
currently have another use-case to intercept a subscription request and act 
upon a parameter.

Hence, to make the code clean over there, I propose we introduce a Subscription 
Filter chain where you could intercept a subscription request and do some 
pre-processing before creating the actual subscription. 

Following is the interface design, I've come up with.

/**
 * Intercepts the flow of Cartridge Subscription.
 * Implementations of this class would get executed before making the real 
subscription.
 */
public interface SubscriptionFilter {

       /**
         * Do some pre-processing on a subscription request.
         * @param cartridgeInfo {@link CartridgeInfo} 
         * @param subscriptionData {@link SubscriptionData}
         * @return {@link Properties}, if there are any.
         * @throws ADCException on a failure while processing.
         */
        public Properties execute(CartridgeInfo cartridgeInfo, SubscriptionData 
subscriptionData) throws ADCException ;
}

Filters could leverage these key-value pairs to pass properties into the main 
subscription.

One existing use-case is passing LB subscription related properties to the main 
subscription. 

You would need to implement the interface and add the fully qualified class 
name of it, to the META-INF/services folder in a file named 
"org.apache.stratos.manager.subscription.filter.SubscriptionFilter" (I am 
planning to use the Java ServiceLoader - 
http://docs.oracle.com/javase/6/docs/api/java/util/ServiceLoader.html)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to