Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "ECF/Shared Code Plugin"

< ECF
(Goals)
(References)
 
(22 intermediate revisions by 4 users not shown)
Line 12: Line 12:
 
==Goals==
 
==Goals==
 
# Enable easy-to-user searching of source code across multiple Eclipse workspaces
 
# Enable easy-to-user searching of source code across multiple Eclipse workspaces
# Support metadata-based searches using Java annotations and/or Eclipse markers. See [[Candidate Metadata|here]] for candidate metadata types.
+
# Support metadata-based searches using Eclipse markers. See [[Candidate Metadata|here]] for candidate metadata types and screenshots.
 
# Support the delivery and view/presentation of matching source code in response to remote search requests
 
# Support the delivery and view/presentation of matching source code in response to remote search requests
 
# Support search restriction based upon source license type, as well as individual and group-level search restrictions
 
# Support search restriction based upon source license type, as well as individual and group-level search restrictions
Line 21: Line 21:
 
Project's schedule is in [[SCP Schedule]], you can be well aware of tasks and status about the project.
 
Project's schedule is in [[SCP Schedule]], you can be well aware of tasks and status about the project.
  
==Technical Issues==
 
===Communication Channel===
 
SCP make a broadcasting search requests from peer A(requestor) to peers N. When peer N1 matches on the search term, it sends the match to Peer A, not all the peers in the group. The messaging model imply in a request/response model. We decided have two channels: one to broadcast requests to peers N, and another to receive responses - only to requestors. The request message should contain a Return Address that indicates where to send the reply message. A simple solution was get ID of the requestor, using method getFromContainerID() in IChannelMessageEvent, and send the response using sendMessage(ID receiver, byte [] message), which sends to a particular receiver container. Any peer that wants to respond can simply initiate a direct connection with the requestor. [[Media:CommunicationChannel.png|Figure 1]] shows the scenario.
 
  
 +
==Architecture==
 +
All the relevant characteristics of SCP Architecture can be figured out in [[ScpArchitecture]].
  
If different messages to the same replier require replies to different places, the replier can determine from each request message where to send the reply for that request. A Return Address(ID name) is put in the header of a message because it's not part of the application data(Java files) being transmitted. Each replier needs to deal with several requests, so there is a mechanism Produce/Consumer into each peer, storing each message received in a message queue implementation. Process consumers look at messages inside the queue consuming any of the messages. [[Media:producerconsumer.png|Figure 2]] shows the scenario.
 
  
 
==Screenshots==
 
==Screenshots==
 
 
Screenshots were produced from the SCP and placed where it can be easily seen - [[Screenshots SCP]].
 
Screenshots were produced from the SCP and placed where it can be easily seen - [[Screenshots SCP]].
  
==Architecture==
 
  
All the relevant characteristics of SCP Architecture can be figured out in [[ScpArchitecture]].
+
==Technical Issues==
 +
===[[Multipoint Request/Reply Implementation]]===
  
==Talks==
 
This session is a nice place to talk abou '''ideas''' and '''clues''' with other people about SCP - [[Talk:Shared_Code_Plugin|Talks]].
 
  
 +
==Plug'in Usage==
 +
* This simple [[story]] describes the user value provided by SCP. The story will describe how a developer would have a useful search for source code. <br>
  
==Futere Work==
+
===How to run a Demo===
===Server Cache Mechanism===
+
 
 +
Once the Shared Code is on workspace, you can run it two different ways. One way is to compile the project, package it up as a JAR file, copy it to the plugins subdirectory, and restart Eclipse. You will see the menu and toolbar button in your workbench.
 +
 
 +
The other method to run Shared Code is more convenient. Using the Run-time Workbench, you start a temporary Eclipse installation that automatically runs it.
 +
 
 +
To run and test Shared Code on the run-time workbench, see [[HOWTO: Shared Code Plugin]], it is a step-by-step description of how to install and run the SCP.
 +
 
 +
===How to build===
 +
Shared Code plug-in depends on other plug-ins, only internal Eclipse plug-in:
 +
 
 +
* org.eclipse.ui,
 +
* org.eclipse.core.runtime,
 +
* org.eclipse.search,
 +
* org.eclipse.core.resources,
 +
* org.eclipse.jdt.core,
 +
* org.eclipse.ecf.datashare,
 +
* org.eclipse.ui.ide
 +
 
 +
PDE takes care of all of these things. PDE has a section Dependency Analysis -> Find plug-ins and fragments that reference this plug-in, that takes care of all dependences of Shared Code plug-in.
 +
 
 +
To package and export the Shared Code plug-in, the Deployable Plug-ins and Fragments export wizard is used, only select  org.eclipse.ecf.example.sharecode. The zip file generated then simply needs to be unzipped into the installation directory of any Eclipse-based product and the Shared Code plug-in becomes part of Eclipse.
 +
 
 +
'''Obs: See [[HOWTO:_Shared_Code_Plugin#Step_0| here]] the Prerequisites to run Shared Code plug-in, and get the plugin Shared Code from anonymous CVS on soc.eclipse.org and path = /cvsroot/org.eclipse.soc/ org.eclipse.ecf.example.sharecode.'''
 +
 
 +
