Firefly WSAD Integration Advantages
Abstract:
Firefly Integration with IBM WebSphere Studio Application Developer (WSAD) gives WSAD users all the power of Firefly Software Configuration Management System right within the IDE environment. This whitepaper is focused on functionality this integration offers and the technologies behind them. Also, it offers some tips on how to use it to solve your problem.
Keywords
Software Configuration Management Hansky Firefly Version Control IBM WebSphere Studio Application Developer WSAD Eclipse
Index
Introducing Firefly
Eclipse and WebSphere Studio Application Developer
Firefly WSAD Integration Overview
Firefly WSAD Integration In-Depth Look
Accessing Firefly from WSAD and Eclipse
Basic Implementation
Java Remoting
Efficiency
Project Oriented Commands
Auto Reflection
Callback
Directory-based operations
Comprehensive Command Set
Notes & Tips
Known Issues and Limitations
For More Information
Introducing Firefly
Hansky Firefly is a full-fledged, robust SCM system. It is secure, fast and one of the products available in Hansky Software Development Management (SDM) suite. Firefly provides basic version control features such as checkin/checkout as well as advance SCM features like project-based branching, label management, parallel development, task-based SCM, etc. With these powerful functionality, Firefly can help you to increases efficiency, promote teamwork and enhance quality. Hansky Firefly is highly scalable. It can manage projects from individual level up to enterprise development teams. It also has the ability to help geographically distributed teams to come together and work on the same project with its ServerSync module.
Firefly leverages the most advanced modern technologies, such as SUN Microsystems Java and Microsoft .NET technology. And because of that, Firefly is compatible with most operating systems, such as Windows 2000, Windows XP, Solaris, AIX, HP-UX, Linux, AS400, SCO Unixware, etc. Firefly provides graphic user interface, command line interface, web interface and can be integrated with most IDEs, such as IBM WSAD (Eclipse), Microsoft Visual Studio, Borland JBuilder, etc.
Hansky Firefly does not require server to share its file system. Instead, it utilizes Java Remoting, a high-speed, TCP/IP-based streaming protocol.
To manage the whole software development lifecycle, you can use Hansky Firefly and Hansky Butterfly (Change Request Management System) together to get a complete, unified SCM solution.
Eclipse and WebSphere Studio Application Developer
Eclipse is an open, extensible industry-supported platform designed for building diverse applications, such as Web sites, embedded Java programs, and C++ programs. WebSphere Studio Application Developer extends the value of Eclipse to support enterprise level projects like J2EE. WebSphere Studio provides a single development environment that can scale to support multiple types of development—Web, business logic, integration and traditional. As a result, all the developers on a team use the same environment—customized to meet their individual development needs—and can easily collaborate as they develop applications. WSAD/Eclipse offers a third-party plug-in integration mechanism which is the base of Firefly WSAD Integration.
Firefly WSAD Integration Overview
Firefly WSAD Integration brings all the functionality and convenience of Firefly right into your already familiar IDE environment. It satisfies all your version control needs within a single UI. The installation is as simple as a one-time copy and paste. All changes on local workspace are automatically reflected on the server, no extra step is needed. The integration UI is the same as that of Firefly Client. Therefore, almost no learning curve is required for users who are already familiar with Firefly Client. For those who aren’t but have some entry level version control knowledge, using Firefly WSAD Integration will be a walk in the part as well. All in all, Firefly WSAD Integration is powerful, convenient yet easy-to-use for all roles in the development team.
System Requirement
- WSAD 5.0/ 5.1.x
- Eclipse 2.0/ 2.1.x
- Firefly Server 2.0 or later version
Installation
- WSAD: Copy com.hansky.hscc directory and all files into ./eclipse/plugins directory.
- Eclipse: Copy com.hansky.hscc directory and all files into ./plugins directory.
Firefly WSAD Integration In-Depth Look
What is a project?
The notion of Project is different in WSAD and Firefly. In Firefly, a project is a logical container to hold all resources and information of a software project throughout its life cycle. A project can have one direct root branch. This root branch can have multiple sub-branches.
In WebSphere Studio, a project is a unit of organization used to group folders, packages, and files. Projects are used for building, version management, sharing, and organizing resources on local workspace. 2
A project in WSAD corresponds to a branch or a folder under a branch in Firefly. A Firefly local workspace can contain multiple WSAD projects. In the remainder of the article, unless explicitly specified, a project will be referring to a project in WSAD.
Accessing Firefly from WSAD and Eclipse
From within WebSphere Studio or Eclipse, Firefly functions are made available to users through WebSphere Studio menus, toolbars and context-sensitive (right click) pop-up menus (See Figure 1). Firefly drop down menu offers the full array of version control commands. It has the most comprehensive command set. Firefly tool bar offers the convenience of one click execution. With just a single click on the icons, you can have the most commonly used commands at your finger tip. Context-sensitive (right click) menu shows the available commands for the file/folder of your choice. This combination allows WebSphere and Eclipse developers to interact with Firefly in the same familiar way they interact with their IDEs. It also enables WebSphere Studio and Eclipse developers to efficiently support collaborative development with a common user model.

