SlideShare a Scribd company logo
Confluence 4.0, Macros
and Migration
Ryan Thomas
ryan.thomas@atlassian.com
1
Tuesday, November 2, 2010
Overview
• Confluence 4.0
• XHTML Storage Format
• New API
• Migration
• Macro Migration
2
Tuesday, November 2, 2010
Introducing
Confluence 4.0
3
Tuesday, November 2, 2010
New RTE Interface
4
Tuesday, November 2, 2010
Macro Placeholders
5
Tuesday, November 2, 2010
Many WYSIWYG Improvements
6
Tuesday, November 2, 2010
Inline Wiki Markup Completion
[space]
[*]
7
Tuesday, November 2, 2010
Confluence 4.0
• No more wiki-markup!
• Better keyboard shortcut support.
• Legacy ‘insert wiki-markup’ support.
• We have many wiki-markup fanatics at
Atlassian - we have to satisfy them all.
8
Tuesday, November 2, 2010
New Storage Format
• No more wiki-markup!
• Content stored as XHTML with custom
namespaces.
• We provide an API to interact with the
Storage Format
9
Tuesday, November 2, 2010
Headings
10
h3. Creating a new macro in Confluence 4.0
Wiki Markup
<h3>Creating a new macro in Confluence 4.0</h3>
XHTML
Tuesday, November 2, 2010
Links
11
[Link To Home Page|Home]
Wiki Markup
<ac:link>
<ri:page ri:space-key="ds" ri:content-title="Home" />
<ac:link-body>Link To Home Page</ac:link-body>
</ac:link>
XHTML
Tuesday, November 2, 2010
Macros
12
{code:java|title=Migrator Interface}
public interface Migrator {
String migrate(String wiki, RenderContext renderContext,
List<RuntimeException> exceptions);
}
{code}
Wiki Markup
<ac:macro name="code">
<ac:parameter name="title">Migrator Interface</ac:parameter>
<ac:default-parameter>java</ac:default-parameter>
<ac:body><![CDATA[
public interface Migrator {
String migrate(String wiki, RenderContext renderContext,
List<RuntimeException> exceptions);
}]]>
</ac:body>
</ac:macro>
XHTML
Tuesday, November 2, 2010
Formatting Macros
13
{color:red}This is some text that should appear in red{color}
Wiki Markup
<span style="color: red;">This is some text that should
appear in red</span>
XHTML
Tuesday, November 2, 2010
Disabled Macros
14
{diabledMacro:param1|param2=value2}
And I have a body
{disabledMacro}
Wiki Markup
<ac:macro name="unmigrated-wiki-markup">
<ac:body><![CDATA[
{disabledMacro:param1|param2=value2}
And I have a body
{disabledMacro}
]]></ac:body>
</ac:macro>
XHTML
Tuesday, November 2, 2010
API
15
• The BodyContent class now has a BodyType
member.
• Current types are: Wiki, Mail and XHTML
• Initial values are populated as an upgrade task.
• Why? Selective and on-the-fly migration of
unmigrated and previous content versions.
Tuesday, November 2, 2010
API
•ContentEntityObject.getContent()has
been removed.
•This is to intentionally break plugins that use this, in 4.0.
•XHTML Storage Format will be returned with
ContentEntityObject.getBodyAsString()
16
Tuesday, November 2, 2010
API
• New bean XhtmlContent for
performing common operations on the
Storage Format.
• Allows you to migrate wiki-markup to
Storage Format.
• Ideally you will not need to touch XHTML
when performing operations with this API.
17
Tuesday, November 2, 2010
Migration
• If an instance is upgraded, we need to
migrate the content to the XHTML Storage
Format.
• The latest version of content will be
migrated and saved as a new version.
• We do this by using a custom renderer that
renders wiki-markup to XHTML.
18
Tuesday, November 2, 2010
Migration
• Anything that cannot be migrated gets
wrapped in a new macro: unmigrated-wiki-
markup
19
<ac:macro name="unmigrated-wiki-markup">
<ac:body><![CDATA[
{bad-wiki[markup|
]]></ac:body>
</ac:macro>
Tuesday, November 2, 2010
Macro Migration
• Macros also need to be migrated!
• Macros don’t have to be 4.0 macros to be
migrated (for now).
• Custom migration implementations are
available to plugins.
20
Tuesday, November 2, 2010
Macro Migration
21
Preferred Method
Start
bodyless?
Automatic
Migration
XHTML? Custom?
Use Custom
Migrator
Automatic
Migration
Yes
No
Yes
Yes
No
No
Wrap with
unmigrated-wiki-
markup macro
To be deprecated
Tuesday, November 2, 2010
Macro Migration
• Automatic migration will select one of the
built in migrators depending on the body
type:
•PlainTextMacroMigrator
•RichTextMacroMigrator
• Custom migration can be used by
implementing the MacroMigrator
interface.
22
Tuesday, November 2, 2010
Example / Demo
• Upgrading my macros from 3.x to 4.0, and
fixing some things in migration.
•{mycheese}
•{mycolour}
red:Some red text
{mycolour}
23
Tuesday, November 2, 2010
Summary
24
• Confluence 4.0 is going to ROCK!
• XHTML Storage Format
• New API
• Migration
• Macro Migration
Tuesday, November 2, 2010
Confluence 4.0 Alpha
http://atlss.in/confdev4
• This is an ALPHA release for AtlasCampers!
• Provided to assist with plugin migration.
• Feedback - especially on migration and interacting
with the storage format - encouraged!
• Please, PLEASE do not install this on a production
instance...
• There is NO upgrade path from this alpha!
25
Tuesday, November 2, 2010
Confluence 4.0 Alpha
26
<dependency>
<groupId>com.atlassian.confluence</groupId>
<artifactId>confluence</artifactId>
<version>4.0-alpha2</version>
</dependency>
<confluence.version>4.0-alpha2</confluence.version>
Tuesday, November 2, 2010
Questions?
27
Questions / Problems / Feedback
confluence4@atlassian.com
OR
Ryan Thomas
ryan.thomas@atlassian.com
Tuesday, November 2, 2010

More Related Content

PDF
Alfresco WebScript Connector for Apache ManifoldCF
PDF
Ozone-Wayland Support in Chromium (GENIVI 13th All Member Meeting & AMM Open ...
PPT
Implementing portlets using Web Scripts
PPTX
Cloud Computing Security
PPTX
Alfresco Summit 2014 - Crafter CMS - Case European Bank
PDF
Microservices with Spring Cloud
PPT
Internet services, protocols, applications, packets and frames
PPTX
2 LaTex Installation
Alfresco WebScript Connector for Apache ManifoldCF
Ozone-Wayland Support in Chromium (GENIVI 13th All Member Meeting & AMM Open ...
Implementing portlets using Web Scripts
Cloud Computing Security
Alfresco Summit 2014 - Crafter CMS - Case European Bank
Microservices with Spring Cloud
Internet services, protocols, applications, packets and frames
2 LaTex Installation

What's hot (20)

PPTX
Super Size Your Search
PDF
Apache ManifoldCF
PDF
Service Discovery: From Classic to VPC
PDF
JavaCro'15 - Secure Web Services Development - Askar Akhmerov
PDF
Developing XWiki
PDF
From PHP monolith to polyglot microservices
PDF
Apache ManifoldCF @ Linux Day 2012
PDF
LNUG - A year with AWS
PPTX
Ditributed Version Control System
PPTX
Architecting Single Page Applications
PPTX
ServiceNow-Box Integration
PPTX
Using ELK-Stack (Elasticsearch, Logstash and Kibana) with BizTalk Server
PDF
Restlet: Building a multi-tenant API PaaS with DataStax Enterprise Search
PPTX
Stack sync using openstack
PDF
Laravel workshop
PPTX
How to: node js & micro-services
PPTX
Mule soft meetup warsaw november 13th, 2019
PDF
Cassandra Summit 2015 - Building a multi-tenant API PaaS with DataStax Enterp...
PPTX
What to expect with Microsoft Exchange 2016?
PDF
Scripting Languages in OSGi
Super Size Your Search
Apache ManifoldCF
Service Discovery: From Classic to VPC
JavaCro'15 - Secure Web Services Development - Askar Akhmerov
Developing XWiki
From PHP monolith to polyglot microservices
Apache ManifoldCF @ Linux Day 2012
LNUG - A year with AWS
Ditributed Version Control System
Architecting Single Page Applications
ServiceNow-Box Integration
Using ELK-Stack (Elasticsearch, Logstash and Kibana) with BizTalk Server
Restlet: Building a multi-tenant API PaaS with DataStax Enterprise Search
Stack sync using openstack
Laravel workshop
How to: node js & micro-services
Mule soft meetup warsaw november 13th, 2019
Cassandra Summit 2015 - Building a multi-tenant API PaaS with DataStax Enterp...
What to expect with Microsoft Exchange 2016?
Scripting Languages in OSGi
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
Ad

Recently uploaded (20)

PDF
STKI Israel Market Study 2025 version august
PPTX
observCloud-Native Containerability and monitoring.pptx
PPTX
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
PDF
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
PPTX
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
PPT
Module 1.ppt Iot fundamentals and Architecture
PPTX
Tartificialntelligence_presentation.pptx
PDF
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
PPTX
TLE Review Electricity (Electricity).pptx
PDF
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PDF
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
PDF
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
PDF
Getting Started with Data Integration: FME Form 101
PDF
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PDF
1 - Historical Antecedents, Social Consideration.pdf
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
PPT
What is a Computer? Input Devices /output devices
STKI Israel Market Study 2025 version august
observCloud-Native Containerability and monitoring.pptx
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
Module 1.ppt Iot fundamentals and Architecture
Tartificialntelligence_presentation.pptx
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
TLE Review Electricity (Electricity).pptx
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
Group 1 Presentation -Planning and Decision Making .pptx
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
Getting Started with Data Integration: FME Form 101
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf
gpt5_lecture_notes_comprehensive_20250812015547.pdf
1 - Historical Antecedents, Social Consideration.pdf
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
What is a Computer? Input Devices /output devices

AtlasCamp 2010: Macro Migration Guide for Confluence 4.0 - Ryan Thomas