Ivan Latysh created CXF-4811:
--------------------------------

             Summary: Allow conduit match pattern to be customized by 
PropertyPlaceholderConfigurer
                 Key: CXF-4811
                 URL: https://issues.apache.org/jira/browse/CXF-4811
             Project: CXF
          Issue Type: New Feature
          Components: Integration
    Affects Versions: 2.4.3
            Reporter: Ivan Latysh
            Priority: Critical


Use-case:
  Developed jaxrs client has no knowledge of the server URL until it is shipped 
to a customer.
  To address the issue, server name and port has been externalized and handled 
by a standard {{PropertyPlaceholderConfigurer}}:
{code}
<jaxrs:client id="serviceClient"
address="http://${server.name}:${server.port}/services/*"/>

<context:property-placeholder/>

<bean 
class="org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer">
                <property name="order" value="1"/>
                <property name="ignoreUnresolvablePlaceholders" value="false"/>
</bean>
{code}

But currently http conduit can not be configured as match pattern is set the 
conduit name, rather than a property.
{code}
<cxf-http:conduit name="http://localhost/services.*"; />
{code}

The best option is to introduce custom URL Matchers, so conduit delegate actual 
URL matching to a configurable implementation.

Than a simple solution would be to extend 
org.apache.cxf.configuration.spring.ConfigurerImpl and resolve the property 
placeholders before compiling the pattern in {{initWildcardDefinitionMap}} 
method. But the poor architectural decisions led to 
{{PropertyResourceConfigurer}} to be non-reusable. It supports rigid visitor 
pattern, and do not even provide a method to resolve a property placeholder 
after {{postProcessBeanFactory}} has been called.

So the dirty hack would be to configure pattern in the conduit property, rather 
in the name.
{code}
<cxf-http:conduit id="service1Conduit">
  <property name="url" value="http://${server.name}:${server.port}/services/*";>
</cxf-http:conduit>
{code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to