[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [atf-dev] ATF 0.2.2. usage
|
Robert, David,
I'll follow up on this action item by splitting all of these individual changes into appropriate new bugzilla entries. Then we can continue the discussion through documentation/bugzilla entries as needed. I was originally just going to start by posting new bugzilla entries, but I thought it would be better to summarize all of the changes first so when the individual entries start getting added, everyone knows where all of these patches are for.
Thanks for your quick response,
Greg
On 10/31/07, Robert Goodman <goodmanr@xxxxxxxxxx> wrote:
Greg
I did a quick skim of the description
of your changes. For some of the changes it looks like a better understanding
of why the change was made is needed and then do some architecture work
to find the best way solve the problem. For instance, we had never intended
for people to subclass JSDebugThread. That is why it has "internal"
in its package name. Given that there are there functions in the class
like getLabel(), I can image why you may want to subclass JSDebugThread.
The ATF Team would appreciate long-term focused help in defining what is
API and how all adopters could take advantage of it. This will, probably,
take several iterations to "get right" and arrive at Eclipse
quality APIs. One question, for example, is how does it work if two plugins
extend the framework and are both installed in the same environment ...
which subclass is used, and how is this controlled by the user or the product
adopters? Therefore, one thing that would be needed for such "API
related patches" is some amount of design or architecture documentation
that would allow proper review by adopters and Eclipse API experts. But,
hopefully that is not surprising nor prohibitive. It sounds like you've
had some good "real life" experience extending ATF so would be
in a good position to contribute. You might even start off contributing
the documentation (attached to a bugzilla) and then, based on discussion
and iteration of that, contribute the code to support the documentation.
Thanks
Bob
Robert Goodman
goodmanr@xxxxxxxxxx
Hello ATF team,
Recently, Genuitec related MyEclipse 6.0 which includes a subset of the
ATF project, specifically version 0.2.2 (v20070703100). During our
dev cycle we made some changes to the ATF plugins to allow for better integration
and adoption into MyEclipse. Because of our tight delivery timeline
we decided to focus on making the exact changes we needed to the ATF plugins,
and then sometime soon after that release we would followup with the ATF
team to discuss our changes and get some feedback. So I'm posting
a summary our changes that we made to the ATF plugins for our latest release.
>From the ATF team I'd like to get feedback on the patches I've submitted
and possible start a conversation about opening up portions of the codebase
for more extensibility. Also, I'm looking for advice from the team
on how we could our usage of ATF plugins so we could better accomplish
our objectives if some of our changes made in our patchset are not really
required. I've made just the patches that we made to ATF to make it more
extensible available in a zip file that can be downloaded here:
http://downloads.myeclipseide.com/downloads/products/eworkbench/public-src/atf_v0.2.2_patches.zip
In the referenced zip file, there are 6 patch files that were diffed against
ATF 0.2.2 release or (v200707031000). I'd like to summarize the changes
made in each patch file to help your team better understand our reasons
behind the change.
Patch file: 01.web_launch_configuration_patches.txt
1. WebLaunchConfigurationTab.java
1. Changed
3 buttons and DebugPreferencesGroup from private to protected so they could
be accessed from our subclass
2. Added
boolean field "showServerOption" so in our subclass we could
turn off the display of the "Load from Server" button
3. Modified
to UI creation to respect the new "showServerOption" boolean
field
4. Added
protected method "createFileSelectionDialog". This allows
us to override in a subclass and provide MyEclipse specific Project file
selection dialog
5. Added
protected method "getWebContentRelativePath". This allows
us to override in a subclass and provide MyEclipse specific lookup into
MyEclipse webprojects
2. WebLaunchConfigurationDelegate.java
- dded protected method "createDebugJobForURL(url)". This
allows us to provide a subclass that overrides this method and creates
a MyEclipse subclass of MozillaDebugJob instead of the normal MozillaDebugJob.
3. WebLaunchShortcut.java
- Added protected method "launchConfiguration(...)" so that in
a subclass we could add some MyEclipse specific runtime checks before we
actually launch the configuration.
4. DebugPreferencesGroup.java
- Added a public method "setEnabled(boolean)". For our
WebLaunchConfigurationTab subclass we have conditions where we need to
disable all controls on the UI.
Patch file: 02.debug_patches.txt
1. MozillaDebugJob.java
1. Added
new constructor so that subclasses can be created that has less parameters
2. Added
protected method "getDebugBrowser". This method allows
us to provide a MozillaBrowser that may already be running
2. MozillaDebugPlugin.java
- Added null check for appPath because in some MyEclipse configurations
appPath can be null and it seems that it will work just fine even when
appPath is null.
3. MozillaDebugUIPlugin.java
1. Added
static method "setJSDebugViews" which allows us to set MyEclipse
views to be apart of the JSDEBUGVIEWS array which is used for to open debug
related views on various events.
2. Enhanced
a for loop that goes through open editors in the workbench to close MozillaBrowserEditor.
The enhanced for loop will go through multiple workbenches instead
of just the active workbench. In MyEclipse sometimes the Mozilla
Browser Editor may be open in a 2nd workbench.
4. plugin.xml
1. Had
to comment out the debugMozillaPresentation declaration so we could redeclare
it in our plugin. We needed to provide a subclass of the MozillaDebugModelPresentation
class. We needed to create our own subclass of the sourceDisplayUtil
field. Our sourceDisplayUtil subclass does some MyEclipse specific
actions.
5. JSDebugThread.java
1. Added
support for scriptListeners to the JSDebugThread. In MyEclipse we
needed to be notified when scripts were created or destroyed so we added
this into the JSDebugThread class.
2. Added
IScriptListener interface that is used in the JSDebugThread class.
6. JSDebugTarget.java
1. Added
a call to a new static class JSDebugTargetUtil, which only has one method
to create the JSDebugThread. We needed a way to provide a way that
our own subclass of JSDebugThread would be used instead. In our subclass
we sometimes want to display things a little different in the scripts view.
2. Added
2 null checks for debuggerService field. In our internal tests we
were running into some cases where the debuggerService was null, so we
added the checks.
7. JSDebugTargetUtil.java
- This is a new static class that was created so we could override and
create our own subclass of JSDebugThread.
Patch file: 03.source_lookup_patches.txt
1. JSSourceLocator.java
- Added protected method "findLocalResource" that we can override
in our own subclass of JSSourceLocator. We needed to add some MyEclipse
specific resources lookup to this method.
2. SourceDisplayUtil.java
- Added protected method "createStorageEditorInput" so that in
our own subclass we could create a StorageEditorInput that would be specific
to the MyEclipse browser editor.
3. SourceLocatorUtil.java
1. Added
static method to set the instance of the SourceLocatorUtil. This
way we could provide our own subclass instance of a SourceLocatorUtil that
overrides several methods for finding resources.
2. Also
we needed to provide our own Subclass for the URLStorage inner class which
has MyEclipse specific options.
4. JSDebugScriptElementSourceDisplayAdapter.java
1. Made
sourceLookupJob field protected so it can be set from subclass
2. Added
public method to inner class SourceLookupJob to allow setting of the sourceDisplayUtil
field externally. We set this to an instance of our own subclass
of the sourceDisplayUtil to do MyEclipse specific tasks
3. Made
sourceDisplayJob field protected to so it can be set from subclass
4. Added
public method to inner class SoureDisplayJob to allow setting of the sourceDisplayUtil
field externally. We set this to an instance of our own subclass
of the sourceDisplayUtil to do MyEclipse specific tasks.
5. DebuggerSourceDisplayUtil.java
- Added protected method "createURLStorage" to that we can create
our own subclass of the URLStorage class that does MyEclipse specific tasks.
Patch file: 04.mozilla_browser_editor_patches.txt
1. MozBrowserEditor.java
1. Added
protected method "createNavigationBar" so that we could override
this method in our own subclass of MozBrowserEditor that will create another
subclass of NavigationBar.
2. Added
2 protected methods: "addMenuExtensionActions" and "addExtensionActions"
so that we could override this methed in our own subclass of MozBrowserEditor.
In our subclass we add some additional actions to the toolbar.
3. Added
protected method "performGoAction". This method we override
in our subclass of MozBrowserEditor to do some MyEclipse specific tasks
just prior to executing the real GO action.
2. NavigationBar.java
1. Made
location field more generalized and protected so it could be accessed in
our subclass.
2. Added
protected method "createlocationControl" that we could override
in our subclass to add a MyEclipse specific feature.
3. PopupWindowBrowserListener.java
- Changed the declaration modifier for the class from default to public
so that we could create a subclass. In our subclass we need to create
a MyEclipse specific subclass of the MozBrowserEditor for popups.
Patch file: 05.views_patches.txt
1. ScriptView.java
- Added protected method "getViewUnavailableMessage". This
way we can provide our own message that is display in the script view whenever
the view is inactive.
2. _javascript_ConsolePage.java
- Added protected method "createMessageFilter" that allows us
to override that method in a subclass. In our subclass we create
our own subclass of ConsoleMessageFilter that filters some MyEclipse specific
messages that were appearing in the _javascript_ console.
Patch file: 06.manifest_patches.txt
1. This
patch contains some changes we had to make in order to open up access to
some internal classes.
2. Also,
there are a few places that we made dependencies to org.eclipse.atf.core
optional because we didn't include this plugin in our MyEclipse IDE.
If anyone is having trouble seeing the patches as attachements
let me know and I can make them available another way.
I'd like to hear some feedback from the ATF team on these changes. If
there are some changes that do make sense for the ATF team to adopt let
me know and I can enter bugzilla reports that request a specific API or
extension enhancement. But I'd like to get some direction from the
ATF team before I just go opening bug reports that don't make sense. You
can either reply to the mailing list or if anyone wants to contact me directly
to continue a discussion anything off of the newgroup my contact info is:
greg_at_genuitec_dot_com
Thanks for your reply in advanced.
Best regards,
Greg Amerson
Genuitec_______________________________________________
atf-dev mailing list
atf-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/atf-dev
_______________________________________________
atf-dev mailing list
atf-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/atf-dev