Date post: | 18-Dec-2015 |
Category: |
Documents |
Upload: | oliver-strickland |
View: | 215 times |
Download: | 0 times |
Lessons Learned Writing the AWS Toolkit
for Eclipse
Zach Musgrave & Jason FulghumAmazon Web Services
March 28, 2013
Lessons Learned• Error Reporting• Build Automation and Distribution• Responsive UIs• Resource Management• Data Binding• Build on Eclipse Platform Projects• Tips and Tricks
Use the Error Log Use Plugin’s getLog() method:
◦ getLog().log(new Status(Status.ERROR, PLUGIN_ID, errorMessage, e));
Or… use StatusManager directly, for more control
Proactively Debug Problems
Help your customers collect basic debugging information before you have to ask
Make it as easy as possible to report problems, or you might not find out about bugs before you start losing customers
Eclipse’s standard release engineering tools Built on Ant, so easy to integrate into
existing build processes
PDE Build
Plugins and features stored in Amazon S3 Distributed through Amazon CloudFront for
fast downloads from edge locations all over the world
Old versions remain in Amazon S3 if needed Use Amazon CloudFront access logs feature
for download metrics
Update Site Hosting
Pattern for short-lived, but potentially disruptive IO work
Example: populate a Combo using data from a web service call
Cancelable Thread
From the UI: cancel any running thread, then start a new one
From the CancelableThread: do non-UI work (web services calls), then:◦ Check if canceled◦ If not, update UI◦ Otherwise exit
Synchronization is important
Cancelable Thread
Remember: fonts use file handles! Don’t create a font just to apply it to a
control Share fonts as much as possible, and
remember to dispose() of them when they aren’t needed anymore
Or use shared fonts, like in JFaceResources
Font Management
The basic idea: bind your data model to a UI element, and when one changes the other does too
IObservableValue model = PojoObservables.observeValue(pojo, “field”);IObservable target = SWTObservables.observeText(text, SWT.Modify);bindingContext.bindValue(target, model);
JFace Data Binding API
Tools for developing and deploying web and Java EE applications
Used in the toolkit for:◦ Deploying AWS Java web apps to AWS Elastic
Beanstalk through custom server types
Web Tools Platform (WTP)
Vendor neutral platform and tools for working with relational and non-relational data sources
Used in the toolkit for:◦ Connecting to Amazon RDS databases◦ Browsing and editing Amazon SimpleDB data
sources
Data Tools Platform (DTP)
Aggregates data contributed by multiple plugins into a single, hierarchical tree view
Good support for drag and drop actions
Used in the toolkit for:◦ AWS Explorer view
Common Navigator Framework (CNF)
Used to store hierarchical data to persist preferences and history for views, dialogs, and wizards
Allows UIs to be prepopulated with users’ previous selections and history
IDialogSettings