[ 
https://issues.apache.org/jira/browse/FELIX-4512?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Simone Tripodi updated FELIX-4512:
----------------------------------

    Attachment: Screen Shot 2014-05-13 at 11.49.44 PM.pdf
                FELIX-4512.1.patch

Please have a look at new proposal contained in FELIX-4512.1.patch - plugin 
works in almost exactly the same (it does not dump the console log in a textual 
file)

this is how console log looks now:

{noformat}
[INFO] --- maven-bundle-plugin:2.4.1-SNAPSHOT:baseline (baseline) @ 
org.apache.felix.http.api ---
[INFO] Baseline Report - Generated by Apache Felix Maven Bundle Plugin on 
2014-05-13T23:51Z based on Bnd - see http://www.aqute.biz/Bnd/Bnd
[INFO] Comparing bundle org.apache.felix.http.api version 2.3.0-SNAPSHOT to 
version 2.2.2
[INFO] 
[INFO]   PACKAGE_NAME                                       DELTA      CUR_VER  
  BASE_VER   REC_VER    WARNINGS  
[INFO] = ================================================== ========== 
========== ========== ========== ==========
[INFO] * org.apache.felix.http.api                          major      2.0.4    
  2.0.4      3.0.0      Version increase required
[INFO]      > interface org.apache.felix.http.api.ExtHttpService
[INFO]          + method createDefaultHttpContext()
[INFO]              + access abstract
[INFO]              + return org.osgi.service.http.HttpContext
[INFO]          + method doSomething()
[INFO]              + access abstract
[INFO]          + method 
registerResources(java.lang.String,java.lang.String,org.osgi.service.http.HttpContext)
[INFO]              + access abstract
[INFO]          + method 
registerServlet(java.lang.String,javax.servlet.Servlet,java.util.Dictionary,org.osgi.service.http.HttpContext)
[INFO]              + access abstract
[INFO]          + method unregister(java.lang.String)
[INFO]              + access abstract
[INFO]      + interface org.apache.felix.http.api.ExtHttpServiceRuntime
[INFO]          + access abstract
[INFO]          + implements org.osgi.service.http.runtime.HttpServiceRuntime
[INFO]          + method getRuntimeDTO()
[INFO]              + access abstract
[INFO]              + return org.osgi.dto.DTO
[INFO]              + return org.osgi.service.http.runtime.dto.RuntimeDTO
[INFO]          + method 
registerFilter(org.osgi.service.http.runtime.dto.FilterDTO)
[INFO]              + access abstract
[INFO]          + method 
registerServlet(org.osgi.service.http.runtime.dto.ServletDTO)
[INFO]              + access abstract
[INFO] 
-----------------------------------------------------------------------------------------------------------
[INFO] + org.osgi.dto                                       added      1.0.0    
  0.0.0      1.0.0      -         
[INFO]      + class org.osgi.dto.DTO
[INFO]          + access abstract
[INFO]          + method <init>()
[INFO]          + method clone()
[INFO]              + access protected
[INFO]          + method equals(java.lang.Object)
[INFO]              + return boolean
[INFO]          + method finalize()
[INFO]              + access protected
[INFO]          + method hashCode()
[INFO]              + return int
[INFO]          + method toString()
[INFO]              + return java.io.Serializable
[INFO]              + return java.lang.CharSequence
[INFO]              + return java.lang.Comparable
[INFO]              + return java.lang.String
[INFO]      + version 1.0.0
[INFO] 
-----------------------------------------------------------------------------------------------------------
[INFO] + org.osgi.service.http                              added      1.3.0    
  0.0.0      1.0.0      Excessive version increase
[INFO]      + class org.osgi.service.http.NamespaceException
[INFO]          + extends java.lang.Exception
[INFO]          + extends java.lang.Throwable
[INFO]          + implements java.io.Serializable
[INFO]          + method <init>(java.lang.String)
[INFO]          + method <init>(java.lang.String,java.lang.Throwable)
[INFO]          + method clone()
[INFO]              + access protected
[INFO]          + method equals(java.lang.Object)
[INFO]              + return boolean
[INFO]          + method fillInStackTrace()
[INFO]              + return java.io.Serializable
[INFO]              + return java.lang.Throwable
[INFO]          + method finalize()
[INFO]              + access protected
[INFO]          + method getCause()
[INFO]              + return java.io.Serializable
[INFO]              + return java.lang.Throwable
[INFO]          + method getException()
[INFO]              + return java.io.Serializable
[INFO]              + return java.lang.Throwable
[INFO]          + method getLocalizedMessage()
[INFO]              + return java.io.Serializable
[INFO]              + return java.lang.CharSequence
[INFO]              + return java.lang.Comparable
[INFO]              + return java.lang.String
[INFO]          + method getMessage()
[INFO]              + return java.io.Serializable
[INFO]              + return java.lang.CharSequence
[INFO]              + return java.lang.Comparable
[INFO]              + return java.lang.String
[INFO]          + method getStackTrace()
[INFO]              + return java.io.Serializable
[INFO]              + return java.lang.StackTraceElement[]
[INFO]          + method hashCode()
[INFO]              + return int
[INFO]          + method initCause(java.lang.Throwable)
[INFO]              + return java.io.Serializable
[INFO]              + return java.lang.Throwable
[INFO]          + method printStackTrace()
[INFO]          + method printStackTrace(java.io.PrintStream)
[INFO]          + method printStackTrace(java.io.PrintWriter)
[INFO]          + method setStackTrace(java.lang.StackTraceElement[])
[INFO]          + method toString()
[INFO]              + return java.io.Serializable
[INFO]              + return java.lang.CharSequence
[INFO]              + return java.lang.Comparable
[INFO]              + return java.lang.String
[INFO]      + interface org.osgi.service.http.HttpContext
[INFO]          + access abstract
[INFO]          + field java.lang.String AUTHENTICATION_TYPE
[INFO]              + access final
[INFO]              + access static
[INFO]              + constant org.osgi.service.http.authentication.type
[INFO]          + field java.lang.String AUTHORIZATION
[INFO]              + access final
[INFO]              + access static
[INFO]              + constant org.osgi.service.useradmin.authorization
[INFO]          + field java.lang.String REMOTE_USER
[INFO]              + access final
[INFO]              + access static
[INFO]              + constant org.osgi.service.http.authentication.remote.user
[INFO]          + method getMimeType(java.lang.String)
[INFO]              + access abstract
[INFO]              + return java.io.Serializable
[INFO]              + return java.lang.CharSequence
[INFO]              + return java.lang.Comparable
[INFO]              + return java.lang.String
[INFO]          + method getResource(java.lang.String)
[INFO]              + access abstract
[INFO]              + return java.io.Serializable
[INFO]              + return java.net.URL
[INFO]          + method 
handleSecurity(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
[INFO]              + access abstract
[INFO]              + return boolean
[INFO]          + annotated org.osgi.annotation.versioning.ConsumerType
[INFO]      + interface org.osgi.service.http.HttpService
[INFO]          + access abstract
[INFO]          + method createDefaultHttpContext()
[INFO]              + access abstract
[INFO]              + return org.osgi.service.http.HttpContext
[INFO]          + method 
registerResources(java.lang.String,java.lang.String,org.osgi.service.http.HttpContext)
[INFO]              + access abstract
[INFO]          + method 
registerServlet(java.lang.String,javax.servlet.Servlet,java.util.Dictionary,org.osgi.service.http.HttpContext)
[INFO]              + access abstract
[INFO]          + method unregister(java.lang.String)
[INFO]              + access abstract
[INFO]          + annotated org.osgi.annotation.versioning.ProviderType
[INFO]      + version 1.3.0
[INFO] 
-----------------------------------------------------------------------------------------------------------
[INFO] + org.osgi.service.http.runtime                      added      1.3.0    
  0.0.0      1.0.0      Excessive version increase
[INFO]      + class org.osgi.service.http.runtime.HttpServiceRuntimeConstants
[INFO]          + access final
[INFO]          + field java.lang.String HTTP_SERVICE_ENDPOINT_ATTRIBUTE
[INFO]              + access final
[INFO]              + access static
[INFO]              + constant osgi.http.endpoint
[INFO]          + method clone()
[INFO]              + access protected
[INFO]          + method equals(java.lang.Object)
[INFO]              + return boolean
[INFO]          + method finalize()
[INFO]              + access protected
[INFO]          + method hashCode()
[INFO]              + return int
[INFO]          + method toString()
[INFO]              + return java.io.Serializable
[INFO]              + return java.lang.CharSequence
[INFO]              + return java.lang.Comparable
[INFO]              + return java.lang.String
[INFO]      + interface org.osgi.service.http.runtime.HttpServiceRuntime
[INFO]          + access abstract
[INFO]          + method getRuntimeDTO()
[INFO]              + access abstract
[INFO]              + return org.osgi.dto.DTO
[INFO]              + return org.osgi.service.http.runtime.dto.RuntimeDTO
[INFO]          + annotated org.osgi.annotation.versioning.ProviderType
[INFO]      + version 1.3.0
[INFO] 
-----------------------------------------------------------------------------------------------------------
[ERROR] org.apache.felix.http.api: Version increase required; detected 2.0.4, 
suggested 3.0.0
[WARNING] org.osgi.service.http: Excessive version increase; detected 1.3.0, 
suggested 1.0.0
[WARNING] org.osgi.service.http.runtime: Excessive version increase; detected 
1.3.0, suggested 1.0.0
[INFO] Baseline analisys complete, 1 error(s), 2 warning(s)
{noformat}

the XML representation has been enhanced

{code}
<baseline version="1.0.0" vendor="The Apache Software Foundation" 
vendorURL="http://www.apache.org/"; generator="Apache Felix Maven Bundle Plugin" 
generatorURL="http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html";
 analyzer="Bnd" analyzerURL="http://www.aqute.biz/Bnd/Bnd"; 
generatedOn="2014-05-13T23:51Z" bundleName="org.apache.felix.http.api" 
currentVersion="2.3.0-SNAPSHOT" previousVersion="2.2.2">
  <package name="org.apache.felix.http.api" delta="major">
    <mismatch>true</mismatch>
    <newerVersion>2.0.4</newerVersion>
    <olderVersion>2.0.4</olderVersion>
    <suggestedVersion>3.0.0</suggestedVersion>
    <error>Version increase required</error>
    <attributes>
      <version>2.0.4</version>
      
<uses>javax.servlet,org.osgi.service.http,org.osgi.service.http.runtime</uses>
    </attributes>
    <interface name="org.apache.felix.http.api.ExtHttpService" delta="major">
      <method name="createDefaultHttpContext()" delta="added">
        <access name="abstract" delta="added"/>
        <return name="org.osgi.service.http.HttpContext" delta="added"/>
      </method>
      <method name="doSomething()" delta="added">
        <access name="abstract" delta="added"/>
      </method>
      <method 
name="registerResources(java.lang.String,java.lang.String,org.osgi.service.http.HttpContext)"
 delta="added">
        <access name="abstract" delta="added"/>
      </method>
      <method 
name="registerServlet(java.lang.String,javax.servlet.Servlet,java.util.Dictionary,org.osgi.service.http.HttpContext)"
 delta="added">
        <access name="abstract" delta="added"/>
      </method>
      <method name="unregister(java.lang.String)" delta="added">
        <access name="abstract" delta="added"/>
      </method>
    </interface>
    <interface name="org.apache.felix.http.api.ExtHttpServiceRuntime" 
delta="added">
      <access name="abstract" delta="added"/>
      <implements name="org.osgi.service.http.runtime.HttpServiceRuntime" 
delta="added"/>
      <method name="getRuntimeDTO()" delta="added">
        <access name="abstract" delta="added"/>
        <return name="org.osgi.dto.DTO" delta="added"/>
        <return name="org.osgi.service.http.runtime.dto.RuntimeDTO" 
delta="added"/>
      </method>
      <method 
name="registerFilter(org.osgi.service.http.runtime.dto.FilterDTO)" 
delta="added">
        <access name="abstract" delta="added"/>
      </method>
      <method 
name="registerServlet(org.osgi.service.http.runtime.dto.ServletDTO)" 
delta="added">
        <access name="abstract" delta="added"/>
      </method>
    </interface>
  </package>
  <package name="org.osgi.dto" delta="added">
    <mismatch>false</mismatch>
    <newerVersion>1.0.0</newerVersion>
    <olderVersion>0.0.0</olderVersion>
    <suggestedVersion>1.0.0</suggestedVersion>
    <attributes>
      <version>1.0.0</version>
    </attributes>
    <class name="org.osgi.dto.DTO" delta="added">
      <access name="abstract" delta="added"/>
      <method name="&lt;init&gt;()" delta="added"/>
      <method name="clone()" delta="added">
        <access name="protected" delta="added"/>
      </method>
      <method name="equals(java.lang.Object)" delta="added">
        <return name="boolean" delta="added"/>
      </method>
      <method name="finalize()" delta="added">
        <access name="protected" delta="added"/>
      </method>
      <method name="hashCode()" delta="added">
        <return name="int" delta="added"/>
      </method>
      <method name="toString()" delta="added">
        <return name="java.io.Serializable" delta="added"/>
        <return name="java.lang.CharSequence" delta="added"/>
        <return name="java.lang.Comparable" delta="added"/>
        <return name="java.lang.String" delta="added"/>
      </method>
    </class>
    <version name="1.0.0" delta="added"/>
  </package>
  <package name="org.osgi.service.http" delta="added">
    <mismatch>false</mismatch>
    <newerVersion>1.3.0</newerVersion>
    <olderVersion>0.0.0</olderVersion>
    <suggestedVersion>1.0.0</suggestedVersion>
    <warning>Excessive version increase</warning>
    <attributes>
      <version>1.3.0</version>
      <uses>javax.servlet,javax.servlet.http</uses>
    </attributes>
    <class name="org.osgi.service.http.NamespaceException" delta="added">
      <extends name="java.lang.Exception" delta="added"/>
      <extends name="java.lang.Throwable" delta="added"/>
      <implements name="java.io.Serializable" delta="added"/>
      <method name="&lt;init&gt;(java.lang.String)" delta="added"/>
      <method name="&lt;init&gt;(java.lang.String,java.lang.Throwable)" 
delta="added"/>
      <method name="clone()" delta="added">
        <access name="protected" delta="added"/>
      </method>
      <method name="equals(java.lang.Object)" delta="added">
        <return name="boolean" delta="added"/>
      </method>
      <method name="fillInStackTrace()" delta="added">
        <return name="java.io.Serializable" delta="added"/>
        <return name="java.lang.Throwable" delta="added"/>
      </method>
      <method name="finalize()" delta="added">
        <access name="protected" delta="added"/>
      </method>
      <method name="getCause()" delta="added">
        <return name="java.io.Serializable" delta="added"/>
        <return name="java.lang.Throwable" delta="added"/>
      </method>
      <method name="getException()" delta="added">
        <return name="java.io.Serializable" delta="added"/>
        <return name="java.lang.Throwable" delta="added"/>
      </method>
      <method name="getLocalizedMessage()" delta="added">
        <return name="java.io.Serializable" delta="added"/>
        <return name="java.lang.CharSequence" delta="added"/>
        <return name="java.lang.Comparable" delta="added"/>
        <return name="java.lang.String" delta="added"/>
      </method>
      <method name="getMessage()" delta="added">
        <return name="java.io.Serializable" delta="added"/>
        <return name="java.lang.CharSequence" delta="added"/>
        <return name="java.lang.Comparable" delta="added"/>
        <return name="java.lang.String" delta="added"/>
      </method>
      <method name="getStackTrace()" delta="added">
        <return name="java.io.Serializable" delta="added"/>
        <return name="java.lang.StackTraceElement[]" delta="added"/>
      </method>
      <method name="hashCode()" delta="added">
        <return name="int" delta="added"/>
      </method>
      <method name="initCause(java.lang.Throwable)" delta="added">
        <return name="java.io.Serializable" delta="added"/>
        <return name="java.lang.Throwable" delta="added"/>
      </method>
      <method name="printStackTrace()" delta="added"/>
      <method name="printStackTrace(java.io.PrintStream)" delta="added"/>
      <method name="printStackTrace(java.io.PrintWriter)" delta="added"/>
      <method name="setStackTrace(java.lang.StackTraceElement[])" 
delta="added"/>
      <method name="toString()" delta="added">
        <return name="java.io.Serializable" delta="added"/>
        <return name="java.lang.CharSequence" delta="added"/>
        <return name="java.lang.Comparable" delta="added"/>
        <return name="java.lang.String" delta="added"/>
      </method>
    </class>
    <interface name="org.osgi.service.http.HttpContext" delta="added">
      <access name="abstract" delta="added"/>
      <field name="java.lang.String AUTHENTICATION_TYPE" delta="added">
        <access name="final" delta="added"/>
        <access name="static" delta="added"/>
        <constant name="org.osgi.service.http.authentication.type" 
delta="added"/>
      </field>
      <field name="java.lang.String AUTHORIZATION" delta="added">
        <access name="final" delta="added"/>
        <access name="static" delta="added"/>
        <constant name="org.osgi.service.useradmin.authorization" 
delta="added"/>
      </field>
      <field name="java.lang.String REMOTE_USER" delta="added">
        <access name="final" delta="added"/>
        <access name="static" delta="added"/>
        <constant name="org.osgi.service.http.authentication.remote.user" 
delta="added"/>
      </field>
      <method name="getMimeType(java.lang.String)" delta="added">
        <access name="abstract" delta="added"/>
        <return name="java.io.Serializable" delta="added"/>
        <return name="java.lang.CharSequence" delta="added"/>
        <return name="java.lang.Comparable" delta="added"/>
        <return name="java.lang.String" delta="added"/>
      </method>
      <method name="getResource(java.lang.String)" delta="added">
        <access name="abstract" delta="added"/>
        <return name="java.io.Serializable" delta="added"/>
        <return name="java.net.URL" delta="added"/>
      </method>
      <method 
name="handleSecurity(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)"
 delta="added">
        <access name="abstract" delta="added"/>
        <return name="boolean" delta="added"/>
      </method>
      <annotated name="org.osgi.annotation.versioning.ConsumerType" 
delta="added"/>
    </interface>
    <interface name="org.osgi.service.http.HttpService" delta="added">
      <access name="abstract" delta="added"/>
      <method name="createDefaultHttpContext()" delta="added">
        <access name="abstract" delta="added"/>
        <return name="org.osgi.service.http.HttpContext" delta="added"/>
      </method>
      <method 
name="registerResources(java.lang.String,java.lang.String,org.osgi.service.http.HttpContext)"
 delta="added">
        <access name="abstract" delta="added"/>
      </method>
      <method 
name="registerServlet(java.lang.String,javax.servlet.Servlet,java.util.Dictionary,org.osgi.service.http.HttpContext)"
 delta="added">
        <access name="abstract" delta="added"/>
      </method>
      <method name="unregister(java.lang.String)" delta="added">
        <access name="abstract" delta="added"/>
      </method>
      <annotated name="org.osgi.annotation.versioning.ProviderType" 
delta="added"/>
    </interface>
    <version name="1.3.0" delta="added"/>
  </package>
  <package name="org.osgi.service.http.runtime" delta="added">
    <mismatch>false</mismatch>
    <newerVersion>1.3.0</newerVersion>
    <olderVersion>0.0.0</olderVersion>
    <suggestedVersion>1.0.0</suggestedVersion>
    <warning>Excessive version increase</warning>
    <attributes>
      <version>1.3.0</version>
    </attributes>
    <class name="org.osgi.service.http.runtime.HttpServiceRuntimeConstants" 
delta="added">
      <access name="final" delta="added"/>
      <field name="java.lang.String HTTP_SERVICE_ENDPOINT_ATTRIBUTE" 
delta="added">
        <access name="final" delta="added"/>
        <access name="static" delta="added"/>
        <constant name="osgi.http.endpoint" delta="added"/>
      </field>
      <method name="clone()" delta="added">
        <access name="protected" delta="added"/>
      </method>
      <method name="equals(java.lang.Object)" delta="added">
        <return name="boolean" delta="added"/>
      </method>
      <method name="finalize()" delta="added">
        <access name="protected" delta="added"/>
      </method>
      <method name="hashCode()" delta="added">
        <return name="int" delta="added"/>
      </method>
      <method name="toString()" delta="added">
        <return name="java.io.Serializable" delta="added"/>
        <return name="java.lang.CharSequence" delta="added"/>
        <return name="java.lang.Comparable" delta="added"/>
        <return name="java.lang.String" delta="added"/>
      </method>
    </class>
    <interface name="org.osgi.service.http.runtime.HttpServiceRuntime" 
delta="added">
      <access name="abstract" delta="added"/>
      <method name="getRuntimeDTO()" delta="added">
        <access name="abstract" delta="added"/>
        <return name="org.osgi.dto.DTO" delta="added"/>
        <return name="org.osgi.service.http.runtime.dto.RuntimeDTO" 
delta="added"/>
      </method>
      <annotated name="org.osgi.annotation.versioning.ProviderType" 
delta="added"/>
    </interface>
    <version name="1.3.0" delta="added"/>
  </package>
{code}

Moreover the plugin can be configured inside the {{report}} section to generate 
an html report page as shown in the attached _Screen Shot 2014-05-13 at 
11.49.44 PM.pdf_ document.

I hope you'll like it, have fun!

> Add a new Mojo to invoke the BND Baseline tool
> ----------------------------------------------
>
>                 Key: FELIX-4512
>                 URL: https://issues.apache.org/jira/browse/FELIX-4512
>             Project: Felix
>          Issue Type: New Feature
>          Components: Maven Bundle Plugin
>    Affects Versions: maven-bundle-plugin-2.4.0
>            Reporter: Simone Tripodi
>             Fix For: maven-bundle-plugin-2.4.1
>
>         Attachments: FELIX-4512.1.patch, FELIX-4512.patch, Screen Shot 
> 2014-05-13 at 11.49.44 PM.pdf
>
>
> The BND 2.2.0 library contains an extraordinary tool called 
> [Baseline|http://www.aqute.biz/Bnd/Versioning] (see Baselining paragraph) 
> that compares the public API of a bundle with the public API of another 
> bundle.
> It would be really useful to have this tool in the {{maven-bundle-plugin}} in 
> order to keep track of APIs modifications during development time.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to