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)

Reply via email to