SlideShare uma empresa Scribd logo
1 de 28
Baixar para ler offline
Implementing a custom
JIRA UI using plugins 2.0Andreas Knecht
Plugins 2 & REST
Tuesday, November 2, 2010
Overview
• How to implement a custom UI
• How to implement a REST resource
• Demo
• svn co https://labs.atlassian.com/svn/IPHONE/trunk
Excellent resource - This is a great app, not just because it looks good.
It's also a great resource for JIRA 4.0 REST plugin development.
Matt Doar (PAC - 2 Dec 09)
“
”
Tuesday, November 2, 2010
Custom UI
• Why?
• Building Blocks
oServlet Filters
oWebwork actions
oHTML/JS + REST
Tuesday, November 2, 2010
This is not a talk about REST!
Tuesday, November 2, 2010
JIRA Web-Interface for the iPhone
• Easy to use interface on the iPhone
• Plugins 2 plugin
• Most of the work done client-side
• Custom REST interface
Tuesday, November 2, 2010
Plugin structure
Tuesday, November 2, 2010
Some stats
• 2000+ downloads
since November 09
• ~7000 LOC
• 20 20% days to
develop
• 8 features
0
85
170
255
340
11/0902/10
05/10
08/10
Downloads
Tuesday, November 2, 2010
Custom UI - Filters
• Redirect certain users
• Inject content into pages
Tuesday, November 2, 2010
Custom UI - Define a Filter
• URL-Pattern
• Location
oafter-encoding, before-login, before-decoration,
before-dispatch
Tuesday, November 2, 2010
Custom UI - Webwork
• Full MVC UI framework
• Views, Commands, Validation, Templating
• /secure/* is not secure
• roles-required=”admin” does not work
Tuesday, November 2, 2010
Securing Webwork!
http://localhost:2990/jira/OrderForm!default.jspa?id=10001
http://localhost:2990/jira/OrderForm.jspa?id=10001
Tuesday, November 2, 2010
REST
• Simple for small data
• What about 100000
issues?
vs
Tuesday, November 2, 2010
Expands to the Rescue
.../rest/iphone/1.0/filter/10000.json
Tuesday, November 2, 2010
Expands to the Rescue
.../rest/iphone/1.0/filter/10000.json?expand=result[1:2]
Tuesday, November 2, 2010
Expands to the Rescue
.../rest/iphone/1.0/filter/10000.json?expand=result[1:2]
Tuesday, November 2, 2010
Expands to the Rescue
.../rest/iphone/1.0/filter/10000.json?expand=result[1:2].issue.details
Tuesday, November 2, 2010
Expands to the Rescue
.../rest/iphone/1.0/filter/10000.json?expand=result[1:2].issue.details
Tuesday, November 2, 2010
Expands to the Rescue
.../rest/iphone/1.0/filter/10000.json?expand=result[1:2].issue.details.comments[1]
Tuesday, November 2, 2010
Expands to the Rescue
.../rest/iphone/1.0/filter/10000.json?expand=result[1:2].issue.details.comments[1]
Tuesday, November 2, 2010
How do expands work?
• Lists vs Objects
Tuesday, November 2, 2010
How to expand lists!
Tuesday, November 2, 2010
How to expand objects!
Tuesday, November 2, 2010
How to expand objects
• REST provides com.atlassian.plugins.rest.common.expand.EntityExpanders
...
Tuesday, November 2, 2010
REST
• Backend doesnʼt always support expands
• Tricky to implement expands
• #protip: Use services
Tuesday, November 2, 2010
Services keep you safe!
Tuesday, November 2, 2010
Demo
• Implement ʻAdd Commentʼ feature
• Requires some client side JS
• Server side REST resource
• Tools
Tuesday, November 2, 2010
Summary
• Use HTML/JS as much as possible
oFaster development turnaround
oGood frameworks (jQuery, GWT, jQTouch...)
• If our REST API doesnʼt do it for you...
Tuesday, November 2, 2010
Questions
https://labs.atlassian.com/browse/IPHONE
Tuesday, November 2, 2010

Mais conteúdo relacionado

Semelhante a AtlasCamp 2010: Implementing a custom JIRA UI using plugins 2.0 - Andreas Knecht

Innodb plugin in MySQL 5.1
Innodb plugin in MySQL 5.1Innodb plugin in MySQL 5.1
Innodb plugin in MySQL 5.1Giuseppe Maxia
 
Magic broker 2 #iot2010 presentation
Magic broker 2 #iot2010 presentationMagic broker 2 #iot2010 presentation
Magic broker 2 #iot2010 presentationAdrian Friday
 
Web UI performance tuning
Web UI performance tuningWeb UI performance tuning
Web UI performance tuningAndy Pemberton
 
Nguyễn Vũ Hưng: Project/Information Management. with Redmine
Nguyễn Vũ Hưng: Project/Information Management. with RedmineNguyễn Vũ Hưng: Project/Information Management. with Redmine
Nguyễn Vũ Hưng: Project/Information Management. with RedmineVu Hung Nguyen
 
Information.management.with.redmine thai nguyenfoss.nguyen.vu.hung.20101121-01
Information.management.with.redmine thai nguyenfoss.nguyen.vu.hung.20101121-01Information.management.with.redmine thai nguyenfoss.nguyen.vu.hung.20101121-01
Information.management.with.redmine thai nguyenfoss.nguyen.vu.hung.20101121-01Vu Hung Nguyen
 
The Reluctant SysAdmin : 360|iDev Austin 2010
The Reluctant SysAdmin : 360|iDev Austin 2010The Reluctant SysAdmin : 360|iDev Austin 2010
The Reluctant SysAdmin : 360|iDev Austin 2010Voxilate
 
Droidcon 2011: Gingerbread and honeycomb, Markus Junginger, Greenrobot
Droidcon 2011: Gingerbread and honeycomb, Markus Junginger,  GreenrobotDroidcon 2011: Gingerbread and honeycomb, Markus Junginger,  Greenrobot
Droidcon 2011: Gingerbread and honeycomb, Markus Junginger, GreenrobotDroidcon Berlin
 
Azure Functions e Azure Logics Apps: i tuoi coltellini svizzeri per gestire i...
Azure Functions e Azure Logics Apps: i tuoi coltellini svizzeri per gestire i...Azure Functions e Azure Logics Apps: i tuoi coltellini svizzeri per gestire i...
Azure Functions e Azure Logics Apps: i tuoi coltellini svizzeri per gestire i...Marco Parenzan
 
Puppet Camp Tokyo 2014: Fireballs, ice bats and 1,000,000 plugins: a story of...
Puppet Camp Tokyo 2014: Fireballs, ice bats and 1,000,000 plugins: a story of...Puppet Camp Tokyo 2014: Fireballs, ice bats and 1,000,000 plugins: a story of...
Puppet Camp Tokyo 2014: Fireballs, ice bats and 1,000,000 plugins: a story of...Puppet
 
M.Malone Simple Geo @ Social Developers Summit
M.Malone Simple Geo @ Social Developers SummitM.Malone Simple Geo @ Social Developers Summit
M.Malone Simple Geo @ Social Developers SummitMediabistro
 
Makingweb: Great front end performance starts on the server.
Makingweb: Great front end performance starts on the server.Makingweb: Great front end performance starts on the server.
Makingweb: Great front end performance starts on the server.Jon Arne Sæterås
 
Building Pistachio with Sencha Touch 2 (introductory)
Building Pistachio with Sencha Touch 2 (introductory)Building Pistachio with Sencha Touch 2 (introductory)
Building Pistachio with Sencha Touch 2 (introductory)Luis Merino
 
HTML5 Apps - Mobile Developer Summit Bangalore
HTML5 Apps - Mobile Developer Summit BangaloreHTML5 Apps - Mobile Developer Summit Bangalore
HTML5 Apps - Mobile Developer Summit Bangalorewolframkriesing
 
soft-shake.ch - Vaadin - Rich Web Applications in Server-side Java without Pl...
soft-shake.ch - Vaadin - Rich Web Applications in Server-side Java without Pl...soft-shake.ch - Vaadin - Rich Web Applications in Server-side Java without Pl...
soft-shake.ch - Vaadin - Rich Web Applications in Server-side Java without Pl...soft-shake.ch
 
Creating OpenSocial Apps for millions of users
Creating OpenSocial Apps for millions of usersCreating OpenSocial Apps for millions of users
Creating OpenSocial Apps for millions of usersBastian Hofmann
 
Web sockets in java EE 7 - JavaOne 2013
Web sockets in java EE 7 - JavaOne 2013Web sockets in java EE 7 - JavaOne 2013
Web sockets in java EE 7 - JavaOne 2013Siva Arunachalam
 
Intro to Postgres 9 Tutorial
Intro to Postgres 9 TutorialIntro to Postgres 9 Tutorial
Intro to Postgres 9 TutorialRobert Treat
 
An Introduction to DevOps with Chef
An Introduction to DevOps with ChefAn Introduction to DevOps with Chef
An Introduction to DevOps with ChefJulian Dunn
 
An overview of open source in East Asia (China, Japan, Korea)
An overview of open source in East Asia (China, Japan, Korea)An overview of open source in East Asia (China, Japan, Korea)
An overview of open source in East Asia (China, Japan, Korea)OSCON Byrum
 
Nokia Web Runtime and Flash Lite
Nokia Web Runtime and Flash LiteNokia Web Runtime and Flash Lite
Nokia Web Runtime and Flash LiteRob Toole
 

Semelhante a AtlasCamp 2010: Implementing a custom JIRA UI using plugins 2.0 - Andreas Knecht (20)

Innodb plugin in MySQL 5.1
Innodb plugin in MySQL 5.1Innodb plugin in MySQL 5.1
Innodb plugin in MySQL 5.1
 
Magic broker 2 #iot2010 presentation
Magic broker 2 #iot2010 presentationMagic broker 2 #iot2010 presentation
Magic broker 2 #iot2010 presentation
 
Web UI performance tuning
Web UI performance tuningWeb UI performance tuning
Web UI performance tuning
 
Nguyễn Vũ Hưng: Project/Information Management. with Redmine
Nguyễn Vũ Hưng: Project/Information Management. with RedmineNguyễn Vũ Hưng: Project/Information Management. with Redmine
Nguyễn Vũ Hưng: Project/Information Management. with Redmine
 
Information.management.with.redmine thai nguyenfoss.nguyen.vu.hung.20101121-01
Information.management.with.redmine thai nguyenfoss.nguyen.vu.hung.20101121-01Information.management.with.redmine thai nguyenfoss.nguyen.vu.hung.20101121-01
Information.management.with.redmine thai nguyenfoss.nguyen.vu.hung.20101121-01
 
The Reluctant SysAdmin : 360|iDev Austin 2010
The Reluctant SysAdmin : 360|iDev Austin 2010The Reluctant SysAdmin : 360|iDev Austin 2010
The Reluctant SysAdmin : 360|iDev Austin 2010
 
Droidcon 2011: Gingerbread and honeycomb, Markus Junginger, Greenrobot
Droidcon 2011: Gingerbread and honeycomb, Markus Junginger,  GreenrobotDroidcon 2011: Gingerbread and honeycomb, Markus Junginger,  Greenrobot
Droidcon 2011: Gingerbread and honeycomb, Markus Junginger, Greenrobot
 
Azure Functions e Azure Logics Apps: i tuoi coltellini svizzeri per gestire i...
Azure Functions e Azure Logics Apps: i tuoi coltellini svizzeri per gestire i...Azure Functions e Azure Logics Apps: i tuoi coltellini svizzeri per gestire i...
Azure Functions e Azure Logics Apps: i tuoi coltellini svizzeri per gestire i...
 
Puppet Camp Tokyo 2014: Fireballs, ice bats and 1,000,000 plugins: a story of...
Puppet Camp Tokyo 2014: Fireballs, ice bats and 1,000,000 plugins: a story of...Puppet Camp Tokyo 2014: Fireballs, ice bats and 1,000,000 plugins: a story of...
Puppet Camp Tokyo 2014: Fireballs, ice bats and 1,000,000 plugins: a story of...
 
M.Malone Simple Geo @ Social Developers Summit
M.Malone Simple Geo @ Social Developers SummitM.Malone Simple Geo @ Social Developers Summit
M.Malone Simple Geo @ Social Developers Summit
 
Makingweb: Great front end performance starts on the server.
Makingweb: Great front end performance starts on the server.Makingweb: Great front end performance starts on the server.
Makingweb: Great front end performance starts on the server.
 
Building Pistachio with Sencha Touch 2 (introductory)
Building Pistachio with Sencha Touch 2 (introductory)Building Pistachio with Sencha Touch 2 (introductory)
Building Pistachio with Sencha Touch 2 (introductory)
 
HTML5 Apps - Mobile Developer Summit Bangalore
HTML5 Apps - Mobile Developer Summit BangaloreHTML5 Apps - Mobile Developer Summit Bangalore
HTML5 Apps - Mobile Developer Summit Bangalore
 
soft-shake.ch - Vaadin - Rich Web Applications in Server-side Java without Pl...
soft-shake.ch - Vaadin - Rich Web Applications in Server-side Java without Pl...soft-shake.ch - Vaadin - Rich Web Applications in Server-side Java without Pl...
soft-shake.ch - Vaadin - Rich Web Applications in Server-side Java without Pl...
 
Creating OpenSocial Apps for millions of users
Creating OpenSocial Apps for millions of usersCreating OpenSocial Apps for millions of users
Creating OpenSocial Apps for millions of users
 
Web sockets in java EE 7 - JavaOne 2013
Web sockets in java EE 7 - JavaOne 2013Web sockets in java EE 7 - JavaOne 2013
Web sockets in java EE 7 - JavaOne 2013
 
Intro to Postgres 9 Tutorial
Intro to Postgres 9 TutorialIntro to Postgres 9 Tutorial
Intro to Postgres 9 Tutorial
 
An Introduction to DevOps with Chef
An Introduction to DevOps with ChefAn Introduction to DevOps with Chef
An Introduction to DevOps with Chef
 
An overview of open source in East Asia (China, Japan, Korea)
An overview of open source in East Asia (China, Japan, Korea)An overview of open source in East Asia (China, Japan, Korea)
An overview of open source in East Asia (China, Japan, Korea)
 
Nokia Web Runtime and Flash Lite
Nokia Web Runtime and Flash LiteNokia Web Runtime and Flash Lite
Nokia Web Runtime and Flash Lite
 

Mais de Atlassian

International Women's Day 2020
International Women's Day 2020International Women's Day 2020
International Women's Day 2020Atlassian
 
10 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 202010 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 2020Atlassian
 
Forge App Showcase
Forge App ShowcaseForge App Showcase
Forge App ShowcaseAtlassian
 
Let's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UILet's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UIAtlassian
 
Meet the Forge Runtime
Meet the Forge RuntimeMeet the Forge Runtime
Meet the Forge RuntimeAtlassian
 
Forge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User ExperienceForge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User ExperienceAtlassian
 
Take Action with Forge Triggers
Take Action with Forge TriggersTake Action with Forge Triggers
Take Action with Forge TriggersAtlassian
 
Observability and Troubleshooting in Forge
Observability and Troubleshooting in ForgeObservability and Troubleshooting in Forge
Observability and Troubleshooting in ForgeAtlassian
 
Trusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy ModelTrusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy ModelAtlassian
 
Designing Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI SystemDesigning Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI SystemAtlassian
 
Forge: Under the Hood
Forge: Under the HoodForge: Under the Hood
Forge: Under the HoodAtlassian
 
Access to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIsAccess to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIsAtlassian
 
Design Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginDesign Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginAtlassian
 
Tear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the BuildingTear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the BuildingAtlassian
 
Nailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that MatterNailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that MatterAtlassian
 
Building Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in MindBuilding Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in MindAtlassian
 
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...Atlassian
 
Beyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced TeamsBeyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced TeamsAtlassian
 
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed TeamThe Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed TeamAtlassian
 
Building Apps With Enterprise in Mind
Building Apps With Enterprise in MindBuilding Apps With Enterprise in Mind
Building Apps With Enterprise in MindAtlassian
 

Mais de Atlassian (20)

International Women's Day 2020
International Women's Day 2020International Women's Day 2020
International Women's Day 2020
 
10 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 202010 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 2020
 
Forge App Showcase
Forge App ShowcaseForge App Showcase
Forge App Showcase
 
Let's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UILet's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UI
 
Meet the Forge Runtime
Meet the Forge RuntimeMeet the Forge Runtime
Meet the Forge Runtime
 
Forge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User ExperienceForge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User Experience
 
Take Action with Forge Triggers
Take Action with Forge TriggersTake Action with Forge Triggers
Take Action with Forge Triggers
 
Observability and Troubleshooting in Forge
Observability and Troubleshooting in ForgeObservability and Troubleshooting in Forge
Observability and Troubleshooting in Forge
 
Trusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy ModelTrusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy Model
 
Designing Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI SystemDesigning Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI System
 
Forge: Under the Hood
Forge: Under the HoodForge: Under the Hood
Forge: Under the Hood
 
Access to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIsAccess to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIs
 
Design Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginDesign Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch Plugin
 
Tear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the BuildingTear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the Building
 
Nailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that MatterNailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that Matter
 
Building Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in MindBuilding Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in Mind
 
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
 
Beyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced TeamsBeyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced Teams
 
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed TeamThe Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
 
Building Apps With Enterprise in Mind
Building Apps With Enterprise in MindBuilding Apps With Enterprise in Mind
Building Apps With Enterprise in Mind
 

AtlasCamp 2010: Implementing a custom JIRA UI using plugins 2.0 - Andreas Knecht

  • 1. Implementing a custom JIRA UI using plugins 2.0Andreas Knecht Plugins 2 & REST Tuesday, November 2, 2010
  • 2. Overview • How to implement a custom UI • How to implement a REST resource • Demo • svn co https://labs.atlassian.com/svn/IPHONE/trunk Excellent resource - This is a great app, not just because it looks good. It's also a great resource for JIRA 4.0 REST plugin development. Matt Doar (PAC - 2 Dec 09) “ ” Tuesday, November 2, 2010
  • 3. Custom UI • Why? • Building Blocks oServlet Filters oWebwork actions oHTML/JS + REST Tuesday, November 2, 2010
  • 4. This is not a talk about REST! Tuesday, November 2, 2010
  • 5. JIRA Web-Interface for the iPhone • Easy to use interface on the iPhone • Plugins 2 plugin • Most of the work done client-side • Custom REST interface Tuesday, November 2, 2010
  • 7. Some stats • 2000+ downloads since November 09 • ~7000 LOC • 20 20% days to develop • 8 features 0 85 170 255 340 11/0902/10 05/10 08/10 Downloads Tuesday, November 2, 2010
  • 8. Custom UI - Filters • Redirect certain users • Inject content into pages Tuesday, November 2, 2010
  • 9. Custom UI - Define a Filter • URL-Pattern • Location oafter-encoding, before-login, before-decoration, before-dispatch Tuesday, November 2, 2010
  • 10. Custom UI - Webwork • Full MVC UI framework • Views, Commands, Validation, Templating • /secure/* is not secure • roles-required=”admin” does not work Tuesday, November 2, 2010
  • 12. REST • Simple for small data • What about 100000 issues? vs Tuesday, November 2, 2010
  • 13. Expands to the Rescue .../rest/iphone/1.0/filter/10000.json Tuesday, November 2, 2010
  • 14. Expands to the Rescue .../rest/iphone/1.0/filter/10000.json?expand=result[1:2] Tuesday, November 2, 2010
  • 15. Expands to the Rescue .../rest/iphone/1.0/filter/10000.json?expand=result[1:2] Tuesday, November 2, 2010
  • 16. Expands to the Rescue .../rest/iphone/1.0/filter/10000.json?expand=result[1:2].issue.details Tuesday, November 2, 2010
  • 17. Expands to the Rescue .../rest/iphone/1.0/filter/10000.json?expand=result[1:2].issue.details Tuesday, November 2, 2010
  • 18. Expands to the Rescue .../rest/iphone/1.0/filter/10000.json?expand=result[1:2].issue.details.comments[1] Tuesday, November 2, 2010
  • 19. Expands to the Rescue .../rest/iphone/1.0/filter/10000.json?expand=result[1:2].issue.details.comments[1] Tuesday, November 2, 2010
  • 20. How do expands work? • Lists vs Objects Tuesday, November 2, 2010
  • 21. How to expand lists! Tuesday, November 2, 2010
  • 22. How to expand objects! Tuesday, November 2, 2010
  • 23. How to expand objects • REST provides com.atlassian.plugins.rest.common.expand.EntityExpanders ... Tuesday, November 2, 2010
  • 24. REST • Backend doesnʼt always support expands • Tricky to implement expands • #protip: Use services Tuesday, November 2, 2010
  • 25. Services keep you safe! Tuesday, November 2, 2010
  • 26. Demo • Implement ʻAdd Commentʼ feature • Requires some client side JS • Server side REST resource • Tools Tuesday, November 2, 2010
  • 27. Summary • Use HTML/JS as much as possible oFaster development turnaround oGood frameworks (jQuery, GWT, jQTouch...) • If our REST API doesnʼt do it for you... Tuesday, November 2, 2010