//# 2 errors, 363 messages
//#

    //#JPAPropertiesManagerImpl.java:1:1: class: org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl
/*
 * 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.
 */
package org.apache.roller.weblogger.business.jpa;

import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import org.apache.roller.weblogger.WebloggerException;
import org.apache.roller.weblogger.business.InitializationException;

import org.apache.roller.weblogger.business.PropertiesManager;
import org.apache.roller.weblogger.config.WebloggerRuntimeConfig;
import org.apache.roller.weblogger.config.runtime.ConfigDef;
import org.apache.roller.weblogger.config.runtime.DisplayGroup;
import org.apache.roller.weblogger.config.runtime.PropertyDef;
import org.apache.roller.weblogger.config.runtime.RuntimeConfigDefs;
import org.apache.roller.weblogger.pojos.RuntimeConfigProperty;
import org.apache.roller.weblogger.business.Weblogger;


/*
 * JPAPropertiesManagerImpl.java
 *
 * Created on May 29, 2006, 2:06 PM
 *
 */
@com.google.inject.Singleton
public class JPAPropertiesManagerImpl implements PropertiesManager {
    
    /** The logger instance for this class. */
    private static Log log = LogFactory.getLog(
    //#JPAPropertiesManagerImpl.java:52: method: org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl.org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl__static_init
    //#JPAPropertiesManagerImpl.java:52: Warning: method not available
    //#    -- call on Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl
    //#    method: org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl__static_init
    //#    unanalyzed callee: Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#output(org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl__static_init): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl]
    //#output(org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl__static_init): __Dispatch_Table.getProperties()Ljava/util/Map;
    //#output(org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl__static_init): __Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#output(org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl__static_init): __Dispatch_Table.initialize()V
    //#output(org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl__static_init): __Dispatch_Table.initializeMissingProps(Ljava/util/Map;)Ljava/util/Map;
    //#output(org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl__static_init): __Dispatch_Table.release()V
    //#output(org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl__static_init): __Dispatch_Table.saveProperties(Ljava/util/Map;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl__static_init): __Dispatch_Table.saveProperty(Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl__static_init): log
    //#output(org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl__static_init): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl]
    //#post(org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl__static_init): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl__static_init): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl__static_init): __Dispatch_Table.getProperties()Ljava/util/Map; == &getProperties
    //#post(org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl__static_init): __Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty; == &getProperty
    //#post(org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl__static_init): __Dispatch_Table.initialize()V == &initialize
    //#post(org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl__static_init): __Dispatch_Table.initializeMissingProps(Ljava/util/Map;)Ljava/util/Map; == &initializeMissingProps
    //#post(org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl__static_init): __Dispatch_Table.release()V == &release
    //#post(org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl__static_init): __Dispatch_Table.saveProperties(Ljava/util/Map;)V == &saveProperties
    //#post(org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl__static_init): __Dispatch_Table.saveProperty(Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;)V == &saveProperty
    //#post(org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl__static_init): init'ed(log)
    //#JPAPropertiesManagerImpl.java:52: end of method: org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl.org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl__static_init
        JPAPropertiesManagerImpl.class);

