import java.util.Hashtable;
import javax.jcr.Node;
+import javax.jcr.NodeIterator;
import javax.jcr.Property;
import javax.jcr.Repository;
import javax.jcr.RepositoryFactory;
import javax.jcr.SimpleCredentials;
import javax.jcr.nodetype.NodeType;
-import org.argeo.ArgeoException;
import org.argeo.eclipse.ui.ErrorFeedback;
import org.argeo.jcr.ArgeoJcrConstants;
import org.argeo.jcr.ArgeoJcrUtils;
private Button saveInKeyring;
// Default values
- private final static String DEFAULT_NAME = "Argeo public Repository";
+ private final static String DEFAULT_NAME = "Argeo Public Repository";
private final static String DEFAULT_URI = "http://repo.argeo.org/data/pub/java";
private final static String DEFAULT_USER_NAME = "anonymous";
private final static boolean DEFAULT_ANONYMOUS = true;
Node repos = nodeSession.getNode(reposPath);
String repoNodeName = JcrUtils.replaceInvalidChars(name.getText());
if (repos.hasNode(repoNodeName))
- throw new ArgeoException(
+ throw new SlcException(
"There is already a remote repository named "
+ repoNodeName);
+
+ // check if the same URI has already been registered
+ NodeIterator ni = repos.getNodes();
+ while (ni.hasNext()) {
+ Node node = ni.nextNode();
+ if (node.isNodeType(ArgeoTypes.ARGEO_REMOTE_REPOSITORY)
+ && node.hasProperty(ArgeoNames.ARGEO_URI)
+ && node.getProperty(ArgeoNames.ARGEO_URI).getString()
+ .equals(uri.getText()))
+ throw new SlcException(
+ "This URI "
+ + uri.getText()
+ + " is already registered, "
+ + "for the time being, only one instance of a single "
+ + "repository at a time is implemented.");
+ }
+
Node repoNode = repos.addNode(repoNodeName,
ArgeoTypes.ARGEO_REMOTE_REPOSITORY);
repoNode.setProperty(ArgeoNames.ARGEO_URI, uri.getText());