blob: da2f8f3b64c899c10dc19926b9946ae12fef8836 [file] [log] [blame]
##
## Notes on API refactoring
##
## All completed items have "X" in front of them
## Rc change on Thursday 24 - 01 have an "R" in front of them
##
###################################
###################################
Global Changes
X - Rename API to TigerstripeCore for coherency with JavaCore.
X - Create InternalTigerstripeCore to host all methods removed from TigerstripeCore until
further decision.
X - Remove project locator facility stuff from TigerstripeCore: this should be removed
completely, but in the meantime should be on InternalTigerstripeCore
X - Move ArtifactMetadataSession from TigerstripeCore into InternalTigerstripeCore for now.
Eventually this should be moved to org.eclipse.tigerstripe.model when available.
R - "TigerstripeProject.java" should be renamed as "TigerstripeProjectDescriptor.java"
X - rename methods on TigerstripeCore for consistency: getProjectSession and getProfileSession
R - IPluginAwareArtifactModel.java should be removed and combined with IArtifactModel.java. (Also changed the calls to this model)
R - IPluggablePluginProperty should be renamed as ITigerstripePluginProperty.
R - IBooleanPPluginProperty to be renamed as IBooleanPluginProperty (no need for "PP"). Same for IStringPPluginProperty, ITablePPluginProperty
- Remove all "Warnings" from the API (i.e. no warning allowed outside of internal package).
R - QueryArtifact now returns a Collection<IAbstractArtifact>
- getSupportedArtifactClasses returms Class[] - not sure what this should be Class<IAbstractArtifact> ?
- Overtime we'll get rid of the warnings inside internal package.
- ILabel should really be ILiteral?
- All the startup procedure should be revisited (TigerstripeRuntime, and PostInstallOptions to be removed and
replaced by some Runtime details available directly from TigerstripeCore.
X - PluginRunResult renamed to PluginRunStatus, also made it a MultiStatus.
R - Remove IQueryCapabilitiesArtifacts.jave
R - Remove IQueryModelArtifacts.java
R - Remove IQuerySessionArtifacts.java
X - Moved references to IProjectSession to InternalTigerstripeCore to provide new simpler API for
project management directly on TigerstripeCore.
X - References to ITigerstripeProgressMonitor should be removed from the API. In fact, a proper
IProgressMonitor (from Eclipse) should be used instead.
###################################
In IAbstractTigerstripeProject
R - getIProjectDetails() and getProjectDetails are redundant. Keep getProjectDetails() and make
that a convention (no "I" in accessor as seems to be convention in other eclipse plugins
e.g.: IResource.getProject() returns IProject
###################################
In ITigerstripeProject
X - remove getPublisher(), also removed corresponding actions/wizard from ui.
X - remove getCVSCreator(), also removed corresponding actions/wizard from ui.
- Since Facet/UseCases are "internal" no reference to them should be made in here! Not sure
how to best handle this case. I suspect same case exists for other interfaces.
R - Remove all "getI***()" methods to keep only "get****()"
R - Remove all "makeI***()" methods to keep only "make***()"
R - getProjectDetails() is redundant with IProjectDescriptor.getProjectDetails(). Should be removed
from ITigerstripeProject
X - IAbstractTigerstripeProject should implement IAdaptable
X - TigerstripeError (in internal.utils) should be replaced with IStatus from Eclipse.
###################################
In IProjectDetails
R - remove references to OSSJ - Note this meant their removal from the GUI
- it seems it could be reworked. For example the "getProjectLabel()" on
IProjectDescriptor could make sense here instead?
###################################
In IPluginReference
- the name IPluginReference doesn't seem appropriate anymore? Seems more like a "IPluginConfig"?
R - remove any method marked as deprecated
###################################
In IAssociationEnd
- we should make provision in the API already for multiplicities that are 3..7 as opposed to
using an enumeration. Not sure how to handle this. It seems the API should support it
already even if the implementation reverts back to the closest value of the current
enumeration internally. It may be as simple as adding a "CUSTOM" literal where we'd
keep the actual upper and lower bounds?
R - getContainingAssociation() and should return an IAssociation
R - remove getType and rename getIType to getType !
R - Move Multiplicity Enum to IModelComponent
###################################
in IModelComponent
R - Visibility should be an Enum, not a bunch statics
- "isInActiveFacet" should be extracted from here. Maybe in a "IFacetCapable" interface that
would live in the internal package for now and would further be implemented by IModelComponent
when we expose facets.
###################################
In IAbstractArtifact
X - remove the "I" from the getters/setters and makeI*** methods for consistency.
X - This is bizarre - all of the getIxxx return an Array of stuff, but the (internal) getxxx methods return a Collection. I prefer the latter (made generic), but I'm scared of the impacts...
This is all returning Collection<xxx> now
- doSave() and doSilentSave() need to be reworked. What should really be the "persistence" method knowing that multiple
persistence options could be envisioned?
- asText() should be removed as it is only relevant to POJO persistence.
- write(...) should be removed as it is only relevant to POJO persistence.
R - getReferencedArtifacts and getReferencedIArtifacts return Artifcats and Strings respectively. This is inconsistent. And the implementation are duplicating much of the same code.
Need to review the requirements of this class to see if Assocs should be handled as well.
R - more methods to return Collections -getAncestors etc
###################################
In IAssociationClassArtifact
X - Removed all superfluous add/set/remove/get Fields that are inherited from IAbstractArtifact anyway.
###################################
In IWorkbenchProfile
R - remove all returned arrays and replace with corresponding collections.
R - removed "writing" methods
- parse(..) and asText(..) should be removed.
###################################
in IArtifactManagerSession
- remove extractArtifact
- remove extractArtifactModel
- Revisit once Artifact lifecycle is clarified.
R - Change Arrays to Collections
###################################
in IType
- remove deprecated methods/fields - this has very far reaching consequences
##################################
IStereotypeCapabable, IStereoType (See also IMethod)
R - change ArrayBased methods to Collection