    private final Weblogger roller;
    private final JPAPersistenceStrategy strategy;
    
    
    /**
     * Creates a new instance of JPAPropertiesManagerImpl
     */
    @com.google.inject.Inject
    protected JPAPropertiesManagerImpl(Weblogger roller, JPAPersistenceStrategy strategy) {
    //#JPAPropertiesManagerImpl.java:63: method: void org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl.org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl(Weblogger, JPAPersistenceStrategy)
    //#input(void org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl(Weblogger, JPAPersistenceStrategy)): log
    //#input(void org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl(Weblogger, JPAPersistenceStrategy)): roller
    //#input(void org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl(Weblogger, JPAPersistenceStrategy)): strategy
    //#input(void org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl(Weblogger, JPAPersistenceStrategy)): this
    //#output(void org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl(Weblogger, JPAPersistenceStrategy)): this.roller
    //#output(void org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl(Weblogger, JPAPersistenceStrategy)): this.strategy
    //#pre[1] (void org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl(Weblogger, JPAPersistenceStrategy)): log != null
    //#post(void org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl(Weblogger, JPAPersistenceStrategy)): this.roller == roller
    //#post(void org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl(Weblogger, JPAPersistenceStrategy)): init'ed(this.roller)
    //#post(void org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl(Weblogger, JPAPersistenceStrategy)): this.strategy == strategy
    //#post(void org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl(Weblogger, JPAPersistenceStrategy)): init'ed(this.strategy)
        log.debug("Instantiating JPA Properties Manager");
    //#JPAPropertiesManagerImpl.java:64: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl
    //#    method: void org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl(Weblogger, JPAPersistenceStrategy)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        this.roller = roller;
        this.strategy = strategy;
    }
    //#JPAPropertiesManagerImpl.java:67: end of method: void org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl.org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl(Weblogger, JPAPersistenceStrategy)
    
    
    /**
     * @inheritDoc
     */
    public void initialize() throws InitializationException {
        
        Map props = null;
    //#JPAPropertiesManagerImpl.java:75: method: void org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl.initialize()
    //#JPAPropertiesManagerImpl.java:75: Warning: unused assignment
    //#    unused assignment into props
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl
    //#    method: void initialize()
    //#    Attribs:  Uncertain
    //#input(void initialize()): " ... setting value to ["._tainted
    //#input(void initialize()): "Found uninitialized property "._tainted
    //#input(void initialize()): "]"._tainted
    //#input(void initialize()): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl]
    //#input(void initialize()): __Descendant_Table[others]
    //#input(void initialize()): __Dispatch_Table.getProperties()Ljava/util/Map;
    //#input(void initialize()): __Dispatch_Table.saveProperties(Ljava/util/Map;)V
    //#input(void initialize()): log
    //#input(void initialize()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void initialize()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void initialize()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void initialize()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void initialize()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(void initialize()): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.configDefs
    //#input(void initialize()): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.configDefs.__Tag
    //#input(void initialize()): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log
    //#input(void initialize()): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.runtime_config
    //#input(void initialize()): org/apache/roller/weblogger/config/runtime/ConfigDef.__Descendant_Table[org/apache/roller/weblogger/config/runtime/ConfigDef]
    //#input(void initialize()): org/apache/roller/weblogger/config/runtime/ConfigDef.__Descendant_Table[others]
    //#input(void initialize()): org/apache/roller/weblogger/config/runtime/ConfigDef.__Dispatch_Table.addDisplayGroup(Lorg/apache/roller/weblogger/config/runtime/DisplayGroup;)Z
    //#input(void initialize()): org/apache/roller/weblogger/config/runtime/ConfigDef.__Dispatch_Table.getDisplayGroups()Ljava/util/List;
    //#input(void initialize()): org/apache/roller/weblogger/config/runtime/ConfigDef.__Dispatch_Table.setName(Ljava/lang/String;)V
    //#input(void initialize()): org/apache/roller/weblogger/config/runtime/DisplayGroup.__Descendant_Table[org/apache/roller/weblogger/config/runtime/DisplayGroup]
    //#input(void initialize()): org/apache/roller/weblogger/config/runtime/DisplayGroup.__Descendant_Table[others]
    //#input(void initialize()): org/apache/roller/weblogger/config/runtime/DisplayGroup.__Dispatch_Table.addPropertyDef(Lorg/apache/roller/weblogger/config/runtime/PropertyDef;)Z
    //#input(void initialize()): org/apache/roller/weblogger/config/runtime/DisplayGroup.__Dispatch_Table.getPropertyDefs()Ljava/util/List;
    //#input(void initialize()): org/apache/roller/weblogger/config/runtime/DisplayGroup.__Dispatch_Table.setKey(Ljava/lang/String;)V
    //#input(void initialize()): org/apache/roller/weblogger/config/runtime/DisplayGroup.__Dispatch_Table.setName(Ljava/lang/String;)V
    //#input(void initialize()): org/apache/roller/weblogger/config/runtime/PropertyDef.__Descendant_Table[org/apache/roller/weblogger/config/runtime/PropertyDef]
    //#input(void initialize()): org/apache/roller/weblogger/config/runtime/PropertyDef.__Descendant_Table[others]
    //#input(void initialize()): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.getDefaultValue()Ljava/lang/String;
    //#input(void initialize()): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void initialize()): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setCols(Ljava/lang/String;)V
    //#input(void initialize()): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setDefaultValue(Ljava/lang/String;)V
    //#input(void initialize()): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setKey(Ljava/lang/String;)V
    //#input(void initialize()): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setName(Ljava/lang/String;)V
    //#input(void initialize()): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setRows(Ljava/lang/String;)V
    //#input(void initialize()): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setType(Ljava/lang/String;)V
    //#input(void initialize()): org/apache/roller/weblogger/config/runtime/RuntimeConfigDefs.__Descendant_Table[org/apache/roller/weblogger/config/runtime/RuntimeConfigDefs]
    //#input(void initialize()): org/apache/roller/weblogger/config/runtime/RuntimeConfigDefs.__Descendant_Table[others]
    //#input(void initialize()): org/apache/roller/weblogger/config/runtime/RuntimeConfigDefs.__Dispatch_Table.addConfigDef(Lorg/apache/roller/weblogger/config/runtime/ConfigDef;)Z
    //#input(void initialize()): org/apache/roller/weblogger/config/runtime/RuntimeConfigDefs.__Dispatch_Table.getConfigDefs()Ljava/util/List;
    //#input(void initialize()): org/apache/roller/weblogger/config/runtime/RuntimeConfigDefsParser.__Descendant_Table[org/apache/roller/weblogger/config/runtime/RuntimeConfigDefsParser]
    //#input(void initialize()): org/apache/roller/weblogger/config/runtime/RuntimeConfigDefsParser.__Dispatch_Table.unmarshall(Ljava/io/InputStream;)Lorg/apache/roller/weblogger/config/runtime/RuntimeConfigDefs;
    //#input(void initialize()): this
    //#input(void initialize()): this.__Tag
    //#input(void initialize()): this.strategy
    //#input(void initialize()): this.strategy.__Tag
    //#input(void initialize()): this.strategy.emf
    //#input(void initialize()): this.strategy.threadLocalEntityManager
    //#output(void initialize()): new ArrayList(RuntimeConfigDefs#1) num objects
    //#output(void initialize()): new RuntimeConfigDefs(unmarshall#1) num objects
    //#output(void initialize()): new RuntimeConfigDefs(unmarshall#1).__Tag
    //#output(void initialize()): new RuntimeConfigDefs(unmarshall#1).configDefs
    //#output(void initialize()): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.configDefs
    //#new obj(void initialize()): new ArrayList(RuntimeConfigDefs#1)
    //#new obj(void initialize()): new RuntimeConfigDefs(unmarshall#1)
    //#pre[2] (void initialize()): init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.configDefs)
    //#pre[8] (void initialize()): this.__Tag == org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl
    //#pre[9] (void initialize()): this.strategy != null
    //#pre[10] (void initialize()): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[12] (void initialize()): this.strategy.threadLocalEntityManager != null
    //#pre[1] (void initialize()): (soft) log != null
    //#pre[5] (void initialize()): (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
    //#pre[6] (void initialize()): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.runtime_config)
    //#pre[11] (void initialize()): (soft) this.strategy.emf != null
    //#post(void initialize()): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.configDefs == One-of{old org/apache/roller/weblogger/config/WebloggerRuntimeConfig.configDefs, &new RuntimeConfigDefs(unmarshall#1)}
    //#post(void initialize()): init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.configDefs)
    //#post(void initialize()): new ArrayList(RuntimeConfigDefs#1) num objects <= 1
    //#post(void initialize()): new RuntimeConfigDefs(unmarshall#1) num objects <= 1
    //#post(void initialize()): init'ed(new RuntimeConfigDefs(unmarshall#1).__Tag)
    //#post(void initialize()): init'ed(new RuntimeConfigDefs(unmarshall#1).configDefs)
    //#unanalyzed(void initialize()): Effects-of-calling:java.util.HashMap
    //#unanalyzed(void initialize()): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void initialize()): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void initialize()): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void initialize()): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void initialize()): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void initialize()): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void initialize()): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(void initialize()): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(void initialize()): Effects-of-calling:javax.persistence.Query:getResultList
    //#unanalyzed(void initialize()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void initialize()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void initialize()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void initialize()): Effects-of-calling:org.apache.roller.weblogger.pojos.RuntimeConfigProperty:getName
    //#unanalyzed(void initialize()): Effects-of-calling:java.util.HashMap:put
    //#unanalyzed(void initialize()): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void initialize()): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(void initialize()): Effects-of-calling:java.util.Map:values
    //#unanalyzed(void initialize()): Effects-of-calling:java.util.Collection:iterator
    //#unanalyzed(void initialize()): Effects-of-calling:getRuntimeConfigDefs
    //#unanalyzed(void initialize()): Effects-of-calling:java.util.Map:containsKey
    //#unanalyzed(void initialize()): Effects-of-calling:org.apache.roller.weblogger.pojos.RuntimeConfigProperty
    //#unanalyzed(void initialize()): Effects-of-calling:java.util.Map:put
    //#unanalyzed(void initialize()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void initialize()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void initialize()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void initialize()): Effects-of-calling:org.apache.commons.logging.Log:info
    //#unanalyzed(void initialize()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void initialize()): Effects-of-calling:java.lang.Class:getResourceAsStream
    //#unanalyzed(void initialize()): Effects-of-calling:org.jdom.Element:getAttributeValue
    //#unanalyzed(void initialize()): Effects-of-calling:org.jdom.Element:getChildText
    //#unanalyzed(void initialize()): Effects-of-calling:org.jdom.Element:getChild
    //#unanalyzed(void initialize()): Effects-of-calling:java.lang.Integer:parseInt
    //#unanalyzed(void initialize()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void initialize()): Effects-of-calling:org.jdom.Element:getChildren
    //#unanalyzed(void initialize()): Effects-of-calling:java.util.List:add
    //#unanalyzed(void initialize()): Effects-of-calling:org.jdom.input.SAXBuilder
    //#unanalyzed(void initialize()): Effects-of-calling:org.jdom.input.SAXBuilder:build
    //#unanalyzed(void initialize()): Effects-of-calling:org.jdom.Document:getRootElement
    //#unanalyzed(void initialize()): Effects-of-calling:org.apache.commons.logging.Log:error
    //#test_vector(void initialize()): java.util.Map:size(...)@79: {1..4_294_967_295}, {-2_147_483_648..0}
        try {
            props = this.getProperties();

            if(props.size() < 1) {
                // empty props table ... load defaults
                props = initializeMissingProps(props);
            } else {
                // found existing props ... check for new props
                props = initializeMissingProps(props);
            }

            // save our changes
            this.saveProperties(props);
        } catch (Exception e) {
            log.fatal("Failed to initialize runtime configuration properties."+
                    "Please check that the database has been upgraded!", e);
            throw new RuntimeException(e);
        }
        
    }
    //#JPAPropertiesManagerImpl.java:95: end of method: void org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl.initialize()
    
    
    /**
     * Retrieve a single property by name.
     */
    public RuntimeConfigProperty getProperty(String name) throws WebloggerException {
        return (RuntimeConfigProperty) strategy
    //#JPAPropertiesManagerImpl.java:102: method: RuntimeConfigProperty org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl.getProperty(String)
    //#input(RuntimeConfigProperty getProperty(String)): name
    //#input(RuntimeConfigProperty getProperty(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(RuntimeConfigProperty getProperty(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(RuntimeConfigProperty getProperty(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(RuntimeConfigProperty getProperty(String)): this
    //#input(RuntimeConfigProperty getProperty(String)): this.strategy
    //#input(RuntimeConfigProperty getProperty(String)): this.strategy.__Tag
    //#input(RuntimeConfigProperty getProperty(String)): this.strategy.emf
    //#input(RuntimeConfigProperty getProperty(String)): this.strategy.threadLocalEntityManager
    //#output(RuntimeConfigProperty getProperty(String)): return_value
    //#pre[3] (RuntimeConfigProperty getProperty(String)): this.strategy != null
    //#pre[4] (RuntimeConfigProperty getProperty(String)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (RuntimeConfigProperty getProperty(String)): this.strategy.threadLocalEntityManager != null
    //#pre[5] (RuntimeConfigProperty getProperty(String)): (soft) this.strategy.emf != null
    //#post(RuntimeConfigProperty getProperty(String)): init'ed(return_value)
    //#unanalyzed(RuntimeConfigProperty getProperty(String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(RuntimeConfigProperty getProperty(String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(RuntimeConfigProperty getProperty(String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(RuntimeConfigProperty getProperty(String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(RuntimeConfigProperty getProperty(String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(RuntimeConfigProperty getProperty(String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(RuntimeConfigProperty getProperty(String)): Effects-of-calling:javax.persistence.EntityManager:find
    //#JPAPropertiesManagerImpl.java:102: end of method: RuntimeConfigProperty org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl.getProperty(String)
            .load(RuntimeConfigProperty.class,name);
    }


