You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 13 Next »

This design is intended to address the following issues:

KNOX-179@jira: Simple way to introduce new servlet filters into the chains
KNOX-103@jira: Support multiple <pattern> children in <resource> for gateway.xml
KNOX-177@jira: Simplify service deployment contributor implementation

Each of these issues stem from what is currently expected of a ServiceDeploymentContributor in its contributeService method.
Basically each service deployment contributor is expected to build its own filter chain.
This is currently done by making calls to Deploymentcontext.contributeFilter.
While this provides a great deal of flexibility for each service to define a custom chain we have found that this isn't commonly necessary.
Furthermore it makes if very difficult if not impossible to introduce new filters in a chain without impacting all services.
This design will provide an abstraction to the service deployment contributors that can create either a default or specifically configured chain of filters.
The goal is to support a pattern in service deployment contributors that looks like this:

ServiceDeploymentContributor.contributeService
  public void contributeService( DeploymentContext context, Service service ) throws Exception {
    String chain = null; // Default if null, otherwise specific chain name defined in topoloy.xml
    Map<String,Map<String,String>> params = null; // Default if null, otherwise map of per provider role map of name/value pairs.  
    ResourceDescriptor resource = context.addResource()
    resource.role( "WEBHDFS" );
    resource.pattern( "webhdfs/v1/?**" );
    resource.pattern( "webhdfs/v1/**?**" );
    context.contributeChain( service, resource, null, params );
  }
Classes DeploymentContext GatewayConfig getGatewayConfig();Topology getTopology();WebArchive getWebArchive();WebAppDescriptor getWebAppDescriptor();GatewayDescriptor getGatewayDescriptor();void contributeChain( Service service, ResourceDescriptor resource, String chainName, Map<String,Map<String,String>> providerParams )void contributeFilter( Service service, ResourceDescriptor resource, String role, String name, List<FilterParamDescriptor> params );void addDescriptor( String name, Object descriptor );<T> T getDescriptor( String name ); ServiceDeploymentContributor String getRole();String getName();void initializeContribution( DeploymentContext context );void contributeService( DeploymentContext context, Service service ) throws Exception;void finalizeContribution( DeploymentContext context ); Sequences Filter Filter Chain Chain Text
  • No labels