throws SAXException
{
boolean trace = logger.isTraceEnabled();
if (trace)
logger.trace(" <class>"); //NOI18N
JDOClass jdoClass = null;
try {
// get JDOPackage from context stack
//String packageName = (String)context.peek();
JDOPackage jdoPackage = (JDOPackage)context.peek();
String packageName = jdoPackage.getName();
String className = meta.getValue("", "name"); //NOI18N
if ((packageName != null) && (packageName.length() > 0))
className = packageName + "." + className; //NOI18N
jdoClass = model.createJDOClass(className, false);
skipXMLElements = jdoClass.isXMLMetadataLoaded();
if (skipXMLElements) {
if (trace)
logger.trace(
" JDO metadata already loaded for class " + //NOI18N
className + ", skipping class element"); //NOI18N
return;
}
for ( int i = 0; i < meta.getLength(); i++ ) {
String name = meta.getLocalName(i);
String value = meta.getValue(i);
if (trace)
logger.trace(" " + name + " = " + value); //NOI18N
if ("name".equals(name)) { //NOI18N
// name is already set during create => do nothing
}
else if ("identity-type".equals(name)) { //NOI18N
jdoClass.setIdentityType(
JDOIdentityType.toJDOIdentityType(value));
}
else if ("objectid-class".equals(name)) { //NOI18N
jdoClass.setDeclaredObjectIdClassName(value);
}
else if ("requires-extent".equals(name)) { //NOI18N
jdoClass.setRequiresExtent(
Boolean.valueOf(value).booleanValue());
}
else if ("persistence-capable-superclass".equals(name)) { //NOI18N
// Do not overwrite existing entry
// TBD check old and new entry for consistency
if (jdoClass.getPersistenceCapableSuperclassName() == null) {
jdoClass.setPersistenceCapableSuperclassName(value);
}
}
else {
/* JDO2 metadata not yet fully supported =>
do not throw exception now