On 02/13/2010 04:40 PM, vmassol (SVN) wrote:
> Author: vmassol
> Date: 2010-02-13 16:40:57 +0100 (Sat, 13 Feb 2010)
> New Revision: 27004
>
> Modified:
>     
> platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/store/hibernate/DefaultHibernateSessionFactory.java
> Log:
> XWIKI-4893: Make XWiki support recovering from a connection problem with the 
> database
>
> Modified: 
> platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/store/hibernate/DefaultHibernateSessionFactory.java
> ===================================================================
> --- 
> platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/store/hibernate/DefaultHibernateSessionFactory.java
>     2010-02-13 12:09:34 UTC (rev 27003)
> +++ 
> platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/store/hibernate/DefaultHibernateSessionFactory.java
>     2010-02-13 15:40:57 UTC (rev 27004)
> @@ -19,7 +19,9 @@
>    */
>   package com.xpn.xwiki.store.hibernate;
>
> +import java.io.File;
>   import java.io.InputStream;
> +import java.net.URL;
>
>   import org.hibernate.HibernateException;
>   import org.hibernate.SessionFactory;
> @@ -33,8 +35,8 @@
>    *
>    * @version $Id$
>    * @since 2.0M1
> - * @todo this was coded by Artem. Find out why we need this as a component.
>    */
> +// TODO: This was coded by Artem. Find out why we need this as a component.
>   @Component
>   public class DefaultHibernateSessionFactory implements 
> HibernateSessionFactory
>   {
> @@ -45,6 +47,78 @@
>       {
>           private static final long serialVersionUID = 1L;
>
> +        /**
> +         * Whether the Hibernate Configuration has alreayd been initialized 
> or not. We do this so that the
> +         * Hibernate {...@link org.hibernate.cfg.Configuration#configure()} 
> methods can be called several times in a
> +         * row without causing some Duplicate Mapping errors, see our 
> overridden
> +         * {...@link #getConfigurationInputStream(String)} below.
> +         */
> +        private boolean isConfigurationInitialized;
> +
> +        /**
> +         * {...@inheritdoc}
> +         * @see org.hibernate.cfg.Configuration#configure()
> +         */

Are you sure there's no need for synchronized? Same for all the others.

> +        @Override public Configuration configure() throws HibernateException
> +        {
> +            Configuration configuration;
> +            if (this.isConfigurationInitialized) {
> +                configuration = this;
> +            } else {
> +                configuration = super.configure();
> +                this.isConfigurationInitialized = true;
> +            }
> +            return configuration;
> +        }
> +
> +        /**
> +         * {...@inheritdoc}
> +         * @see org.hibernate.cfg.Configuration#configure(String)
> +         */
> +        @Override public Configuration configure(String resource) throws 
> HibernateException
> +        {
> +            Configuration configuration;
> +            if (this.isConfigurationInitialized) {
> +                configuration = this;
> +            } else {
> +                configuration = super.configure(resource);
> +                this.isConfigurationInitialized = true;
> +            }
> +            return configuration;
> +        }
> +
> +        /**
> +         * {...@inheritdoc}
> +         * @see org.hibernate.cfg.Configuration#configure(java.net.URL)
> +         */
> +        @Override public Configuration configure(URL url) throws 
> HibernateException
> +        {
> +            Configuration configuration;
> +            if (this.isConfigurationInitialized) {
> +                configuration = this;
> +            } else {
> +                configuration = super.configure(url);
> +                this.isConfigurationInitialized = true;
> +            }
> +            return configuration;
> +        }
> +
> +        /**
> +         * {...@inheritdoc}
> +         * @see org.hibernate.cfg.Configuration#configure(java.io.File)
> +         */
> +        @Override public Configuration configure(File configFile) throws 
> HibernateException
> +        {
> +            Configuration configuration;
> +            if (this.isConfigurationInitialized) {
> +                configuration = this;
> +            } else {
> +                configuration = super.configure(configFile);
> +                this.isConfigurationInitialized = true;
> +            }
> +            return configuration;
> +        }
> +
>           // there is no #configure(InputStream) so we use #configure(String) 
> and override #getConfigurationInputStream
>           @Override
>           protected InputStream getConfigurationInputStream(String resource) 
> throws HibernateException


-- 
Sergiu Dumitriu
http://purl.org/net/sergiu/
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to