IBM Support

RS00325: MERGEWIZARD$CANNOTMERGEEXCEPTION WHEN A FQN IS PRESENT TWICE IN OBJECT MODEL WITH DIFFERENT TYPES

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • ****************************************************************
    *********************************************************
    * To reproduce the issue with only Engine API, please use
    TestMerge project (TestMerge.zip is in attachment)
    ****************************************************************
    *********************************************************
    
    You have three classes in your BOM:
    
    com.hallmark.smart.optim.OptimizationProblem
    com.hallmark.smart.optim.OptimizationEngineException
    com.hallmark.smart.optim.BestMixProblem
    
    
    OptimizationProblem and BestMixProblem have methods and
    contructors throwing the following exception:
    OptimizationEngineException.
    Your are thus throwing an exception which is defined in the BOM.
    
    When you read your BOM (de-serialize it) to an object model,
    each class will be 'inspected' and added to it.
    For each class, you will thus inspect all methods, constructors,
    attributes, ... you can find on it.
    For methods and constructors, inspecting them means you will
    also try to know if the constructor or method has some
    exceptions attached to them.
    If it is the case, you will map the Java Type of the Exception
    of an IlrType. If the type already exists in the object model,
    it will find it, otherwise it will create a missing reference
    type.
    
    
    So as you might suspect, the order in which the bom is
    inspecting has its importance.
    With IBM 6, the bom classes are read in the following order:
    
    com.hallmark.smart.optim.OptimizationEngineException
    com.hallmark.smart.optim.OptimizationProblem
    com.hallmark.smart.optim.BestMixProblem
    
    ==> When either OptimizationProblem or BestMixProblem are
    inspected, the type OptimizationEngineException already exists
    so it uses it.
    
    With SUN 6, the bom classes are read in the following order:
    
    com.hallmark.smart.optim.OptimizationProblem
    com.hallmark.smart.optim.OptimizationEngineException
    com.hallmark.smart.optim.BestMixProblem
    
    ==> When OptimizationProblem is inspected, the type
    OptimizationEngineException does not exist and create a 'bulk'
    one (a missing reference).
    ==> When OptimizationEngineException is inspected, the type
    OptimizationEngineException is created.
    ==> When BestMixProblem is inspected, the type
    OptimizationEngineException already exists so it uses it
    ==> We end up with two elements having the same FQN with one is
    a missing reference, the other one is a real class. The missing
    reference is not replace by the real class once it is available
    (there is no reset on the list of exceptions for a given
    IlrMethod)
    
    
    If first class inspected is not OptimizationEngineException,
    because constructor of OptimizationProblem throws an exception
    of type OptimizationProblem,
    we will create an IlrMissingReference
    (IlrDynamicMissingReference) for type
    OptimizationEngineException.
    This missing reference will be added to the list of exception
    for constructor or method of OptimizationProblem throwing the
    exception
    
    see :
    IlrMethod.getMethodExceptions()
    ==> IlrDynamicMethod.getMethodExceptions()
    IlrNativeBinding.getException() +
    IlrNativeBinding.createExceptions() +
    IlrDynamicObjectModel.getClassReference() +
    IlrDynamicObjectModel.getTypeReference() +
    
    ==> The default selector on the merge will find two types for
    same fqn com.hallmark.smart.optim.OptimizationEngineException:
    the missing reference
    the dynamic class
    
    see: IlrMergeWizard.allSourcesTypes()
    IlrCoherentSelector.ClassLookup.MemberLookup.inspect(IlrMethod)
    
    Result: Exception at merge time because of duplicated type
    
    !MESSAGE Error processing "UpdateDestinationClassSyncCommand"
    for element "com.hallmark.smart.optim.OptimizationProblem".
    !STACK 0
    ilog.rules.bom.util.IlrMergeWizard$CannotMergeException:
    duplicated type
    com.hallmark.smart.optim.OptimizationEngineException
            at ilog.rules.bom.util.IlrMergeWizard.do(Unknown Source)
            at ilog.rules.bom.util.IlrMergeWizard.merge(Unknown
    Source)
            at ilog.rules.bom.util.IlrMergeWizard.merge(Unknown
    Source)
            at
    ilog.rules.studio.bom.services.internal.ObjectModelSynchronizerI
    mpl.handleUpdateDestinationClassSyncCommand(Unknown Source)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
    Method)
            at
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessor
    Impl.java:39)
            at
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethod
    AccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at
    ilog.rules.studio.bom.services.internal.ObjectModelSynchronizerI
    mpl.handleBasicSyncCommand(Unknown Source)
            at
    ilog.rules.studio.bom.services.internal.ObjectModelSynchronizerI
    mpl.apply(Unknown Source)
            at
    ilog.rules.studio.bomupdate.IlrBOMUpdater.applySyncCommands(Unkn
    own Source)
            at
    ilog.rules.studio.bomupdate.ui.IlrDeltaSection$1.widgetSelected(
    Unknown Source)
            at
    org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.
    java:228)
            at
    org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
    

Local fix

  • N/A
    

Problem summary

  • An IlrMergeWizard$CannotMergeException occured when updating the
    BOM.
    

Problem conclusion

  • This is fixed.
    

Temporary fix

Comments

APAR Information

  • APAR number

    RS00325

  • Reported component name

    WS ILOG JRULES

  • Reported component ID

    5724X9800

  • Reported release

    703

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2010-08-12

  • Closed date

    2010-10-20

  • Last modified date

    2010-10-20

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Fix information

  • Fixed component name

    WS ILOG JRULES

  • Fixed component ID

    5724X9800

Applicable component levels

  • R700 PSY

       UP

[{"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SS6MTS","label":"WebSphere ILOG JRules"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"7.0.3","Edition":"","Line of Business":{"code":"LOB45","label":"Automation"}}]

Document Information

Modified date:
20 October 2010