    /**
     * Retrieve all properties.
     * 
     * Properties are returned in a Map to make them easy to lookup.  The Map
     * uses the property name as the key and the RuntimeConfigProperty object
     * as the value.
     */
    public Map getProperties() throws WebloggerException {

        HashMap props = new HashMap();
    //#JPAPropertiesManagerImpl.java:116: method: Map org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl.getProperties()
    //#input(Map getProperties()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(Map getProperties()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(Map getProperties()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(Map getProperties()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(Map getProperties()): this
    //#input(Map getProperties()): this.strategy
    //#input(Map getProperties()): this.strategy.__Tag
    //#input(Map getProperties()): this.strategy.emf
    //#input(Map getProperties()): this.strategy.threadLocalEntityManager
    //#output(Map getProperties()): new HashMap(getProperties#1) num objects
    //#output(Map getProperties()): return_value
    //#new obj(Map getProperties()): new HashMap(getProperties#1)
    //#pre[2] (Map getProperties()): this.strategy != null
    //#pre[3] (Map getProperties()): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (Map getProperties()): this.strategy.threadLocalEntityManager != null
    //#pre[4] (Map getProperties()): (soft) this.strategy.emf != null
    //#presumption(Map getProperties()): java.util.Iterator:next(...)@127 != null
    //#presumption(Map getProperties()): javax.persistence.Query:getResultList(...)@117 != null
    //#post(Map getProperties()): return_value == &new HashMap(getProperties#1)
    //#post(Map getProperties()): new HashMap(getProperties#1) num objects == 1
    //#unanalyzed(Map getProperties()): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(Map getProperties()): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(Map getProperties()): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(Map getProperties()): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(Map getProperties()): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(Map getProperties()): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(Map getProperties()): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(Map getProperties()): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#test_vector(Map getProperties()): java.util.Iterator:hasNext(...)@126: {0}, {1}
        List list = (List) strategy.getNamedQuery("RuntimeConfigProperty.getAll").getResultList();
        /*
         * for convenience sake we are going to put the list of props
         * into a map for users to access it.  The value element of the
         * hash still needs to be the RuntimeConfigProperty object so that
         * we can save the elements again after they have been updated
         */
        RuntimeConfigProperty prop = null;
    //#JPAPropertiesManagerImpl.java:124: Warning: unused assignment
    //#    unused assignment into prop
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl
    //#    method: Map getProperties()
    //#    Attribs:  Uncertain
        Iterator it = list.iterator();
        while(it.hasNext()) {
            prop = (RuntimeConfigProperty) it.next();
            props.put(prop.getName(), prop);
    //#JPAPropertiesManagerImpl.java:128: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.RuntimeConfigProperty:getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl
    //#    method: Map getProperties()
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.RuntimeConfigProperty:getName()
        }

        return props;
    //#JPAPropertiesManagerImpl.java:131: end of method: Map org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl.getProperties()
    }


