Simple Eclipse Plugin

IN PROGRESS
Bids
3
Avg Bid (USD)
$102
Project Budget (USD)
$100 - $120

Project Description:
Anyone with basic Eclipse plugin writing experience can do this: write a plugin clone of a NetBeans plugin (SourceForge project 'netbeanssvsplug') which acts as trivial bridge between a provided communication front end, and Eclipse's simplest (JDT) Java editor support.


The bridge needs to translate incoming "view source" and "goto line" commands to actual logic performing these operations.


## Deliverables






**Eclipse SourceViewerService ("SVS") Plugin Requirements**



(C) Copyright Software Pearls BVBA, v1.0 02-Jan-2009



**Introduction**



Modern Java IDEs such as Eclipse feature state-of-the-art Java source code viewing capabilities which third-party programs (such as other standalone software development tools) may want to exploit. None of the main IDEs expose formal (external) scripting facilities to allow external tools to exploit their editors in a platform-neutral manner. This project aims to address this lack of external editor controllability for one particular IDE by specifying the requirements for a new plugin for the targetted IDE.



**Target IDE:** Eclipse (version 3.3, minimum)



**Main Requirements**



Writing and publishing of an open source Eclipse plugin allowing external programs to address Eclipse to open/view any Java type known to Eclipse, and subsequently navigate to any legal line within the type's source code.



Publication of plugin should be done as a SourceForge project, as an Update Site URL, and the plugin should additionally be published and listed in the http://www.eclipseplugincentral.com/ plugins repository.



**Detailed Requirements**



The plugin will act as bridge between a (provided) TCP communcation front-end, and some plugin-specific logic to open/view a Java type and navigate to any line within the file.



The plugin will implement the following Java interface:



public interface JavaEditorBridge {



/**

* View the specified Java type.

*

* @param fullyQualifiedTypeName eg "java.lang.Object"

* @return true if operation succeeded, false otherwise

*/

boolean viewType(String fullyQualifiedTypeName);



/**

* For the currently active source code editor, navigate to the specified line number.

*

* @param lineNumber a positive integer

* @return true if goto succeeded, false otherwise

*/

boolean gotoLine(int lineNumber);



}



The plugin's initialization logic will register the plugin with an instance of a class provided by Software Pearls, called JavaEditorControlService, using the following logic:



int tcpPortNumber = .... ; ? // obtained from persistent plugin config?



JavaEditorControlService javaEditorControlService = new JavaEditorControlService(this, tcpPortNumber);



javaEditorControlService.start();



The instantiated JavaEditorControlService embodies the IDE-neutral communication front-end to the IDE's source viewing capabilities. The integer constructor argument is a plain integer specifying the TCP port number for the service.



**Plugin Configurability**



The TCP port number should be user-configurable from within Eclipse, using the standard Eclipse plugin parameter configuration mechanism (Window > Preferences > SVS, where "SVS" stands for "Source Viewer Service" (plugin).



The default TCP port number should be 5000. Valid values lie within the 1024 .. 65535 range. Only valid values shall be accepted by an input control (eg text field or spinner).



Any change of port number should be accompanied with a message to the user saying that the change will only take effect after the next Eclipse restart.



**Plugin User Interface**



The plugin has no UI for its core functionality. Only the configurability aspect involves some UI (which may be handled by Eclipse).



**Extra Requirements**



- The plug-in shall display its license terms when installing. The license will be the GPL v2 license.



- The top-level Java package for all plugin classes shall be com.softwarepearls.apps.ide.eclipse.



**Project Deliverables**



A SourceForge project containing a Eclipse project with all necessary files to build the plugin.

A standard Eclipse plugin Update Site URL for the plugin.



**Acceptance Test**



The acceptance test will be partly automated by the supplied program, TestSVSPlugin, a JUnit 4 test suite.

If the unit tests stay green, then that part of the acceptance test succeeded. Any other result will be deemed a complete failure of the plugin.



**Acceptance Test Procedure**



*(Any error other than those explicitly stated below occurring at any step results in a failed acceptance test)*



Step A1: Eclipse is started.

Step A2: The plugin installation procedure is started via its Update Site. Eclipse should display the plugin's license, and should report that the plugin is signed.

Step A3: Eclipse is shut down.



Step B1: Eclipse is restarted.

Step B2: The TestEditorControl program is run. This should open several Java type editors in NB, navigate within the source, and complete by saying "OK".



Step C1: The plugin is reconfigured to operate on a different TCP port, say 5001.

Step C2: Eclipse is shut down.



Step D1: Eclipse is restarted.

Step D2: The TestEditorControl program is run. This should fail with an error stating that no contact could be made with the plugin.

Step D3: The TestEditorControl program is run, specifying the same port as used in the previous reconfigure step. The program should complete with OK.

Step D4: Eclipse is shut down.



Step E1: Eclipse is restarted.

Step E2: The plugin is deinstalled.

Step E3: Eclipse is shut down.



Step F1: Eclipse is restarted.

Step F1: The TestEditorControl program is run. This should fail with an error stating that no contact could be made with the plugin.

Skills required:
Engineering, Java, MySQL, PHP, Software Architecture, Software Testing
About the employer:
Verified
Public Clarification Board
Bids are hidden by the project creator. Log in as the employer to view bids or to bid on this project.
You will not be able to bid on this project if you are not qualified in one of the job categories. To see your qualifications click here.