Class ForwardHeadersProcessor

All Implemented Interfaces:
ConfigurationObject, HttpProcessor<ForwardHeadersProcessor.Param>, Processor<ForwardHeadersProcessor.Param,Void>

public final class ForwardHeadersProcessor extends AbstractProcessor<ForwardHeadersProcessor.Param,Void> implements HttpProcessor<ForwardHeadersProcessor.Param>
This processor forwards all the headers from the print request (from the Mapfish Print client) to each http request made for the particular print job. All headers can be forwarded (if forwardAll is set to true) or the specific headers to forward can be specified.

Example 1: Forward all headers from print request


 - !forwardHeaders
   all: true
 

Example 2: Forward specific headers (header1 and header2 will be forwarded)


 - !forwardHeaders
   headers: [header1, header2]
 

Can be applied conditionally using matchers, like in RestrictUrisProcessor (!restrictUris ). [[examples=http_processors]]

  • Constructor Details

    • ForwardHeadersProcessor

      public ForwardHeadersProcessor()
      Constructor.
  • Method Details

    • setHeaders

      public void setHeaders(Set<String> names)
      Set the header names to forward from the request. Should not be defined if all is set to true
      Parameters:
      names - the header names.
    • setMatchers

      public void setMatchers(List<? extends URIMatcher> matchers)
      The matchers used to select the urls that are going to be modified by the processor. For example:
      
       - !restrictUris
         matchers:
           - !localMatch
             dummy: true
           - !ipMatch
           ip: www.camptocamp.org
           - !dnsMatch
             host: mapfish-geoportal.demo-camptocamp.com
             port: 80
           - !dnsMatch
             host: labs.metacarta.com
             port: 80
           - !dnsMatch
             host: terraservice.net
             port: 80
           - !dnsMatch
             host: tile.openstreetmap.org
             port: 80
           - !dnsMatch
             host: www.geocat.ch
             port: 80
       
      Parameters:
      matchers - the list of matcher to use to check if a url is permitted
    • setAll

      public void setAll(boolean all)
      If set to true then all headers are forwarded. If this is true headers should be empty (or undefined)
      Parameters:
      all - if true forward all headers
    • extraValidation

      protected void extraValidation(List<Throwable> validationErrors, Configuration configuration)
      Description copied from class: AbstractProcessor
      Perform any extra validation a subclass may need to perform.
      Specified by:
      extraValidation in class AbstractProcessor<ForwardHeadersProcessor.Param,Void>
      Parameters:
      validationErrors - a list to add errors to so that all validation errors are reported as one.
      configuration - the containing configuration
    • createFactoryWrapper

      public MfClientHttpRequestFactory createFactoryWrapper(ForwardHeadersProcessor.Param param, MfClientHttpRequestFactory requestFactory)
      Description copied from interface: HttpProcessor
      Create the MfClientHttpRequestFactory to use.
      Specified by:
      createFactoryWrapper in interface HttpProcessor<ForwardHeadersProcessor.Param>
      Parameters:
      param - extra parameters required to create the updated request factory
      requestFactory - the basic request factory. It should be unmodified and just wrapped with a proxy class.
    • createInputParameter

      @Nullable public ForwardHeadersProcessor.Param createInputParameter()
      Description copied from interface: Processor
      Returns a new/clean instance of a parameter object. This instance's will be inspected using reflection to find its public fields and the properties will be set from the Values object.

      The way the properties will be looked up is to

      1. take the bean property name
      2. map it using the input mapper, (if the input mapper does not have a mapping for the property then the unmapped property name is used)
      3. Look up the property value in the Values object using the mapped property name
      4. set the value on the instance created by this method. If the value is null an exception will be thrown UNLESS the HasDefaultValue annotation is on the field for the property.
      The populated instance will be passed to the execute method. It is imperative that a new instance is created each time because they will be used in a multi-threaded environment and thus the same processor instance may be ran in multiple threads with different instances of the parameter object.

      It is important to realize that super classes will also be analyzed, so care must be had with inheritance.

      Specified by:
      createInputParameter in interface Processor<ForwardHeadersProcessor.Param,Void>
    • execute

      @Nullable public Void execute(ForwardHeadersProcessor.Param values, Processor.ExecutionContext context)
      Description copied from interface: Processor
      Perform the process on the input attributes.
      Specified by:
      execute in interface Processor<ForwardHeadersProcessor.Param,Void>
      Parameters:
      values - A Java object whose public fields are populated from the Values object (which is used for transferring properties between processors).
      context - The execution context for a print task.
      Returns:
      A Java object whose public fields will be put into the Values object. The key in the Values object is the name of the field or if there is a mapping in the Processor.getOutputMapperBiMap() map, the mapped name. The key is determined in a similar way as for the input object.