    /**
     * Save a single property.
     */
    public void saveProperty(RuntimeConfigProperty property) 
            throws WebloggerException {
        this.strategy.store(property);
    //#JPAPropertiesManagerImpl.java:140: method: void org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl.saveProperty(RuntimeConfigProperty)
    //#input(void saveProperty(RuntimeConfigProperty)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void saveProperty(RuntimeConfigProperty)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void saveProperty(RuntimeConfigProperty)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void saveProperty(RuntimeConfigProperty)): property
    //#input(void saveProperty(RuntimeConfigProperty)): this
    //#input(void saveProperty(RuntimeConfigProperty)): this.strategy
    //#input(void saveProperty(RuntimeConfigProperty)): this.strategy.__Tag
    //#input(void saveProperty(RuntimeConfigProperty)): this.strategy.emf
    //#input(void saveProperty(RuntimeConfigProperty)): this.strategy.threadLocalEntityManager
    //#pre[3] (void saveProperty(RuntimeConfigProperty)): this.strategy != null
    //#pre[4] (void saveProperty(RuntimeConfigProperty)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (void saveProperty(RuntimeConfigProperty)): this.strategy.threadLocalEntityManager != null
    //#pre[5] (void saveProperty(RuntimeConfigProperty)): (soft) this.strategy.emf != null
    //#unanalyzed(void saveProperty(RuntimeConfigProperty)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void saveProperty(RuntimeConfigProperty)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void saveProperty(RuntimeConfigProperty)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void saveProperty(RuntimeConfigProperty)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void saveProperty(RuntimeConfigProperty)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void saveProperty(RuntimeConfigProperty)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void saveProperty(RuntimeConfigProperty)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void saveProperty(RuntimeConfigProperty)): Effects-of-calling:javax.persistence.EntityManager:persist
    }
    //#JPAPropertiesManagerImpl.java:141: end of method: void org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl.saveProperty(RuntimeConfigProperty)


