Class TarAggregationStrategy

java.lang.Object
org.apache.camel.processor.aggregate.tarfile.TarAggregationStrategy
All Implemented Interfaces:
org.apache.camel.AggregationStrategy

@Metadata(label="bean", description="AggregationStrategy to combine together incoming messages into a tar file. Please note that this aggregation strategy requires eager completion check to work properly.", annotations="interfaceName=org.apache.camel.AggregationStrategy") @Configurer(metadataOnly=true) public class TarAggregationStrategy extends Object implements org.apache.camel.AggregationStrategy
This aggregation strategy will aggregate all incoming messages into a TAR file.

If the incoming exchanges contain GenericFileMessage file name will be taken from the body otherwise the body content will be treated as a byte array and the TAR entry will be named using the message id (unless the flag useFilenameHeader is set to true.

NOTE 1: Please note that this aggregation strategy requires eager completion check to work properly.

NOTE 2: This implementation is very inefficient especially on big files since the tar file is completely rewritten for each file that is added to it. Investigate if the files can be collected and at completion stored to tar file.

  • Constructor Details

    • TarAggregationStrategy

      public TarAggregationStrategy()
    • TarAggregationStrategy

      public TarAggregationStrategy(boolean preserveFolderStructure)
      Parameters:
      preserveFolderStructure - if true, the folder structure is preserved when the source is a type of GenericFileMessage. If used with a file, use recursive=true.
    • TarAggregationStrategy

      public TarAggregationStrategy(boolean preserveFolderStructure, boolean useFilenameHeader)
      Parameters:
      preserveFolderStructure - if true, the folder structure is preserved when the source is a type of GenericFileMessage. If used with a file, use recursive=true.
      useFilenameHeader - if true, the filename header will be used to name aggregated byte arrays within the TAR file.
  • Method Details

    • getFilePrefix

      public String getFilePrefix()
    • setFilePrefix

      public void setFilePrefix(String filePrefix)
      Sets the prefix that will be used when creating the TAR filename.
    • getFileSuffix

      public String getFileSuffix()
    • setFileSuffix

      public void setFileSuffix(String fileSuffix)
      Sets the suffix that will be used when creating the ZIP filename.
    • getParentDir

      public File getParentDir()
    • setParentDir

      public void setParentDir(File parentDir)
      Sets the parent directory to use for writing temporary files.
    • setParentDir

      public void setParentDir(String parentDir)
      Sets the parent directory to use for writing temporary files.
    • isPreserveFolderStructure

      public boolean isPreserveFolderStructure()
    • setPreserveFolderStructure

      public void setPreserveFolderStructure(boolean preserveFolderStructure)
      If the incoming message is from a file, then the folder structure of said file can be preserved
    • isUseFilenameHeader

      public boolean isUseFilenameHeader()
    • setUseFilenameHeader

      public void setUseFilenameHeader(boolean useFilenameHeader)
      Whether to use CamelFileName header for the filename instead of using unique message id
    • aggregate

      public org.apache.camel.Exchange aggregate(org.apache.camel.Exchange oldExchange, org.apache.camel.Exchange newExchange)
      Specified by:
      aggregate in interface org.apache.camel.AggregationStrategy
    • onCompletion

      public void onCompletion(org.apache.camel.Exchange exchange, org.apache.camel.Exchange inputExchange)
      Specified by:
      onCompletion in interface org.apache.camel.AggregationStrategy