Re: use of refVerifyConstraints method
Bin Fu <[email protected]> Mon, 13 Oct 2003 13:34:37 +0200
| Newsgroups | gmane.comp.java.netbeans.modules.mdr.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi, Martin,
I'm very appreciated for your answer.
java.util.Collection read(java.lang.String URI, RefPackage extent)
returns the outermost objects of a source xml file in a Collection, and
all what I need to deeply verify is this Collection (RefObject type),
isn't it?
Today I tried to make some differences to verify the constraints. And
unfortunately, when I set my Java file back to what it orginally was,
the method read(String URL, RefPackage extent) seems not to work any
more. it always shows following messages that earlier has never happened:
"
Log: 1 msg: Storage factory:
org.netbeans.mdr.persistence.btreeimpl.btreestorage.BtreeFactory
Log: 16 msg: Property org.netbeans.mdr.persistence.btreeimpl.filename
not specified. Using default value: mdr
Log: 1 msg: Storage file name: mdr
Log: 1 msg: DATABSE: mdr
Log: 1 msg: initializing...
Log: 1 msg: XMI reader started
Log: 1 msg: Instance of Model:Import cannot be created, parameters:
(class java.lang.String) Data_Types
(class java.lang.String)
(class javax.jmi.model.VisibilityKindEnum) public_vis
(class java.lang.Boolean) true
reason: javax.jmi.reflect.TypeMismatchException
Log: 1 msg: Instance of Model:Import cannot be created, parameters:
(class java.lang.String) Core
(class java.lang.String)
(class javax.jmi.model.VisibilityKindEnum) public_vis
(class java.lang.Boolean) true
reason: javax.jmi.reflect.TypeMismatchException
Log: 1 msg: Instance of Model:Import cannot be created, parameters:
(class java.lang.String) Common_Behavior
(class java.lang.String)
(class javax.jmi.model.VisibilityKindEnum) public_vis
(class java.lang.Boolean) true
reason: javax.jmi.reflect.TypeMismatchException
Log: 1 msg: Instance of Model:Import cannot be created, parameters:
(class java.lang.String) Use_Cases
(class java.lang.String)
(class javax.jmi.model.VisibilityKindEnum) public_vis
(class java.lang.Boolean) true
reason: javax.jmi.reflect.TypeMismatchException
Log: 1 msg: Instance of Model:Import cannot be created, parameters:
(class java.lang.String) State_Machines
(class java.lang.String)
(class javax.jmi.model.VisibilityKindEnum) public_vis
(class java.lang.Boolean) true
reason: javax.jmi.reflect.TypeMismatchException
Log: 1 msg: Instance of Model:Import cannot be created, parameters:
(class java.lang.String) Collaborations
(class java.lang.String)
(class javax.jmi.model.VisibilityKindEnum) public_vis
(class java.lang.Boolean) true
reason: javax.jmi.reflect.TypeMismatchException
Log: 1 msg: Instance of Model:Import cannot be created, parameters:
(class java.lang.String) Activity_Graphs
(class java.lang.String)
(class javax.jmi.model.VisibilityKindEnum) public_vis
(class java.lang.Boolean) true
reason: javax.jmi.reflect.TypeMismatchException
Log: 1 msg: Instance of Model:Import cannot be created, parameters:
(class java.lang.String) Model_Management
(class java.lang.String)
(class javax.jmi.model.VisibilityKindEnum) public_vis
(class java.lang.Boolean) true
reason: javax.jmi.reflect.TypeMismatchException
Log: 1 msg: Instance of Model:Package cannot be created, parameters:
(class java.lang.String) UML
(class java.lang.String)
(class java.lang.Boolean) false
(class java.lang.Boolean) false
(class java.lang.Boolean) false
(class javax.jmi.model.VisibilityKindEnum) public_vis
reason: javax.jmi.reflect.TypeMismatchException
Log: 1 msg: Instance of Model:Tag cannot be created, parameters:
(class java.lang.String) org.omg.mof.idl_prefix=org.omg.uml.Foundation
(class java.lang.String)
(class java.lang.String) org.omg.mof.idl_prefix
(class java.util.LinkedList) [org.omg.uml.Foundation]
reason: javax.jmi.reflect.TypeMismatchException
Log: 1 msg: Instance of Model:Tag cannot be created, parameters:
(class java.lang.String) org.omg.xmi.namespace=UML
(class java.lang.String)
(class java.lang.String) org.omg.xmi.namespace
(class java.util.LinkedList) [UML]
reason: javax.jmi.reflect.TypeMismatchException
org.netbeans.mdr.persistence.StorageBadRequestException: No record
exists with key 7AA40BF1-FB1A-11D7-89FE-56DDF88CAA77:0000000000026F54
at
org.netbeans.mdr.persistence.btreeimpl.btreestorage.BtreeDatabase.noSuchRecord(BtreeDatabase.java:958)
at
org.netbeans.mdr.persistence.btreeimpl.btreestorage.BtreeDatabase.get(BtreeDatabase.java:736)
at
org.netbeans.mdr.storagemodel.MdrStorage.resolve(MdrStorage.java:1581)
at
org.netbeans.mdr.persistence.btreeimpl.btreestorage.BtreeStorage.resolveObject(BtreeStorage.java:540)
at
org.netbeans.mdr.persistence.btreeimpl.btreeindex.MOFIDInfo.objectFromBuffer(MOFIDInfo.java:123)
at
org.netbeans.mdr.persistence.btreeimpl.btreeindex.BtreeListByKey$BtreeListByKeyIterator.getCurrentItem(BtreeListByKey.java:220)
at
org.netbeans.mdr.persistence.btreeimpl.btreeindex.BtreeListByKey$BtreeListByKeyIterator.next(BtreeListByKey.java:142)
at
org.netbeans.mdr.storagemodel.IndexImmutSet$IndexImmutIterator.next(IndexImmutSet.java:165)
at
org.netbeans.mdr.storagemodel.CompositeCollection$CompositeIterator.next(CompositeCollection.java:202)
at
org.netbeans.mdr.handlers.IndexSetWrapper$IndexIteratorWrapper.next(IndexSetWrapper.java:228)
at
org.netbeans.lib.jmi.xmi.XmiContext.substCorbaPrimitive(XmiContext.java:1275)
at
org.netbeans.lib.jmi.xmi.XmiContext.resolveCorbaPrimitive(XmiContext.java:1255)
at
org.netbeans.lib.jmi.xmi.XmiContext.resolveCorbaType(XmiContext.java:1152)
at
org.netbeans.lib.jmi.xmi.XmiElement$DataTypeElement.endElement(XmiElement.java:827)
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.content(Parser2.java:1926)
at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1654)
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.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:52)
at verification.Main.verify(Main.java:69)
at verification.Main.main(Main.java:46)
java.lang.NullPointerException
at
org.netbeans.lib.jmi.xmi.XmiContext.substCorbaPrimitive(XmiContext.java:1276)
at
org.netbeans.lib.jmi.xmi.XmiContext.resolveCorbaPrimitive(XmiContext.java:1255)
at
org.netbeans.lib.jmi.xmi.XmiContext.resolveCorbaType(XmiContext.java:1152)
at
org.netbeans.lib.jmi.xmi.XmiElement$DataTypeElement.endElement(XmiElement.java:827)
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.content(Parser2.java:1926)
at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1654)
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.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:52)
at verification.Main.verify(Main.java:69)
at verification.Main.main(Main.java:46)
javax.jmi.xmi.MalformedXMIException: java.lang.NullPointerException
at
org.netbeans.lib.jmi.xmi.XMISaxReaderImpl.read(XMISaxReaderImpl.java:77)
at
org.netbeans.lib.jmi.xmi.XMISaxReaderImpl.read(XMISaxReaderImpl.java:52)
at verification.Main.verify(Main.java:69)
at verification.Main.main(Main.java:46)"
earlier, it showed somehow like
Log: 1 msg: Storage factory:
org.netbeans.mdr.persistence.btreeimpl.btreestorage.BtreeFactory
Log: 16 msg: Property org.netbeans.mdr.persistence.btreeimpl.filename
not specified. Using default value: mdr
Log: 1 msg: Storage file name: mdr
Log: 1 msg: DATABSE: mdr
Log: 1 msg: initializing...
Log: 1 msg: XMI reader started
Log: 1 msg: 25878 instances initialized ..
..............
..............
I think my java file should be same (no significant change) as the
earlier one, but method "read" does not work properly any more. I append
my java file at the end of this email, and hope you could point me the
right way again.
Thank a lot
Bin Fu
Java Source File for Constaint Verfication:
package verification;
import java.io.File;
import java.io.FileOutputStream;
import java.util.Iterator;
import javax.jmi.model.ModelPackage;
import javax.jmi.xmi.XmiReader;
import javax.jmi.xmi.XmiWriter;
import org.netbeans.api.mdr.MDRManager;
import org.netbeans.api.mdr.MDRepository;
import org.openide.ErrorManager;
import org.openide.util.Lookup;
import java.util.List;
import java.util.ArrayList;
import javax.jmi.reflect.*;
/**
*
*
*/
public class Main {
private static final String MOF_INSTANCE = "MOFInstance";
//private static String inputFile =
"/extgw/home/binf/temp/data/ExecuteQuery.xml";
private static String inputFile = "/extgw/home/binf/temp/01-02-15.xml";
public static MDRepository rep;
public static ModelPackage mof;
public static XmiReader reader;
/** Creates a new instance of Main */
public Main()
{
}
public static void main(String arg[])
{
try
{
rep = MDRManager.getDefault().getDefaultRepository();
String uri = new File(inputFile).toURL().toString();
reader = (XmiReader)
Lookup.getDefault().lookup(XmiReader.class);
try
{
init();
verify(uri, rep);
}
finally
{
MDRManager.getDefault().shutdownAll();
}
} catch (Exception e)
{
ErrorManager.getDefault().notify(ErrorManager.ERROR, e);
}
}
private static void init() throws Exception {
mof = (ModelPackage) rep.getExtent(MOF_INSTANCE);
if (mof == null) {
mof = (ModelPackage) rep.createExtent(MOF_INSTANCE);
}
}
private static void verify(String uri, MDRepository rep) throws
java.io.IOException, javax.jmi.xmi.MalformedXMIException,
IndexOutOfBoundsException
{
RefPackage extent = rep.getExtent(MOF_INSTANCE);
List l = new ArrayList(reader.read(uri, extent)); //it doesn't
work any more???
for (int i=0; i<l.size(); i++)
{
RefObject object = (RefObject)l.get(i);
printConstraintsVerification(object);
}
}
private static void printConstraintsVerification(RefObject object)
{
if (object == null)
System.out.println("RefObject is null");
else if (object.refVerifyConstraints(true) == null)
System.out.println("refVerifyConstraints is null");
else
System.out.println("value is " +
object.refVerifyConstraints(true));
String exception[] = (String
[])object.refVerifyConstraints(true).toArray();
int length = exception.length;
System.out.println("Length of exception is " + length);
for (int i=0; i<length; i++)
{
System.out.println(exception[i]);
}
}
}
Martin Matula wrote:
> Hi,
> the exception looks like there is an attribute in your metamodel that
> does not have a type set. Maybe you could file a request for
> enhancement (issue) requesting making the JMIMapper more user friendly
> when reporting errors.
> I am not sure why the refVerifyConstraints does not work for you. It
> is a fact that we have not implemented checking of all constraints,
> but at least the multiplicity constraint should be checked. Are you
> sure your program invokes refVerifyConstraints on each model element?
> Martin
>