[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[equinox-dev] [prov] repository refactoring changes released

With the help of Pascal and Stefan I have been reviewing the repository code and making a few changes.  With DJ and Pascal's help these changes have now been released.  Some change notes...

- Without a doubt you will have to regenerate metadata and profiles
- The repository APIs have now been completely harmonized so that Artifact and Metadata repos/managers are very much the same.  We should look for reasonable code sharing opportunities but for now the consumer experience is consistent
- Repositories are unifromly identified by their location URL
- Location URLs NEVER include the file name. That is, they are ALWAYS (in the case of our current repos) the folder that contains the repo.  This means you should never have to mess arond with adding/removing segments to the repo location.  Further the name of the file(s) used to store repo information are treated as internal implementation detail.
- Repo mangaers now have the ability to add, load or create repos.  No more free creation of repos using add() since there is no way of knowing what type of repo to add
- Repos types (metadata and artifact) are contributed by extensions and the extension names a FACTORY not the actual class
- Stefan's processing step functionality has been integrated.  This means we are very close to supporting deltas and pack200 etc.  
- the artifact repo API has been updated to allow for descriptor discrimination.  That is, rather than just getting an artifactkey you can choose an artifactDescriptor to use in getting the artifact.
- the metadata generator (and selfhosting) both use IWriteable*Repository now
- the ability to have multiple nested metadata repositories has been removed. If we still need that it can be added back by having an explicit compound repository.
- there is still some work to do in the repository class hierarchy...
- RequestHandler is now Transport
- Introduced IArtifactRequest and made ArtifactRequest internal

Invariably I have missed some things.  The changes were quite widespread and in some cases extensive.  Please update to HEAD and report any issues.  


BTW, before releasing all changed projects were tagged as "beforeRepoRefactoring0917"