On Nov 8, 2013, at 8:24 AM, Freeman Fang <[email protected]> wrote:

> Hi Dan,
> 
> Thanks for the reminder.
> 
> And for the
> 
>> Where did the "http://localhost:8181/cxf” value come from?
> 
> It's the default cxf context when use in OSGi container
> Do you mean we should get those default value(8181 and /cxf) from the OSGi 
> configAdmin? 

I would leave it as just “/foo” or whatever the endpoint address is.  I’d 
rather have a value that is always contextually correct than one that would 
only be correct in ServiceMix.

Either that or wrapper/subclass the providers they provide with a provider that 
would grab the full URI from the CXF message at request time so it’s always 
correct.  Not sure if swagger can support that or not.


Dan


> -------------
> Freeman(Yue) Fang
> 
> Red Hat, Inc. 
> FuseSource is now part of Red Hat
> Web: http://fusesource.com | http://www.redhat.com/
> Twitter: freemanfang
> Blog: http://freemanfang.blogspot.com
> http://blog.sina.com.cn/u/1473905042
> weibo: @Freeman小屋
> 
> 
> 
> On 2013-11-8, at 下午2:51, Daniel Kulp wrote:
> 
>> Freeman,
>> 
>> I have some problems with this commit….  inline….
>> 
>> 
>> 
>> On Nov 8, 2013, at 4:30 AM, [email protected] wrote:
>> 
>>> 
>>> 
>>> Modified: cxf/trunk/rt/frontend/jaxrs/pom.xml
>>> URL: 
>>> http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/pom.xml?rev=1539911&r1=1539910&r2=1539911&view=diff
>>> ==============================================================================
>>> --- cxf/trunk/rt/frontend/jaxrs/pom.xml (original)
>>> +++ cxf/trunk/rt/frontend/jaxrs/pom.xml Fri Nov  8 03:30:41 2013
>>> @@ -36,6 +36,7 @@
>>>            javax.servlet*;version="${cxf.osgi.javax.servlet.version}",
>>>            org.apache.aries*;version="${cxf.aries.version.range}",
>>>            
>>> org.springframework*;resolution:="optional";version="${cxf.osgi.spring.version}",
>>> +            
>>> com.wordnik.swagger.jaxrs*;resolution:="optional";version="[1.3.0, 1.4.0)",
>>>            javax.ws.rs.client;version="[2.0,3)",
>>>            javax.ws.rs*;version="[1.0,3)",
>>>        </cxf.osgi.import>
>>> @@ -158,6 +159,10 @@
>>>                </exclusion>
>>>            </exclusions>
>>>        </dependency> 
>>> +        <dependency>
>>> +            <groupId>com.wordnik</groupId>
>>> +            <artifactId>swagger-jaxrs_2.10</artifactId>
>>> +        </dependency>
>>>    </dependencies>
>>> 
>> 
>> The dependency should likely be marked optional as well.   
>> 
>> 
>> 
>> 
>>> Modified: 
>>> cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/AbstractJAXRSFactoryBean.java
>>> URL: 
>>> http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/AbstractJAXRSFactoryBean.java?rev=1539911&r1=1539910&r2=1539911&view=diff
>>> ==============================================================================
>>> --- 
>>> cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/AbstractJAXRSFactoryBean.java
>>>  (original)
>>> +++ 
>>> cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/AbstractJAXRSFactoryBean.java
>>>  Fri Nov  8 03:30:41 2013
>>> @@ -110,6 +110,7 @@ public class AbstractJAXRSFactoryBean ex
>>>        super.setBus(bus);
>>>        checkBindingFactory(bus);
>>>        serviceFactory.setBus(bus);
>>> +        bus.setProperty(JAXRSServiceFactoryBean.class.getName(), 
>>> serviceFactory);
>>>    }
>> 
>> I’m -1 to this….    We can have multiple ServiceFactories being initialized 
>> at once on the bus.  This is not thread safe at all.  In particular, if 
>> using the API’s to create many clients at once from various threads, this 
>> would cause all kinds of potential problems.
>> 
>> 
>>>    /*
>>> @@ -204,6 +205,7 @@ public class AbstractJAXRSFactoryBean ex
>>>     */
>>>    public void setServiceFactory(JAXRSServiceFactoryBean serviceFactory) {
>>>        this.serviceFactory = serviceFactory;
>>> +        getBus().setProperty(JAXRSServiceFactoryBean.class.getName(), 
>>> serviceFactory);
>>>    }
>> 
>> Likewise.
>> 
>> If something is needed in the Feature, make sure it’s saved on the Server 
>> object or, preferably, on the Endpoint.
>> 
>> 
>>>    protected Endpoint createEndpoint() throws BusException, 
>>> EndpointException {
>> 
>> Likely in this call someplace or the createEndpointInfo method.   
>> 
>> 
>>> 
>>> Added: 
>>> cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/swagger/SwaggerFeature.java
>>> URL: 
>>> http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/swagger/SwaggerFeature.java?rev=1539911&view=auto
>>> ==============================================================================
>>> --- 
>>> cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/swagger/SwaggerFeature.java
>>>  (added)
>>> +++ 
>>> cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/swagger/SwaggerFeature.java
>>>  Fri Nov  8 03:30:41 2013
>>> @@ -0,0 +1,142 @@
>> 
>> 
>> snip…...
>> 
>>> +    
>>> +    private void calulateDefaultBasePath(Server server) {
>>> +        String address = 
>>> server.getEndpoint().getEndpointInfo().getAddress();
>>> +        if (getBasePath() == null || getBasePath().length() == 0) {
>>> +            if (address.startsWith("http")) {
>>> +                setBasePath(address + "/api-docs");
>>> +            } else {
>>> +                setBasePath("http://localhost:8181/cxf"; + address + 
>>> "/api-docs");
>>> +            }
>>> +        }
>>> +    }
>> 
>> Where did the "http://localhost:8181/cxf” value come from?
>> 
>> 
>> -- 
>> Daniel Kulp
>> [email protected] - http://dankulp.com/blog
>> Talend Community Coder - http://coders.talend.com
>> 
> 

-- 
Daniel Kulp
[email protected] - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com

Reply via email to