2 * Copyright (C) 2007-2012 Argeo GmbH
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org
.argeo
.slc
.client
.ui
.dist
.views
;
18 import java
.util
.ArrayList
;
19 import java
.util
.HashMap
;
20 import java
.util
.List
;
23 import javax
.jcr
.Credentials
;
24 import javax
.jcr
.NoSuchWorkspaceException
;
25 import javax
.jcr
.Node
;
26 import javax
.jcr
.NodeIterator
;
27 import javax
.jcr
.Property
;
28 import javax
.jcr
.Repository
;
29 import javax
.jcr
.RepositoryException
;
30 import javax
.jcr
.RepositoryFactory
;
31 import javax
.jcr
.Session
;
32 import javax
.jcr
.nodetype
.NodeType
;
33 import javax
.jcr
.query
.Query
;
34 import javax
.jcr
.query
.QueryResult
;
36 import org
.apache
.commons
.logging
.Log
;
37 import org
.apache
.commons
.logging
.LogFactory
;
38 import org
.argeo
.ArgeoMonitor
;
39 import org
.argeo
.eclipse
.ui
.EclipseArgeoMonitor
;
40 import org
.argeo
.eclipse
.ui
.ErrorFeedback
;
41 import org
.argeo
.eclipse
.ui
.TreeParent
;
42 import org
.argeo
.jcr
.ArgeoJcrUtils
;
43 import org
.argeo
.jcr
.ArgeoNames
;
44 import org
.argeo
.jcr
.ArgeoTypes
;
45 import org
.argeo
.jcr
.JcrUtils
;
46 import org
.argeo
.jcr
.UserJcrUtils
;
47 import org
.argeo
.slc
.SlcException
;
48 import org
.argeo
.slc
.client
.ui
.dist
.DistPlugin
;
49 import org
.argeo
.slc
.client
.ui
.dist
.commands
.CopyWorkspace
;
50 import org
.argeo
.slc
.client
.ui
.dist
.commands
.CreateWorkspace
;
51 import org
.argeo
.slc
.client
.ui
.dist
.commands
.DeleteWorkspace
;
52 import org
.argeo
.slc
.client
.ui
.dist
.commands
.ManageWorkspaceAuth
;
53 import org
.argeo
.slc
.client
.ui
.dist
.commands
.NormalizeDistribution
;
54 import org
.argeo
.slc
.client
.ui
.dist
.editors
.DistributionEditor
;
55 import org
.argeo
.slc
.client
.ui
.dist
.editors
.DistributionEditorInput
;
56 import org
.argeo
.slc
.client
.ui
.dist
.utils
.CommandHelpers
;
57 import org
.argeo
.slc
.jcr
.SlcNames
;
58 import org
.argeo
.slc
.repo
.RepoConstants
;
59 import org
.argeo
.slc
.repo
.RepoUtils
;
60 import org
.argeo
.util
.security
.Keyring
;
61 import org
.eclipse
.core
.runtime
.IProgressMonitor
;
62 import org
.eclipse
.core
.runtime
.IStatus
;
63 import org
.eclipse
.core
.runtime
.Status
;
64 import org
.eclipse
.core
.runtime
.jobs
.Job
;
65 import org
.eclipse
.jface
.action
.IMenuListener
;
66 import org
.eclipse
.jface
.action
.IMenuManager
;
67 import org
.eclipse
.jface
.action
.MenuManager
;
68 import org
.eclipse
.jface
.dialogs
.MessageDialog
;
69 import org
.eclipse
.jface
.viewers
.ColumnLabelProvider
;
70 import org
.eclipse
.jface
.viewers
.DoubleClickEvent
;
71 import org
.eclipse
.jface
.viewers
.IDoubleClickListener
;
72 import org
.eclipse
.jface
.viewers
.IStructuredSelection
;
73 import org
.eclipse
.jface
.viewers
.ITreeContentProvider
;
74 import org
.eclipse
.jface
.viewers
.TreeViewer
;
75 import org
.eclipse
.jface
.viewers
.TreeViewerColumn
;
76 import org
.eclipse
.jface
.viewers
.Viewer
;
77 import org
.eclipse
.jface
.viewers
.ViewerDropAdapter
;
78 import org
.eclipse
.swt
.SWT
;
79 import org
.eclipse
.swt
.dnd
.DND
;
80 import org
.eclipse
.swt
.dnd
.DragSourceAdapter
;
81 import org
.eclipse
.swt
.dnd
.DragSourceEvent
;
82 import org
.eclipse
.swt
.dnd
.TextTransfer
;
83 import org
.eclipse
.swt
.dnd
.Transfer
;
84 import org
.eclipse
.swt
.dnd
.TransferData
;
85 import org
.eclipse
.swt
.widgets
.Composite
;
86 import org
.eclipse
.swt
.widgets
.Menu
;
87 import org
.eclipse
.swt
.widgets
.Tree
;
88 import org
.eclipse
.ui
.IWorkbenchWindow
;
89 import org
.eclipse
.ui
.PartInitException
;
90 import org
.eclipse
.ui
.part
.ViewPart
;
93 * Browse and manipulate distributions (like merge, rename, etc.). Only support
94 * one single repository currently.
96 public class DistributionsView
extends ViewPart
implements SlcNames
, ArgeoNames
{
97 private final static Log log
= LogFactory
.getLog(DistributionsView
.class);
98 public final static String ID
= DistPlugin
.ID
+ ".distributionsView";
100 private Repository nodeRepository
;
101 private RepositoryFactory repositoryFactory
;
102 private Keyring keyring
;
104 private TreeViewer viewer
;
107 public void createPartControl(Composite parent
) {
108 // Define the TableViewer
109 viewer
= new TreeViewer(parent
, SWT
.MULTI
| SWT
.H_SCROLL
| SWT
.V_SCROLL
110 | SWT
.FULL_SELECTION
| SWT
.BORDER
);
112 TreeViewerColumn col
= new TreeViewerColumn(viewer
, SWT
.NONE
);
113 col
.getColumn().setWidth(200);
114 col
.setLabelProvider(new ColumnLabelProvider() {
116 public String
getText(Object element
) {
117 if (element
instanceof RepoElem
)
118 return ((RepoElem
) element
).getLabel();
119 return element
.toString();
123 final Tree table
= viewer
.getTree();
124 table
.setHeaderVisible(false);
125 table
.setLinesVisible(false);
127 viewer
.setContentProvider(new DistributionsContentProvider());
128 viewer
.addDoubleClickListener(new DistributionsDCL());
131 Transfer
[] tt
= new Transfer
[] { TextTransfer
.getInstance() };
132 int operations
= DND
.DROP_COPY
| DND
.DROP_MOVE
;
133 viewer
.addDragSupport(operations
, tt
, new ViewDragListener());
134 viewer
.addDropSupport(operations
, tt
, new ViewDropListener(viewer
));
136 MenuManager menuManager
= new MenuManager();
137 Menu menu
= menuManager
.createContextMenu(viewer
.getTree());
138 menuManager
.addMenuListener(new IMenuListener() {
139 public void menuAboutToShow(IMenuManager manager
) {
140 contextMenuAboutToShow(manager
);
143 viewer
.getTree().setMenu(menu
);
144 getSite().registerContextMenu(menuManager
, viewer
);
146 Session nodeSession
= null;
148 nodeSession
= nodeRepository
.login();
150 // make sure base directory is available
151 Node repos
= JcrUtils
.mkdirs(nodeSession
,
152 UserJcrUtils
.getUserHome(nodeSession
).getPath()
153 + RepoConstants
.REPOSITORIES_BASE_PATH
);
156 // register default local java repository
157 String alias
= RepoConstants
.DEFAULT_JAVA_REPOSITORY_ALIAS
;
158 Repository javaRepository
= ArgeoJcrUtils
.getRepositoryByAlias(
159 repositoryFactory
, alias
);
160 if (javaRepository
!= null) {
161 if (!repos
.hasNode(alias
)) {
162 Node repoNode
= repos
.addNode(alias
,
163 ArgeoTypes
.ARGEO_REMOTE_REPOSITORY
);
164 repoNode
.setProperty(ARGEO_URI
, "vm:///" + alias
);
165 repoNode
.addMixin(NodeType
.MIX_TITLE
);
166 repoNode
.setProperty(Property
.JCR_TITLE
, "Internal "
167 + alias
+ " repository");
171 } catch (RepositoryException e
) {
172 throw new SlcException("Cannot register repository", e
);
174 JcrUtils
.logoutQuietly(nodeSession
);
177 viewer
.setInput(nodeRepository
);
181 /** Programatically configure the context menu */
182 protected void contextMenuAboutToShow(IMenuManager menuManager
) {
183 IWorkbenchWindow window
= DistPlugin
.getDefault().getWorkbench()
184 .getActiveWorkbenchWindow();
185 // Get Current selected item :
186 Object firstElement
= ((IStructuredSelection
) viewer
.getSelection())
189 if (firstElement
instanceof TreeParent
) {
190 TreeParent tp
= (TreeParent
) firstElement
;
191 String wsName
= tp
.getName();
193 // Build conditions depending on element type (repo or distribution
194 // for the time being)
195 boolean isDistribElem
= false; // , isRepoElem = false;
197 // if (tp instanceof RepositoryElem){
198 // isRepoElem = true;
200 if (tp
instanceof DistributionElem
) {
201 isDistribElem
= true;
205 CommandHelpers
.refreshCommand(menuManager
, window
,
206 CreateWorkspace
.ID
, CreateWorkspace
.DEFAULT_LABEL
,
207 CreateWorkspace
.DEFAULT_ICON_PATH
, !isDistribElem
);
209 // Normalize workspace
210 Map
<String
, String
> params
= new HashMap
<String
, String
>();
211 params
.put(NormalizeDistribution
.PARAM_WORKSPACE
, wsName
);
212 CommandHelpers
.refreshParameterizedCommand(menuManager
, window
,
213 NormalizeDistribution
.ID
,
214 NormalizeDistribution
.DEFAULT_LABEL
,
215 NormalizeDistribution
.DEFAULT_ICON_PATH
, isDistribElem
,
219 params
= new HashMap
<String
, String
>();
220 params
.put(CopyWorkspace
.PARAM_WORKSPACE_NAME
, wsName
);
221 CommandHelpers
.refreshParameterizedCommand(menuManager
, window
,
222 CopyWorkspace
.ID
, CopyWorkspace
.DEFAULT_LABEL
,
223 CopyWorkspace
.DEFAULT_ICON_PATH
, isDistribElem
, params
);
226 params
= new HashMap
<String
, String
>();
227 params
.put(DeleteWorkspace
.PARAM_WORKSPACE_NAME
, wsName
);
228 CommandHelpers
.refreshParameterizedCommand(menuManager
, window
,
229 DeleteWorkspace
.ID
, DeleteWorkspace
.DEFAULT_LABEL
,
230 DeleteWorkspace
.DEFAULT_ICON_PATH
, isDistribElem
, params
);
232 // Manage workspace authorizations
233 params
= new HashMap
<String
, String
>();
234 params
.put(ManageWorkspaceAuth
.PARAM_WORKSPACE_NAME
, wsName
);
235 CommandHelpers
.refreshParameterizedCommand(menuManager
, window
,
236 ManageWorkspaceAuth
.ID
, ManageWorkspaceAuth
.DEFAULT_LABEL
,
237 ManageWorkspaceAuth
.DEFAULT_ICON_PATH
, isDistribElem
,
243 public void setFocus() {
244 viewer
.getTree().setFocus();
248 * DEPENDENCY INJECTION
251 * Force refresh of the whole view
253 public void refresh() {
254 viewer
.setContentProvider(new DistributionsContentProvider());
257 public void setNodeRepository(Repository repository
) {
258 this.nodeRepository
= repository
;
261 public void setRepositoryFactory(RepositoryFactory repositoryFactory
) {
262 this.repositoryFactory
= repositoryFactory
;
265 public void setKeyring(Keyring keyring
) {
266 this.keyring
= keyring
;
272 /** Content provider */
273 private class DistributionsContentProvider
implements ITreeContentProvider
{
275 List
<RepoElem
> repositories
= new ArrayList
<RepoElem
>();
277 public Object
[] getElements(Object input
) {
278 Repository nodeRepository
= (Repository
) input
;
280 if (nodeSession
!= null)
282 nodeSession
= nodeRepository
.login();
284 String reposPath
= UserJcrUtils
.getUserHome(nodeSession
)
285 .getPath() + RepoConstants
.REPOSITORIES_BASE_PATH
;
286 NodeIterator repos
= nodeSession
.getNode(reposPath
).getNodes();
287 while (repos
.hasNext()) {
288 Node repoNode
= repos
.nextNode();
289 if (repoNode
.isNodeType(ArgeoTypes
.ARGEO_REMOTE_REPOSITORY
)) {
290 repositories
.add(new RepoElem(repoNode
));
293 } catch (RepositoryException e
) {
294 throw new SlcException("Cannot get base elements", e
);
296 return repositories
.toArray();
299 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {
303 public Object
[] getChildren(Object parentElement
) {
304 if (parentElement
instanceof RepoElem
) {
305 return ((RepoElem
) parentElement
).getChildren();
306 } else if (parentElement
instanceof DistributionElem
) {
307 return ((DistributionElem
) parentElement
).getChildren();
312 public Object
getParent(Object element
) {
313 // TODO register repo elem in distirbution elem?
317 public boolean hasChildren(Object element
) {
318 if (element
instanceof RepoElem
) {
320 } else if (element
instanceof DistributionElem
) {
326 public void dispose() {
327 for (RepoElem repoElem
: repositories
)
329 repositories
= new ArrayList
<RepoElem
>();
330 JcrUtils
.logoutQuietly(nodeSession
);
335 /** A software repository */
336 private class RepoElem
{
337 private Node repoNode
;
339 private Repository repository
;
340 private Credentials credentials
;
342 public RepoElem(Node repoNode
) {
343 this.repoNode
= repoNode
;
346 /** Lazily connects to repository */
347 protected void connect() {
348 if (repository
!= null)
350 repository
= RepoUtils
.getRepository(repositoryFactory
, keyring
,
352 credentials
= RepoUtils
.getRepositoryCredentials(keyring
, repoNode
);
355 public String
getLabel() {
357 if (repoNode
.isNodeType(NodeType
.MIX_TITLE
)) {
358 return repoNode
.getProperty(Property
.JCR_TITLE
).getString();
360 return repoNode
.getName();
362 } catch (RepositoryException e
) {
363 throw new SlcException("Cannot read label of " + repoNode
, e
);
367 public String
toString() {
368 return repoNode
.toString();
371 public Object
[] getChildren() {
373 Session session
= null;
375 session
= repository
.login(credentials
);
376 String
[] workspaceNames
= session
.getWorkspace()
377 .getAccessibleWorkspaceNames();
378 List
<DistributionElem
> distributionElems
= new ArrayList
<DistributionElem
>();
379 for (String workspaceName
: workspaceNames
) {
380 Node workspaceNode
= repoNode
.hasNode(workspaceName
) ? repoNode
381 .getNode(workspaceName
) : repoNode
382 .addNode(workspaceName
);
383 repoNode
.getSession().save();
384 distributionElems
.add(new DistributionElem(this,
386 // FIXME remove deleted workspaces
388 return distributionElems
.toArray();
389 } catch (RepositoryException e
) {
390 throw new SlcException(
391 "Cannot list workspaces for " + repoNode
, e
);
393 JcrUtils
.logoutQuietly(session
);
397 public void dispose() {
400 public Node
getRepoNode() {
404 public String
getRepoPath() {
406 return repoNode
.getPath();
407 } catch (RepositoryException e
) {
408 throw new SlcException("Cannot get path for " + repoNode
, e
);
412 public Repository
getRepository() {
417 public Credentials
getCredentials() {
423 /** Abstracts a distribution, that is a workspace */
424 private static class DistributionElem
extends TreeParent
{
425 private final RepoElem repoElem
;
426 private final Node workspaceNode
;
428 public DistributionElem(RepoElem repoElem
, Node workspaceNode
) {
429 super(JcrUtils
.getNameQuietly(workspaceNode
));
430 this.repoElem
= repoElem
;
431 this.workspaceNode
= workspaceNode
;
434 public Node
getWorkspaceNode() {
435 return workspaceNode
;
438 public String
getWorkspaceName() {
439 return JcrUtils
.getNameQuietly(workspaceNode
);
442 public String
getWorkspacePath() {
444 return workspaceNode
.getPath();
445 } catch (RepositoryException e
) {
446 throw new SlcException("Cannot get or add workspace path "
447 + getWorkspaceName(), e
);
451 public String
getRepoPath() {
453 return workspaceNode
.getParent().getPath();
454 } catch (RepositoryException e
) {
455 throw new SlcException("Cannot get or add workspace path "
456 + getWorkspaceName(), e
);
460 public RepoElem
getRepoElem() {
464 public Credentials
getCredentials() {
465 return repoElem
.getCredentials();
469 /** Listens to drag */
470 class ViewDragListener
extends DragSourceAdapter
{
471 public void dragSetData(DragSourceEvent event
) {
472 IStructuredSelection selection
= (IStructuredSelection
) viewer
474 if (selection
.getFirstElement() instanceof DistributionElem
) {
475 DistributionElem de
= (DistributionElem
) selection
477 if (TextTransfer
.getInstance().isSupportedType(event
.dataType
)) {
478 event
.data
= de
.getWorkspacePath();
484 /** Listens to drop */
485 class ViewDropListener
extends ViewerDropAdapter
{
487 public ViewDropListener(Viewer viewer
) {
492 public boolean performDrop(Object data
) {
493 DistributionElem sourceDist
= (DistributionElem
) getSelectedObject();
494 RepoElem targetRepo
= (RepoElem
) getCurrentTarget();
496 Boolean ok
= MessageDialog
.openConfirm(getSite().getShell(),
497 "Confirm distribution merge", "Do you want to merge "
498 + sourceDist
.getWorkspaceName() + " (from repo "
499 + sourceDist
.getRepoElem().getLabel()
500 + ") to repo " + targetRepo
.getLabel() + "?");
505 String sourceWorkspace
= sourceDist
.getWorkspaceName();
506 Repository sourceRepository
= RepoUtils
.getRepository(
507 repositoryFactory
, keyring
, sourceDist
508 .getWorkspaceNode().getParent());
509 Credentials sourceCredentials
= RepoUtils
510 .getRepositoryCredentials(keyring
, sourceDist
511 .getWorkspaceNode().getParent());
513 String targetWorkspace
= sourceWorkspace
;
514 Repository targetRepository
= RepoUtils
.getRepository(
515 repositoryFactory
, keyring
, targetRepo
.getRepoNode());
516 Credentials targetCredentials
= RepoUtils
517 .getRepositoryCredentials(keyring
,
518 targetRepo
.getRepoNode());
520 // Open sessions here since the background thread
521 // won't necessarily be authenticated.
522 // Job should close the sessions.
523 Session sourceSession
= sourceRepository
.login(
524 sourceCredentials
, sourceWorkspace
);
525 Session targetSession
;
527 targetSession
= targetRepository
.login(targetCredentials
,
529 } catch (NoSuchWorkspaceException e
) {
530 Session defaultSession
= targetRepository
531 .login(targetCredentials
);
533 defaultSession
.getWorkspace().createWorkspace(
535 } catch (Exception e1
) {
536 throw new SlcException("Cannot create new workspace "
537 + targetWorkspace
, e
);
539 JcrUtils
.logoutQuietly(defaultSession
);
541 targetSession
= targetRepository
.login(targetCredentials
,
545 Job workspaceMergeJob
= new WorkspaceMergeJob(sourceSession
,
547 workspaceMergeJob
.setUser(true);
548 workspaceMergeJob
.schedule();
550 } catch (RepositoryException e
) {
551 throw new SlcException("Cannot process drop from " + sourceDist
552 + " to " + targetRepo
, e
);
557 public boolean validateDrop(Object target
, int operation
,
558 TransferData transferType
) {
559 if (target
instanceof RepoElem
) {
560 if (getSelectedObject() instanceof DistributionElem
) {
561 // check if not same repository
562 String srcRepoPath
= ((DistributionElem
) getSelectedObject())
564 String targetRepoPath
= ((RepoElem
) target
).getRepoPath();
565 return !targetRepoPath
.equals(srcRepoPath
);
572 private static class WorkspaceMergeJob
extends Job
{
573 private Session sourceSession
;
574 private Session targetSession
;
576 public WorkspaceMergeJob(Session sourceSession
, Session targetSession
) {
577 super("Workspace merge");
578 this.sourceSession
= sourceSession
;
579 this.targetSession
= targetSession
;
583 protected IStatus
run(IProgressMonitor eclipseMonitor
) {
584 long begin
= System
.currentTimeMillis();
586 // Not implemented in Davex Jackrabbit v2.2
587 // Query countQuery = sourceSession.getWorkspace()
588 // .getQueryManager()
589 // .createQuery("//element(*, nt:file)", Query.XPATH);
590 // QueryResult result = countQuery.execute();
591 // Long expectedCount = result.getNodes().getSize();
593 Query countQuery
= sourceSession
596 .createQuery("select file from [nt:file] as file",
598 QueryResult result
= countQuery
.execute();
599 Long expectedCount
= result
.getNodes().getSize();
600 // Long expectedCount =
601 // result.getRows().nextRow().getValues()[0]
604 // Long expectedCount = JcrUtils.countFiles(sourceSession
606 if (log
.isDebugEnabled())
607 log
.debug("Will copy " + expectedCount
+ " files...");
609 ArgeoMonitor monitor
= new EclipseArgeoMonitor(eclipseMonitor
);
611 .beginTask("Copy files", expectedCount
.intValue());
613 Long count
= JcrUtils
.copyFiles(sourceSession
.getRootNode(),
614 targetSession
.getRootNode(), true, monitor
);
617 long duration
= (System
.currentTimeMillis() - begin
) / 1000;// in
619 if (log
.isDebugEnabled())
620 log
.debug("Copied " + count
+ " files in "
621 + (duration
/ 60) + "min " + (duration
% 60) + "s");
623 return Status
.OK_STATUS
;
624 } catch (RepositoryException e
) {
625 return new Status(IStatus
.ERROR
, DistPlugin
.ID
, "Cannot merge",
628 JcrUtils
.logoutQuietly(sourceSession
);
629 JcrUtils
.logoutQuietly(targetSession
);
634 /** Listen to double-clicks */
635 private class DistributionsDCL
implements IDoubleClickListener
{
637 public void doubleClick(DoubleClickEvent event
) {
638 if (event
.getSelection() == null || event
.getSelection().isEmpty())
640 Object obj
= ((IStructuredSelection
) event
.getSelection())
642 if (obj
instanceof DistributionElem
) {
643 DistributionElem distributionElem
= (DistributionElem
) obj
;
644 DistributionEditorInput dei
= new DistributionEditorInput(
645 distributionElem
.getName(), distributionElem
646 .getRepoElem().getRepository(),
647 distributionElem
.getWorkspaceName(),
648 distributionElem
.getCredentials());
650 DistPlugin
.getDefault().getWorkbench()
651 .getActiveWorkbenchWindow().getActivePage()
652 .openEditor(dei
, DistributionEditor
.ID
);
653 } catch (PartInitException e
) {
654 ErrorFeedback
.show("Cannot open editor for "
655 + distributionElem
.getWorkspaceName(), e
);
663 // nodeSession = nodeRepository.login();
664 // NodeIterator repos = JcrUtils.mkdirs(
666 // UserJcrUtils.getUserHome(nodeSession).getPath()
667 // + RepoConstants.REPOSITORIES_BASE_PATH).getNodes();
668 // while (repos.hasNext()) {
669 // Node repository = repos.nextNode();
670 // String label = null;
671 // if (repository.isNodeType(NodeType.MIX_TITLE)) {
672 // label = repository.getProperty(Property.JCR_TITLE)
676 // if (repository.isNodeType(ArgeoTypes.ARGEO_REMOTE_REPOSITORY)) {
677 // String uri = repository.getProperty(ARGEO_URI).getString();
678 // Credentials credentials = null;
679 // if (repository.hasProperty(ARGEO_USER_ID)) {
680 // String userId = repository.getProperty(ARGEO_USER_ID)
682 // credentials = new SimpleCredentials(userId,
683 // "".toCharArray());
685 // Repository remoteRepository = ArgeoJcrUtils
686 // .getRepositoryByUri(repositoryFactory, uri);
687 // if (label == null)
688 // label = repository.getName();
689 // repositories.add(new RepositoryElem(label,
690 // remoteRepository, credentials));
693 // } catch (RepositoryException e) {
694 // throw new ArgeoException("Cannot read registered repositories", e);
698 // String uri = null;
699 // Credentials credentials = null;
700 // Repository remoteRepository = null;
703 // uri = "http://dev.argeo.org/org.argeo.jcr.webapp/pub/java";
704 // credentials = new GuestCredentials();
705 // remoteRepository =
706 // ArgeoJcrUtils.getRepositoryByUri(repositoryFactory, uri);
707 // repositories.add(new RepositoryElem("anonymous@dev.argeo.org//java",
708 // remoteRepository, credentials));
709 // } catch (Exception e) {
710 // e.printStackTrace();
713 // uri = "http://localhost:7070/org.argeo.jcr.webapp/pub/java";
714 // credentials = new GuestCredentials();
715 // remoteRepository =
716 // ArgeoJcrUtils.getRepositoryByUri(repositoryFactory, uri);
717 // repositories.add(new RepositoryElem("anonymous@localhost//java",
718 // remoteRepository, credentials));
720 // uri = "http://localhost:7070/org.argeo.jcr.webapp/remoting/java";
721 // credentials = new SimpleCredentials(System.getProperty("user.name"),
722 // "".toCharArray());
723 // remoteRepository =
724 // ArgeoJcrUtils.getRepositoryByUri(repositoryFactory, uri);
725 // repositories.add(new RepositoryElem("@localhost//java",
726 // remoteRepository, credentials));