Re: use of refVerifyConstraints method
Martin Matula <[email protected]> Wed, 01 Oct 2003 11:19:50 +0200
| Newsgroups | gmane.comp.java.netbeans.modules.mdr.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi,
the text that you have found describes how to make refVerifyConstraints
check more than just the multiplicity constraints that are checked by
default - you don't need this.
Using refVerifyConstraints is simple - once you read XML file using XMI
reader, you can invoke refVerifyConstraints on every object in the
collection returned from XMI reader's read method.
Martin
Bin Fu wrote:
> Hi,
>
>
> I've read specification of method "refVerifyConstraints", but I still
> don't know how to import an XMI file and then invoke this method. Do you
> know anywhere that I can find a little sample code for use of
> refVerifyConstraints?
>
> I found the following text from
> http://mdr.netbeans.org/custom_implementations.html: "
>
> The second possibility to implement some constraint checks is
> implementing the *_verify(...)*method. This method is invoked as a
> callback from refVerifyConstraints(...), thus, it serves for an "on
> demand" verification of element's constraints. A correct implementation
> of the _verify(...) method should always call super._verify(...).
>
> protected Collection _verify(Collection verify) {
> super._verify(verify);
> // do your stuff here
> }
>
> "
> But this is too rough for me.
>
> And as a beginner of MDR I've got so much support from you, thanks again!
>
> Regards
>
>
> Bin
>
>
>
>
> Martin Matula wrote:
>
>> Hi,
>> no, this is not possible. Moreover, the problem you probably have is
>> not with the incorrectness of the XMI file - the XMI file is correct,
>> but the model serialized in it is not wellformed in a sense that it
>> seems to break some deferred constraints. One way to find out which
>> elements break this constraint is to try to call refVerifyConstraints
>> on them programatically.
>> Martin
>>
>> Bin Fu wrote:
>>
>>> Hi, Martin,
>>>
>>> is there any way to execute the XML file with MDR step by step (such
>>> like "debug mode"), so that I can find what is needed in my XML file?
>>> I found that there is a link to "source code" under mdr.netbeans.org,
>>> but I failed to find source code of MDR.
>>>
>>> Thanks!
>>> Kind regards
>>>
>>> Bin
>>>
>>>
>>>
>>> Martin Matula wrote:
>>>
>>>> Hi,
>>>> it seems that for some reason, scope of an attribute (whether it is
>>>> a classifier level or instance level) is not set, so the metamodel
>>>> you are trying to generate the interfaces from is not well-formed.
>>>> Martin
>>>>
>>>> Bin Fu wrote:
>>>>
>>>>> Dear Martin,
>>>>>
>>>>> thanks for your answer. I found out the problem that is exactly as
>>>>> what you said.
>>>>> After I solved this problem, I am able to load xml file into MDR
>>>>> without problem. And then I selected some packages that I need and
>>>>> clicked righ mouse to try to export them as JMI interfaces.
>>>>> Afterwards one error message came: "Exception occurred in Request
>>>>> Processor" (Details is shown following)
>>>>>
>>>>> Now that xml file can already be loaded, why is there still problem?
>>>>> Thanks again!
>>>>>
>>>>> Bin
>>>>>
>>>>>
>>>>> Annotation: Exception occurred in Request Processor
>>>>> java.lang.NullPointerException
>>>>> at
>>>>> org.netbeans.lib.jmi.mapping.JavaMapper$ClassContents.<init>(JavaMapper.java:621)
>>>>>
>>>>> at
>>>>> org.netbeans.lib.jmi.mapping.JavaMapper$ClassContents.<init>(JavaMapper.java:592)
>>>>>
>>>>> at
>>>>> org.netbeans.lib.jmi.mapping.JavaMapper.getClassContents(JavaMapper.java:587)
>>>>>
>>>>> at
>>>>> org.netbeans.lib.jmi.mapping.JavaMapper.classInstanceTemplate(JavaMapper.java:548)
>>>>>
>>>>> at
>>>>> org.netbeans.lib.jmi.mapping.GenericMapper.visitRefObject(GenericMapper.java:344)
>>>>>
>>>>> at
>>>>> org.netbeans.lib.jmi.mapping.GenericMapper.visitRefObject(GenericMapper.java:331)
>>>>>
>>>>> at
>>>>> org.netbeans.lib.jmi.mapping.GenericMapper.visitRefObject(GenericMapper.java:331)
>>>>>
>>>>> at
>>>>> org.netbeans.lib.jmi.mapping.GenericMapper.visitRefObject(GenericMapper.java:331)
>>>>>
>>>>> at
>>>>> org.netbeans.lib.jmi.mapping.GenericMapper.visitRefObject(GenericMapper.java:331)
>>>>>
>>>>> at
>>>>> org.netbeans.lib.jmi.mapping.GenericMapper.visitRefObject(GenericMapper.java:331)
>>>>>
>>>>> at
>>>>> org.netbeans.lib.jmi.mapping.GenericMapper.visitRefObject(GenericMapper.java:331)
>>>>>
>>>>> at
>>>>> org.netbeans.lib.jmi.mapping.GenericMapper.visitRefObject(GenericMapper.java:331)
>>>>>
>>>>> at
>>>>> org.netbeans.lib.jmi.mapping.GenericMapper.visitRefObject(GenericMapper.java:331)
>>>>>
>>>>> at
>>>>> org.netbeans.lib.jmi.mapping.GenericMapper.visitRefObject(GenericMapper.java:335)
>>>>>
>>>>> at
>>>>> org.netbeans.lib.jmi.mapping.GenericMapper.visitRefObject(GenericMapper.java:335)
>>>>>
>>>>> at
>>>>> org.netbeans.lib.jmi.mapping.GenericMapper.visitRefObject(GenericMapper.java:335)
>>>>>
>>>>> at
>>>>> org.netbeans.lib.jmi.mapping.GenericMapper.visitRefBaseObject(GenericMapper.java:399)
>>>>>
>>>>> at
>>>>> org.netbeans.lib.jmi.mapping.JMIMapperImpl.generate(JMIMapperImpl.java:57)
>>>>>
>>>>> at
>>>>> org.netbeans.modules.mdrexplorer.looks.reflect.actions.Map2JavaAction$1.run(Map2JavaAction.java:75)
>>>>>
>>>>> at org.openide.util.Task.run(Task.java:136)
>>>>> at
>>>>> org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:328)
>>>>> [catch] at
>>>>> org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:670)
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Martin Matula wrote:
>>>>>
>>>>>> The reason for this error usually is that there is xmi.idref
>>>>>> element pointing to an object that does not exist. In this case,
>>>>>> it seems that there is xmi.idref="String" (something references an
>>>>>> object with id="String"), but there seems to be no object defined
>>>>>> in the XMI file that would have the xmi.id attribute set to "String".
>>>>>> Martin
>>>>>>
>>>>>> Bin Fu wrote:
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> If I use MDR to process a parsered XML file, following error
>>>>>>> message will occur
>>>>>>> What could be the reason?
>>>>>>>
>>>>>>> Bin
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> javax.jmi.xmi.MalformedXMIException:
>>>>>>> org.netbeans.lib.jmi.util.DebugException: Unknown reference or
>>>>>>> circularity in instance dependences detected, bad reference: String
>>>>>>> at
>>>>>>> org.netbeans.lib.jmi.xmi.XMISaxReaderImpl.read(XMISaxReaderImpl.java:77)
>>>>>>>
>>>>>>> at
>>>>>>> org.netbeans.lib.jmi.xmi.XMISaxReaderImpl.read(XMISaxReaderImpl.java:59)
>>>>>>>
>>>>>>> at
>>>>>>> org.netbeans.modules.mdrexplorer.looks.reflect.actions.LoadXMIAction$1.run(LoadXMIAction.java:111)
>>>>>>>
>>>>>>> at org.openide.util.Task.run(Task.java:136)
>>>>>>> at
>>>>>>> org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:328)
>>>>>>>
>>>>>>> [catch] at
>>>>>>> org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:670)
>>>>>>>
>>>>>>> ==>
>>>>>>> Annotation: XMI parsing error at line: 16685: Unknown reference
>>>>>>> or circularity in instance dependences detected, bad reference:
>>>>>>> String
>>>>>>> org.netbeans.lib.jmi.util.DebugException: Unknown reference or
>>>>>>> circularity in instance dependences detected, bad reference: String
>>>>>>> at
>>>>>>> org.netbeans.lib.jmi.xmi.XmiSAXReader.endElement(XmiSAXReader.java:252)
>>>>>>>
>>>>>>> at
>>>>>>> org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1683)
>>>>>>> at org.apache.crimson.parser.Parser2.content(Parser2.java:1926)
>>>>>>> at
>>>>>>> org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1654)
>>>>>>> at
>>>>>>> org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:634)
>>>>>>> at org.apache.crimson.parser.Parser2.parse(Parser2.java:333)
>>>>>>> at
>>>>>>> org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:448)
>>>>>>>
>>>>>>> at javax.xml.parsers.SAXParser.parse(SAXParser.java:345)
>>>>>>> at
>>>>>>> org.netbeans.lib.jmi.xmi.XmiSAXReader.read(XmiSAXReader.java:118)
>>>>>>> at
>>>>>>> org.netbeans.lib.jmi.xmi.XmiSAXReader.read(XmiSAXReader.java:99)
>>>>>>> at
>>>>>>> org.netbeans.lib.jmi.xmi.XMISaxReaderImpl.read(XMISaxReaderImpl.java:71)
>>>>>>>
>>>>>>> at
>>>>>>> org.netbeans.lib.jmi.xmi.XMISaxReaderImpl.read(XMISaxReaderImpl.java:59)
>>>>>>>
>>>>>>> at
>>>>>>> org.netbeans.modules.mdrexplorer.looks.reflect.actions.LoadXMIAction$1.run(LoadXMIAction.java:111)
>>>>>>>
>>>>>>> at org.openide.util.Task.run(Task.java:136)
>>>>>>> at
>>>>>>> org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:328)
>>>>>>>
>>>>>>> [catch] at
>>>>>>> org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:670)
>>>>>>>
>>>>>>> ==>
>>>>>>> org.netbeans.lib.jmi.util.DebugException: Unknown reference or
>>>>>>> circularity in instance dependences detected, bad reference: String
>>>>>>> at
>>>>>>> org.netbeans.lib.jmi.xmi.XmiElement$Content.endElement(XmiElement.java:395)
>>>>>>>
>>>>>>> at
>>>>>>> org.netbeans.lib.jmi.xmi.XmiSAXReader.endElement(XmiSAXReader.java:240)
>>>>>>>
>>>>>>> at
>>>>>>> org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1683)
>>>>>>> at org.apache.crimson.parser.Parser2.content(Parser2.java:1926)
>>>>>>> at
>>>>>>> org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1654)
>>>>>>> at
>>>>>>> org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:634)
>>>>>>> at org.apache.crimson.parser.Parser2.parse(Parser2.java:333)
>>>>>>> at
>>>>>>> org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:448)
>>>>>>>
>>>>>>> at javax.xml.parsers.SAXParser.parse(SAXParser.java:345)
>>>>>>> at
>>>>>>> org.netbeans.lib.jmi.xmi.XmiSAXReader.read(XmiSAXReader.java:118)
>>>>>>> at
>>>>>>> org.netbeans.lib.jmi.xmi.XmiSAXReader.read(XmiSAXReader.java:99)
>>>>>>> at
>>>>>>> org.netbeans.lib.jmi.xmi.XMISaxReaderImpl.read(XMISaxReaderImpl.java:71)
>>>>>>>
>>>>>>> at
>>>>>>> org.netbeans.lib.jmi.xmi.XMISaxReaderImpl.read(XMISaxReaderImpl.java:59)
>>>>>>>
>>>>>>> at
>>>>>>> org.netbeans.modules.mdrexplorer.looks.reflect.actions.LoadXMIAction$1.run(LoadXMIAction.java:111)
>>>>>>>
>>>>>>> at org.openide.util.Task.run(Task.java:136)
>>>>>>> at
>>>>>>> org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:328)
>>>>>>>
>>>>>>> [catch] at
>>>>>>> org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:670)
>>>>>>>
>>>>>>> ==>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>
>>
>>
>
>
>