Figure 1 See Firefly in Action (Click Here to Enlarge)
1. Firefly drop-down menu
2. Firefly tool bar
3. Firefly context sensitive (right click) menu
Table 1 Available Firefly Commands in WSAD
| Menu options |
Context menu options |
Toolbar icons |
| Configure Firefly |
Synchronize |
Configure Firefly |
| Add Project to Source Control |
Add to Source Control |
Refresh |
| Open Project from Source Control |
Checkout ... |
History |
| Bind Project with Source Control |
Checkout Now |
List Checkouts |
| Unbind Project from Source Control |
Undo Checkout |
Undelete |
| Synchronize |
Checkin |
Synchronize |
| Add to Source Control |
Rename |
Add to Source Control |
| Checkout ... |
Move |
Checkout Now |
| Checkout Now |
Remove |
Undo Checkout |
| Undo Checkout |
Lock |
Checkin |
| Checkin |
Unlock |
Rename |
| Rename |
Get |
Move |
| Move |
Get Latest Version |
Remove |
| Remove |
Rollback |
Lock |
| Lock |
Properties |
Unlock |
| Unlock |
Refresh |
Get Latest Version |
| Get |
History |
Rollback |
| Get Latest Version |
List Checkouts |
Properties |
| Rollback |
Undelete |
Add Project to Source Control |
| Properties |
|
Open Project from Source Control |
| Refresh |
|
Bind Project with Source Control |
| History |
|
Unbind Project from Source Control |
| List Checkouts |
|
|
| Undelete |
|
|
Basic Implementation
Firefly WSAD Integration is implemented using pure JAVA code and works seamlessly within your familiar IDE environment. No separate client end is needed for all version control operations although we recommend installing Firefly Client for command line tools. When using this integration, all commands are executing executed in the same JAVA VM (Virtual Machine) as the IDE. Therefore, you can complete all version control tasks right within the WSAD window without the need of invoking any other application or a separate process. The benefits are obvious. First it is fast. It does have to wait for the system to start another process and then pass on the data. Secondly, it is efficient, meaning it saves system recourses. Finally and most importantly, it interacts with the IDE much better and closer.
Firefly extends team, actionSets, popupMenus and other low level extension points, and implements full Firefly client-server communication protocol. This ensures this integration inherits all the functionality of a regular Firefly client application and more importantly, smooth communication with the IDE.
Java Remoting
Java Remoting is the communication protocol used by Firefly server and client, which includes this integration. It is based on the mature and industry standard TCP/IP protocol, entirely written by Hansky from scratch and optimized for version control needs. It is an object-oriented, session-based, lightweight, hi-speed streaming protocol with the following unique benefits and advantages.
Security
Because Firefly client-server communication protocol is based on TCP/IP, it does not depend on any network file system and requires the server end to share no directory. The only thing the server needs to do is to establish a TCP server socket and listen requests from Firefly Client. This has two benefits. One, it hides the server hard drives and directory structure from preying eyes. Two, no virus will be able to spread through network file systems.
Also, Java Remoting has the ability to utilize SSL tunneling to further ensure data safety on the internet.
Efficiency
Java Remoting is a lightweight communication protocol due to its lightweight object serialization mechanism. So right off the bat it already uses network resources efficiently because it requires less network overhead than heavyweight protocols like Sun Java RMI.
Streaming made Firefly operation much more efficient than other similar products using non-streaming protocols. It kept function calls to a minimum to reduce the communication overhead between server and client. Java Remoting is much faster when it comes to transfer large file between server and client than other non-streaming protocols.
Project Oriented Commands
Project oriented commands making sharing project files easier than ever. “Add Project to Source Control” puts the whole project under version control and creates an identical copy on the server. Once a project is under Firefly version control, other users can then get it from the server by using the “Open Project from Source Control” command. This will create a local copy of the project in local workspace of your choice. This mechanism ensures that all team members share the same project properties.
Bind Project to Source Control gives you one-step access to version control if your workspace was already initialized by Firefly client or command line tool. Basically what it does is telling WSAD that “This project is using Firefly as its version control system." This command is also used when open J2EE projects from server, which will be discussed later in the article.
Unbind from Source Control offers you the option to release your project from Firefly version control. When a project is unbounded, the copy in local workspace remains in tact, but the link with the server is removed. However, you can always bind it to source control again, or use Firefly Client to access this existing local workspace.
Auto Reflection
Any execution of Firefly commands will be automatically reflected on the server. No additional Submit, Bringover command is needed. Firefly WSAD Integration adopted this model rather than the ChangeSet model Firefly Client uses because it is more straightforward and easy to grasp. With Firefly Client, every change you make takes effects immediately on the local workspace but is queued in a changes set. These queued changes will be transferred to the server when you click on Submit This model requires an extra step but is more organized.
Callback
Firefly registered a listener to pay attention to three IDE commands: “Delete”, “Refactor -> Move” and “Refactor -> Rename”. Whenever they are executed, the IDE will callback appropriate Firefly commands to handle these local changes accordingly.

