[ 
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)

Reply via email to