    /**
     * Save all properties.
     */
    public void saveProperties(Map properties) throws WebloggerException {

        // just go through the list and saveProperties each property
        Iterator props = properties.values().iterator();
    //#JPAPropertiesManagerImpl.java:150: method: void org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl.saveProperties(Map)
    //#input(void saveProperties(Map)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void saveProperties(Map)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void saveProperties(Map)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void saveProperties(Map)): properties
    //#input(void saveProperties(Map)): this
    //#input(void saveProperties(Map)): this.strategy
    //#input(void saveProperties(Map)): this.strategy.__Tag
    //#input(void saveProperties(Map)): this.strategy.emf
    //#input(void saveProperties(Map)): this.strategy.threadLocalEntityManager
    //#pre[1] (void saveProperties(Map)): properties != null
    //#pre[3] (void saveProperties(Map)): (soft) this.strategy != null
    //#pre[4] (void saveProperties(Map)): (soft) this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (void saveProperties(Map)): (soft) this.strategy.emf != null
    //#pre[6] (void saveProperties(Map)): (soft) this.strategy.threadLocalEntityManager != null
    //#presumption(void saveProperties(Map)): java.util.Map:values(...)@150 != null
    //#unanalyzed(void saveProperties(Map)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void saveProperties(Map)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void saveProperties(Map)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void saveProperties(Map)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void saveProperties(Map)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void saveProperties(Map)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void saveProperties(Map)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void saveProperties(Map)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#test_vector(void saveProperties(Map)): java.util.Iterator:hasNext(...)@151: {0}, {1}
        while (props.hasNext()) {
            this.strategy.store((RuntimeConfigProperty) props.next());
        }
    }
    //#JPAPropertiesManagerImpl.java:154: end of method: void org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl.saveProperties(Map)
    

