We need a consistent strategy and generalized mechanism for handling how component properties are mapped into context properties. Components need a way to map metadata (e.g. SOAP Headers from the SOAP component, File properties from Camel File gateway, etc.) into and out of context properties. For example, you should be able to get or set a SOAP header by manipulating a given context property at Scope.MESSAGE.
In addition to the above, we need a way to customize how context properties are mapped. So the default strategy might be to copy all SOAP headers into a context property called soap.headers as a DOM tree. But this default composition strategy could be customized to pick certain headers out and set those under a given context property name.