Author: vmassol
Date: 2007-11-25 15:27:13 +0100 (Sun, 25 Nov 2007)
New Revision: 6070
Modified:
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/XWiki.java
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/XWikiURLFactoryService.java
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/XWikiURLFactoryServiceImpl.java
Log:
XWIKI-1894: Exception in URL Factory initialization
Modified:
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/XWiki.java
===================================================================
--- xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/XWiki.java
2007-11-25 07:25:45 UTC (rev 6069)
+++ xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/XWiki.java
2007-11-25 14:27:13 UTC (rev 6070)
@@ -62,9 +62,9 @@
import com.xpn.xwiki.util.Util;
import com.xpn.xwiki.web.*;
import com.xpn.xwiki.web.includeservletasstring.IncludeServletAsString;
+import org.apache.commons.httpclient.Credentials;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
-import org.apache.commons.httpclient.Credentials;
import org.apache.commons.httpclient.auth.AuthScope;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.lang.RandomStringUtils;
@@ -4241,32 +4241,29 @@
if (urlFactoryService == null) {
LOG.info("Initializing URLFactory Service...");
- String urlFactoryServiceClass =
Param("xwiki.urlfactory.serviceclass");
+ XWikiURLFactoryService factoryService = null;
+ String urlFactoryServiceClass =
Param("xwiki.urlfactory.serviceclass");
if (urlFactoryServiceClass != null) {
try {
if (LOG.isDebugEnabled())
- LOG.debug("Using custom URLFactory Service
Class "
- + urlFactoryServiceClass + ".");
- urlFactoryService =
- (XWikiURLFactoryService)
Class.forName(urlFactoryServiceClass)
- .newInstance();
- urlFactoryService.init(this);
- LOG.debug("Initialized URLFactory Service using
Reflection.");
+ LOG.debug("Using custom URLFactory Service
Class [" + urlFactoryServiceClass + "]");
+ factoryService = (XWikiURLFactoryService)
Class.forName(urlFactoryServiceClass)
+ .getConstructor(new Class[]
{XWiki.class}).newInstance(new Object[] {this});
} catch (Exception e) {
- urlFactoryService = null;
- LOG.warn("Failed to initialize URLFactory Service
"
- + urlFactoryServiceClass
- + " using Reflection, trying default
implementation using 'new'.", e);
+ factoryService = null;
+ LOG.warn("Failed to initialize URLFactory Service
[" + urlFactoryServiceClass + "]", e);
}
}
- if (urlFactoryService == null) {
+ if (factoryService == null) {
if (LOG.isDebugEnabled())
- LOG.debug("Using default URLFactory Service Class "
- + urlFactoryServiceClass + ".");
- urlFactoryService = new XWikiURLFactoryServiceImpl();
- urlFactoryService.init(this);
+ LOG.debug("Using default URLFactory Service Class
[" + urlFactoryServiceClass + "]");
+ factoryService = new XWikiURLFactoryServiceImpl(this);
}
+
+ // Set the urlFactoryService object in one assignment to
prevent threading issues when checking for
+ // null above.
+ urlFactoryService = factoryService;
}
}
}
Modified:
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/XWikiURLFactoryService.java
===================================================================
---
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/XWikiURLFactoryService.java
2007-11-25 07:25:45 UTC (rev 6069)
+++
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/XWikiURLFactoryService.java
2007-11-25 14:27:13 UTC (rev 6070)
@@ -21,11 +21,9 @@
package com.xpn.xwiki.web;
-import com.xpn.xwiki.XWiki;
import com.xpn.xwiki.XWikiContext;
public interface XWikiURLFactoryService
{
- public void init(XWiki context);
public XWikiURLFactory createURLFactory(int mode, XWikiContext context);
}
Modified:
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/XWikiURLFactoryServiceImpl.java
===================================================================
---
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/XWikiURLFactoryServiceImpl.java
2007-11-25 07:25:45 UTC (rev 6069)
+++
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/XWikiURLFactoryServiceImpl.java
2007-11-25 14:27:13 UTC (rev 6070)
@@ -18,7 +18,6 @@
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*
*/
-
package com.xpn.xwiki.web;
import com.xpn.xwiki.XWiki;
@@ -33,15 +32,16 @@
public class XWikiURLFactoryServiceImpl implements XWikiURLFactoryService
{
- private static final Log log =
LogFactory.getLog(XWikiURLFactoryService.class);
+ private static final Log LOG =
LogFactory.getLog(XWikiURLFactoryService.class);
- private Map factoryMap;
+ private Map factoryMap;
- public XWikiURLFactoryServiceImpl()
+ public XWikiURLFactoryServiceImpl(XWiki xwiki)
{
+ init(xwiki);
}
- public void init(XWiki xwiki)
+ private void init(XWiki xwiki)
{
factoryMap = new HashMap();
register(xwiki, XWikiContext.MODE_XMLRPC, XWikiXmlRpcURLFactory.class,
"xwiki.urlfactory.xmlrpcclass");
@@ -61,13 +61,13 @@
{
try
{
- log.debug("Using custom url factory: " + urlFactoryClassName);
+ LOG.debug("Using custom url factory: " + urlFactoryClassName);
Class urlFactoryClass = Class.forName(urlFactoryClassName);
factoryMap.put(factoryMode, urlFactoryClass);
}
catch (Exception e)
{
- log.error("Faiiled to load custom url factory class: " +
urlFactoryClassName);
+ LOG.error("Faiiled to load custom url factory class: " +
urlFactoryClassName);
}
}
}
@@ -83,7 +83,7 @@
}
catch (Exception e)
{
- log.error("Failed to get construct url factory", e);
+ LOG.error("Failed to get construct url factory", e);
}
return urlf;
}
_______________________________________________
notifications mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/notifications