Re: use of refVerifyConstraints method

Bin Fu <[email protected]> Tue, 30 Sep 2003 15:49:11 +0200
Newsgroups gmane.comp.java.netbeans.modules.mdr.devel
Message-ID <[email protected]>
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) 
>>>>>>
>>>>>> ==>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>
>>
>>
>
>
>