SlideShare a Scribd company logo
June 3-5, 2014 | Berlin, Germany
A P2 Plugin and a
SaaS Platform Walk
Into a Bar…
Jonathan Doklovic, Principal Developer, Atlassian
Stuff That Came out of Developing
Atlassian Connect That Can Help
Make Writing P2 Plugins and Even
Plain Old Java Projects Easier And
More Efficient
Jonathan Doklovic, Principal Developer, Atlassian
Nomenclature
AtlasCamp 2014: A P2 Plugin and a SaaS Platform Walk Into a Bar
P2
P2Connect
Addons
AtlasCamp 2014: A P2 Plugin and a SaaS Platform Walk Into a Bar
AtlasCamp 2014: A P2 Plugin and a SaaS Platform Walk Into a Bar
AtlasCamp 2014: A P2 Plugin and a SaaS Platform Walk Into a Bar
P2
P2
P2
Building Made Easy
Git Flow
Git Flow vs.
GIT Flow + Maven
K I S S YO U R S A N I T Y G O O D BY E
I want to
merge A LOT
without
conflicts!
Screw
conflicts, I
want to change
poms !
A LOT!
I want
SNAPSHOTS!
I 

want to add
files to your
working
folder
I want to assume
you only have one
master branch
and commit to
source control
myself!
Maven JGIT Flow Plugin
• No need to install git-flow!
• No maven-release-plugin!
• Smartly manages version changes between branches!
• Full GIT Flow lifecycle / merge strategy!
• Extra “goodies” for dealing with CI
K I S S T H E M AV E N R E L E A S E P L U G I N G O O D BY E
bitbucket.org/atlassian/jgit-flow
Transformers Are Evil
<atlassian-plugin key="${project.groupId}.${project.artifactId}" name="${project.name}" plugins-
version="2">
<plugin-info>
<description>${project.description}</description>
<version>${project.version}</version>
<vendor name="${project.organization.name}" url="${project.organization.url}" />
!
<bundle-instructions>
<Export-Package>
com.atlassian.upm.api.util*;version="${upm.version}"
</Export-Package>
</bundle-instructions>
</plugin-info>
!
<component-import key="applicationProperties" interface="com.atlassian.sal.api.ApplicationProperties"
/>
!
<component key="someComponent" class="com.atlassian.example.SomeComponentClass" />
!
</atlassian-plugin>
atlassian-plugin.xml
AtlasCamp 2014: A P2 Plugin and a SaaS Platform Walk Into a Bar
AtlasCamp 2014: A P2 Plugin and a SaaS Platform Walk Into a Bar
AtlasCamp 2014: A P2 Plugin and a SaaS Platform Walk Into a Bar
AtlasCamp 2014: A P2 Plugin and a SaaS Platform Walk Into a Bar
AtlasCamp 2014: A P2 Plugin and a SaaS Platform Walk Into a Bar
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:component-scan base-package="org.example"/>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:component-scan base-package="org.example"/>
</beans>
@Component @Autowired
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<atlassian-scanner:scan-indexes/>
</beans>
@Named
@Inject
@JiraComponent
@ConfluenceComponent
@ClasspathComponent
@ComponentImport
@ConfluenceImport
@JiraImport
@ExportAsService
@ExportAsDevService
Atlassian Spring Scanner
• No jar transforms!
• No runtime classpath scanning!
• Moves all component related things into java!
• Makes OSGi BND actually work!
• Compile time scanning == super fast plugin loads
K I S S T R A N S F O R M S A N D C L A S S PAT H S C A N N I N G G O O D BY E
bitbucket.org/atlassian/atlassian-spring-scanner
How Do You Install
Nothing?
P2 ==
AtlasCamp 2014: A P2 Plugin and a SaaS Platform Walk Into a Bar
AtlasCamp 2014: A P2 Plugin and a SaaS Platform Walk Into a Bar
AtlasCamp 2014: A P2 Plugin and a SaaS Platform Walk Into a Bar
AtlasCamp 2014: A P2 Plugin and a SaaS Platform Walk Into a Bar
AtlasCamp 2014: A P2 Plugin and a SaaS Platform Walk Into a Bar
AtlasCamp 2014: A P2 Plugin and a SaaS Platform Walk Into a Bar
AtlasCamp 2014: A P2 Plugin and a SaaS Platform Walk Into a Bar
AtlasCamp 2014: A P2 Plugin and a SaaS Platform Walk Into a Bar
AtlasCamp 2014: A P2 Plugin and a SaaS Platform Walk Into a Bar
AtlasCamp 2014: A P2 Plugin and a SaaS Platform Walk Into a Bar
AtlasCamp 2014: A P2 Plugin and a SaaS Platform Walk Into a Bar
Dynamic Plugin Modules
bitbucket.org/atlassian/atlassian-pocketknife
• Modules are registered as OSGi Services!
• Complete control over module lifecycle!
• Super fast startup!
• No longer confined to what’s in atlassian-plugin.xml!
M AG I C A L M O D U L E S A P P E A R A N D D I S A P P E A R
Live, Breathe and Eat Code;
Spit Out Docs
AtlasCamp 2014: A P2 Plugin and a SaaS Platform Walk Into a Bar
XSD
XSD
AtlasCamp 2014: A P2 Plugin and a SaaS Platform Walk Into a Bar
+
AtlasCamp 2014: A P2 Plugin and a SaaS Platform Walk Into a Bar
json-schema Generator
• Generate json-schema from JAVA POJOs!
• Easy to use annotations!
• Schema can be validated with ANY json-schema validator!
• Plain Ol’ JAVA library can be embedded in anything
AtlasCamp 2014: A P2 Plugin and a SaaS Platform Walk Into a Bar
json-schema + Maven
• Generate json-schema from JAVA POJOs!
• Easy to use annotations!
• Schema can be validated with ANY json-schema validator!
• Now embedded in a Maven plugin!
• Adds javadocs as schema descriptions!
• Compile time generation
AtlasCamp 2014: A P2 Plugin and a SaaS Platform Walk Into a Bar
AtlasCamp 2014: A P2 Plugin and a SaaS Platform Walk Into a Bar
AtlasCamp 2014: A P2 Plugin and a SaaS Platform Walk Into a Bar
AtlasCamp 2014: A P2 Plugin and a SaaS Platform Walk Into a Bar
AtlasCamp 2014: A P2 Plugin and a SaaS Platform Walk Into a Bar
AtlasCamp 2014: A P2 Plugin and a SaaS Platform Walk Into a Bar
json-schemagen
bitbucket.org/atlassian/json-schemagen
• json-schema from JAVA POJO’s!
• Runs as a Maven plugin!
• Javadocs included in schema!
• Easily generate example code!
• Keep you docs in your DVCS!
• Never let your docs get out of date!
W R I T E C O D E N O T D O C S
bitbucket.org/atlassian/jgit-flow
bitbucket.org/atlassian/atlassian-spring-scanner
bitbucket.org/atlassian/json-schemagen
bitbucket.org/atlassian/atlassian-pocketknife
Resources
Get In Touch
Here At AtlasCamp
doklovic@atlassian.com
@sysbliss

