Re: [mdr-users] XMI Modules supported by MDR?
Chad Brandon <[email protected]> Tue, 12 Jul 2005 07:53:00 -0600
| Newsgroups | gmane.comp.java.netbeans.modules.mdr.user |
|---|---|
| Message-ID | <[email protected]> |
Pieter and Martin, "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." That's precisely why we had to create our MDRXmiReferenceResolverContext class that resolves that Magic Draw xml.zip into the full XMI path.. Pieter, have you taken a look at the source in the andromda-all/repositories/mdr module? That should help you get the XMI hrefs working with Magic Draw (we're using the latest MDR builds and things work fine). Martin Matula 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. >>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>>> >>> > >