blob: 149f8cc79b13b102e3055ac47f9617abe906555b [file] [log] [blame]
##
## This file contains a history of the changes to the API related to
## Tigerstripe project management
##
##########################################
## Overall
X - Users should be able to create new Tigerstripe projects from the TigerstripeCore. This should
trigger the creation of all the necessary files in the project. IProjectSession is
useless and should be removed
X - Users should not be concerned with caching mechanism. (remove cache mentions from API)
X - There are currently 2 types of projects handled thru a TigerstripeProjectFactory (internal).
- ITigerstripeProject should be renamed to IModelProject
- IPluggablePluginProject should be part of API and renamed as IPluginProject
- IProjectChangeListener should be part of the API (move out of internal).
- IPhantomTigerstripeProject should be part of the API (move out of internal).
- INameProvider should be removed altogether.
- ITigerstripeVisitor should be part of the API (move out of internal)
- IAbstractTigerstripeProject should be renamed to ITigerstripeProject
- IProjectDescriptor should be removed altogether as users should only be concerned with
project handles, and not have to worry about the project descriptors.
- The API should use Eclipse resources rather than URI, java.io.File, or anything else
- IAbstractTigerstripeProject should implement IAdaptable
- Additional adapters should be implemented in a factory to adapt
- IProject to IAbstractTigerstripeProject
- IProjectSession should be removed once refactor is complete. It has been commented out and
kept in the meantime for reference.
## Plugin Projects
## Project lifecycle
- Users only manipulate project Handles (IAbstractTigerstripeProject)
- Project handles should implement IWorkingCopy to allow for editing.
- Projects as returned by TigerstripeCore are always "workingCopies". Any change on them
must be committed so the underlying descriptors can be updated in an atomic operation.
- IDependency should be renamed to IModuleProject
- There should be 2 types of dependencies:
- inheriting IProjectDependency
- IModuleProject (ex IDependency)
- IReferencedProject
- doSave() method to be removed from IAbstractTigerstripeProject
- getURI() to be removed from IAbstractTigerstripeProject
- getProjectLabel to be removed from IAbstractTigerstripeProject
- getBaseDir() to be replaced by IPath getFullPath() and IPath getLocation() similar to resources
and should return the corresponding folder location.