{
  "name": "Compression",
  "description": "A module which provides functionality for compressing and uncompressing data.",
  "version": "1.0.0",
  "vendor": "Mulesoft",
  "category": "COMMUNITY",
  "xmlDsl": {
    "prefix": "compression",
    "namespace": "http://www.mulesoft.org/schema/mule/compression",
    "schemaLocation": "http://www.mulesoft.org/schema/mule/compression/current/mule-compression.xsd",
    "schemaVersion": "1.0.0",
    "xsdFileName": "mule-compression.xsd"
  },
  "resources": [],
  "subTypes": [],
  "privilegedPackages": [],
  "privilegedArtifacts": [],
  "externalLibraries": [],
  "importedTypes": [],
  "configurations": [
    {
      "stereotype": {
        "type": "CONFIG",
        "namespace": "COMPRESSION",
        "parent": {
          "type": "MODULE_CONFIG",
          "namespace": "MULE"
        }
      },
      "parameterGroupModels": [],
      "externalLibraryModels": [],
      "operations": [],
      "connectionProviders": [],
      "messageSources": [],
      "name": "config",
      "description": "Default configuration",
      "modelProperties": {}
    }
  ],
  "operations": [
    {
      "blocking": true,
      "executionType": "CPU_LITE",
      "output": {
        "type": {
          "format": "java",
          "type": "Binary",
          "annotations": {
            "classInformation": {
              "classname": "java.io.InputStream",
              "hasDefaultConstructor": true,
              "isInterface": false,
              "isInstantiable": false,
              "isAbstract": true,
              "isFinal": false,
              "implementedInterfaces": [
                "java.io.Closeable"
              ],
              "parent": "",
              "genericTypes": [],
              "isMap": false
            }
          }
        },
        "hasDynamicType": false,
        "description": "",
        "modelProperties": {}
      },
      "outputAttributes": {
        "type": {
          "format": "java",
          "type": "Void"
        },
        "hasDynamicType": false,
        "description": "",
        "modelProperties": {}
      },
      "transactional": false,
      "requiresConnection": false,
      "supportsStreaming": true,
      "notifications": [],
      "nestedComponents": [],
      "errors": [
        "COMPRESSION:COULD_NOT_DECOMPRESS",
        "COMPRESSION:INVALID_ZIP"
      ],
      "stereotype": {
        "type": "PROCESSOR",
        "namespace": "MULE"
      },
      "parameterGroupModels": [
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "Binary",
                "annotations": {
                  "classInformation": {
                    "classname": "java.io.InputStream",
                    "hasDefaultConstructor": true,
                    "isInterface": false,
                    "isInstantiable": false,
                    "isAbstract": true,
                    "isFinal": false,
                    "implementedInterfaces": [
                      "java.io.Closeable"
                    ],
                    "parent": "",
                    "genericTypes": [],
                    "isMap": false
                  }
                }
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "#[payload]",
              "role": "PRIMARY_CONTENT",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 1
              },
              "allowedStereotypeModels": [],
              "name": "content",
              "description": "the content to be decompressed",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 2,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "outputMimeType",
              "description": "The mime type of the payload that this operation outputs.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 3,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "outputEncoding",
              "description": "The encoding of the payload that this operation outputs.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "Union",
                "annotations": {
                  "typeId": "ByteStreamingStrategy"
                },
                "of": [
                  {
                    "type": "Object",
                    "annotations": {
                      "typeId": "repeatable-in-memory-stream"
                    },
                    "fields": [
                      {
                        "key": {
                          "name": "initialBufferSize"
                        },
                        "model": {
                          "type": "Number",
                          "annotations": {
                            "int": {},
                            "default": "512"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "This is the amount of memory that will be allocated in order to consume the stream and provide random access to it. If the stream contains more data than can be fit into this buffer, then it will be expanded by according to the bufferSizeIncrement attribute, with an upper limit of maxInMemorySize."
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "bufferSizeIncrement"
                        },
                        "model": {
                          "type": "Number",
                          "annotations": {
                            "int": {},
                            "default": "512"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "This is by how much will be buffer size by expanded if it exceeds its initial size. Setting a value of zero or lower will mean that the buffer should not expand, meaning that a STREAM_MAXIMUM_SIZE_EXCEEDED error will be raised when the buffer gets full."
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "maxBufferSize"
                        },
                        "model": {
                          "type": "Number",
                          "annotations": {
                            "int": {},
                            "default": "1024"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "This is the maximum amount of memory that will be used. If more than that is used then a STREAM_MAXIMUM_SIZE_EXCEEDED error will be raised. A value lower or equal to zero means no limit."
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "bufferUnit"
                        },
                        "model": {
                          "type": "String",
                          "annotations": {
                            "enum": {
                              "type": "[Ljava.lang.String;",
                              "values": [
                                "BYTE",
                                "KB",
                                "MB",
                                "GB"
                              ]
                            },
                            "default": "KB"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "The unit in which all these attributes are expressed"
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "Object",
                    "annotations": {
                      "typeId": "repeatable-file-store-stream"
                    },
                    "fields": [
                      {
                        "key": {
                          "name": "maxInMemorySize"
                        },
                        "model": {
                          "type": "Number",
                          "annotations": {
                            "int": {},
                            "default": "512"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "Defines the maximum memory that the stream should use to keep data in memory. If more than that is consumed then it will start to buffer the content on disk."
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "bufferUnit"
                        },
                        "model": {
                          "type": "String",
                          "annotations": {
                            "enum": {
                              "type": "[Ljava.lang.String;",
                              "values": [
                                "BYTE",
                                "KB",
                                "MB",
                                "GB"
                              ]
                            },
                            "default": "KB"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "The unit in which maxInMemorySize is expressed"
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "Object",
                    "annotations": {
                      "typeId": "non-repeatable-stream",
                      "description": {
                        "value": "This configuration allows the input stream to be read only once. It will not allow to seek randomly which will limit the transformations that DW can perform on this stream. Use this option for use cases which just require moving data around from one system to another to get optimum performance."
                      }
                    },
                    "fields": []
                  }
                ]
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 4,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "streamingStrategy",
              "description": "Configure if repeatable streams should be used and their behaviour",
              "modelProperties": {
                "org.mule.runtime.extension.api.property.QNameModelProperty": {
                  "value": {
                    "namespaceURI": "http://www.mulesoft.org/schema/mule/core",
                    "localPart": "abstract-byte-streaming-strategy",
                    "prefix": "mule"
                  }
                },
                "org.mule.runtime.extension.api.property.InfrastructureParameterModelProperty": {
                  "sequence": 2
                }
              }
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 1
          },
          "showInDsl": false,
          "name": "General",
          "description": "",
          "modelProperties": {}
        },
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 5,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "target",
              "displayModel": {
                "displayName": "Target Variable"
              },
              "description": "The name of a variable on which the operation\u0027s output will be placed",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "expressionSupport": "REQUIRED",
              "defaultValue": "#[payload]",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 6,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "targetValue",
              "displayModel": {
                "displayName": "Target Value"
              },
              "description": "An expression that will be evaluated against the operation\u0027s output and the outcome of that expression will be stored in the target variable",
              "modelProperties": {}
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 2
          },
          "showInDsl": false,
          "name": "Output",
          "description": "",
          "modelProperties": {}
        }
      ],
      "name": "unzip",
      "displayModel": {
        "summary": "Decompresses the given content which is assumed to be in ZIP format"
      },
      "description": "Decompresses the given content which is assumed to be in ZIP format. \u003cp\u003e Actual compression will occur in a lazy manner. This operation returns a stream and actual decompression will happen as the stream is consumed. Keep in mind that not all  errors that may rise during compression will occur in this operation. Some might actual appear in the components that consume this stream",
      "modelProperties": {},
      "kind": "operation"
    },
    {
      "blocking": true,
      "executionType": "CPU_LITE",
      "output": {
        "type": {
          "format": "java",
          "type": "Binary",
          "annotations": {
            "classInformation": {
              "classname": "java.io.InputStream",
              "hasDefaultConstructor": true,
              "isInterface": false,
              "isInstantiable": false,
              "isAbstract": true,
              "isFinal": false,
              "implementedInterfaces": [
                "java.io.Closeable"
              ],
              "parent": "",
              "genericTypes": [],
              "isMap": false
            }
          }
        },
        "hasDynamicType": false,
        "description": "",
        "modelProperties": {}
      },
      "outputAttributes": {
        "type": {
          "format": "java",
          "type": "Void"
        },
        "hasDynamicType": false,
        "description": "",
        "modelProperties": {}
      },
      "transactional": false,
      "requiresConnection": false,
      "supportsStreaming": true,
      "notifications": [],
      "nestedComponents": [],
      "errors": [],
      "stereotype": {
        "type": "PROCESSOR",
        "namespace": "MULE"
      },
      "parameterGroupModels": [
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "Binary",
                "annotations": {
                  "classInformation": {
                    "classname": "java.io.InputStream",
                    "hasDefaultConstructor": true,
                    "isInterface": false,
                    "isInstantiable": false,
                    "isAbstract": true,
                    "isFinal": false,
                    "implementedInterfaces": [
                      "java.io.Closeable"
                    ],
                    "parent": "",
                    "genericTypes": [],
                    "isMap": false
                  }
                }
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "#[payload]",
              "role": "PRIMARY_CONTENT",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 1
              },
              "allowedStereotypeModels": [],
              "name": "content",
              "description": "the content to be compressed",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 2,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "outputMimeType",
              "description": "The mime type of the payload that this operation outputs.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 3,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "outputEncoding",
              "description": "The encoding of the payload that this operation outputs.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "Union",
                "annotations": {
                  "typeId": "ByteStreamingStrategy"
                },
                "of": [
                  {
                    "type": "Object",
                    "annotations": {
                      "typeId": "repeatable-in-memory-stream"
                    },
                    "fields": [
                      {
                        "key": {
                          "name": "initialBufferSize"
                        },
                        "model": {
                          "type": "Number",
                          "annotations": {
                            "int": {},
                            "default": "512"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "This is the amount of memory that will be allocated in order to consume the stream and provide random access to it. If the stream contains more data than can be fit into this buffer, then it will be expanded by according to the bufferSizeIncrement attribute, with an upper limit of maxInMemorySize."
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "bufferSizeIncrement"
                        },
                        "model": {
                          "type": "Number",
                          "annotations": {
                            "int": {},
                            "default": "512"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "This is by how much will be buffer size by expanded if it exceeds its initial size. Setting a value of zero or lower will mean that the buffer should not expand, meaning that a STREAM_MAXIMUM_SIZE_EXCEEDED error will be raised when the buffer gets full."
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "maxBufferSize"
                        },
                        "model": {
                          "type": "Number",
                          "annotations": {
                            "int": {},
                            "default": "1024"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "This is the maximum amount of memory that will be used. If more than that is used then a STREAM_MAXIMUM_SIZE_EXCEEDED error will be raised. A value lower or equal to zero means no limit."
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "bufferUnit"
                        },
                        "model": {
                          "type": "String",
                          "annotations": {
                            "enum": {
                              "type": "[Ljava.lang.String;",
                              "values": [
                                "BYTE",
                                "KB",
                                "MB",
                                "GB"
                              ]
                            },
                            "default": "KB"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "The unit in which all these attributes are expressed"
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "Object",
                    "annotations": {
                      "typeId": "repeatable-file-store-stream"
                    },
                    "fields": [
                      {
                        "key": {
                          "name": "maxInMemorySize"
                        },
                        "model": {
                          "type": "Number",
                          "annotations": {
                            "int": {},
                            "default": "512"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "Defines the maximum memory that the stream should use to keep data in memory. If more than that is consumed then it will start to buffer the content on disk."
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "bufferUnit"
                        },
                        "model": {
                          "type": "String",
                          "annotations": {
                            "enum": {
                              "type": "[Ljava.lang.String;",
                              "values": [
                                "BYTE",
                                "KB",
                                "MB",
                                "GB"
                              ]
                            },
                            "default": "KB"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "The unit in which maxInMemorySize is expressed"
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "Object",
                    "annotations": {
                      "typeId": "non-repeatable-stream",
                      "description": {
                        "value": "This configuration allows the input stream to be read only once. It will not allow to seek randomly which will limit the transformations that DW can perform on this stream. Use this option for use cases which just require moving data around from one system to another to get optimum performance."
                      }
                    },
                    "fields": []
                  }
                ]
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 4,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "streamingStrategy",
              "description": "Configure if repeatable streams should be used and their behaviour",
              "modelProperties": {
                "org.mule.runtime.extension.api.property.QNameModelProperty": {
                  "value": {
                    "namespaceURI": "http://www.mulesoft.org/schema/mule/core",
                    "localPart": "abstract-byte-streaming-strategy",
                    "prefix": "mule"
                  }
                },
                "org.mule.runtime.extension.api.property.InfrastructureParameterModelProperty": {
                  "sequence": 2
                }
              }
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 1
          },
          "showInDsl": false,
          "name": "General",
          "description": "",
          "modelProperties": {}
        },
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 5,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "target",
              "displayModel": {
                "displayName": "Target Variable"
              },
              "description": "The name of a variable on which the operation\u0027s output will be placed",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "expressionSupport": "REQUIRED",
              "defaultValue": "#[payload]",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 6,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "targetValue",
              "displayModel": {
                "displayName": "Target Value"
              },
              "description": "An expression that will be evaluated against the operation\u0027s output and the outcome of that expression will be stored in the target variable",
              "modelProperties": {}
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 2
          },
          "showInDsl": false,
          "name": "Output",
          "description": "",
          "modelProperties": {}
        }
      ],
      "name": "zip",
      "displayModel": {
        "summary": "Compresses the given content using the ZIP format"
      },
      "description": "Compresses the given content using the ZIP format. \u003cp\u003e Actual compression will occur in a lazy manner. This operation returns a stream and actual compression will happen as the stream is consumed. Keep in mind that any errors that may rise during compression will not occur in this operation, but in those which are consuming the stream returned here.",
      "modelProperties": {},
      "kind": "operation"
    }
  ],
  "functions": [],
  "constructs": [],
  "connectionProviders": [],
  "messageSources": [],
  "notifications": [],
  "errors": [
    {
      "error": "COMPRESSION:CONNECTIVITY",
      "parent": "MULE:CONNECTIVITY",
      "handleable": true
    },
    {
      "error": "MULE:CONNECTIVITY",
      "parent": "MULE:ANY",
      "handleable": true
    },
    {
      "error": "MULE:ANY",
      "handleable": true
    },
    {
      "error": "MULE:RETRY_EXHAUSTED",
      "parent": "MULE:ANY",
      "handleable": true
    },
    {
      "error": "COMPRESSION:RETRY_EXHAUSTED",
      "parent": "MULE:RETRY_EXHAUSTED",
      "handleable": true
    },
    {
      "error": "COMPRESSION:COULD_NOT_DECOMPRESS",
      "parent": "MULE:ANY",
      "handleable": true
    },
    {
      "error": "COMPRESSION:INVALID_ZIP",
      "parent": "MULE:ANY",
      "handleable": true
    }
  ],
  "modelProperties": {},
  "types": []
}
