static private WbXmlDefinition loadDefinition(Properties props){
  String name=props.getProperty(PROP_WBXML_NAME);
  long publicId=Long.decode(props.getProperty(PROP_WBXML_PUBLIC_ID));
  String xmlPublicId=props.getProperty(PROP_WBXML_XML_PUBLIC_IDENTIFIER);
  String xmlUriRef=props.getProperty(PROP_WBXML_XML_URI_REFERENCE);
  String clazz=props.getProperty(PROP_WBXML_CLASS_ELEMENT);
  WbXmlDefinition def=new WbXmlDefinition(name,publicId,xmlPublicId,xmlUriRef,clazz);
  for (  String key : props.stringPropertyNames()) {
    if (key.startsWith(PROP_WBXML_TAG_PREFIX)) {
      WbXmlTagDef tag=getTagDefinition(key,props.getProperty(key));
      if (tag != null) {
        def.addTag(tag);
      }
    }
 else     if (key.startsWith(PROP_WBXML_NAMESPACE_PREFIX)) {
      WbXmlNamespaceDef ns=getNamespaceDefinition(key,props.getProperty(key));
      if (ns != null) {
        def.addNamespace(ns);
      }
    }
 else     if (key.startsWith(PROP_WBXML_ATTR_PREFIX) && !key.endsWith(PROP_WBXML_VALUE_SUFFIX)) {
      WbXmlAttributeDef attr=getAttrDefinition(props,key,props.getProperty(key));
      if (attr != null) {
        def.addAttr(attr);
      }
    }
 else     if (key.startsWith(PROP_WBXML_ATTR_VALUE_PREFIX) && !key.endsWith(PROP_WBXML_VALUE_SUFFIX)) {
      WbXmlAttributeValueDef attrVal=getAttrValueDefinition(props,key,props.getProperty(key));
      if (attrVal != null) {
        def.addAttrValue(attrVal);
      }
    }
 else     if (key.startsWith(PROP_WBXML_EXT_PREFIX) && !key.endsWith(PROP_WBXML_VALUE_SUFFIX)) {
      WbXmlExtensionDef ext=getExtDefinition(props,key,props.getProperty(key));
      if (ext != null) {
        def.addExtension(ext);
      }
    }
 else     if (key.startsWith(PROP_WBXML_OPAQUE_ATTR_PREFIX)) {
      addOpaqueAttrPlugin(def,props,key,props.getProperty(key));
    }
 else     if (key.startsWith(PROP_WBXML_OPAQUE_TAG_PREFIX)) {
      addOpaqueTagPlugin(def,props,key,props.getProperty(key));
    }
 else     if (key.startsWith(PROP_WBXML_LINKED_DEF)) {
      addLinkedDefinition(def,props.getProperty(key));
    }
  }
  String root=props.getProperty(PROP_WBXML_ROOT_ELEMENT);
  def.setRoot(root);
  return def;
}

static private WbXmlDefinition loadDefinition ( Properties props ) { String name = props . getProperty ( PROP_WBXML_NAME ) ; long publicId = Long . decode ( props . getProperty ( PROP_WBXML_PUBLIC_ID ) ) ; String xmlPublicId = props . getProperty ( PROP_WBXML_XML_PUBLIC_IDENTIFIER ) ; String xmlUriRef = props . getProperty ( PROP_WBXML_XML_URI_REFERENCE ) ; String clazz = props . getProperty ( PROP_WBXML_CLASS_ELEMENT ) ; WbXmlDefinition def = new WbXmlDefinition ( name , publicId , xmlPublicId , xmlUriRef , clazz ) ; for ( String key : props . stringPropertyNames ( ) ) { if ( key . startsWith ( PROP_WBXML_TAG_PREFIX ) ) { WbXmlTagDef tag = getTagDefinition ( key , props . getProperty ( key ) ) ; if ( tag != null ) { def . addTag ( tag ) ; } } else if ( key . startsWith ( PROP_WBXML_NAMESPACE_PREFIX ) ) { WbXmlNamespaceDef ns = getNamespaceDefinition ( key , props . getProperty ( key ) ) ; if ( ns != null ) { def . addNamespace ( ns ) ; } } else if ( key . startsWith ( PROP_WBXML_ATTR_PREFIX ) && ! key . endsWith ( PROP_WBXML_VALUE_SUFFIX ) ) { WbXmlAttributeDef attr = getAttrDefinition ( props , key , props . getProperty ( key ) ) ; if ( attr != null ) { def . addAttr ( attr ) ; } } else if ( key . startsWith ( PROP_WBXML_ATTR_VALUE_PREFIX ) && ! key . endsWith ( PROP_WBXML_VALUE_SUFFIX ) ) { WbXmlAttributeValueDef attrVal = getAttrValueDefinition ( props , key , props . getProperty ( key ) ) ; if ( attrVal != null ) { def . addAttrValue ( attrVal ) ; } } else if ( key . startsWith ( PROP_WBXML_EXT_PREFIX ) && ! key . endsWith ( PROP_WBXML_VALUE_SUFFIX ) ) { WbXmlExtensionDef ext = getExtDefinition ( props , key , props . getProperty ( key ) ) ; if ( ext != null ) { def . addExtension ( ext ) ; } } else if ( key . startsWith ( PROP_WBXML_OPAQUE_ATTR_PREFIX ) ) { addOpaqueAttrPlugin ( def , props , key , props . getProperty ( key ) ) ; } else if ( key . startsWith ( PROP_WBXML_OPAQUE_TAG_PREFIX ) ) { addOpaqueTagPlugin ( def , props , key , props . getProperty ( key ) ) ; } else if ( key . startsWith ( PROP_WBXML_LINKED_DEF ) ) { addLinkedDefinition ( def , props . getProperty ( key ) ) ; } } String root = props . getProperty ( PROP_WBXML_ROOT_ELEMENT ) ; def . setRoot ( root ) ; return def ; }
private method that processes a properties file and load a complete definition . only the linked definitions need a post processing loop .
