You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2008/11/17 10:04:46 UTC
svn commit: r718203 - in /jackrabbit/branches/1.5: ./
jackrabbit-core/src/main/java/org/apache/jackrabbit/core/
jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/
jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/ jackrabbi...
Author: jukka
Date: Mon Nov 17 01:04:45 2008
New Revision: 718203
URL: http://svn.apache.org/viewvc?rev=718203&view=rev
Log:
1.5: Merged revisions 710047 and 711238 (JCR-1775 and JCR-1677)
Added:
jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/WorkspaceEventChannel.java
- copied unchanged from r711238, jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/WorkspaceEventChannel.java
jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/WorkspaceListener.java
- copied unchanged from r711238, jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/WorkspaceListener.java
jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/WorkspaceRecord.java
- copied unchanged from r711238, jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/WorkspaceRecord.java
jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/ClonedInputSource.java
- copied unchanged from r711238, jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/ClonedInputSource.java
Modified:
jackrabbit/branches/1.5/ (props changed)
jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java
jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/XASessionImpl.java
jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterNode.java
jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterRecordDeserializer.java
jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterRecordProcessor.java
jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/RepositoryConfig.java
jackrabbit/branches/1.5/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/config/RepositoryConfigTest.java
Propchange: jackrabbit/branches/1.5/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Nov 17 01:04:45 2008
@@ -1,2 +1,2 @@
/jackrabbit/branches/1.3:631261
-/jackrabbit/trunk:703899-704158,704165,704167,704324,704358,704361,704864,704933,704939,705010,705033,705243,705496,705522,705579,705925,705932,705934,705937-705938,705961,706242,706273,706285-706286,706562,706606,706649,706655,706660,706697,706918,707303-707304,707307,707310,707630,708206,708598,708609,708613,708619,708634,708840,708863,708909,708929,708943,709115,709142,709207,709211
+/jackrabbit/trunk:703899-704158,704165,704167,704324,704358,704361,704864,704933,704939,705010,705033,705243,705496,705522,705579,705925,705932,705934,705937-705938,705961,706242,706273,706285-706286,706562,706606,706649,706655,706660,706697,706918,707303-707304,707307,707310,707630,708206,708598,708609,708613,708619,708634,708840,708863,708909,708929,708943,709115,709142,709207,709211,710047,711238
Modified: jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java?rev=718203&r1=718202&r2=718203&view=diff
==============================================================================
--- jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java (original)
+++ jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java Mon Nov 17 01:04:45 2008
@@ -27,6 +27,8 @@
import org.apache.jackrabbit.core.cluster.ClusterContext;
import org.apache.jackrabbit.core.cluster.ClusterException;
import org.apache.jackrabbit.core.cluster.ClusterNode;
+import org.apache.jackrabbit.core.cluster.WorkspaceEventChannel;
+import org.apache.jackrabbit.core.cluster.WorkspaceListener;
import org.apache.jackrabbit.core.cluster.LockEventChannel;
import org.apache.jackrabbit.core.cluster.UpdateEventChannel;
import org.apache.jackrabbit.core.cluster.UpdateEventListener;
@@ -64,6 +66,7 @@
import org.apache.jackrabbit.core.value.InternalValue;
import org.apache.jackrabbit.core.version.VersionManager;
import org.apache.jackrabbit.core.version.VersionManagerImpl;
+import org.apache.jackrabbit.core.xml.ClonedInputSource;
import org.apache.jackrabbit.spi.commons.name.NameConstants;
import org.apache.jackrabbit.spi.commons.namespace.NamespaceResolver;
import org.apache.jackrabbit.spi.commons.namespace.RegistryNamespaceResolver;
@@ -89,6 +92,7 @@
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
+import java.io.StringReader;
import java.security.AccessControlContext;
import java.security.AccessController;
import java.util.Arrays;
@@ -103,7 +107,7 @@
* A <code>RepositoryImpl</code> ...
*/
public class RepositoryImpl extends AbstractRepository
- implements JackrabbitRepository, SessionListener, EventListener {
+ implements JackrabbitRepository, SessionListener, EventListener, WorkspaceListener {
private static Logger log = LoggerFactory.getLogger(RepositoryImpl.class);
@@ -230,6 +234,11 @@
private final ItemStateCacheFactory cacheFactory = new ManagedMLRUItemStateCacheFactory(cacheMgr);
/**
+ * Chanel for posting create workspace messages.
+ */
+ private WorkspaceEventChannel createWorkspaceEventChannel;
+
+ /**
* private constructor
*
* @param repConfig
@@ -292,6 +301,9 @@
clusterNode = createClusterNode();
nsReg.setEventChannel(clusterNode);
ntReg.setEventChannel(clusterNode);
+
+ createWorkspaceEventChannel = clusterNode;
+ clusterNode.setListener(this);
}
// init version manager
@@ -789,16 +801,35 @@
+ workspaceName + "' already exists.");
}
+ // needed to get newly created workspace config file content when runnin in clustered environment
+ StringBuffer workspaceConfigContent = clusterNode != null ? new StringBuffer() : null;
+
// create the workspace configuration
- WorkspaceConfig config = repConfig.createWorkspaceConfig(workspaceName);
+ WorkspaceConfig config = repConfig.createWorkspaceConfig(workspaceName, workspaceConfigContent);
WorkspaceInfo info = createWorkspaceInfo(config);
wspInfos.put(workspaceName, info);
+
+ if (workspaceConfigContent != null && createWorkspaceEventChannel != null) {
+ // notify other cluster node that workspace has been created
+ InputSource s = new InputSource(new StringReader(workspaceConfigContent.toString()));
+ createWorkspaceEventChannel.workspaceCreated(workspaceName, new ClonedInputSource(s));
+ }
}
}
+ public void externalWorkspaceCreated(String workspaceName,
+ InputSource configTemplate) throws RepositoryException {
+
+ createWorkspaceInternal(workspaceName, configTemplate);
+ }
+
/**
* Creates a workspace with the given name and given workspace configuration
* template.
+ *
+ * The difference between this method and {@link #createWorkspace(String, InputSource)}
+ * is that the later notifies the other cluster node that workspace has been created
+ * whereas this method only creates the workspace.
*
* @param workspaceName name of the new workspace
* @param configTemplate the workspace configuration template of the new
@@ -807,7 +838,7 @@
* exists or if another error occurs
* @see SessionImpl#createWorkspace(String,InputSource)
*/
- protected void createWorkspace(String workspaceName,
+ private void createWorkspaceInternal(String workspaceName,
InputSource configTemplate)
throws RepositoryException {
synchronized (wspInfos) {
@@ -822,6 +853,32 @@
wspInfos.put(workspaceName, info);
}
}
+
+ /**
+ * Creates a workspace with the given name and given workspace configuration
+ * template.
+ *
+ * @param workspaceName name of the new workspace
+ * @param configTemplate the workspace configuration template of the new
+ * workspace
+ * @throws RepositoryException if a workspace with the given name already
+ * exists or if another error occurs
+ * @see SessionImpl#createWorkspace(String,InputSource)
+ */
+ protected void createWorkspace(String workspaceName,
+ InputSource configTemplate)
+ throws RepositoryException {
+
+ if (createWorkspaceEventChannel == null) {
+ createWorkspaceInternal(workspaceName, configTemplate);
+ }
+ else {
+
+ ClonedInputSource template = new ClonedInputSource(configTemplate);
+ createWorkspaceInternal(workspaceName, template.cloneInputSource());
+ createWorkspaceEventChannel.workspaceCreated(workspaceName, template);
+ }
+ }
SharedItemStateManager getWorkspaceStateManager(String workspaceName)
throws NoSuchWorkspaceException, RepositoryException {
Modified: jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/XASessionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/XASessionImpl.java?rev=718203&r1=718202&r2=718203&view=diff
==============================================================================
--- jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/XASessionImpl.java (original)
+++ jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/XASessionImpl.java Mon Nov 17 01:04:45 2008
@@ -128,7 +128,7 @@
XAVersionManager versionMgr = (XAVersionManager) getVersionManager();
/**
- * Create array that contains all resources that paricipate in this
+ * Create array that contains all resources that participate in this
* transactions. Some resources depend on each other, therefore you
* should only change the sequence if you know what you are doing!
*
@@ -137,12 +137,12 @@
* acquires the write lock on the version manager in its prepare method,
* while the end resource releases the write lock in either commit or
* rollback. Please note that the write lock is only acquired if there
- * is someting to commit by the version manager.
+ * is something to commit by the version manager.
* For further information see JCR-335 and JCR-962.
*/
txResources = new InternalXAResource[] {
versionMgr.getXAResourceBegin(),
- stateMgr, lockMgr, versionMgr,
+ versionMgr, stateMgr, lockMgr,
versionMgr.getXAResourceEnd()
};
stateMgr.setVirtualProvider(versionMgr);
Modified: jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterNode.java?rev=718203&r1=718202&r2=718203&view=diff
==============================================================================
--- jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterNode.java (original)
+++ jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterNode.java Mon Nov 17 01:04:45 2008
@@ -16,43 +16,45 @@
*/
package org.apache.jackrabbit.core.cluster;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import java.io.File;
+import java.io.IOException;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.jcr.RepositoryException;
+
import org.apache.commons.io.FileUtils;
+import org.apache.jackrabbit.core.NodeId;
+import org.apache.jackrabbit.core.cluster.WorkspaceRecord.CreateWorkspaceAction;
import org.apache.jackrabbit.core.config.ClusterConfig;
import org.apache.jackrabbit.core.config.ConfigurationException;
import org.apache.jackrabbit.core.config.JournalConfig;
-import org.apache.jackrabbit.core.NodeId;
import org.apache.jackrabbit.core.journal.AbstractJournal;
+import org.apache.jackrabbit.core.journal.InstanceRevision;
import org.apache.jackrabbit.core.journal.Journal;
-import org.apache.jackrabbit.core.journal.RecordConsumer;
-import org.apache.jackrabbit.core.journal.Record;
import org.apache.jackrabbit.core.journal.JournalException;
-import org.apache.jackrabbit.core.journal.InstanceRevision;
+import org.apache.jackrabbit.core.journal.Record;
+import org.apache.jackrabbit.core.journal.RecordConsumer;
import org.apache.jackrabbit.core.journal.RecordProducer;
import org.apache.jackrabbit.core.nodetype.InvalidNodeTypeDefException;
import org.apache.jackrabbit.core.nodetype.NodeTypeDef;
import org.apache.jackrabbit.core.state.ChangeLog;
+import org.apache.jackrabbit.core.xml.ClonedInputSource;
import org.apache.jackrabbit.uuid.UUID;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import EDU.oswego.cs.dl.util.concurrent.Latch;
import EDU.oswego.cs.dl.util.concurrent.Mutex;
-import javax.jcr.RepositoryException;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Collection;
-
/**
* Default clustered node implementation.
*/
public class ClusterNode implements Runnable,
NamespaceEventChannel, NodeTypeEventChannel, RecordConsumer,
- ClusterRecordProcessor {
+ ClusterRecordProcessor, WorkspaceEventChannel {
/**
* System property specifying a node id to use.
@@ -70,11 +72,6 @@
private static final String PRODUCER_ID = "JR";
/**
- * Default stop delay.
- */
- private static final long DEFAULT_STOP_DELAY = 5000;
-
- /**
* Status constant.
*/
private static final int NONE = 0;
@@ -160,6 +157,11 @@
private NamespaceEventListener namespaceListener;
/**
+ * Create workspace listener
+ */
+ private WorkspaceListener createWorkspaceListener;
+
+ /**
* Node type listener.
*/
private NodeTypeEventListener nodeTypeListener;
@@ -939,6 +941,58 @@
}
}
+ public void process(WorkspaceRecord record) {
+ if (createWorkspaceListener == null) {
+ String msg = "Create Workspace listener unavailable.";
+ log.error(msg);
+ return;
+ }
+ try {
+ if (record.getActionType() == WorkspaceRecord.CREATE_WORKSPACE_ACTION_TYPE) {
+ CreateWorkspaceAction action = record.getCreateWorkspaceAction();
+ createWorkspaceListener.externalWorkspaceCreated(record.getWorkspace(), action.getInputSource());
+ }
+ } catch (RepositoryException e) {
+ String msg = "Unable to create workspace: "
+ + e.getMessage();
+ log.error(msg);
+ }
+ }
+
+ // -----------------------------------------------< CreateWorkspaceChannel >
+
+ public void setListener(WorkspaceListener listener) {
+ createWorkspaceListener = listener;
+ }
+
+ public void workspaceCreated(String workspaceName,
+ ClonedInputSource inputSource) {
+ if (status != STARTED) {
+ log.info("not started: namespace operation ignored.");
+ return;
+ }
+ ClusterRecord record = null;
+ boolean succeeded = false;
+
+ try {
+ record = new WorkspaceRecord(workspaceName, inputSource, producer.append());
+ record.write();
+ record.update();
+ setRevision(record.getRevision());
+ succeeded = true;
+ } catch (JournalException e) {
+ String msg = "Unable to create log entry: " + e.getMessage();
+ log.error(msg);
+ } catch (Throwable e) {
+ String msg = "Unexpected error while creating log entry.";
+ log.error(msg, e);
+ } finally {
+ if (!succeeded && record != null) {
+ record.cancelUpdate();
+ }
+ }
+ }
+
/**
* Invoked when a cluster operation has ended. If <code>successful</code>,
* attempts to fill the journal record and update it, otherwise cancels
Modified: jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterRecordDeserializer.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterRecordDeserializer.java?rev=718203&r1=718202&r2=718203&view=diff
==============================================================================
--- jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterRecordDeserializer.java (original)
+++ jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterRecordDeserializer.java Mon Nov 17 01:04:45 2008
@@ -55,6 +55,10 @@
clusterRecord = new NodeTypeRecord(record);
clusterRecord.read();
break;
+ case WorkspaceRecord.IDENTIFIER:
+ clusterRecord = new WorkspaceRecord(record);
+ clusterRecord.read();
+ break;
case ClusterRecord.END_MARKER:
// JCR-1813: Invalid journal records during XATransactions
// Some journal records may be empty due to JCR-1813 and other
Modified: jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterRecordProcessor.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterRecordProcessor.java?rev=718203&r1=718202&r2=718203&view=diff
==============================================================================
--- jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterRecordProcessor.java (original)
+++ jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/cluster/ClusterRecordProcessor.java Mon Nov 17 01:04:45 2008
@@ -52,4 +52,11 @@
* @param record node type record
*/
public void process(NodeTypeRecord record);
+
+ /**
+ * Process a workspace record
+ * @param record workspace record
+ */
+ public void process(WorkspaceRecord record);
+
}
Modified: jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/RepositoryConfig.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/RepositoryConfig.java?rev=718203&r1=718202&r2=718203&view=diff
==============================================================================
--- jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/RepositoryConfig.java (original)
+++ jackrabbit/branches/1.5/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/RepositoryConfig.java Mon Nov 17 01:04:45 2008
@@ -23,6 +23,7 @@
import org.apache.jackrabbit.core.fs.FileSystemException;
import org.apache.jackrabbit.core.fs.FileSystemFactory;
import org.apache.jackrabbit.core.fs.FileSystemPathUtil;
+import org.apache.jackrabbit.core.xml.ClonedInputSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.w3c.dom.Element;
@@ -45,6 +46,8 @@
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;
+import java.io.StringReader;
+import java.io.StringWriter;
import java.io.Writer;
import java.net.URI;
import java.util.Collection;
@@ -340,7 +343,7 @@
+ "for default workspace: " + defaultWorkspace);
}
// create initial default workspace
- createWorkspaceConfig(defaultWorkspace);
+ createWorkspaceConfig(defaultWorkspace, (StringBuffer)null);
}
}
@@ -460,12 +463,15 @@
*
* @param name workspace name
* @param template the workspace template
+ * @param configContent optional stringbuffer that will have the content
+ * of workspace configuration file written in
* @return created workspace configuration
* @throws ConfigurationException if creating the workspace configuration
* failed
*/
private synchronized WorkspaceConfig internalCreateWorkspaceConfig(String name,
- Element template)
+ Element template,
+ StringBuffer configContent)
throws ConfigurationException {
// The physical workspace home directory on disk (TODO encode name?)
@@ -511,6 +517,7 @@
try {
// Create the directory
virtualFS.createFolder(configDir);
+
configWriter = new OutputStreamWriter(
virtualFS.getOutputStream(configFile));
} catch (FileSystemException e) {
@@ -537,8 +544,25 @@
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
- transformer.transform(
- new DOMSource(template), new StreamResult(configWriter));
+
+ if (configContent == null)
+ {
+ transformer.transform(
+ new DOMSource(template), new StreamResult(configWriter));
+ }
+ else
+ {
+ StringWriter writer = new StringWriter();
+ transformer.transform(
+ new DOMSource(template), new StreamResult(writer));
+
+ String s = writer.getBuffer().toString();
+ configWriter.write(s);
+ configContent.append(s);
+ }
+ } catch (IOException e) {
+ throw new ConfigurationException(
+ "Cannot create a workspace configuration file", e);
} catch (TransformerConfigurationException e) {
throw new ConfigurationException(
"Cannot create a workspace configuration writer", e);
@@ -585,14 +609,16 @@
* the caller.
*
* @param name workspace name
+ * @param configContent optional StringBuffer that will have the content
+ * of workspace configuration file written in
* @return created workspace configuration
* @throws ConfigurationException if creating the workspace configuration
* failed
*/
- public WorkspaceConfig createWorkspaceConfig(String name)
+ public WorkspaceConfig createWorkspaceConfig(String name, StringBuffer configContent)
throws ConfigurationException {
// use workspace template from repository.xml
- return internalCreateWorkspaceConfig(name, template);
+ return internalCreateWorkspaceConfig(name, template, configContent);
}
/**
@@ -618,7 +644,7 @@
throws ConfigurationException {
ConfigurationParser parser = new ConfigurationParser(new Properties());
Element workspaceTemplate = parser.parseXML(template);
- return internalCreateWorkspaceConfig(name, workspaceTemplate);
+ return internalCreateWorkspaceConfig(name, workspaceTemplate, null);
}
/**
Modified: jackrabbit/branches/1.5/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/config/RepositoryConfigTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.5/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/config/RepositoryConfigTest.java?rev=718203&r1=718202&r2=718203&view=diff
==============================================================================
--- jackrabbit/branches/1.5/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/config/RepositoryConfigTest.java (original)
+++ jackrabbit/branches/1.5/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/config/RepositoryConfigTest.java Mon Nov 17 01:04:45 2008
@@ -220,7 +220,7 @@
public void testCreateWorkspaceConfig() throws Exception {
RepositoryConfig config =
RepositoryConfig.create(REPOSITORY_XML, REPOSITORY_HOME);
- config.createWorkspaceConfig("test-workspace");
+ config.createWorkspaceConfig("test-workspace", (StringBuffer)null);
File workspaces_dir = new File(REPOSITORY_HOME, "workspaces");
File workspace_dir = new File(workspaces_dir, "test-workspace");
File workspace_xml = new File(workspace_dir, "workspace.xml");
@@ -231,7 +231,7 @@
try {
RepositoryConfig config =
RepositoryConfig.create(REPOSITORY_XML, REPOSITORY_HOME);
- config.createWorkspaceConfig("default");
+ config.createWorkspaceConfig("default", (StringBuffer)null);
fail("No exception thrown when creating a duplicate workspace");
} catch (ConfigurationException e) {
// test passed