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