angelozerr/tern.java — pull request #154 by piotrtomiak (2014-10-15 21:24:53+00:00)
Title: Issue #149: reorganization of file managment API.

This is a significant refactoring of file management in Tern.java. Main points of reorganization are:

1. Most of the file management operations take advantages of abstrcted file management and is moved to core plugin allowing for easier integration with non-Eclipse IDEs and easier adpotion in non-Eclipse applications
2. Server file synchronization is done entirely via ITernCacheManagement. All code related to synchronization has been moved from IDETernProject class
3. All file access operations are done through ITernFile allowing various extensions in the future, like e.g. URL based file.
4. All request(***) methods are now in ITernProject. Argument list has been simplified and only two versions are left - basic one with ITernFile as main parameter and a full version required in AngularJS support
5. General DOM provisioning is moved to core plugin.
6. Script path provisioning has been abstracted and is used by CacheManager to get list of all script resources to perform synchronization with.
7. tern.TernResourcesManager is a main entry point for getting access to projects and files. TernCorePluign.getTernProject() can be still used for getting IIDETernProject.
8. ITernResourcesManagerDelegate provides abstraction of resource management and allows for environment specific implementations for ITernProject, ITernFile and ITernCacheManager.
9. isHTML/JSFile methods are now implemented by ITernResourcesManagerDelegate's and thus can be easily customized.
10. Most of resource interfaces provides getAdapter method which is a convinient method for accessing environment specific type of resources.
11. Script tag region provisioning has also been moved to core and is customized by core.ide plugin.

Since this introduces API changes it will affect AngularJS support and possibly other projects. If we decide to merged this PR, I will create PR for AngularJS code update. Let me know if there are any other projects, which will require update!