Thanks Dan.

Do more test, with relative context swagger just work, we can actually get rid 
of the "http://localhost:8181/cxf"; here.

I will revise the code accordingly
-------------
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 下午3:34, Daniel Kulp wrote:

> 
> On Nov 8, 2013, at 8:24 AM, Freeman Fang <freeman.f...@gmail.com> 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, ff...@apache.org 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
>>> dk...@apache.org - http://dankulp.com/blog
>>> Talend Community Coder - http://coders.talend.com
>>> 
>> 
> 
> -- 
> Daniel Kulp
> dk...@apache.org - http://dankulp.com/blog
> Talend Community Coder - http://coders.talend.com
> 

Reply via email to