==Future Work==
 +
===[[Peer Cache Mechanism]]===
 +
 
 +
 
 +
==Resources and Talks==
 +
This session is a nice place to talk abou '''ideas''' and '''clues''' with other people about SCP - [[Talk:Shared_Code_Plugin|Talks]].
  
===Peer Cache Mechanism===
 
==Resources==
 
 
===References===
 
===References===
 +
* Notes on the Eclipse Plug-in Architecture by Azad Bolour (Bolour Computing) July 2003
 +
* On the Job: The Eclipse Jobs API by Michael Valenta (IBM) September 2004
 +
* Preferences in the Eclipse Workbench UI by Tod Creasey (IBM) August 2002
 +
* Enterprise Integration Patterns : Designing, Building, and Deploying Messaging Solutions by Gregor Hohpe, Bobby Woolf
 +
 +
{{ECF}}
  
===Notes===
+
[[Category:Eclipse Communication Framework]]
 +
[[Category:ECF]]
 +
[[Category:Source Code Sharing]]
 +
[[Category:SOC]]

Latest revision as of 09:23, 22 December 2010

Sharecodelogo.gif

Project Lead: Marcelo Mayworm

Mentor(s): Scott Lewis, Ken Gilmer

Project Motivation

The Shared Code Project is a small set of Eclipse plugins to support dynamic source code search and sharing among a team of Eclipse users. The SCP idea is to provide developers with an easy-to-use interface to search for source code and share source code among developers, which can be leveraged in the applications. Developers can make yours source code on Eclipse Workspace available to a lot of people, adding special metadata into these source code, making way for others developers find easy source code, in ways never possible before. SCP is based in a peer-to-peer communications and file sharing, therefore, the intention is to use the Eclipse Communication Framework (ECF) as base, because ECF provides an open source framework supporting the creation of communications-based applications on the Eclipse platform, using a peer-to-peer network. SCP focuses on the development of tool of collaborative.


Goals

  1. Enable easy-to-user searching of source code across multiple Eclipse workspaces
  2. Support metadata-based searches using Eclipse markers. See here for candidate metadata types and screenshots.
  3. Support the delivery and view/presentation of matching source code in response to remote search requests
  4. Support search restriction based upon source license type, as well as individual and group-level search restrictions

See here more details of how these goals will be achieved.

Schedule

Project's schedule is in SCP Schedule, you can be well aware of tasks and status about the project.


Architecture

All the relevant characteristics of SCP Architecture can be figured out in ScpArchitecture.


Screenshots

Screenshots were produced from the SCP and placed where it can be easily seen - Screenshots SCP.


Technical Issues

Multipoint Request/Reply Implementation

Plug'in Usage

  • This simple story describes the user value provided by SCP. The story will describe how a developer would have a useful search for source code.

How to run a Demo

Once the Shared Code is on workspace, you can run it two different ways. One way is to compile the project, package it up as a JAR file, copy it to the plugins subdirectory, and restart Eclipse. You will see the menu and toolbar button in your workbench.

The other method to run Shared Code is more convenient. Using the Run-time Workbench, you start a temporary Eclipse installation that automatically runs it.

To run and test Shared Code on the run-time workbench, see HOWTO: Shared Code Plugin, it is a step-by-step description of how to install and run the SCP.

How to build

Shared Code plug-in depends on other plug-ins, only internal Eclipse plug-in:

  • org.eclipse.ui,
  • org.eclipse.core.runtime,
  • org.eclipse.search,
  • org.eclipse.core.resources,
  • org.eclipse.jdt.core,
  • org.eclipse.ecf.datashare,
  • org.eclipse.ui.ide

PDE takes care of all of these things. PDE has a section Dependency Analysis -> Find plug-ins and fragments that reference this plug-in, that takes care of all dependences of Shared Code plug-in.

To package and export the Shared Code plug-in, the Deployable Plug-ins and Fragments export wizard is used, only select org.eclipse.ecf.example.sharecode. The zip file generated then simply needs to be unzipped into the installation directory of any Eclipse-based product and the Shared Code plug-in becomes part of Eclipse.

Obs: See here the Prerequisites to run Shared Code plug-in, and get the plugin Shared Code from anonymous CVS on soc.eclipse.org and path = /cvsroot/org.eclipse.soc/ org.eclipse.ecf.example.sharecode.

Future Work

Peer Cache Mechanism

Resources and Talks

This session is a nice place to talk abou ideas and clues with other people about SCP - Talks.

References

  • Notes on the Eclipse Plug-in Architecture by Azad Bolour (Bolour Computing) July 2003
  • On the Job: The Eclipse Jobs API by Michael Valenta (IBM) September 2004
  • Preferences in the Eclipse Workbench UI by Tod Creasey (IBM) August 2002
  • Enterprise Integration Patterns : Designing, Building, and Deploying Messaging Solutions by Gregor Hohpe, Bobby Woolf
Eclipse Communication Framework
API
API DocumentationJavadocProviders
Development
Development GuidelinesIntegrators Guide

Back to the top