//# 0 errors, 205 messages
//#
/*
    //#RuntimeConfigDefsParser.java:1:1: class: org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser
    //#RuntimeConfigDefsParser.java:1:1: method: org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser.org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser__static_init
* Licensed to the Apache Software Foundation (ASF) under one or more
*  contributor license agreements.  The ASF licenses this file to You
* under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.  For additional information regarding
* copyright in this work, please see the NOTICE file in the top level
* directory of this distribution.
*/
/*
 * RuntimeConfigDefsParser.java
 *
 * Created on June 4, 2005, 1:57 PM
 */

package org.apache.roller.weblogger.config.runtime;

import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;


/**
 * The parser for the rollerRuntimeConfigDefs.xml file.
 * This class uses jdom to unmarshall the xml into a series of java objects.
 *
 * @author Allen Gilliland
 */
public class RuntimeConfigDefsParser {
    
    /** Creates a new instance of RuntimeConfigDefsParser */
    public RuntimeConfigDefsParser() {}
    //#RuntimeConfigDefsParser.java:45: method: void org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser.org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser()
    //#RuntimeConfigDefsParser.java:45: end of method: void org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser.org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser()
    
    
    /**
     * Unmarshall the given input stream into our defined
     * set of Java objects.
     **/
    public RuntimeConfigDefs unmarshall(InputStream instream) 
        throws IOException, JDOMException {
        
        if(instream == null)
    //#RuntimeConfigDefsParser.java:55: method: RuntimeConfigDefs org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser.unmarshall(InputStream)
    //#input(RuntimeConfigDefs unmarshall(InputStream)): instream
    //#input(RuntimeConfigDefs unmarshall(InputStream)): org/apache/roller/weblogger/config/runtime/ConfigDef.__Descendant_Table[org/apache/roller/weblogger/config/runtime/ConfigDef]
    //#input(RuntimeConfigDefs unmarshall(InputStream)): org/apache/roller/weblogger/config/runtime/ConfigDef.__Dispatch_Table.addDisplayGroup(Lorg/apache/roller/weblogger/config/runtime/DisplayGroup;)Z
    //#input(RuntimeConfigDefs unmarshall(InputStream)): org/apache/roller/weblogger/config/runtime/ConfigDef.__Dispatch_Table.setName(Ljava/lang/String;)V
    //#input(RuntimeConfigDefs unmarshall(InputStream)): org/apache/roller/weblogger/config/runtime/DisplayGroup.__Descendant_Table[org/apache/roller/weblogger/config/runtime/DisplayGroup]
    //#input(RuntimeConfigDefs unmarshall(InputStream)): org/apache/roller/weblogger/config/runtime/DisplayGroup.__Dispatch_Table.addPropertyDef(Lorg/apache/roller/weblogger/config/runtime/PropertyDef;)Z
    //#input(RuntimeConfigDefs unmarshall(InputStream)): org/apache/roller/weblogger/config/runtime/DisplayGroup.__Dispatch_Table.setKey(Ljava/lang/String;)V
    //#input(RuntimeConfigDefs unmarshall(InputStream)): org/apache/roller/weblogger/config/runtime/DisplayGroup.__Dispatch_Table.setName(Ljava/lang/String;)V
    //#input(RuntimeConfigDefs unmarshall(InputStream)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Descendant_Table[org/apache/roller/weblogger/config/runtime/PropertyDef]
    //#input(RuntimeConfigDefs unmarshall(InputStream)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setCols(Ljava/lang/String;)V
    //#input(RuntimeConfigDefs unmarshall(InputStream)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setDefaultValue(Ljava/lang/String;)V
    //#input(RuntimeConfigDefs unmarshall(InputStream)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setKey(Ljava/lang/String;)V
    //#input(RuntimeConfigDefs unmarshall(InputStream)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setName(Ljava/lang/String;)V
    //#input(RuntimeConfigDefs unmarshall(InputStream)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setRows(Ljava/lang/String;)V
    //#input(RuntimeConfigDefs unmarshall(InputStream)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setType(Ljava/lang/String;)V
    //#input(RuntimeConfigDefs unmarshall(InputStream)): org/apache/roller/weblogger/config/runtime/RuntimeConfigDefs.__Descendant_Table[org/apache/roller/weblogger/config/runtime/RuntimeConfigDefs]
    //#input(RuntimeConfigDefs unmarshall(InputStream)): org/apache/roller/weblogger/config/runtime/RuntimeConfigDefs.__Dispatch_Table.addConfigDef(Lorg/apache/roller/weblogger/config/runtime/ConfigDef;)Z
    //#input(RuntimeConfigDefs unmarshall(InputStream)): this
    //#output(RuntimeConfigDefs unmarshall(InputStream)): new ArrayList(RuntimeConfigDefs#1) num objects
    //#output(RuntimeConfigDefs unmarshall(InputStream)): new RuntimeConfigDefs(unmarshall#1) num objects
    //#output(RuntimeConfigDefs unmarshall(InputStream)): return_value.__Tag
    //#output(RuntimeConfigDefs unmarshall(InputStream)): return_value.configDefs
    //#output(RuntimeConfigDefs unmarshall(InputStream)): return_value
    //#new obj(RuntimeConfigDefs unmarshall(InputStream)): new ArrayList(RuntimeConfigDefs#1)
    //#new obj(RuntimeConfigDefs unmarshall(InputStream)): new RuntimeConfigDefs(unmarshall#1)
    //#pre[1] (RuntimeConfigDefs unmarshall(InputStream)): instream != null
    //#presumption(RuntimeConfigDefs unmarshall(InputStream)): java.util.Iterator:next(...)@67 != null
    //#presumption(RuntimeConfigDefs unmarshall(InputStream)): org.jdom.Document:getRootElement(...)@63 != null
    //#presumption(RuntimeConfigDefs unmarshall(InputStream)): org.jdom.Element:getChildren(...)@64 != null
    //#presumption(RuntimeConfigDefs unmarshall(InputStream)): org.jdom.input.SAXBuilder:build(...)@61 != null
    //#post(RuntimeConfigDefs unmarshall(InputStream)): return_value == &new RuntimeConfigDefs(unmarshall#1)
    //#post(RuntimeConfigDefs unmarshall(InputStream)): new ArrayList(RuntimeConfigDefs#1) num objects == 1
    //#post(RuntimeConfigDefs unmarshall(InputStream)): new RuntimeConfigDefs(unmarshall#1) num objects == 1
    //#post(RuntimeConfigDefs unmarshall(InputStream)): return_value.__Tag == org/apache/roller/weblogger/config/runtime/RuntimeConfigDefs
    //#post(RuntimeConfigDefs unmarshall(InputStream)): return_value.configDefs == &new ArrayList(RuntimeConfigDefs#1)
    //#unanalyzed(RuntimeConfigDefs unmarshall(InputStream)): Effects-of-calling:org.jdom.Element:getAttributeValue
    //#unanalyzed(RuntimeConfigDefs unmarshall(InputStream)): Effects-of-calling:org.jdom.Element:getChildText
    //#unanalyzed(RuntimeConfigDefs unmarshall(InputStream)): Effects-of-calling:org.jdom.Element:getChild
    //#unanalyzed(RuntimeConfigDefs unmarshall(InputStream)): Effects-of-calling:java.lang.Integer:parseInt
    //#unanalyzed(RuntimeConfigDefs unmarshall(InputStream)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(RuntimeConfigDefs unmarshall(InputStream)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(RuntimeConfigDefs unmarshall(InputStream)): Effects-of-calling:org.jdom.Element:getChildren
    //#unanalyzed(RuntimeConfigDefs unmarshall(InputStream)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(RuntimeConfigDefs unmarshall(InputStream)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(RuntimeConfigDefs unmarshall(InputStream)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(RuntimeConfigDefs unmarshall(InputStream)): Effects-of-calling:java.util.List:add
    //#test_vector(RuntimeConfigDefs unmarshall(InputStream)): java.util.Iterator:hasNext(...)@66: {0}, {1}
            throw new IOException("InputStream is null!");
        
        RuntimeConfigDefs configs = new RuntimeConfigDefs();
        
        SAXBuilder builder = new SAXBuilder();
    //#RuntimeConfigDefsParser.java:60: Warning: method not available
    //#    -- call on void org.jdom.input.SAXBuilder()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser
    //#    method: RuntimeConfigDefs unmarshall(InputStream)
    //#    unanalyzed callee: void org.jdom.input.SAXBuilder()
        Document doc = builder.build(instream);
    //#RuntimeConfigDefsParser.java:61: Warning: method not available
    //#    -- call on Document org.jdom.input.SAXBuilder:build(InputStream)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser
    //#    method: RuntimeConfigDefs unmarshall(InputStream)
    //#    unanalyzed callee: Document org.jdom.input.SAXBuilder:build(InputStream)
        
        Element root = doc.getRootElement();
    //#RuntimeConfigDefsParser.java:63: Warning: method not available
    //#    -- call on Element org.jdom.Document:getRootElement()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser
    //#    method: RuntimeConfigDefs unmarshall(InputStream)
    //#    unanalyzed callee: Element org.jdom.Document:getRootElement()
        List configdefs = root.getChildren("config-def");
    //#RuntimeConfigDefsParser.java:64: Warning: method not available
    //#    -- call on List org.jdom.Element:getChildren(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser
    //#    method: RuntimeConfigDefs unmarshall(InputStream)
    //#    unanalyzed callee: List org.jdom.Element:getChildren(String)
        Iterator iter = configdefs.iterator();
        while (iter.hasNext()) {
            Element e = (Element) iter.next();
            configs.addConfigDef(this.elementToConfigDef(e));
        }
        
        return configs;
    //#RuntimeConfigDefsParser.java:71: end of method: RuntimeConfigDefs org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser.unmarshall(InputStream)
    }
    
    
    private ConfigDef elementToConfigDef(Element element) {
        
        ConfigDef configdef = new ConfigDef();
    //#RuntimeConfigDefsParser.java:77: method: ConfigDef org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser.elementToConfigDef(Element)
    //#input(ConfigDef elementToConfigDef(Element)): element
    //#input(ConfigDef elementToConfigDef(Element)): org/apache/roller/weblogger/config/runtime/ConfigDef.__Descendant_Table[org/apache/roller/weblogger/config/runtime/ConfigDef]
    //#input(ConfigDef elementToConfigDef(Element)): org/apache/roller/weblogger/config/runtime/ConfigDef.__Dispatch_Table.addDisplayGroup(Lorg/apache/roller/weblogger/config/runtime/DisplayGroup;)Z
    //#input(ConfigDef elementToConfigDef(Element)): org/apache/roller/weblogger/config/runtime/ConfigDef.__Dispatch_Table.setName(Ljava/lang/String;)V
    //#input(ConfigDef elementToConfigDef(Element)): org/apache/roller/weblogger/config/runtime/DisplayGroup.__Descendant_Table[org/apache/roller/weblogger/config/runtime/DisplayGroup]
    //#input(ConfigDef elementToConfigDef(Element)): org/apache/roller/weblogger/config/runtime/DisplayGroup.__Dispatch_Table.addPropertyDef(Lorg/apache/roller/weblogger/config/runtime/PropertyDef;)Z
    //#input(ConfigDef elementToConfigDef(Element)): org/apache/roller/weblogger/config/runtime/DisplayGroup.__Dispatch_Table.setKey(Ljava/lang/String;)V
    //#input(ConfigDef elementToConfigDef(Element)): org/apache/roller/weblogger/config/runtime/DisplayGroup.__Dispatch_Table.setName(Ljava/lang/String;)V
    //#input(ConfigDef elementToConfigDef(Element)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Descendant_Table[org/apache/roller/weblogger/config/runtime/PropertyDef]
    //#input(ConfigDef elementToConfigDef(Element)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setCols(Ljava/lang/String;)V
    //#input(ConfigDef elementToConfigDef(Element)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setDefaultValue(Ljava/lang/String;)V
    //#input(ConfigDef elementToConfigDef(Element)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setKey(Ljava/lang/String;)V
    //#input(ConfigDef elementToConfigDef(Element)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setName(Ljava/lang/String;)V
    //#input(ConfigDef elementToConfigDef(Element)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setRows(Ljava/lang/String;)V
    //#input(ConfigDef elementToConfigDef(Element)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setType(Ljava/lang/String;)V
    //#input(ConfigDef elementToConfigDef(Element)): this
    //#output(ConfigDef elementToConfigDef(Element)): new ArrayList(ConfigDef#1) num objects
    //#output(ConfigDef elementToConfigDef(Element)): new ConfigDef(elementToConfigDef#1) num objects
    //#output(ConfigDef elementToConfigDef(Element)): return_value.__Tag
    //#output(ConfigDef elementToConfigDef(Element)): return_value.displayGroups
    //#output(ConfigDef elementToConfigDef(Element)): return_value.name
    //#output(ConfigDef elementToConfigDef(Element)): return_value
    //#new obj(ConfigDef elementToConfigDef(Element)): new ArrayList(ConfigDef#1)
    //#new obj(ConfigDef elementToConfigDef(Element)): new ConfigDef(elementToConfigDef#1)
    //#pre[1] (ConfigDef elementToConfigDef(Element)): element != null
    //#presumption(ConfigDef elementToConfigDef(Element)): java.util.Iterator:next(...)@85 != null
    //#presumption(ConfigDef elementToConfigDef(Element)): org.jdom.Element:getChildren(...)@81 != null
    //#post(ConfigDef elementToConfigDef(Element)): return_value == &new ConfigDef(elementToConfigDef#1)
    //#post(ConfigDef elementToConfigDef(Element)): new ArrayList(ConfigDef#1) num objects == 1
    //#post(ConfigDef elementToConfigDef(Element)): new ConfigDef(elementToConfigDef#1) num objects == 1
    //#post(ConfigDef elementToConfigDef(Element)): return_value.__Tag == org/apache/roller/weblogger/config/runtime/ConfigDef
    //#post(ConfigDef elementToConfigDef(Element)): return_value.displayGroups == &new ArrayList(ConfigDef#1)
    //#post(ConfigDef elementToConfigDef(Element)): init'ed(return_value.name)
    //#unanalyzed(ConfigDef elementToConfigDef(Element)): Effects-of-calling:org.jdom.Element:getAttributeValue
    //#unanalyzed(ConfigDef elementToConfigDef(Element)): Effects-of-calling:org.jdom.Element:getChildText
    //#unanalyzed(ConfigDef elementToConfigDef(Element)): Effects-of-calling:org.jdom.Element:getChild
    //#unanalyzed(ConfigDef elementToConfigDef(Element)): Effects-of-calling:java.lang.Integer:parseInt
    //#unanalyzed(ConfigDef elementToConfigDef(Element)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(ConfigDef elementToConfigDef(Element)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(ConfigDef elementToConfigDef(Element)): Effects-of-calling:org.jdom.Element:getChildren
    //#unanalyzed(ConfigDef elementToConfigDef(Element)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(ConfigDef elementToConfigDef(Element)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(ConfigDef elementToConfigDef(Element)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(ConfigDef elementToConfigDef(Element)): Effects-of-calling:java.util.List:add
    //#test_vector(ConfigDef elementToConfigDef(Element)): java.util.Iterator:hasNext(...)@83: {0}, {1}
        
        configdef.setName(element.getAttributeValue("name"));
    //#RuntimeConfigDefsParser.java:79: Warning: method not available
    //#    -- call on String org.jdom.Element:getAttributeValue(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser
    //#    method: ConfigDef elementToConfigDef(Element)
    //#    unanalyzed callee: String org.jdom.Element:getAttributeValue(String)
        
        List displaygroups = element.getChildren("display-group");
    //#RuntimeConfigDefsParser.java:81: Warning: method not available
    //#    -- call on List org.jdom.Element:getChildren(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser
    //#    method: ConfigDef elementToConfigDef(Element)
    //#    unanalyzed callee: List org.jdom.Element:getChildren(String)
        Iterator iter = displaygroups.iterator();
        while (iter.hasNext())
        {
            Element e = (Element) iter.next();
            configdef.addDisplayGroup(this.elementToDisplayGroup(e));
        }
        
        return configdef;
    //#RuntimeConfigDefsParser.java:89: end of method: ConfigDef org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser.elementToConfigDef(Element)
    }
    
    
    private DisplayGroup elementToDisplayGroup(Element element) {
        
        DisplayGroup displaygroup = new DisplayGroup();
    //#RuntimeConfigDefsParser.java:95: method: DisplayGroup org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser.elementToDisplayGroup(Element)
    //#input(DisplayGroup elementToDisplayGroup(Element)): element
    //#input(DisplayGroup elementToDisplayGroup(Element)): org/apache/roller/weblogger/config/runtime/DisplayGroup.__Descendant_Table[org/apache/roller/weblogger/config/runtime/DisplayGroup]
    //#input(DisplayGroup elementToDisplayGroup(Element)): org/apache/roller/weblogger/config/runtime/DisplayGroup.__Dispatch_Table.addPropertyDef(Lorg/apache/roller/weblogger/config/runtime/PropertyDef;)Z
    //#input(DisplayGroup elementToDisplayGroup(Element)): org/apache/roller/weblogger/config/runtime/DisplayGroup.__Dispatch_Table.setKey(Ljava/lang/String;)V
    //#input(DisplayGroup elementToDisplayGroup(Element)): org/apache/roller/weblogger/config/runtime/DisplayGroup.__Dispatch_Table.setName(Ljava/lang/String;)V
    //#input(DisplayGroup elementToDisplayGroup(Element)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Descendant_Table[org/apache/roller/weblogger/config/runtime/PropertyDef]
    //#input(DisplayGroup elementToDisplayGroup(Element)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setCols(Ljava/lang/String;)V
    //#input(DisplayGroup elementToDisplayGroup(Element)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setDefaultValue(Ljava/lang/String;)V
    //#input(DisplayGroup elementToDisplayGroup(Element)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setKey(Ljava/lang/String;)V
    //#input(DisplayGroup elementToDisplayGroup(Element)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setName(Ljava/lang/String;)V
    //#input(DisplayGroup elementToDisplayGroup(Element)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setRows(Ljava/lang/String;)V
    //#input(DisplayGroup elementToDisplayGroup(Element)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setType(Ljava/lang/String;)V
    //#input(DisplayGroup elementToDisplayGroup(Element)): this
    //#output(DisplayGroup elementToDisplayGroup(Element)): new ArrayList(DisplayGroup#1) num objects
    //#output(DisplayGroup elementToDisplayGroup(Element)): new DisplayGroup(elementToDisplayGroup#1) num objects
    //#output(DisplayGroup elementToDisplayGroup(Element)): return_value.__Tag
    //#output(DisplayGroup elementToDisplayGroup(Element)): return_value.key
    //#output(DisplayGroup elementToDisplayGroup(Element)): return_value.name
    //#output(DisplayGroup elementToDisplayGroup(Element)): return_value.propertyDefs
    //#output(DisplayGroup elementToDisplayGroup(Element)): return_value
    //#new obj(DisplayGroup elementToDisplayGroup(Element)): new ArrayList(DisplayGroup#1)
    //#new obj(DisplayGroup elementToDisplayGroup(Element)): new DisplayGroup(elementToDisplayGroup#1)
    //#pre[1] (DisplayGroup elementToDisplayGroup(Element)): element != null
    //#presumption(DisplayGroup elementToDisplayGroup(Element)): java.util.Iterator:next(...)@104 != null
    //#presumption(DisplayGroup elementToDisplayGroup(Element)): org.jdom.Element:getChildren(...)@100 != null
    //#post(DisplayGroup elementToDisplayGroup(Element)): return_value == &new DisplayGroup(elementToDisplayGroup#1)
    //#post(DisplayGroup elementToDisplayGroup(Element)): new ArrayList(DisplayGroup#1) num objects == 1
    //#post(DisplayGroup elementToDisplayGroup(Element)): new DisplayGroup(elementToDisplayGroup#1) num objects == 1
    //#post(DisplayGroup elementToDisplayGroup(Element)): return_value.__Tag == org/apache/roller/weblogger/config/runtime/DisplayGroup
    //#post(DisplayGroup elementToDisplayGroup(Element)): init'ed(return_value.key)
    //#post(DisplayGroup elementToDisplayGroup(Element)): init'ed(return_value.name)
    //#post(DisplayGroup elementToDisplayGroup(Element)): return_value.propertyDefs == &new ArrayList(DisplayGroup#1)
    //#unanalyzed(DisplayGroup elementToDisplayGroup(Element)): Effects-of-calling:org.jdom.Element:getAttributeValue
    //#unanalyzed(DisplayGroup elementToDisplayGroup(Element)): Effects-of-calling:org.jdom.Element:getChildText
    //#unanalyzed(DisplayGroup elementToDisplayGroup(Element)): Effects-of-calling:org.jdom.Element:getChild
    //#unanalyzed(DisplayGroup elementToDisplayGroup(Element)): Effects-of-calling:java.lang.Integer:parseInt
    //#unanalyzed(DisplayGroup elementToDisplayGroup(Element)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(DisplayGroup elementToDisplayGroup(Element)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(DisplayGroup elementToDisplayGroup(Element)): Effects-of-calling:java.util.List:add
    //#test_vector(DisplayGroup elementToDisplayGroup(Element)): java.util.Iterator:hasNext(...)@102: {0}, {1}
        
        displaygroup.setName(element.getAttributeValue("name"));
    //#RuntimeConfigDefsParser.java:97: Warning: method not available
    //#    -- call on String org.jdom.Element:getAttributeValue(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser
    //#    method: DisplayGroup elementToDisplayGroup(Element)
    //#    unanalyzed callee: String org.jdom.Element:getAttributeValue(String)
        displaygroup.setKey(element.getAttributeValue("key"));
    //#RuntimeConfigDefsParser.java:98: Warning: method not available
    //#    -- call on String org.jdom.Element:getAttributeValue(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser
    //#    method: DisplayGroup elementToDisplayGroup(Element)
    //#    unanalyzed callee: String org.jdom.Element:getAttributeValue(String)
        
        List displaygroups = element.getChildren("property-def");
    //#RuntimeConfigDefsParser.java:100: Warning: method not available
    //#    -- call on List org.jdom.Element:getChildren(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser
    //#    method: DisplayGroup elementToDisplayGroup(Element)
    //#    unanalyzed callee: List org.jdom.Element:getChildren(String)
        Iterator iter = displaygroups.iterator();
        while (iter.hasNext())
        {
            Element e = (Element) iter.next();
            displaygroup.addPropertyDef(this.elementToPropertyDef(e));
        }
        
        return displaygroup;
    //#RuntimeConfigDefsParser.java:108: end of method: DisplayGroup org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser.elementToDisplayGroup(Element)
    }
    
    
    private PropertyDef elementToPropertyDef(Element element) {
        
        PropertyDef prop = new PropertyDef();
    //#RuntimeConfigDefsParser.java:114: method: PropertyDef org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser.elementToPropertyDef(Element)
    //#input(PropertyDef elementToPropertyDef(Element)): element
    //#input(PropertyDef elementToPropertyDef(Element)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Descendant_Table[org/apache/roller/weblogger/config/runtime/PropertyDef]
    //#input(PropertyDef elementToPropertyDef(Element)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setCols(Ljava/lang/String;)V
    //#input(PropertyDef elementToPropertyDef(Element)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setDefaultValue(Ljava/lang/String;)V
    //#input(PropertyDef elementToPropertyDef(Element)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setKey(Ljava/lang/String;)V
    //#input(PropertyDef elementToPropertyDef(Element)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setName(Ljava/lang/String;)V
    //#input(PropertyDef elementToPropertyDef(Element)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setRows(Ljava/lang/String;)V
    //#input(PropertyDef elementToPropertyDef(Element)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setType(Ljava/lang/String;)V
    //#output(PropertyDef elementToPropertyDef(Element)): new PropertyDef(elementToPropertyDef#1) num objects
    //#output(PropertyDef elementToPropertyDef(Element)): return_value.__Tag
    //#output(PropertyDef elementToPropertyDef(Element)): return_value.cols
    //#output(PropertyDef elementToPropertyDef(Element)): return_value.defaultValue
    //#output(PropertyDef elementToPropertyDef(Element)): return_value.key
    //#output(PropertyDef elementToPropertyDef(Element)): return_value.name
    //#output(PropertyDef elementToPropertyDef(Element)): return_value.rows
    //#output(PropertyDef elementToPropertyDef(Element)): return_value.type
    //#output(PropertyDef elementToPropertyDef(Element)): return_value
    //#new obj(PropertyDef elementToPropertyDef(Element)): new PropertyDef(elementToPropertyDef#1)
    //#pre[1] (PropertyDef elementToPropertyDef(Element)): element != null
    //#post(PropertyDef elementToPropertyDef(Element)): return_value == &new PropertyDef(elementToPropertyDef#1)
    //#post(PropertyDef elementToPropertyDef(Element)): new PropertyDef(elementToPropertyDef#1) num objects == 1
    //#post(PropertyDef elementToPropertyDef(Element)): return_value.__Tag == org/apache/roller/weblogger/config/runtime/PropertyDef
    //#post(PropertyDef elementToPropertyDef(Element)): init'ed(return_value.cols)
    //#post(PropertyDef elementToPropertyDef(Element)): init'ed(return_value.defaultValue)
    //#post(PropertyDef elementToPropertyDef(Element)): init'ed(return_value.key)
    //#post(PropertyDef elementToPropertyDef(Element)): init'ed(return_value.name)
    //#post(PropertyDef elementToPropertyDef(Element)): init'ed(return_value.rows)
    //#post(PropertyDef elementToPropertyDef(Element)): init'ed(return_value.type)
    //#unanalyzed(PropertyDef elementToPropertyDef(Element)): Effects-of-calling:java.lang.Integer:parseInt
    //#unanalyzed(PropertyDef elementToPropertyDef(Element)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#test_vector(PropertyDef elementToPropertyDef(Element)): org.jdom.Element:getChild(...)@122: Addr_Set{null}, Inverse{null}
    //#test_vector(PropertyDef elementToPropertyDef(Element)): org.jdom.Element:getChild(...)@125: Addr_Set{null}, Inverse{null}
        
        prop.setName(element.getAttributeValue("name"));
    //#RuntimeConfigDefsParser.java:116: Warning: method not available
    //#    -- call on String org.jdom.Element:getAttributeValue(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser
    //#    method: PropertyDef elementToPropertyDef(Element)
    //#    unanalyzed callee: String org.jdom.Element:getAttributeValue(String)
        prop.setKey(element.getAttributeValue("key"));
    //#RuntimeConfigDefsParser.java:117: Warning: method not available
    //#    -- call on String org.jdom.Element:getAttributeValue(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser
    //#    method: PropertyDef elementToPropertyDef(Element)
    //#    unanalyzed callee: String org.jdom.Element:getAttributeValue(String)
        prop.setType(element.getChildText("type"));
    //#RuntimeConfigDefsParser.java:118: Warning: method not available
    //#    -- call on String org.jdom.Element:getChildText(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser
    //#    method: PropertyDef elementToPropertyDef(Element)
    //#    unanalyzed callee: String org.jdom.Element:getChildText(String)
        prop.setDefaultValue(element.getChildText("default-value"));
    //#RuntimeConfigDefsParser.java:119: Warning: method not available
    //#    -- call on String org.jdom.Element:getChildText(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser
    //#    method: PropertyDef elementToPropertyDef(Element)
    //#    unanalyzed callee: String org.jdom.Element:getChildText(String)
        
        // optional elements
        if(element.getChild("rows") != null)
    //#RuntimeConfigDefsParser.java:122: Warning: method not available
    //#    -- call on Element org.jdom.Element:getChild(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser
    //#    method: PropertyDef elementToPropertyDef(Element)
    //#    unanalyzed callee: Element org.jdom.Element:getChild(String)
            prop.setRows(element.getChildText("rows"));
    //#RuntimeConfigDefsParser.java:123: Warning: method not available
    //#    -- call on String org.jdom.Element:getChildText(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser
    //#    method: PropertyDef elementToPropertyDef(Element)
    //#    unanalyzed callee: String org.jdom.Element:getChildText(String)
        
        if(element.getChild("cols") != null)
    //#RuntimeConfigDefsParser.java:125: Warning: method not available
    //#    -- call on Element org.jdom.Element:getChild(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser
    //#    method: PropertyDef elementToPropertyDef(Element)
    //#    unanalyzed callee: Element org.jdom.Element:getChild(String)
            prop.setCols(element.getChildText("cols"));
    //#RuntimeConfigDefsParser.java:126: Warning: method not available
    //#    -- call on String org.jdom.Element:getChildText(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser
    //#    method: PropertyDef elementToPropertyDef(Element)
    //#    unanalyzed callee: String org.jdom.Element:getChildText(String)
        
        return prop;
    //#RuntimeConfigDefsParser.java:128: end of method: PropertyDef org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser.elementToPropertyDef(Element)
    }
    
}
    //#output(org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser__static_init): __Descendant_Table[org/apache/roller/weblogger/config/runtime/RuntimeConfigDefsParser]
    //#output(org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser__static_init): __Dispatch_Table.elementToConfigDef(Lorg/jdom/Element;)Lorg/apache/roller/weblogger/config/runtime/ConfigDef;
    //#output(org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser__static_init): __Dispatch_Table.elementToDisplayGroup(Lorg/jdom/Element;)Lorg/apache/roller/weblogger/config/runtime/DisplayGroup;
    //#output(org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser__static_init): __Dispatch_Table.elementToPropertyDef(Lorg/jdom/Element;)Lorg/apache/roller/weblogger/config/runtime/PropertyDef;
    //#output(org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser__static_init): __Dispatch_Table.unmarshall(Ljava/io/InputStream;)Lorg/apache/roller/weblogger/config/runtime/RuntimeConfigDefs;
    //#post(org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser__static_init): __Descendant_Table[org/apache/roller/weblogger/config/runtime/RuntimeConfigDefsParser] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser__static_init): __Dispatch_Table.elementToConfigDef(Lorg/jdom/Element;)Lorg/apache/roller/weblogger/config/runtime/ConfigDef; == &elementToConfigDef
    //#post(org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser__static_init): __Dispatch_Table.elementToDisplayGroup(Lorg/jdom/Element;)Lorg/apache/roller/weblogger/config/runtime/DisplayGroup; == &elementToDisplayGroup
    //#post(org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser__static_init): __Dispatch_Table.elementToPropertyDef(Lorg/jdom/Element;)Lorg/apache/roller/weblogger/config/runtime/PropertyDef; == &elementToPropertyDef
    //#post(org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser__static_init): __Dispatch_Table.unmarshall(Ljava/io/InputStream;)Lorg/apache/roller/weblogger/config/runtime/RuntimeConfigDefs; == &unmarshall
    //#RuntimeConfigDefsParser.java:: end of method: org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser.org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser__static_init
    //#RuntimeConfigDefsParser.java:: end of class: org.apache.roller.weblogger.config.runtime.RuntimeConfigDefsParser
