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
                                                /keyPassword

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

The optional `chomp:` prefix will cause the ServiceBindingPropertySource to trim a single newline (`\r\n`, `\r`, or `\n`) from the end of the file, if it exists. This is a convenience for hand-edited files/values where removing a trailing newline is difficult, and trailing whitespace changes the meaning of the value.

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

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 Details

### ServiceBindingPropertySource

public ServiceBindingPropertySource()

## Method Details

### 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