Figure 2 Callback (Click Here to Enlarge)
1. After a Refactor Move operation in WSAD, Firefly integration was called to reflect changes on the server accordingly.
Directory-based operations
Unlike other products, with Firefly WSAD Integration, you have the option and the convenience of selecting one or several folders and select the command you want to execute, such as “Add to Source Control”. Never again will you have to select hundred files in a folder in order to add the files to source control. All you have to do is right click on the folder and choose “Add to Source Control”.

Figure 3 Directory based operations (Click Here to Enlarge)
1. The context menu shows a list of available commands for the two selected folders, including Add to Source Control.
Comprehensive Command Set
Firefly WSAD’s comprehensive and straightforward command set makes version control easier than ever.
With Checkout, you will have the option to choose if you want to lock the file after it’s checked out by you. You can also choose a previous version or label to check out. After you click OK, firefly will show you a progress dialog, not a simple WSAD default progress bar like other products. In this progress dialog, you will be able to see a list of task as they are being processed, current status and error messages if there is any. If you don’t want to see these options, you can click the “Checkout Now” command button. This command will by default checkout the latest version, unreserved.
“Synchronize” will get you not only the latest version of existing files, but also new files on the server that were added by others; “Rollback” will let you choose a history version of the file and get the content back; “Get Latest Version” will skip the option dialog and get you the latest version…There are many convenient and easy-to-use commands. For full detail, please refer to Firefly WSAD Integration online help by choosing Help, Help Contents inside WSAD.
Full Move/Rename Support
In Firefly, move and rename aren’t treated as delete plus create, in which case all version history is lost. Firefly Integration keeps a complete history of a file even if it were move to other folders, thus making tracing of history much easier. Also, Firefly move and rename support non-source code files and move/rename is also recorded in the history.

Figure 4 Move and Rename Support (Click Here to Enlarge)
1. Move and Rename are recorded as part of the history. You can see the complete history of a file even after being renamed.
Notes and Tips:
- Unix-like OS allows filename to contain characters like * while Windows does not. If you have both platforms in the development environment, take care when naming files.
- A line in Unix-like OS is ended with \n to start a new line while in Windows it is ended with \r\n. Therefore, please choose a Unix format compatible editor if you try to open a file created in a Unix-like OS.
- J2EE (Multiple) Project :
If there are more than one project in a J2EE application, this tip should help you better manage them.
(1) User A create J2EE project named "Demo" in the directory C:\J2EE. By default, WSAD will create a directory in C:\J2EE\Demo and put .project file in it. WSAD will also create the modular projects of your choice, usually three: DemoClient, DemoEJB and DemoWeb and their respective path will be: C:\J2EE\DemoClient, C:\J2EE\DemoEJB, C:\J2EE\DemoWeb
(2) User A selects project Demo, then chooses Firefly -> Add Project to Source Control from menu, when select local directory during the initialization process, user A should select C:\J2EE as the local workspace root directory, instead of the default C:\J2EE\Demo.
(3) User A then uses Bind Project with Source Control on the modular projects. At this point, all four projects has been added to Firefly source control.
(4) User B selects Firefly -> Open Project from Source Control and init a local workspace in C:\WS. All four projects and their files will be brought over to User B's hard disk but only Demo will show up.
(5) User B imports the remaining three modular projects into C:\WS\DemoClient, C:\WS\DemoEJB, and C:\WS\DemoWeb.
(6) User B binds the three modular projects to source control. Now User B could use Firefly with all four projects.
- If Firefly drop-down menu doesn't show up, please do the following. Choose Window -> Customize Perspective from menu, then expand Other in the dialog box, check Source Code Control and click OK.
- By default, WSAD will compile all changed source code files in a project. This will happen when you open a project from Firefly as well. Therefore, if a certain amount of files were modified since the last time you opened it, WSAD will proceed to compile all those files and take a long time at that. Here is what you can do to avoid this: select Window -> Preference, then uncheck Perform build automatically on resource modification
- Make sure you choose .project file when add a project to source control. This guarantees others will share the same project properties when they open the project from source control.
- When creating a new Java project, create a src sub directory for all your source codes and tell WSAD to generate .class files under another directory. This helps Firefly to keep compiled *.class files from being added to source control. The reason you don’t want *.class under version control is that once files under source control are checked in, they become read only. You can also achieve this by adding a filter on *.class file.
Known Issues and Limitations
- Firefly doesn’t handle empty directories. So if you delete all files under a folder in WSAD, that directory will disappear.
- When conflicts occur and cannot be resolved automatically, VDM (Visual Diff & Merge) tool is needed. You need install Hansky Firefly Client in order to use the VDM tool.
For More Information
To find out more about Hansky Firefly and other SDM (Software Development Management) products, please go to :
Hansky.com/en/products/index.html
To find out detailed information on how to use Firefly WSAD Integration, Please refer to the help section of WebSphere Studio Application Developer.
For more information about IBM WebSphere Studio Application Developer, visit:
IBM.com/software/awdtools/studioappdev/