More Related Content

PDF
AtlasCamp 2015: Plugins 2: All grown up
PDF
Implementing your own Google App Engine
PDF
Ceylon From Here to Infinity: The Big Picture and What's Coming
PDF
Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014
PDF
Continuous Delivery - Voxxed Days Thessaloniki 21.10.2016
PDF
Continuous Delivery - Devoxx Morocco 2016
PPTX
Engineering Tools at Netflix: Enabling Continuous Delivery
PPT
Heroku for team collaboration
AtlasCamp 2015: Plugins 2: All grown up
Implementing your own Google App Engine
Ceylon From Here to Infinity: The Big Picture and What's Coming
Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014
Continuous Delivery - Voxxed Days Thessaloniki 21.10.2016
Continuous Delivery - Devoxx Morocco 2016
Engineering Tools at Netflix: Enabling Continuous Delivery
Heroku for team collaboration

What's hot (20)

PPTX
Testing API's: Tools & Tips & Tricks (Oh My!)
PPTX
Release the Monkeys ! Testing in the Wild at Netflix
PDF
Game of Codes: the Battle for CI
PDF
SaltConf14 - Craig Sebenik, LinkedIn - SaltStack at Web Scale
KEY
Avoiding integration hell
PDF
Atlassian Roadshow 2016 - DevOps Session
PPTX
#ITsubbotnik Spring 2017: Andriy Filatov "Ансамбль солёных поваров: сравнивае...
ODP
Microservices with Apache Camel
PPTX
CloudSkew Architecture
PPTX
SaltConf2015: SaltStack at Scale Automating Your Automation
PDF
Take your CFML Legacy Apps to Modernization
PDF
Making the switch to DVCS
PDF
JUC Europe 2015: Optimizing Your CI: Lessons Learned from a Successful Jenkin...
PDF
DevOpsDays Houston 2019 - Shaun Ladewig, Robert Stone - From OverTheWallOps t...
PDF
Swagger code motion talk
PDF
7 Apache Process Cloudstack Developer Day
PPTX
Effective Testing with Ansible and InSpec
PDF
Dev112 let's calendar that
PPTX
Moscow DevOps Meetup P2P oct 2015
PDF
Monitoring Big Data Systems Done "The Simple Way" - Codemotion Milan 2017 - D...
Testing API's: Tools & Tips & Tricks (Oh My!)
Release the Monkeys ! Testing in the Wild at Netflix
Game of Codes: the Battle for CI
SaltConf14 - Craig Sebenik, LinkedIn - SaltStack at Web Scale
Avoiding integration hell
Atlassian Roadshow 2016 - DevOps Session
#ITsubbotnik Spring 2017: Andriy Filatov "Ансамбль солёных поваров: сравнивае...
Microservices with Apache Camel
CloudSkew Architecture
SaltConf2015: SaltStack at Scale Automating Your Automation
Take your CFML Legacy Apps to Modernization
Making the switch to DVCS
JUC Europe 2015: Optimizing Your CI: Lessons Learned from a Successful Jenkin...
DevOpsDays Houston 2019 - Shaun Ladewig, Robert Stone - From OverTheWallOps t...
Swagger code motion talk
7 Apache Process Cloudstack Developer Day
Effective Testing with Ansible and InSpec
Dev112 let's calendar that
Moscow DevOps Meetup P2P oct 2015
Monitoring Big Data Systems Done "The Simple Way" - Codemotion Milan 2017 - D...
Ad

