[ http://jira.andromda.org/browse/HIB-174?page=comments#action_12554 ] 

Carlos Cuenca commented on HIB-174:
-----------------------------------

There are two ocl's that crash on HibernateAssociationEnd:

- map collecions must have the index ...
- ordered collections must have...

in order to fix the bug they can be changed to :

context HibernateAssociationEnd 
inv: otherEnd.type.oclIsKindOf(HibernateEntity) and otherEnd.map implies ( 
otherEnd.collectionIndexType -> notEmpty() and otherEnd.collectionIndexName -> 
notEmpty())

and

context HibernateAssociationEnd 
inv: otherEnd.type.oclIsKindOf(HibernateEntity) and otherEnd.list implies ( 
otherEnd.collectionIndexName -> notEmpty())

I had done this and added a new test and it seems to work well, now I would 
also like to check that all HibernateAssociationsEnds are associated with 
entities, to do this I had added the following ocl on Hibernate Entity:

context Entity
inv : associationEnds ->forAll(otherEnd.type.oclIsKindOf(HibernateEntity))

but it does not show the validation message.

Any hints?

Carlos


> Crash if Entity associated to non-Entity
> ----------------------------------------
>
>          Key: HIB-174
>          URL: http://jira.andromda.org/browse/HIB-174
>      Project: Hibernate Cartridge
>         Type: Bug

>     Versions: 3.1
>  Environment: Using AndroMDA 3.2-RC1-SNAPSHOT
>     Reporter: Matthias Bohlen
>     Assignee: Carlos Cuenca
>      Fix For: 3.2-RC1

>
> An error in the input model causes the cartridge to crash:
> When an <<Entity>> has an association to another class with no stereotype 
> (user forgot to model the stereotype <<Entity>> there), the cartridge crashes 
> because it tries to evaluate an OCL condition in HibernateAssociationEnd and 
> assumes that "otherEnd" is also an instance of HibernateAssociationEnd (which 
> it is not because of the missing stereotype!).
> The full stack trace:
> ------- AndroMDA Exception Recording -------
> Version ........: 3.2-RC1-SNAPSHOT
> Error ..........: Error performing ModelProcessor.process with model(s) --> 
> 'file:SomeModel.xml'
> Build ..........: ${build.date}
> Build System ...: AndroMDA Core-3.2-RC1-SNAPSHOT
> Build JDK ......: ${java.vm.vendor}-${java.vm.version}
> Build Builder ..: AndroMDA Core
> Run System .....: Windows XP5.1
> Run JDK ........: Sun Microsystems Inc.1.4.2_05-b04
> Main Exception .: org.andromda.core.common.IntrospectorException: No readable 
> property named 'list', exists on object 
> 'org.andromda.metafacades.uml14.AssociationEndFacadeLogicImpl[finance]'
> Root Exception .: org.andromda.core.common.IntrospectorException: No readable 
> property named 'list', exists on object 
> 'org.andromda.metafacades.uml14.AssociationEndFacadeLogicImpl[finance]'
> org.andromda.core.common.IntrospectorException: No readable property named 
> 'list', exists on object 
> 'org.andromda.metafacades.uml14.AssociationEndFacadeLogicImpl[finance]'
>       at 
> org.andromda.core.common.Introspector.internalGetProperty(Introspector.java:490)
>       at 
> org.andromda.core.common.Introspector.getNestedProperty(Introspector.java:226)
>       at 
> org.andromda.core.common.Introspector.getNestedProperty(Introspector.java:241)
>       at 
> org.andromda.core.common.Introspector.getProperty(Introspector.java:182)
>       at 
> org.andromda.translation.ocl.validation.OCLIntrospector.invoke(OCLIntrospector.java:40)
>       at 
> org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEndLogic.validateInvariants(HibernateAssociationEndLogic.java:1260)
>       at 
> org.andromda.core.metafacade.MetafacadeBase.validate(MetafacadeBase.java:106)
>       at 
> org.andromda.core.metafacade.MetafacadeFactory.validateAllMetafacades(MetafacadeFactory.java:258)
>       at 
> org.andromda.core.engine.ModelProcessor.validateModel(ModelProcessor.java:367)
>       at 
> org.andromda.core.engine.ModelProcessor.loadModelIfNecessary(ModelProcessor.java:324)
>       at 
> org.andromda.core.engine.ModelProcessor.loadIfNecessary(ModelProcessor.java:504)
>       at 
> org.andromda.core.engine.ModelProcessor.processModels(ModelProcessor.java:217)
>       at 
> org.andromda.core.engine.ModelProcessor.process(ModelProcessor.java:143)
>       at 
> org.andromda.core.engine.ModelProcessor.process(ModelProcessor.java:79)
>       at org.andromda.core.engine.Engine.run(Engine.java:82)
>       at org.andromda.core.AndroMDA.run(AndroMDA.java:197)
>       at org.andromda.maven.plugin.AndroMDAMojo.execute(AndroMDAMojo.java:83)
>       at 
> org.andromda.maven.plugin.AbstractAndroMDAMojo.execute(AbstractAndroMDAMojo.java:106)
>       at 
> org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:432)
>       at 
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:530)
>       at 
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:472)
>       at 
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:451)
>       at 
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:303)
>       at 
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:270)
>       at 
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:139)
>       at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:322)
>       at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:115)
>       at org.apache.maven.cli.MavenCli.main(MavenCli.java:249)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at java.lang.reflect.Method.invoke(Method.java:324)
>       at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
>       at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
>       at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
>       at org.codehaus.classworlds.Launcher.main(Launcher.java:375)

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://jira.andromda.org/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira



-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

Reply via email to