PackageMBean.listPackages() raises an exception for certain bundles in Felix 
2.0.3
----------------------------------------------------------------------------------

                 Key: ARIES-178
                 URL: https://issues.apache.org/jira/browse/ARIES-178
             Project: Aries
          Issue Type: Bug
          Components: JMX
    Affects Versions: Incubation
            Reporter: Roland Huss


Using PackageStateMBean.listPackages() gives the following exception on Felix 
2.0.3 for certain bundles (here: spring-ws-core-1.5.9.jar)

Caused by: javax.management.openmbean.KeyAlreadyExistsException: Argument 
value's index, calculated according to this TabularData instance's tabularType, 
already refers to a value in this table.
        at 
javax.management.openmbean.TabularDataSupport.checkValueAndIndex(TabularDataSupport.java:871)
        at 
javax.management.openmbean.TabularDataSupport.internalPut(TabularDataSupport.java:331)
        at 
javax.management.openmbean.TabularDataSupport.put(TabularDataSupport.java:323)
        at 
org.apache.aries.jmx.codec.PackageData.tableFrom(PackageData.java:142)
        at 
org.apache.aries.jmx.framework.PackageState.listPackages(PackageState.java:130)
        ...

The original reason for this is that Felix returns multiple identical 
ExportedPackage when calling

ExportedPackage[]  PackageAdmin.getExportedPackages(bundle)

(in this example, org.springframework.ws.soap.addressing.server; version=1.5.9 
is given twice)
I don't know whether this is allowed by the Spec (or is in fact a bug in 
Felix), but Aries could be smarter here anyway.
Since each ExportedPackage is wrapped in a PackageData for JMX-Export and then 
added to a Set<PackageData> all
what is needed to add appropriate equals() and hashCode() to PackageData to 
make the set contain only PackageData
with a unique index (NAME, VERSION, EXPORTING_BUNDLE) for the TabularData to 
build up for the JMX return value.

Please find attachted a patch to add equals() and hashCode() to PackageData.

My question though is, whether this an allowed behaviour of Felix to return 
same ExportedPackage objects multiple times 
in getExportedPackages() (so that in case I could rise an issue for Felix as 
well).  

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to