Similar to AtlasCamp 2014: A P2 Plugin and a SaaS Platform Walk Into a Bar (20)

PDF
Intro to DefectDojo at OWASP Switzerland
PDF
Function as a Service
PPTX
Apache Maven - eXo VN office presentation
PPTX
Amis conference soa deployment. the dirty tricks using bamboo, nexus and xl ...
PDF
DevOps With Chef and Azure
KEY
Using the Atlassian Plugin Platform to Create Your Own SaaS Plugin Platform
KEY
Simple SQL Change Management with Sqitch
PDF
Spring Boot to Quarkus: A real app migration experience | DevNation Tech Talk
KEY
How To Make A Framework Plugin That Does Not Suck
PDF
VSTS Migration Briefing
PDF
Introducing Deployit 3.9
PDF
Scaling Plugins in Critical Systems - Jon Mort
PDF
Into The Box 2018 CI Deep Dive
PDF
Continuous Deployment @ AWS Re:Invent
PDF
Intro to GitOps & Flux.pdf
KEY
Standardizing and Managing Your Infrastructure - MOSC 2011
PPTX
Developing for the Atlassian Ecosystem
PDF
AtlasCamp 2014: Atlassian Connect State of the Union
PPTX
Integration Monday - Logic Apps: Development Experiences
PDF
OWASP DefectDojo - Open Source Security Sanity
Intro to DefectDojo at OWASP Switzerland
Function as a Service
Apache Maven - eXo VN office presentation
Amis conference soa deployment. the dirty tricks using bamboo, nexus and xl ...
DevOps With Chef and Azure
Using the Atlassian Plugin Platform to Create Your Own SaaS Plugin Platform
Simple SQL Change Management with Sqitch
Spring Boot to Quarkus: A real app migration experience | DevNation Tech Talk
How To Make A Framework Plugin That Does Not Suck
VSTS Migration Briefing
Introducing Deployit 3.9
Scaling Plugins in Critical Systems - Jon Mort
Into The Box 2018 CI Deep Dive
Continuous Deployment @ AWS Re:Invent
Intro to GitOps & Flux.pdf
Standardizing and Managing Your Infrastructure - MOSC 2011
Developing for the Atlassian Ecosystem
AtlasCamp 2014: Atlassian Connect State of the Union
Integration Monday - Logic Apps: Development Experiences
OWASP DefectDojo - Open Source Security Sanity
Ad

More from Atlassian (20)

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

Recently uploaded (20)

PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
cuic standard and advanced reporting.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Encapsulation theory and applications.pdf
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Modernizing your data center with Dell and AMD
PDF
Electronic commerce courselecture one. Pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Empathic Computing: Creating Shared Understanding
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPTX
A Presentation on Artificial Intelligence
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
Review of recent advances in non-invasive hemoglobin estimation
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
CIFDAQ's Market Insight: SEC Turns Pro Crypto
cuic standard and advanced reporting.pdf
Spectral efficient network and resource selection model in 5G networks
Encapsulation theory and applications.pdf
The Rise and Fall of 3GPP – Time for a Sabbatical?
“AI and Expert System Decision Support & Business Intelligence Systems”
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Modernizing your data center with Dell and AMD
Electronic commerce courselecture one. Pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Empathic Computing: Creating Shared Understanding
Diabetes mellitus diagnosis method based random forest with bat algorithm
A Presentation on Artificial Intelligence
Chapter 3 Spatial Domain Image Processing.pdf
Unlocking AI with Model Context Protocol (MCP)

AtlasCamp 2014: A P2 Plugin and a SaaS Platform Walk Into a Bar

  • 1. June 3-5, 2014 | Berlin, Germany
  • 2. A P2 Plugin and a SaaS Platform Walk Into a Bar… Jonathan Doklovic, Principal Developer, Atlassian
  • 3. Stuff That Came out of Developing Atlassian Connect That Can Help Make Writing P2 Plugins and Even Plain Old Java Projects Easier And More Efficient Jonathan Doklovic, Principal Developer, Atlassian
  • 6. P2
  • 11. P2
  • 12. P2
  • 13. P2
  • 17. GIT Flow + Maven K I S S YO U R S A N I T Y G O O D BY E I want to merge A LOT without conflicts! Screw conflicts, I want to change poms ! A LOT! I want SNAPSHOTS! I 
 want to add files to your working folder I want to assume you only have one master branch and commit to source control myself!
  • 18. Maven JGIT Flow Plugin • No need to install git-flow! • No maven-release-plugin! • Smartly manages version changes between branches! • Full GIT Flow lifecycle / merge strategy! • Extra “goodies” for dealing with CI K I S S T H E M AV E N R E L E A S E P L U G I N G O O D BY E bitbucket.org/atlassian/jgit-flow
  • 20. <atlassian-plugin key="${project.groupId}.${project.artifactId}" name="${project.name}" plugins- version="2"> <plugin-info> <description>${project.description}</description> <version>${project.version}</version> <vendor name="${project.organization.name}" url="${project.organization.url}" /> ! <bundle-instructions> <Export-Package> com.atlassian.upm.api.util*;version="${upm.version}" </Export-Package> </bundle-instructions> </plugin-info> ! <component-import key="applicationProperties" interface="com.atlassian.sal.api.ApplicationProperties" /> ! <component key="someComponent" class="com.atlassian.example.SomeComponentClass" /> ! </atlassian-plugin> atlassian-plugin.xml
  • 26. <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:component-scan base-package="org.example"/> </beans>
  • 27. <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:component-scan base-package="org.example"/> </beans> @Component @Autowired
  • 28. <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <atlassian-scanner:scan-indexes/> </beans>
  • 30. Atlassian Spring Scanner • No jar transforms! • No runtime classpath scanning! • Moves all component related things into java! • Makes OSGi BND actually work! • Compile time scanning == super fast plugin loads K I S S T R A N S F O R M S A N D C L A S S PAT H S C A N N I N G G O O D BY E bitbucket.org/atlassian/atlassian-spring-scanner
  • 31. How Do You Install Nothing?
  • 32. P2 ==
  • 44. Dynamic Plugin Modules bitbucket.org/atlassian/atlassian-pocketknife • Modules are registered as OSGi Services! • Complete control over module lifecycle! • Super fast startup! • No longer confined to what’s in atlassian-plugin.xml! M AG I C A L M O D U L E S A P P E A R A N D D I S A P P E A R
  • 45. Live, Breathe and Eat Code; Spit Out Docs
  • 47. XSD
  • 48. XSD
  • 50. +
  • 52. json-schema Generator • Generate json-schema from JAVA POJOs! • Easy to use annotations! • Schema can be validated with ANY json-schema validator! • Plain Ol’ JAVA library can be embedded in anything
  • 54. json-schema + Maven • Generate json-schema from JAVA POJOs! • Easy to use annotations! • Schema can be validated with ANY json-schema validator! • Now embedded in a Maven plugin! • Adds javadocs as schema descriptions! • Compile time generation
  • 61. json-schemagen bitbucket.org/atlassian/json-schemagen • json-schema from JAVA POJO’s! • Runs as a Maven plugin! • Javadocs included in schema! • Easily generate example code! • Keep you docs in your DVCS! • Never let your docs get out of date! W R I T E C O D E N O T D O C S
  • 63. Get In Touch Here At AtlasCamp doklovic@atlassian.com @sysbliss