Re: [mdr-users] XMI Modules supported by MDR?
Chad Brandon <[email protected]> Tue, 12 Jul 2005 14:41:27 -0600
| Newsgroups | gmane.comp.java.netbeans.modules.mdr.user |
|---|---|
| Message-ID | <[email protected]> |
We ended up commenting out the CompositionViolationException in the MDR code (that was our work-a-round). No Magic said they wouldn't fix it (the invalid references) until Magic Draw 10. Martin Matula wrote: > I already wrote you about the CompositionViolationException in one of > my previous e-mails. MagicDraw serializes the elements to several > files in a wrong way - it puts some kind of proxy element into each > file, but these are proprietary - a generic XMI client does not know > the elements added by MD are just some kind of proxies that should be > matched based on the xmi.id with the element from the remote file. So, > the MDR thinks the XMI assigns several containers (composites) to a > single element. At least that's what I remember. We were discussing > this with Matthias Bohlen and MagicDraw guys and in the end I think it > was somehow resolved on the AndroMDA side. You should be able to find > some discussion about it on the AndroMDA web pages (I remember > Matthias Bohlen logged it somewhere). > Martin > > Pieter Van Gorp wrote: > >> Hi Martin, >> I decided to generate the plain XML file with MagicDraw and guess >> what: the prolog exception isn't thrown anymore. >> >> The UML files are available on >> http://www.fots.ua.ac.be/~pvgorp/tmp/mdr/mdrWorksWithProfiles.tar.gz >> >> Apparently I missed something when I tried to unzip the MagicDraw >> files myself and update the hrefs with a search/replace... Thanks for >> keeping me thinking in this direction! >> >> Now the prolog exception is gone, another one came up. This time it >> is an MDR exception instead of an XML parser one. It is the recurring >> (well-known) CompositionViolationException. If I cannot find its >> cause, I'll start a new mail thread on it. >> >> Thanks again and best regards, >> Pieter. >> >> On 7/12/05, Martin Matula <[email protected]> wrote: >> >> >>> Yes, please send them. >>> Martin >>> >>> Pieter Van Gorp wrote: >>> >>> >>> >>>> Hi Martin, >>>> I should have sent you some other files since I already checked >>>> whether it worked when using plain XML files instead XML.ZIPs... When >>>> using plain XML files (as you suggest as well), the same exception is >>>> thrown. I'll send you the plain XML files as well if you like. >>>> >>>> Regards, >>>> Pieter. >>>> >>>> On 7/12/05, Martin Matula <[email protected]> wrote: >>>> >>>> >>>> >>>> >>>>> Pieter, >>>>> modelWithModules.xml contains hrefs of a proprietary format - they >>>>> reference zip file - MDR tries to handle files referenced in HREFs as >>>>> XML files, since that's how standard hrefs in XMI should work. By >>>>> trying >>>>> to parse the file referenced from HREF - i.e. the zip file - the XML >>>>> parser seems to report this weird message (we are using the >>>>> standard XML >>>>> parser that is part of the JDK - MDR sources themselves do not >>>>> contain >>>>> any string literal containing word "prolog" so the message is >>>>> really not >>>>> generated by MDR). It is obvious that this will end up with an error, >>>>> since the file referenced from the hrefs is a binary file, not a >>>>> valid XML. >>>>> Regards, >>>>> Martin >>>>> >>>>> Pieter Van Gorp wrote: >>>>> >>>>> >>>>> >>>>> >>>>> >>>>>> Hi all, >>>>>> coming back to a recent thread, I have prepared a small example that >>>>>> illustrates the problem I experienced with MDR. >>>>>> >>>>>> On http://www.fots.ua.ac.be/~pvgorp/tmp/mdr/ you find >>>>>> modelWithoutModules.xml and modelWithModules.xml. The former is an >>>>>> XMI file exported by MagicDraw 9.0 that is correctly processed by >>>>>> MDR. >>>>>> The latter represents the same UML model but imports profile >>>>>> information from an external XMI module file called >>>>>> sdm-profile-jcmtg.xml.zip. Apart from storing the profile in a >>>>>> separate file, there should be no changes between >>>>>> modelWithModules.xml >>>>>> and modelWithoutModules.xml. MDR throws the "content not allowed in >>>>>> prolog" exception when loading modelWithModules.xml. >>>>>> >>>>>> If you like to execute the problematic situation on your machine, >>>>>> you >>>>>> can use the code from mdr-modules.tar.gz. The reason for the large >>>>>> file size is that I wanted to make the code executable with minimal >>>>>> effort for me and you ;-) Once unzipped, go to the >>>>>> mdr-modules/jcmtg/transformer dir and execute (1) ant build-exec, >>>>>> (2) >>>>>> ant and (3) ant exec. >>>>>> >>>>>> You can switch between the loading of modelWithModules.xml and >>>>>> modelWithoutModules.xml by adjusting the trans.model.xmi.url >>>>>> property >>>>>> in mdr-modules/jcmtg/transformer/build.properties. >>>>>> >>>>>> Chad, I tried to use plain XML files only instead of zipped XML >>>>>> files >>>>>> and I still get the exception, so I'm not sure if using a custom XMI >>>>>> reference resolver will solve the problem. >>>>>> >>>>>> I hope if these sample files help you understand my problem better. >>>>>> Please let me know if I should give additional info. >>>>>> >>>>>> Best regards, >>>>>> Pieter. >>>>>> >>>>>> On 6/15/05, Pieter Van Gorp <[email protected]> wrote: >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>>> Hi Martin, I'll check out Chad's solution first and send my >>>>>>> files if >>>>>>> that doesn't work for me. >>>>>>> >>>>>>> Thanks again, >>>>>>> Pieter. >>>>>>> >>>>>>> On 6/14/05, Martin Matula <[email protected]> wrote: >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>>> A minimal example would of course be more desirable. Anyway, if >>>>>>>> your >>>>>>>> files are of a reasonable size for sending them to the mailing >>>>>>>> list, I >>>>>>>> don't mind... >>>>>>>> >>>>>>>> Pieter Van Gorp wrote: >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>> Hi Martin, >>>>>>>>> shall I post to the list my actual MagicDraw XMI files (profile >>>>>>>>> definition and application) or shall I make a minimal example >>>>>>>>> that >>>>>>>>> still triggers the exception first? >>>>>>>>> >>>>>>>>> Regards, >>>>>>>>> Pieter. >>>>>>>>> >>>>>>>>> On 6/14/05, Pieter Van Gorp <[email protected]> wrote: >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>>> Hi Martin, >>>>>>>>>> thanks for your reply: >>>>>>>>>> >>>>>>>>>> On 6/14/05, Martin Matula <[email protected]> wrote: >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>> I'm experiencing problems when processing XMI files using >>>>>>>>>>>> external >>>>>>>>>>>> modules in MDR. My input file is a UML file in XMI >>>>>>>>>>>> generated by >>>>>>>>>>>> MagicDraw 9. The problem occurred after moving my profile >>>>>>>>>>>> definitions >>>>>>>>>>>> to a separate XMI file. MDR throws a "Content is not >>>>>>>>>>>> allowed in >>>>>>>>>>>> prolog" exception. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> That's weird. MDR definitely does not print anything like >>>>>>>>>>> that. Maybe >>>>>>>>>>> the XML parser does that. Try if the file is a valid XML. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Here's the context of the exception: >>>>>>>>>> org.netbeans.lib.jmi.util.DebugException: Content is not >>>>>>>>>> allowed in prolog. >>>>>>>>>> at >>>>>>>>>> org.netbeans.lib.jmi.xmi.XmiContext.readExternalDocument(XmiContext.java:927) >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> When validating with Xerces, I get a lot of "undeclared type" >>>>>>>>>> errors >>>>>>>>>> although MagicDraw happily opens and saves the file... >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>> I found that AndroMDA contains special code for dealing >>>>>>>>>>>> with modules >>>>>>>>>>>> (in the >>>>>>>>>>>> org.andromda.repositories.mdr.MDRXmiReferenceResolverContext >>>>>>>>>>>> class). Should I follow the same strategy or does MDR provide >>>>>>>>>>>> built-in module-support such that I don't have to wrap >>>>>>>>>>>> repository >>>>>>>>>>>> classes? For instance, is there one specific MDR method >>>>>>>>>>>> that I should >>>>>>>>>>>> call after loading an XMI file containing hrefs to elements >>>>>>>>>>>> in another >>>>>>>>>>>> XMI file to make MDR treat the two XMI files as one large >>>>>>>>>>>> model? >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> MDR does this automatically. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Good to know... it makes me wonder why AndroMDA uses special XMI >>>>>>>>>> resolvers... anyway, I'm still wondering where the "content >>>>>>>>>> is not >>>>>>>>>> allowed in prolog" exception comes from... >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> In earlier versions of MagicDraw there was >>>>>>>>>>> a bug in XMI serialization causing >>>>>>>>>>> CompositionViolationException. I >>>>>>>>>>> don't know if this was fixed in MagicDraw 9, but so far this >>>>>>>>>>> does not >>>>>>>>>>> seem to be your problem. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Indeed, in fact I encountered this problem when copying >>>>>>>>>> subgraphs >>>>>>>>>> across models. It was not a bug of MagicDraw but a >>>>>>>>>> consequence of my >>>>>>>>>> way of copying model elements. I'll come back to that shortly. >>>>>>>>>> >>>>>>>>>> Best regards, >>>>>>>>>> Pieter. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>> >>>> >>> >> > >