Package org.apache.tomcat.util.digester

## Class ServiceBindingPropertySource

- java.lang.Object
- - org.apache.tomcat.util.digester.ServiceBindingPropertySource

- All Implemented Interfaces:
    `IntrospectionUtils.PropertySource`, `IntrospectionUtils.SecurePropertySource`

      public class ServiceBindingPropertySource
      extends Object
      implements IntrospectionUtils.SecurePropertySource

  A `IntrospectionUtils.SecurePropertySource` that uses Kubernetes service bindings to resolve expressions.

  Usage example:

  Configure the certificate with a service binding. When the service binding is constructed as follows:

          $SERVICE_BINDING_ROOT/
                               /custom-certificate/
                                                  /keyFile
                                                  /file
                                                  /chainFile

           <SSLHostConfig>
                 <Certificate certificateKeyFile="${custom-certificate.keyFile}"
                              certificateFile="${custom-certificate.file}"
                              certificateChainFile="${custom-certificate.chainFile}"
                              type="RSA" />
           </SSLHostConfig>

  How to configure:

         echo "org.apache.tomcat.util.digester.PROPERTY_SOURCE=org.apache.tomcat.util.digester.ServiceBindingPropertySource" >> conf/catalina.properties

  or add this to `CATALINA_OPTS`

         -Dorg.apache.tomcat.util.digester.PROPERTY_SOURCE=org.apache.tomcat.util.digester.ServiceBindingPropertySource

  NOTE: When configured the PropertySource for resolving expressions from system properties is still active.
  See Also:
    `Digester`, Tomcat Configuration Reference System Properties

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `ServiceBindingPropertySource()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `String` | `getProperty​(String key)` |
    `String` | `getProperty​(String key, ClassLoader classLoader)` | Obtain a property value, checking that code associated with the provided class loader has permission to access the property.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### ServiceBindingPropertySource

          public ServiceBindingPropertySource()

  - ### Method Detail

    - #### getProperty

          public String getProperty​(String key)

      Specified by:
        `getProperty` in interface `IntrospectionUtils.PropertySource`

    - #### getProperty

          public String getProperty​(String key,
                                    ClassLoader classLoader)

      Description copied from interface: `IntrospectionUtils.SecurePropertySource`
      Obtain a property value, checking that code associated with the provided class loader has permission to access the property. If the `classLoader` is `null` or if `classLoader` does not implement `PermissionCheck` then the property value will be looked up without a call to `PermissionCheck.check(java.security.Permission)`
      Specified by:
        `getProperty` in interface `IntrospectionUtils.SecurePropertySource`
      Parameters:
        `key` - The key of the requested property
        `classLoader` - The class loader associated with the code that trigger the property lookup
      Returns:
        The property value or `null` if it could not be found or if `PermissionCheck.check(java.security.Permission)` fails