[
https://issues.apache.org/jira/browse/CXF-7746?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Etienne Dumont updated CXF-7746:
Description:
Hi,
Same problem as CXF-7474, but for JBoss EAP 7.0 & CXF 3.2.4.
The SwaggerUiResolver is not able to find the swagger-ui jar, included in our
war via maven; the path returned by the class loader ends with ".jar/" instead
of the expected ".jar" or ".jar!/".
To bypass the problem, we modified the checkUiRoot as follow:
{code:java}
// Artifact: cxf-rt-rs-service-description-swagger
// Class: org.apache.cxf.jaxrs.swagger.SwaggerUiResolver
protected static String checkUiRoot(String urlStr, String swaggerUiVersion)
{
int swaggerUiIndex = urlStr.lastIndexOf("/swagger-ui-");
if (swaggerUiIndex != -1)
{
boolean urlEndsWithJarSep = urlStr.endsWith(".jar!/");
int offset = -1;
if (urlEndsWithJarSep || urlStr.endsWith(".jar"))
{
offset = urlEndsWithJarSep ? 6 : 4;
}
else if (urlStr.endsWith(".jar/"))
{
offset = 5;
urlEndsWithJarSep = true;
}
if (offset > -1)
{
String version = urlStr.substring(swaggerUiIndex + 12, urlStr.length() -
offset);
if (swaggerUiVersion != null && !swaggerUiVersion.equals(version))
{
return null;
}
else
{
if (!urlEndsWithJarSep)
{
urlStr = "jar:" + urlStr + "!/";
}
return urlStr + "META-INF/resources/webjars/swagger-ui/" + version +
"/";
}
}
}
return null;
}
{code}
was:
Hi,
Same problem as CXF-7474, but for JBoss EAP 7.0 & CXF 3.2.4.
The SwaggerUiResolver is not able to find the swagger-ui jar, included in our
war via maven; the path returned by the class loader ends with ".jar/" instead
of the expected ".jar" or ".jar!/".
To bypass the problem, we modified the checkUiRoot as follow:
{code:java}
protected static String checkUiRoot(String urlStr, String swaggerUiVersion)
{
int swaggerUiIndex = urlStr.lastIndexOf("/swagger-ui-");
if (swaggerUiIndex != -1)
{
boolean urlEndsWithJarSep = urlStr.endsWith(".jar!/");
int offset = -1;
if (urlEndsWithJarSep || urlStr.endsWith(".jar"))
{
offset = urlEndsWithJarSep ? 6 : 4;
}
else if (urlStr.endsWith(".jar/"))
{
offset = 5;
urlEndsWithJarSep = true;
}
if (offset > -1)
{
String version = urlStr.substring(swaggerUiIndex + 12, urlStr.length() -
offset);
if (swaggerUiVersion != null && !swaggerUiVersion.equals(version))
{
return null;
}
else
{
if (!urlEndsWithJarSep)
{
urlStr = "jar:" + urlStr + "!/";
}
return urlStr + "META-INF/resources/webjars/swagger-ui/" + version +
"/";
}
}
}
return null;
}
{code}
> Swagger2Feature - SwaggerUiResolver & JBoss 7 EAP
> -
>
> Key: CXF-7746
> URL: https://issues.apache.org/jira/browse/CXF-7746
> Project: CXF
> Issue Type: Bug
> Components: JAX-RS
>Affects Versions: 3.2.4
>Reporter: Etienne Dumont
>Priority: Major
>
> Hi,
> Same problem as CXF-7474, but for JBoss EAP 7.0 & CXF 3.2.4.
> The SwaggerUiResolver is not able to find the swagger-ui jar, included in our
> war via maven; the path returned by the class loader ends with ".jar/"
> instead of the expected ".jar" or ".jar!/".
> To bypass the problem, we modified the checkUiRoot as follow:
> {code:java}
> // Artifact: cxf-rt-rs-service-description-swagger
> // Class: org.apache.cxf.jaxrs.swagger.SwaggerUiResolver
> protected static String checkUiRoot(String urlStr, String swaggerUiVersion)
> {
> int swaggerUiIndex = urlStr.lastIndexOf("/swagger-ui-");
> if (swaggerUiIndex != -1)
> {
> boolean urlEndsWithJarSep = urlStr.endsWith(".jar!/");
> int offset = -1;
> if (urlEndsWithJarSep || urlStr.endsWith(".jar"))
> {
> offset = urlEndsWithJarSep ? 6 : 4;
> }
> else if (urlStr.endsWith(".jar/"))
> {
> offset = 5;
> urlEndsWithJarSep = true;
> }
> if (offset > -1)
> {
> String version = urlStr.substring(swaggerUiIndex + 12, urlStr.length()
> - offset);
> if (swaggerUiVersion != null && !swaggerUiVersion.equals(version))
> {
> return null;
> }
> else
> {
> if (!urlEndsWithJarSep)
> {
> urlStr = "jar:" + urlStr + "!/";
> }
> return urlStr + "META-INF/resources/webjars/swagger-ui/" + version +
> "/";
> }
> }
> }
> return null;
> }
> {code}
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)