Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 223594 Details for
Bug 393555
Prevent creation of project with same name
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
enforces unique project-names.
unique_name.patch (text/plain), 10.79 KB, created by
Tobias Verhoeven
on 2012-11-15 05:59:02 EST
(
hide
)
Description:
enforces unique project-names.
Filename:
MIME Type:
Creator:
Tobias Verhoeven
Created:
2012-11-15 05:59:02 EST
Size:
10.79 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.emf.ecp.core >diff --git src/org/eclipse/emf/ecp/internal/core/ECPProjectManagerImpl.java src/org/eclipse/emf/ecp/internal/core/ECPProjectManagerImpl.java >index 77df835..cdc09e7 100644 >--- src/org/eclipse/emf/ecp/internal/core/ECPProjectManagerImpl.java >+++ src/org/eclipse/emf/ecp/internal/core/ECPProjectManagerImpl.java >@@ -31,6 +31,8 @@ > import org.eclipse.core.runtime.IStatus; > import org.eclipse.core.runtime.Status; > >+import javax.naming.NameAlreadyBoundException; >+ > import java.io.IOException; > import java.io.ObjectInput; > import java.util.Collections; >@@ -49,19 +51,30 @@ > private ECPProjectManagerImpl() { > } > >- public ECPProject createProject(ECPProvider provider, String name) { >+ public ECPProject createProject(ECPProvider provider, String name) throws NameAlreadyBoundException { > return this.createProject(provider, name, ECPUtil.createProperties()); > } > >- public ECPProject createProject(ECPProvider provider, String name, ECPProperties properties) { >+ public ECPProject createProject(ECPProvider provider, String name, ECPProperties properties) >+ throws NameAlreadyBoundException { >+ if (projectExists(name)) { >+ throw new NameAlreadyBoundException("A project with name " + name + " already exists"); >+ } > InternalProject project = new ECPProjectImpl((InternalProvider) provider, name, properties); > return createProject(project); > } > >- public ECPProject createProject(ECPRepository repository, String name, ECPProperties properties) { >+ public ECPProject createProject(ECPRepository repository, String name, ECPProperties properties) >+ throws NameAlreadyBoundException { >+ if (projectExists(name)) { >+ throw new NameAlreadyBoundException("A project with name " + name + " already exists"); >+ } > InternalProject project = new ECPProjectImpl(repository, name, properties); > return createProject(project); >+ } > >+ private boolean projectExists(String name) { >+ return getProject(name) != null; > } > > /** >@@ -71,6 +84,7 @@ > private ECPProject createProject(InternalProject project) { > project.getProvider().handleLifecycle(project, LifecycleEvent.CREATE); > changeElements(null, Collections.singleton(project)); >+ > return project; > } > >#P org.eclipse.emf.ecp.emfstore.core >diff --git src/org/eclipse/emf/ecp/emfstore/core/internal/EMFStoreProjectWrapper.java src/org/eclipse/emf/ecp/emfstore/core/internal/EMFStoreProjectWrapper.java >index d154938..9a015a2 100644 >--- src/org/eclipse/emf/ecp/emfstore/core/internal/EMFStoreProjectWrapper.java >+++ src/org/eclipse/emf/ecp/emfstore/core/internal/EMFStoreProjectWrapper.java >@@ -8,49 +8,45 @@ > import org.eclipse.emf.ecp.spi.core.InternalRepository; > import org.eclipse.emf.emfstore.client.model.ProjectSpace; > >-public class EMFStoreProjectWrapper implements ECPCheckoutSource >-{ >+import javax.naming.NameAlreadyBoundException; > >- private final InternalRepository repository; >+public class EMFStoreProjectWrapper implements ECPCheckoutSource { > >- private final EMFStoreCheckoutData checkoutData; >+ private final InternalRepository repository; > >- // private final ProjectInfo projectInfo; >- // >- // private final ServerInfo serverInfo; >+ private final EMFStoreCheckoutData checkoutData; > >- public EMFStoreProjectWrapper(InternalRepository repository, EMFStoreCheckoutData checkoutData) >- { >- this.repository = repository; >- // this.projectInfo = projectInfo; >- // this.serverInfo = serverInfo; >- this.checkoutData = checkoutData; >- } >+ // private final ProjectInfo projectInfo; >+ // >+ // private final ServerInfo serverInfo; > >- public ECPRepository getRepository() >- { >- // TODO Auto-generated method stub >- return repository; >- } >+ public EMFStoreProjectWrapper(InternalRepository repository, EMFStoreCheckoutData checkoutData) { >+ this.repository = repository; >+ // this.projectInfo = projectInfo; >+ // this.serverInfo = serverInfo; >+ this.checkoutData = checkoutData; >+ } > >- public ECPProvider getProvider() >- { >- return repository.getProvider(); >- } >+ public ECPRepository getRepository() { >+ // TODO Auto-generated method stub >+ return repository; >+ } > >- public String getDefaultCheckoutName() >- { >- return checkoutData.getProjectInfo().getName(); >- } >+ public ECPProvider getProvider() { >+ return repository.getProvider(); >+ } > >- public void checkout(String projectName, ECPProperties projectProperties) >- { >- ProjectSpace projectSpace = EMFStoreProvider.INSTANCE.getUIProvider().getAdapter(checkoutData, ProjectSpace.class); >- if (projectSpace != null) >- { >- projectProperties.addProperty(EMFStoreProvider.PROP_PROJECTSPACEID, projectSpace.getIdentifier()); >- } >- ECPProjectManager.INSTANCE.createProject(getRepository(), projectName, projectProperties); >- } >+ public String getDefaultCheckoutName() { >+ return checkoutData.getProjectInfo().getName(); >+ } >+ >+ public void checkout(String projectName, ECPProperties projectProperties) throws NameAlreadyBoundException { >+ ProjectSpace projectSpace = EMFStoreProvider.INSTANCE.getUIProvider().getAdapter(checkoutData, >+ ProjectSpace.class); >+ if (projectSpace != null) { >+ projectProperties.addProperty(EMFStoreProvider.PROP_PROJECTSPACEID, projectSpace.getIdentifier()); >+ } >+ ECPProjectManager.INSTANCE.createProject(getRepository(), projectName, projectProperties); >+ } > > } >#P org.eclipse.emf.ecp.ui >diff --git src/org/eclipse/emf/ecp/ui/common/dnd/ComposedDropAdapter.java src/org/eclipse/emf/ecp/ui/common/dnd/ComposedDropAdapter.java >index 536dc75..470b742 100644 >--- src/org/eclipse/emf/ecp/ui/common/dnd/ComposedDropAdapter.java >+++ src/org/eclipse/emf/ecp/ui/common/dnd/ComposedDropAdapter.java >@@ -37,6 +37,8 @@ > import org.eclipse.swt.graphics.Rectangle; > import org.eclipse.swt.widgets.TreeItem; > >+import javax.naming.NameAlreadyBoundException; >+ > import java.util.ArrayList; > import java.util.Collection; > import java.util.HashMap; >@@ -125,8 +127,13 @@ > offlineProvider = provider; > } > } >- ECPProject projectCopy = ECPProjectManager.INSTANCE.createProject(offlineProvider, project.getName() >- + " (Copy)", ECPUtil.createProperties()); >+ ECPProject projectCopy = null; >+ try { >+ projectCopy = ECPProjectManager.INSTANCE.createProject(offlineProvider, project.getName() + " (Copy)", >+ ECPUtil.createProperties()); >+ } catch (NameAlreadyBoundException ex) { >+ // FIXME: if project with supplied name already exists drop will fail >+ } > > for (EObject eObject : project.getElements()) { > projectCopy.getElements().add(EcoreUtil.copy(eObject)); >diff --git src/org/eclipse/emf/ecp/ui/util/HandlerHelper.java src/org/eclipse/emf/ecp/ui/util/HandlerHelper.java >index 2947a1f..7dead33 100644 >--- src/org/eclipse/emf/ecp/ui/util/HandlerHelper.java >+++ src/org/eclipse/emf/ecp/ui/util/HandlerHelper.java >@@ -39,6 +39,8 @@ > import org.eclipse.jface.viewers.IStructuredSelection; > import org.eclipse.swt.widgets.Shell; > >+import javax.naming.NameAlreadyBoundException; >+ > import java.util.ArrayList; > import java.util.Collection; > import java.util.HashSet; >@@ -58,7 +60,12 @@ > if (AbstractUICallback.OK == callback.open()) { > String projectName = checkoutCompposite.getProjectName(); > ECPProperties projectProperties = checkoutCompposite.getProjectProperties(); >- checkoutSource.checkout(projectName, projectProperties); >+ try { >+ checkoutSource.checkout(projectName, projectProperties); >+ } catch (NameAlreadyBoundException ex) { >+ callback.showError("Cannot checkout project", "A project with name " + projectName >+ + " already exists in the workspace."); >+ } > } > } > } >@@ -90,8 +97,14 @@ > ECPProperties projectProperties = ECPUtil.createProperties(); > > String projectName = createProjectComposite.getProjectName(); >- ECPProject project = ECPProjectManager.INSTANCE.createProject(selectedProvider, projectName, >- projectProperties); >+ ECPProject project = null; >+ try { >+ project = ECPProjectManager.INSTANCE.createProject(selectedProvider, projectName, projectProperties); >+ } catch (NameAlreadyBoundException ex) { >+ callback.showError("No project created", "A project with name " + projectName >+ + " already exists in the workspace."); >+ return null; >+ } > if (project == null) { > callback.showError("No project created", "Please check the log."); > return null; >#P org.eclipse.emf.ecp.workspace.core >diff --git src/org/eclipse/emf/ecp/workspace/internal/core/RepositoryResourceWrapper.java src/org/eclipse/emf/ecp/workspace/internal/core/RepositoryResourceWrapper.java >index ca8e8db..75be79b 100644 >--- src/org/eclipse/emf/ecp/workspace/internal/core/RepositoryResourceWrapper.java >+++ src/org/eclipse/emf/ecp/workspace/internal/core/RepositoryResourceWrapper.java >@@ -4,9 +4,8 @@ > * are made available under the terms of the Eclipse Public License v1.0 > * which accompanies this distribution, and is available at > * http://www.eclipse.org/legal/epl-v10.html >- * > * Contributors: >- * Eike Stepper - initial API and implementation >+ * Eike Stepper - initial API and implementation > */ > package org.eclipse.emf.ecp.workspace.internal.core; > >@@ -18,35 +17,31 @@ > > import org.eclipse.core.resources.IResource; > >+import javax.naming.NameAlreadyBoundException; >+ > /** > * @author Eike Stepper > */ >-public class RepositoryResourceWrapper extends ResourceWrapper<InternalRepository> implements ECPCheckoutSource >-{ >- public RepositoryResourceWrapper(ECPRepository repository, IResource resource) >- { >- super((InternalRepository)repository, resource); >- } >+public class RepositoryResourceWrapper extends ResourceWrapper<InternalRepository> implements ECPCheckoutSource { >+ public RepositoryResourceWrapper(ECPRepository repository, IResource resource) { >+ super((InternalRepository) repository, resource); >+ } > >- public InternalRepository getRepository() >- { >- return getContext(); >- } >+ public InternalRepository getRepository() { >+ return getContext(); >+ } > >- public String getDefaultCheckoutName() >- { >- return getName(); >- } >+ public String getDefaultCheckoutName() { >+ return getName(); >+ } > >- public void checkout(String projectName, ECPProperties projectProperties) >- { >- projectProperties.addProperty(WorkspaceProvider.PROP_ROOT_URI, getURI().toString()); >- ECPProjectManager.INSTANCE.createProject(getRepository(), projectName, projectProperties); >- } >+ public void checkout(String projectName, ECPProperties projectProperties) throws NameAlreadyBoundException { >+ projectProperties.addProperty(WorkspaceProvider.PROP_ROOT_URI, getURI().toString()); >+ ECPProjectManager.INSTANCE.createProject(getRepository(), projectName, projectProperties); >+ } > >- @Override >- protected Object createChild(InternalRepository repository, IResource member) >- { >- return new RepositoryResourceWrapper(repository, member); >- } >+ @Override >+ protected Object createChild(InternalRepository repository, IResource member) { >+ return new RepositoryResourceWrapper(repository, member); >+ } > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
eneufeld
:
iplog+
Actions:
View
|
Diff
Attachments on
bug 393555
: 223594