{
  "name": "Pooled",
  "description": "Basic Connector Description",
  "version": "4.0.0",
  "vendor": "Mulesoft",
  "category": "COMMUNITY",
  "xmlDsl": {
    "prefix": "pooled",
    "namespace": "http://www.mulesoft.org/schema/mule/pooled",
    "schemaLocation": "http://www.mulesoft.org/schema/mule/pooled/current/mule-pooled.xsd",
    "schemaVersion": "4.0.0",
    "xsdFileName": "mule-pooled.xsd"
  },
  "resources": [],
  "subTypes": [],
  "privilegedPackages": [],
  "privilegedArtifacts": [],
  "externalLibraries": [],
  "importedTypes": [],
  "configurations": [
    {
      "stereotype": {
        "type": "CONFIG",
        "namespace": "POOLED",
        "parent": {
          "type": "MODULE_CONFIG",
          "namespace": "MULE"
        }
      },
      "parameterGroupModels": [
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": true,
              "isConfigOverride": false,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 1
              },
              "allowedStereotypeModels": [],
              "name": "configParameter",
              "description": "Config Parameter description",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "Object",
                "annotations": {
                  "typeId": "org.mule.runtime.extension.api.runtime.ExpirationPolicy",
                  "description": {
                    "value": "Configures the minimum amount of time that a dynamic configuration instance can remain idle before the runtime considers it eligible for expiration. This does not mean that the platform will expire the instance at the exact moment that it becomes eligible. The runtime will actually purge the instances when it sees it fit."
                  },
                  "typeDsl": {
                    "allowInlineDefinition": true,
                    "allowTopLevelDefinition": false
                  }
                },
                "fields": [
                  {
                    "key": {
                      "name": "maxIdleTime"
                    },
                    "model": {
                      "type": "Number",
                      "annotations": {
                        "int": {},
                        "classInformation": {
                          "classname": "java.lang.Long",
                          "hasDefaultConstructor": false,
                          "isInterface": false,
                          "isInstantiable": false,
                          "isAbstract": false,
                          "isFinal": true,
                          "implementedInterfaces": [
                            "java.lang.Comparable"
                          ],
                          "parent": "java.lang.Number",
                          "genericTypes": [],
                          "isMap": false
                        },
                        "default": "5"
                      }
                    },
                    "annotations": {
                      "description": {
                        "value": "A scalar time value for the maximum amount of time a dynamic configuration instance should be allowed to be idle before it\u0027s considered eligible for expiration"
                      },
                      "expressionSupport": {
                        "value": "NOT_SUPPORTED"
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "timeUnit"
                    },
                    "model": {
                      "type": "String",
                      "annotations": {
                        "enum": {
                          "type": "[Ljava.lang.String;",
                          "values": [
                            "NANOSECONDS",
                            "MICROSECONDS",
                            "MILLISECONDS",
                            "SECONDS",
                            "MINUTES",
                            "HOURS",
                            "DAYS"
                          ]
                        },
                        "default": "MINUTES"
                      }
                    },
                    "annotations": {
                      "description": {
                        "value": "A time unit that qualifies the maxIdleTime attribute"
                      },
                      "expressionSupport": {
                        "value": "NOT_SUPPORTED"
                      }
                    }
                  }
                ]
              },
              "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,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "expirationPolicy",
              "description": "Configures the minimum amount of time that a dynamic configuration instance can remain idle before the runtime considers it eligible for expiration. This does not mean that the platform will expire the instance at the exact moment that it becomes eligible. The runtime will actually purge the instances when it sees it fit.",
              "modelProperties": {
                "org.mule.runtime.extension.api.property.QNameModelProperty": {
                  "value": {
                    "namespaceURI": "http://www.mulesoft.org/schema/mule/core",
                    "localPart": "expiration-policy",
                    "prefix": "mule"
                  }
                },
                "org.mule.runtime.extension.api.property.InfrastructureParameterModelProperty": {
                  "sequence": 4
                }
              }
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 1
          },
          "showInDsl": false,
          "name": "General",
          "description": "",
          "modelProperties": {}
        }
      ],
      "externalLibraryModels": [],
      "operations": [
        {
          "blocking": true,
          "executionType": "CPU_LITE",
          "output": {
            "type": {
              "format": {
                "id": "application/plain",
                "label": "application/plain",
                "validMimeTypes": [
                  "application/plain"
                ]
              },
              "type": "String"
            },
            "hasDynamicType": false,
            "description": "",
            "modelProperties": {}
          },
          "outputAttributes": {
            "type": {
              "format": "java",
              "type": "Void"
            },
            "hasDynamicType": false,
            "description": "",
            "modelProperties": {}
          },
          "transactional": false,
          "requiresConnection": false,
          "supportsStreaming": false,
          "nestedComponents": [],
          "errors": [],
          "stereotype": {
            "type": "PROCESSOR",
            "namespace": "MULE"
          },
          "parameterGroupModels": [
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "String"
                  },
                  "hasDynamicType": false,
                  "required": true,
                  "isConfigOverride": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 1
                  },
                  "allowedStereotypeModels": [],
                  "name": "param",
                  "description": "String param description",
                  "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": {}
                }
              ],
              "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,
                    "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,
                    "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": [],
              "showInDsl": false,
              "name": "Output",
              "description": "",
              "modelProperties": {}
            }
          ],
          "name": "operationWithString",
          "description": "Operation With String description",
          "modelProperties": {},
          "kind": "operation"
        }
      ],
      "connectionProviders": [],
      "messageSources": [],
      "name": "config",
      "description": "Config Description",
      "modelProperties": {}
    }
  ],
  "operations": [],
  "functions": [],
  "constructs": [],
  "connectionProviders": [
    {
      "connectionManagementType": "POOLING",
      "externalLibraryModels": [],
      "supportsConnectivityTesting": true,
      "stereotype": {
        "type": "CONNECTION",
        "namespace": "POOLED",
        "parent": {
          "type": "CONNECTION",
          "namespace": "MULE"
        }
      },
      "parameterGroupModels": [
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": true,
              "isConfigOverride": false,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 1
              },
              "allowedStereotypeModels": [],
              "name": "providerParameter",
              "description": "",
              "modelProperties": {}
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 1
          },
          "showInDsl": false,
          "name": "General",
          "description": "",
          "modelProperties": {}
        },
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "Object",
                "annotations": {
                  "typeId": "Reconnection"
                },
                "fields": [
                  {
                    "key": {
                      "name": "failsDeployment"
                    },
                    "model": {
                      "type": "Boolean",
                      "annotations": {
                        "default": "false"
                      }
                    },
                    "annotations": {
                      "description": {
                        "value": "When the application is deployed, a connectivity test is performed on all connectors. If set to true, deployment will fail if the test doesn\u0027t pass after exhausting the associated reconnection strategy"
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "reconnectionStrategy"
                    },
                    "model": {
                      "type": "Union",
                      "annotations": {
                        "typeId": "ReconnectionStrategy"
                      },
                      "of": [
                        {
                          "type": "Object",
                          "annotations": {
                            "typeId": "reconnect"
                          },
                          "fields": [
                            {
                              "key": {
                                "name": "frequency"
                              },
                              "model": {
                                "type": "Number",
                                "annotations": {
                                  "int": {},
                                  "classInformation": {
                                    "classname": "java.lang.Long",
                                    "hasDefaultConstructor": false,
                                    "isInterface": false,
                                    "isInstantiable": false,
                                    "isAbstract": false,
                                    "isFinal": true,
                                    "implementedInterfaces": [
                                      "java.lang.Comparable"
                                    ],
                                    "parent": "java.lang.Number",
                                    "genericTypes": [],
                                    "isMap": false
                                  },
                                  "default": "2000"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "How often (in ms) to reconnect"
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "count"
                              },
                              "model": {
                                "type": "Number",
                                "annotations": {
                                  "int": {},
                                  "default": "2"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "How many reconnection attempts to make"
                                }
                              }
                            }
                          ]
                        },
                        {
                          "type": "Object",
                          "annotations": {
                            "typeId": "reconnect-forever"
                          },
                          "fields": [
                            {
                              "key": {
                                "name": "frequency"
                              },
                              "model": {
                                "type": "Number",
                                "annotations": {
                                  "int": {},
                                  "classInformation": {
                                    "classname": "java.lang.Long",
                                    "hasDefaultConstructor": false,
                                    "isInterface": false,
                                    "isInstantiable": false,
                                    "isAbstract": false,
                                    "isFinal": true,
                                    "implementedInterfaces": [
                                      "java.lang.Comparable"
                                    ],
                                    "parent": "java.lang.Number",
                                    "genericTypes": [],
                                    "isMap": false
                                  },
                                  "default": "2000"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "How often (in ms) to reconnect"
                                }
                              }
                            }
                          ]
                        }
                      ]
                    },
                    "annotations": {
                      "description": {
                        "value": "The reconnection strategy to use"
                      }
                    }
                  }
                ]
              },
              "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,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "reconnection",
              "description": "When the application is deployed, a connectivity test is performed on all connectors. If set to true, deployment will fail if the test doesn\u0027t pass after exhausting the associated reconnection strategy",
              "modelProperties": {
                "org.mule.runtime.extension.api.property.QNameModelProperty": {
                  "value": {
                    "namespaceURI": "http://www.mulesoft.org/schema/mule/core",
                    "localPart": "reconnection",
                    "prefix": "mule"
                  }
                },
                "org.mule.runtime.extension.api.property.InfrastructureParameterModelProperty": {
                  "sequence": 3
                }
              }
            },
            {
              "type": {
                "format": "java",
                "type": "Object",
                "annotations": {
                  "typeId": "org.mule.runtime.api.config.PoolingProfile",
                  "description": {
                    "value": "A pooling profile is used to configure the pooling behaviour of Mule components. Each component can have its own pooling profile."
                  }
                },
                "fields": [
                  {
                    "key": {
                      "name": "maxActive"
                    },
                    "model": {
                      "type": "Number",
                      "annotations": {
                        "int": {},
                        "default": "5"
                      }
                    },
                    "annotations": {
                      "description": {
                        "value": "Controls the maximum number of Mule components that can be borrowed from a session at one time. When set to a negative value, there is no limit to the number of components that may be active at one time. When maxActive is exceeded, the pool is said to be exhausted."
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "maxIdle"
                    },
                    "model": {
                      "type": "Number",
                      "annotations": {
                        "int": {},
                        "default": "5"
                      }
                    },
                    "annotations": {
                      "description": {
                        "value": "Controls the maximum number of Mule components that can sit idle in the pool at any time. When set to a negative value, there is no limit to the number of Mule components that may be idle at one time."
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "maxWait"
                    },
                    "model": {
                      "type": "Number",
                      "annotations": {
                        "int": {},
                        "classInformation": {
                          "classname": "java.lang.Long",
                          "hasDefaultConstructor": false,
                          "isInterface": false,
                          "isInstantiable": false,
                          "isAbstract": false,
                          "isFinal": true,
                          "implementedInterfaces": [
                            "java.lang.Comparable"
                          ],
                          "parent": "java.lang.Number",
                          "genericTypes": [],
                          "isMap": false
                        },
                        "default": "4000"
                      }
                    },
                    "annotations": {
                      "description": {
                        "value": "Specifies the number of milliseconds to wait for a pooled component to become available when the pool is exhausted and the exhaustedAction is set to WHEN_EXHAUSTED_WAIT."
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "minEvictionMillis"
                    },
                    "model": {
                      "type": "Number",
                      "annotations": {
                        "int": {},
                        "default": "1800000"
                      }
                    },
                    "annotations": {
                      "description": {
                        "value": "Determines the minimum amount of time an object may sit idle in the pool before it is eligible for eviction. When non-positive, no objects will be evicted from the pool due to idle time alone."
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "evictionCheckIntervalMillis"
                    },
                    "model": {
                      "type": "Number",
                      "annotations": {
                        "int": {},
                        "default": "-1"
                      }
                    },
                    "annotations": {
                      "description": {
                        "value": "Specifies the number of milliseconds between runs of the object evictor. When non-positive, no object evictor is executed."
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "exhaustedAction"
                    },
                    "model": {
                      "type": "String",
                      "annotations": {
                        "enum": {
                          "type": "[Ljava.lang.String;",
                          "values": [
                            "WHEN_EXHAUSTED_GROW",
                            "WHEN_EXHAUSTED_WAIT",
                            "WHEN_EXHAUSTED_FAIL"
                          ]
                        },
                        "default": "WHEN_EXHAUSTED_GROW"
                      }
                    },
                    "annotations": {
                      "description": {
                        "value": "Specifies the behavior of the Mule component pool when the pool is exhausted. Possible values are: \"WHEN_EXHAUSTED_FAIL\", which will throw a NoSuchElementException, \"WHEN_EXHAUSTED_WAIT\", which will block by invoking Object.wait(long) until a new or idle object is available, or WHEN_EXHAUSTED_GROW, which will create a new Mule instance and return it, essentially making maxActive meaningless. If a positive maxWait value is supplied, it will block for at most that many milliseconds, after which a NoSuchElementException will be thrown. If maxThreadWait is a negative value, it will block indefinitely."
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "initialisationPolicy"
                    },
                    "model": {
                      "type": "String",
                      "annotations": {
                        "enum": {
                          "type": "[Ljava.lang.String;",
                          "values": [
                            "INITIALISE_NONE",
                            "INITIALISE_ONE",
                            "INITIALISE_ALL"
                          ]
                        },
                        "default": "INITIALISE_ONE"
                      }
                    },
                    "annotations": {
                      "description": {
                        "value": "Determines how components in a pool should be initialized. The possible values are: INITIALISE_NONE (will not load any components into the pool on startup), INITIALISE_ONE (will load one initial component into the pool on startup), or INITIALISE_ALL (will load all components in the pool on startup)"
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "disabled"
                    },
                    "model": {
                      "type": "Boolean",
                      "annotations": {
                        "default": "false"
                      }
                    },
                    "annotations": {
                      "description": {
                        "value": "Whether pooling should be disabled"
                      }
                    }
                  }
                ]
              },
              "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,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "poolingProfile",
              "description": "Characteristics of the connection pool",
              "modelProperties": {
                "org.mule.runtime.extension.api.property.QNameModelProperty": {
                  "value": {
                    "namespaceURI": "http://www.mulesoft.org/schema/mule/core",
                    "localPart": "pooling-profile",
                    "prefix": "mule"
                  }
                },
                "org.mule.runtime.extension.api.property.InfrastructureParameterModelProperty": {
                  "sequence": 5
                }
              }
            }
          ],
          "exclusiveParametersModels": [],
          "showInDsl": false,
          "name": "Connection",
          "description": "",
          "modelProperties": {}
        }
      ],
      "name": "connection",
      "description": "",
      "modelProperties": {}
    }
  ],
  "messageSources": [],
  "errors": [
    {
      "error": "MULE:CONNECTIVITY",
      "parent": "MULE:ANY"
    },
    {
      "error": "POOLED:RETRY_EXHAUSTED",
      "parent": "MULE:RETRY_EXHAUSTED"
    },
    {
      "error": "MULE:ANY"
    },
    {
      "error": "MULE:RETRY_EXHAUSTED",
      "parent": "MULE:ANY"
    },
    {
      "error": "POOLED:CONNECTIVITY",
      "parent": "MULE:CONNECTIVITY"
    }
  ],
  "modelProperties": {},
  "types": []
}
