Andreas Schaefer created SLING-7728: ---------------------------------------
Summary: Create an Abstract Communication Layer that deals with the Server Communication common to all IDEs Key: SLING-7728 URL: https://issues.apache.org/jira/browse/SLING-7728 Project: Sling Issue Type: Improvement Components: Tooling Reporter: Andreas Schaefer Attachments: AbstractDeploymentManager.java, IntelliJDeploymentManager.java All the code that does deal with the Sling server while doing synchronization, deployment or imports has a lot of common code on all IDEs because it deals with the server(s). The Abstraction Layer should extract the IDE/UI code from the server communication code so that an IDE developer only has to provide that integration. For example to publish a Module this is the shared code: * Get the Repository * Loop of the list of changed resources * Handle deployment order * Handle filters * Handle last modification timestamp * Deploy as necessary * Handle response The IDE/UI provides this: * Display Messages / Alerts * Change status * Provide and Update Last Modification Timestamps The basic idea is to keep as much code inside a shared package for all IDEs to use so that updating to a new version of the Sling IDE tooling is just focusing on the UI / IDE part. Attached are two classes: * AbstractDeploymentManager: this is the shared code for publishing a module. It uses three sub classes to wrap the Project, Module and File which are IDE dependent and defining the requirements that the IDE implementor to implement * IntelliJDeploymentManager: implementation of the AbstractDeploymentManager that provides the implementation for IntelliJ. -- This message was sent by Atlassian JIRA (v7.6.3#76005)