public void destroy( UrlRewriteStepProcessor processor ) { if( processor != null ) { try { processor.destroy(); } catch( Exception e ) { // Maybe it makes sense to throw exception LOG.failedToDestroyRewriteStepProcessor( e ); } } }
private static Map<Class<? extends UrlRewriteStepDescriptor>,Map<String,Class<? extends UrlRewriteStepProcessor>>> loadStepProcessors() { Map<Class<? extends UrlRewriteStepDescriptor>,Map<String,Class<? extends UrlRewriteStepProcessor>>> descriptorMap = new HashMap<>(); ServiceLoader<UrlRewriteStepProcessor> processors = ServiceLoader.load( UrlRewriteStepProcessor.class ); for( UrlRewriteStepProcessor processor : processors ) { Class<? extends UrlRewriteStepDescriptor> descriptorInterface = getDescriptorInterface( processor ); Map<String,Class<? extends UrlRewriteStepProcessor>> typeMap = descriptorMap.get( descriptorInterface ); if( typeMap == null ) { typeMap = new HashMap<>(); descriptorMap.put( descriptorInterface, typeMap ); } String processorType = processor.getType(); typeMap.put( processorType, processor.getClass() ); } return descriptorMap; }
@Override @SuppressWarnings( "unchecked" ) public void initialize( UrlRewriteEnvironment environment, UrlRewriteStepDescriptor descriptor ) throws Exception { UrlRewriteStepProcessor processor = UrlRewriteStepProcessorFactory.create( descriptor ); processor.initialize( environment, descriptor ); initialize( environment, descriptor, processor ); }
@Override public UrlRewriteStepStatus process( UrlRewriteContext context ) throws Exception { UrlRewriteStepStatus status = UrlRewriteStepStatus.SUCCESS; // If initialization failed then fail processing if( processor != null ) { status = processor.process( context ); if( UrlRewriteStepStatus.SUCCESS == status && descriptor instanceof UrlRewriteFlowDescriptor && !childProcessors.isEmpty() ) { UrlRewriteFlowDescriptor flowDescriptor = (UrlRewriteFlowDescriptor)descriptor; UrlRewriteStepFlow flow = flowDescriptor.flow(); if( flow == null ) { flow = UrlRewriteStepFlow.AND; } switch( flow ) { case ALL: return processAllFlow( context ); case AND: return processAndFlow( context ); case OR: return processOrFlow( context ); } } } return status; }
@Override @SuppressWarnings( "unchecked" ) public void initialize( UrlRewriteEnvironment environment, UrlRewriteStepDescriptor descriptor ) throws Exception { UrlRewriteStepProcessor processor = UrlRewriteStepProcessorFactory.create( descriptor ); processor.initialize( environment, descriptor ); initialize( environment, descriptor, processor ); }
@Override public UrlRewriteStepStatus process( UrlRewriteContext context ) throws Exception { UrlRewriteStepStatus status = UrlRewriteStepStatus.SUCCESS; // If initialization failed then fail processing if( processor != null ) { status = processor.process( context ); if( UrlRewriteStepStatus.SUCCESS == status && descriptor instanceof UrlRewriteFlowDescriptor && !childProcessors.isEmpty() ) { UrlRewriteFlowDescriptor flowDescriptor = (UrlRewriteFlowDescriptor)descriptor; UrlRewriteStepFlow flow = flowDescriptor.flow(); if( flow == null ) { flow = UrlRewriteStepFlow.AND; } switch( flow ) { case ALL: return processAllFlow( context ); case AND: return processAndFlow( context ); case OR: return processOrFlow( context ); } } } return status; }
public void destroy( UrlRewriteStepProcessor processor ) { if( processor != null ) { try { processor.destroy(); } catch( Exception e ) { // Maybe it makes sense to throw exception LOG.failedToDestroyRewriteStepProcessor( e ); } } }
private static Map<Class<? extends UrlRewriteStepDescriptor>,Map<String,Class<? extends UrlRewriteStepProcessor>>> loadStepProcessors() { Map<Class<? extends UrlRewriteStepDescriptor>,Map<String,Class<? extends UrlRewriteStepProcessor>>> descriptorMap = new HashMap<>(); ServiceLoader<UrlRewriteStepProcessor> processors = ServiceLoader.load( UrlRewriteStepProcessor.class ); for( UrlRewriteStepProcessor processor : processors ) { Class<? extends UrlRewriteStepDescriptor> descriptorInterface = getDescriptorInterface( processor ); Map<String,Class<? extends UrlRewriteStepProcessor>> typeMap = descriptorMap.get( descriptorInterface ); if( typeMap == null ) { typeMap = new HashMap<>(); descriptorMap.put( descriptorInterface, typeMap ); } String processorType = processor.getType(); typeMap.put( processorType, processor.getClass() ); } return descriptorMap; }