Object[] not being carried over to generics in DAO operation
------------------------------------------------------------

                 Key: UMLMETA-108
                 URL: http://jira.andromda.org/browse/UMLMETA-108
             Project: UML Metafacades
          Issue Type: Bug
    Affects Versions: 3.4
         Environment: java 1.6, maven 2.2, magicdraw 16.8, emf2.2 model
            Reporter: Mike Dikan
            Assignee: Bob Fields
         Attachments: mda-testing2.tar.gz

Taken from: http://forum.andromda.org/viewtopic.php?f=9&t=6850

I have an Entity with a legacy operation that is designed to return a 
List<Object[]>. Changing the expected return type is an option but a difficult 
one. I have tried the following approaches to set the type ( in MD 16.8 ):

Setting type to 'Object' with the type modifier of '[]'
Setting type to 'Object[]' with no type modifier
Setting type to 'Object[]' with type modifier of '[]'
In every case, my Daos (interface and base) will generate a method with return 
type of List<Object>. I have also tested having List<Object[]> as a operation 
parameter and I see the same result (List<Object>). I have no problem with 
Object[] with no multiplicity (not a generic in a List).

(continued)

I have enableTemplating on, and I use multiplicity for the List. But the 
Object[] inside the list from the model is resulting in a List<Object> instead 
of a List<Object[]> being generated in the code. As mentioned above I used all 
the intuitive datatype settings that I could think of. This is a common 
occurence for me becuase when using hibernate's Query and SqlQuery classes, 
List<Object[]> is a very common return from the Query.list() method. I can 
avoid all this by doing unchecked casting later down in my implementation code, 
but the Object[] just seems more appropriate.

(continued)

I tried what another poster suggested in a semi-related forum post: to create a 
phantom datatype to trick andromda into generating the right Type, but it did 
not work. I created a datatype in MD called 'Object[]' and assigned that to my 
return parameter's 'type'. I then changed multiplicity to '0..*' and tried 
regenerating, but instead of seeing a List<Object[]>, I again saw a 
List<Object>. It seems that andromda is actively stripping out the array type 
modifier when there is a multiplicity involved in a Type definition.

(continued)

Related to metafacades under 
AssociationEndFacadeLogicImpl.handleGetGetterSetterTypeName and 
ModelElementFacadeLogicImpl.handleGetFullyQualifiedName.

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

        

------------------------------------------------------------------------------
Sell apps to millions through the Intel(R) Atom(Tm) Developer Program
Be part of this innovative community and reach millions of netbook users 
worldwide. Take advantage of special opportunities to increase revenue and 
speed time-to-market. Join now, and jumpstart your future.
http://p.sf.net/sfu/intel-atom-d2d

Reply via email to