    /**
     * This method compares the property definitions in the RuntimeConfigDefs
     * file with the properties in the given Map and initializes any properties
     * that were not found in the Map.
     *
     * If the Map of props is empty/null then we will initialize all properties.
     **/
    private Map initializeMissingProps(Map props) {

        if(props == null)
    //#JPAPropertiesManagerImpl.java:166: method: Map org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl.initializeMissingProps(Map)
    //#input(Map initializeMissingProps(Map)): " ... setting value to ["._tainted
    //#input(Map initializeMissingProps(Map)): "Found uninitialized property "._tainted
    //#input(Map initializeMissingProps(Map)): "]"._tainted
    //#input(Map initializeMissingProps(Map)): log
    //#input(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.configDefs
    //#input(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.configDefs.__Tag
    //#input(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.configDefs.configDefs
    //#input(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log
    //#input(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.runtime_config
    //#input(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/runtime/ConfigDef.__Descendant_Table[org/apache/roller/weblogger/config/runtime/ConfigDef]
    //#input(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/runtime/ConfigDef.__Descendant_Table[others]
    //#input(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/runtime/ConfigDef.__Dispatch_Table.addDisplayGroup(Lorg/apache/roller/weblogger/config/runtime/DisplayGroup;)Z
    //#input(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/runtime/ConfigDef.__Dispatch_Table.getDisplayGroups()Ljava/util/List;
    //#input(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/runtime/ConfigDef.__Dispatch_Table.setName(Ljava/lang/String;)V
    //#input(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/runtime/DisplayGroup.__Descendant_Table[org/apache/roller/weblogger/config/runtime/DisplayGroup]
    //#input(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/runtime/DisplayGroup.__Descendant_Table[others]
    //#input(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/runtime/DisplayGroup.__Dispatch_Table.addPropertyDef(Lorg/apache/roller/weblogger/config/runtime/PropertyDef;)Z
    //#input(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/runtime/DisplayGroup.__Dispatch_Table.getPropertyDefs()Ljava/util/List;
    //#input(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/runtime/DisplayGroup.__Dispatch_Table.setKey(Ljava/lang/String;)V
    //#input(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/runtime/DisplayGroup.__Dispatch_Table.setName(Ljava/lang/String;)V
    //#input(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Descendant_Table[org/apache/roller/weblogger/config/runtime/PropertyDef]
    //#input(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Descendant_Table[others]
    //#input(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.getDefaultValue()Ljava/lang/String;
    //#input(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setCols(Ljava/lang/String;)V
    //#input(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setDefaultValue(Ljava/lang/String;)V
    //#input(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setKey(Ljava/lang/String;)V
    //#input(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setName(Ljava/lang/String;)V
    //#input(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setRows(Ljava/lang/String;)V
    //#input(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/runtime/PropertyDef.__Dispatch_Table.setType(Ljava/lang/String;)V
    //#input(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/runtime/RuntimeConfigDefs.__Descendant_Table[org/apache/roller/weblogger/config/runtime/RuntimeConfigDefs]
    //#input(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/runtime/RuntimeConfigDefs.__Descendant_Table[others]
    //#input(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/runtime/RuntimeConfigDefs.__Dispatch_Table.addConfigDef(Lorg/apache/roller/weblogger/config/runtime/ConfigDef;)Z
    //#input(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/runtime/RuntimeConfigDefs.__Dispatch_Table.getConfigDefs()Ljava/util/List;
    //#input(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/runtime/RuntimeConfigDefsParser.__Descendant_Table[org/apache/roller/weblogger/config/runtime/RuntimeConfigDefsParser]
    //#input(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/runtime/RuntimeConfigDefsParser.__Dispatch_Table.unmarshall(Ljava/io/InputStream;)Lorg/apache/roller/weblogger/config/runtime/RuntimeConfigDefs;
    //#input(Map initializeMissingProps(Map)): props
    //#output(Map initializeMissingProps(Map)): new ArrayList(RuntimeConfigDefs#1) num objects
    //#output(Map initializeMissingProps(Map)): new HashMap(initializeMissingProps#1) num objects
    //#output(Map initializeMissingProps(Map)): new RuntimeConfigDefs(unmarshall#1) num objects
    //#output(Map initializeMissingProps(Map)): new RuntimeConfigDefs(unmarshall#1).__Tag
    //#output(Map initializeMissingProps(Map)): new RuntimeConfigDefs(unmarshall#1).configDefs
    //#output(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.configDefs
    //#output(Map initializeMissingProps(Map)): return_value
    //#new obj(Map initializeMissingProps(Map)): new ArrayList(RuntimeConfigDefs#1)
    //#new obj(Map initializeMissingProps(Map)): new HashMap(initializeMissingProps#1)
    //#new obj(Map initializeMissingProps(Map)): new RuntimeConfigDefs(unmarshall#1)
    //#pre[2] (Map initializeMissingProps(Map)): init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.configDefs)
    //#pre[1] (Map initializeMissingProps(Map)): (soft) log != null
    //#pre[3] (Map initializeMissingProps(Map)): (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
    //#pre[4] (Map initializeMissingProps(Map)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.runtime_config)
    //#presumption(Map initializeMissingProps(Map)): configDef.displayGroups@184 != null
    //#presumption(Map initializeMissingProps(Map)): dGroup.propertyDefs@188 != null
    //#presumption(Map initializeMissingProps(Map)): java.util.Iterator:next(...).__Tag@184 == org/apache/roller/weblogger/config/runtime/ConfigDef
    //#presumption(Map initializeMissingProps(Map)): java.util.Iterator:next(...).__Tag@188 == org/apache/roller/weblogger/config/runtime/DisplayGroup
    //#presumption(Map initializeMissingProps(Map)): java.util.Iterator:next(...).__Tag@192 == org/apache/roller/weblogger/config/runtime/PropertyDef
    //#presumption(Map initializeMissingProps(Map)): java.util.Iterator:next(...)@184 != null
    //#presumption(Map initializeMissingProps(Map)): java.util.Iterator:next(...)@188 != null
    //#presumption(Map initializeMissingProps(Map)): java.util.Iterator:next(...)@192 != null
    //#presumption(Map initializeMissingProps(Map)): runtimeConfigDefs.__Tag == org/apache/roller/weblogger/config/runtime/RuntimeConfigDefs
    //#presumption(Map initializeMissingProps(Map)): runtimeConfigDefs.configDefs != null
    //#post(Map initializeMissingProps(Map)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.configDefs == One-of{old org/apache/roller/weblogger/config/WebloggerRuntimeConfig.configDefs, &new RuntimeConfigDefs(unmarshall#1)}
    //#post(Map initializeMissingProps(Map)): init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.configDefs)
    //#post(Map initializeMissingProps(Map)): return_value == One-of{props, &new HashMap(initializeMissingProps#1)}
    //#post(Map initializeMissingProps(Map)): return_value != null
    //#post(Map initializeMissingProps(Map)): new ArrayList(RuntimeConfigDefs#1) num objects <= 1
    //#post(Map initializeMissingProps(Map)): new RuntimeConfigDefs(unmarshall#1) num objects == new ArrayList(RuntimeConfigDefs#1) num objects
    //#post(Map initializeMissingProps(Map)): new HashMap(initializeMissingProps#1) num objects <= 1
    //#post(Map initializeMissingProps(Map)): init'ed(new RuntimeConfigDefs(unmarshall#1).__Tag)
    //#post(Map initializeMissingProps(Map)): init'ed(new RuntimeConfigDefs(unmarshall#1).configDefs)
    //#unanalyzed(Map initializeMissingProps(Map)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(Map initializeMissingProps(Map)): Effects-of-calling:java.lang.Class:getResourceAsStream
    //#unanalyzed(Map initializeMissingProps(Map)): Effects-of-calling:org.jdom.Element:getAttributeValue
    //#unanalyzed(Map initializeMissingProps(Map)): Effects-of-calling:org.jdom.Element:getChildText
    //#unanalyzed(Map initializeMissingProps(Map)): Effects-of-calling:org.jdom.Element:getChild
    //#unanalyzed(Map initializeMissingProps(Map)): Effects-of-calling:java.lang.Integer:parseInt
    //#unanalyzed(Map initializeMissingProps(Map)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(Map initializeMissingProps(Map)): Effects-of-calling:org.jdom.Element:getChildren
    //#unanalyzed(Map initializeMissingProps(Map)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(Map initializeMissingProps(Map)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(Map initializeMissingProps(Map)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(Map initializeMissingProps(Map)): Effects-of-calling:java.util.List:add
    //#unanalyzed(Map initializeMissingProps(Map)): Effects-of-calling:org.jdom.input.SAXBuilder
    //#unanalyzed(Map initializeMissingProps(Map)): Effects-of-calling:org.jdom.input.SAXBuilder:build
    //#unanalyzed(Map initializeMissingProps(Map)): Effects-of-calling:org.jdom.Document:getRootElement
    //#unanalyzed(Map initializeMissingProps(Map)): Effects-of-calling:org.apache.commons.logging.Log:error
    //#test_vector(Map initializeMissingProps(Map)): props: Inverse{null}, Addr_Set{null}
    //#test_vector(Map initializeMissingProps(Map)): java.util.Iterator:hasNext(...)@183: {0}, {1}
    //#test_vector(Map initializeMissingProps(Map)): java.util.Iterator:hasNext(...)@187: {0}, {1}
    //#test_vector(Map initializeMissingProps(Map)): java.util.Iterator:hasNext(...)@191: {0}, {1}
    //#test_vector(Map initializeMissingProps(Map)): java.util.Map:containsKey(...)@195: {1}, {0}
            props = new HashMap();

        // start by getting our runtimeConfigDefs
        RuntimeConfigDefs runtimeConfigDefs =
                WebloggerRuntimeConfig.getRuntimeConfigDefs();

        // can't do initialization without our config defs
        if(runtimeConfigDefs == null)
            return props;

        // iterator through all the definitions and add properties
        // that are not already in our props map
        ConfigDef configDef = null;
    //#JPAPropertiesManagerImpl.java:179: Warning: unused assignment
    //#    unused assignment into configDef
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl
    //#    method: Map initializeMissingProps(Map)
    //#    Attribs:  Uncertain
        DisplayGroup dGroup = null;
    //#JPAPropertiesManagerImpl.java:180: Warning: unused assignment
    //#    unused assignment into dGroup
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl
    //#    method: Map initializeMissingProps(Map)
    //#    Attribs:  Uncertain
        PropertyDef propDef = null;
    //#JPAPropertiesManagerImpl.java:181: Warning: unused assignment
    //#    unused assignment into propDef
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl
    //#    method: Map initializeMissingProps(Map)
    //#    Attribs:  Uncertain
        Iterator defs = runtimeConfigDefs.getConfigDefs().iterator();
    //#JPAPropertiesManagerImpl.java:182: ?null dereference
    //#    org/apache/roller/weblogger/config/runtime/RuntimeConfigDefs.__Descendant_Table[runtimeConfigDefs.__Tag] != null
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl
    //#    method: Map initializeMissingProps(Map)
    //#    basic block: bb_5
    //#    assertion: org/apache/roller/weblogger/config/runtime/RuntimeConfigDefs.__Descendant_Table[runtimeConfigDefs.__Tag] != null
    //#    VN: org/apache/roller/weblogger/config/runtime/RuntimeConfigDefs.__Descendant_Table[runtimeConfigDefs.__Tag]
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    //#JPAPropertiesManagerImpl.java:182: ?null dereference
    //#    getConfigDefs(...) != null
    //#    severity: MEDIUM
    //#    class: org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl
    //#    method: Map initializeMissingProps(Map)
    //#    basic block: bb_5
    //#    assertion: getConfigDefs(...) != null
    //#    VN: runtimeConfigDefs.configDefs
    //#    Expected: Inverse{null} or Invalid
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
        while(defs.hasNext()) {
            configDef = (ConfigDef) defs.next();

            Iterator groups = configDef.getDisplayGroups().iterator();
            while(groups.hasNext()) {
                dGroup = (DisplayGroup) groups.next();

                Iterator propdefs = dGroup.getPropertyDefs().iterator();
                while(propdefs.hasNext()) {
                    propDef = (PropertyDef) propdefs.next();

                    // do we already have this prop?  if not then add it
                    if(!props.containsKey(propDef.getName())) {
                        RuntimeConfigProperty newprop =
    //#JPAPropertiesManagerImpl.java:196: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.RuntimeConfigProperty(String, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl
    //#    method: Map initializeMissingProps(Map)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.RuntimeConfigProperty(String, String)
                            new RuntimeConfigProperty(
                                propDef.getName(), propDef.getDefaultValue());

                        props.put(propDef.getName(), newprop);

                        log.info("Found uninitialized property " +
    //#JPAPropertiesManagerImpl.java:202: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:info(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl
    //#    method: Map initializeMissingProps(Map)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:info(Object)
                            propDef.getName() +
                            " ... setting value to [" + 
                            propDef.getDefaultValue() + "]");
                    }
                }
            }
        }

        return props;
    //#JPAPropertiesManagerImpl.java:211: end of method: Map org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl.initializeMissingProps(Map)
    }


    public void release() {}
    //#JPAPropertiesManagerImpl.java:215: method: void org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl.release()
    //#JPAPropertiesManagerImpl.java:215: end of method: void org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl.release()

}
    //#JPAPropertiesManagerImpl.java:: end of class: org.apache.roller.weblogger.business.jpa.JPAPropertiesManagerImpl
