Suche senden
Hochladen
ApacheCon: Abdera A Java Atom Pub Implementation
•
3 gefällt mir
•
1,271 views
David Calavera
Folgen
Melden
Teilen
Melden
Teilen
1 von 11
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Creating Your First WordPress Plugin
Creating Your First WordPress Plugin
Colin Loretz
8. Move in Laravel
8. Move in Laravel
Razvan Raducanu, PhD
Angular server-side communication
Angular server-side communication
Alexe Bogdan
Angular promises and http
Angular promises and http
Alexe Bogdan
Firebase ng2 zurich
Firebase ng2 zurich
Christoffer Noring
Routing @ Scuk.cz
Routing @ Scuk.cz
Jakub Kulhan
React native-firebase startup-mtup
React native-firebase startup-mtup
t k
Phpbase
Phpbase
ASHABOOPATHY
Empfohlen
Creating Your First WordPress Plugin
Creating Your First WordPress Plugin
Colin Loretz
8. Move in Laravel
8. Move in Laravel
Razvan Raducanu, PhD
Angular server-side communication
Angular server-side communication
Alexe Bogdan
Angular promises and http
Angular promises and http
Alexe Bogdan
Firebase ng2 zurich
Firebase ng2 zurich
Christoffer Noring
Routing @ Scuk.cz
Routing @ Scuk.cz
Jakub Kulhan
React native-firebase startup-mtup
React native-firebase startup-mtup
t k
Phpbase
Phpbase
ASHABOOPATHY
Angular mix chrisnoring
Angular mix chrisnoring
Christoffer Noring
From * to Symfony2
From * to Symfony2
Manuel Baldassarri
Using Change Streams to Keep Up with Your Data
Using Change Streams to Keep Up with Your Data
MongoDB
AngularJS $http Interceptors (Explanation and Examples)
AngularJS $http Interceptors (Explanation and Examples)
Brian Swartzfager
Perl 5.28 new features
Perl 5.28 new features
brian d foy
Finch.io - Purely Functional REST API with Finagle
Finch.io - Purely Functional REST API with Finagle
Vladimir Kostyukov
Building Go Web Apps
Building Go Web Apps
Mark
Sql FUNCTIONS
Sql FUNCTIONS
Abrar ali
Do something in 5 minutes with gas 1-use spreadsheet as database
Do something in 5 minutes with gas 1-use spreadsheet as database
Bruce McPherson
Typescript barcelona
Typescript barcelona
Christoffer Noring
Android HttpClient - new slide!
Android HttpClient - new slide!
Chalermchon Samana
G* on GAE/J 挑戦編
G* on GAE/J 挑戦編
Tsuyoshi Yamamoto
exportDisabledUsersRemoveMailbox
exportDisabledUsersRemoveMailbox
Daniel Gilhousen
Why Redux-Observable?
Why Redux-Observable?
Anna Su
NoSQL Injections in Node.js - The case of MongoDB
NoSQL Injections in Node.js - The case of MongoDB
Sqreen
SPFx: Working with SharePoint Content
SPFx: Working with SharePoint Content
Vladimir Medina
SPFx working with SharePoint data
SPFx working with SharePoint data
Vladimir Medina
Storytelling By Numbers
Storytelling By Numbers
Michael King
Angular.js Fundamentals
Angular.js Fundamentals
Mark
6 things about perl 6
6 things about perl 6
brian d foy
Egyptian Aeraunautical Sports Club Guide
Egyptian Aeraunautical Sports Club Guide
ahmad bassiouny
Life-feed | final presentation
Life-feed | final presentation
Pixelkings
Weitere ähnliche Inhalte
Was ist angesagt?
Angular mix chrisnoring
Angular mix chrisnoring
Christoffer Noring
From * to Symfony2
From * to Symfony2
Manuel Baldassarri
Using Change Streams to Keep Up with Your Data
Using Change Streams to Keep Up with Your Data
MongoDB
AngularJS $http Interceptors (Explanation and Examples)
AngularJS $http Interceptors (Explanation and Examples)
Brian Swartzfager
Perl 5.28 new features
Perl 5.28 new features
brian d foy
Finch.io - Purely Functional REST API with Finagle
Finch.io - Purely Functional REST API with Finagle
Vladimir Kostyukov
Building Go Web Apps
Building Go Web Apps
Mark
Sql FUNCTIONS
Sql FUNCTIONS
Abrar ali
Do something in 5 minutes with gas 1-use spreadsheet as database
Do something in 5 minutes with gas 1-use spreadsheet as database
Bruce McPherson
Typescript barcelona
Typescript barcelona
Christoffer Noring
Android HttpClient - new slide!
Android HttpClient - new slide!
Chalermchon Samana
G* on GAE/J 挑戦編
G* on GAE/J 挑戦編
Tsuyoshi Yamamoto
exportDisabledUsersRemoveMailbox
exportDisabledUsersRemoveMailbox
Daniel Gilhousen
Why Redux-Observable?
Why Redux-Observable?
Anna Su
NoSQL Injections in Node.js - The case of MongoDB
NoSQL Injections in Node.js - The case of MongoDB
Sqreen
SPFx: Working with SharePoint Content
SPFx: Working with SharePoint Content
Vladimir Medina
SPFx working with SharePoint data
SPFx working with SharePoint data
Vladimir Medina
Storytelling By Numbers
Storytelling By Numbers
Michael King
Angular.js Fundamentals
Angular.js Fundamentals
Mark
6 things about perl 6
6 things about perl 6
brian d foy
Was ist angesagt?
(20)
Angular mix chrisnoring
Angular mix chrisnoring
From * to Symfony2
From * to Symfony2
Using Change Streams to Keep Up with Your Data
Using Change Streams to Keep Up with Your Data
AngularJS $http Interceptors (Explanation and Examples)
AngularJS $http Interceptors (Explanation and Examples)
Perl 5.28 new features
Perl 5.28 new features
Finch.io - Purely Functional REST API with Finagle
Finch.io - Purely Functional REST API with Finagle
Building Go Web Apps
Building Go Web Apps
Sql FUNCTIONS
Sql FUNCTIONS
Do something in 5 minutes with gas 1-use spreadsheet as database
Do something in 5 minutes with gas 1-use spreadsheet as database
Typescript barcelona
Typescript barcelona
Android HttpClient - new slide!
Android HttpClient - new slide!
G* on GAE/J 挑戦編
G* on GAE/J 挑戦編
exportDisabledUsersRemoveMailbox
exportDisabledUsersRemoveMailbox
Why Redux-Observable?
Why Redux-Observable?
NoSQL Injections in Node.js - The case of MongoDB
NoSQL Injections in Node.js - The case of MongoDB
SPFx: Working with SharePoint Content
SPFx: Working with SharePoint Content
SPFx working with SharePoint data
SPFx working with SharePoint data
Storytelling By Numbers
Storytelling By Numbers
Angular.js Fundamentals
Angular.js Fundamentals
6 things about perl 6
6 things about perl 6
Andere mochten auch
Egyptian Aeraunautical Sports Club Guide
Egyptian Aeraunautical Sports Club Guide
ahmad bassiouny
Life-feed | final presentation
Life-feed | final presentation
Pixelkings
My name is Trinidad
My name is Trinidad
David Calavera
GTAC: AtomPub, testing your server implementation
GTAC: AtomPub, testing your server implementation
David Calavera
JRuby hacking guide
JRuby hacking guide
David Calavera
Rubyspec y el largo camino hacia Ruby 1.9
Rubyspec y el largo camino hacia Ruby 1.9
David Calavera
Trinidad
Trinidad
David Calavera
Conferencia Rails: Integracion Continua Y Rails
Conferencia Rails: Integracion Continua Y Rails
David Calavera
Andere mochten auch
(8)
Egyptian Aeraunautical Sports Club Guide
Egyptian Aeraunautical Sports Club Guide
Life-feed | final presentation
Life-feed | final presentation
My name is Trinidad
My name is Trinidad
GTAC: AtomPub, testing your server implementation
GTAC: AtomPub, testing your server implementation
JRuby hacking guide
JRuby hacking guide
Rubyspec y el largo camino hacia Ruby 1.9
Rubyspec y el largo camino hacia Ruby 1.9
Trinidad
Trinidad
Conferencia Rails: Integracion Continua Y Rails
Conferencia Rails: Integracion Continua Y Rails
Ähnlich wie ApacheCon: Abdera A Java Atom Pub Implementation
Rack Middleware
Rack Middleware
LittleBIGRuby
And the Greatest of These Is ... Rack Support
And the Greatest of These Is ... Rack Support
Ben Scofield
Merb Pluming - The Router
Merb Pluming - The Router
carllerche
Avro, la puissance du binaire, la souplesse du JSON
Avro, la puissance du binaire, la souplesse du JSON
Alexandre Victoor
Intro Open Social and Dashboards
Intro Open Social and Dashboards
Atlassian
What's Coming in Spring 3.0
What's Coming in Spring 3.0
Matt Raible
Aura Project for PHP
Aura Project for PHP
Hari K T
Rails 2.3 and Rack - NHRuby Feb 2009
Rails 2.3 and Rack - NHRuby Feb 2009
bturnbull
Get Soaked - An In Depth Look At PHP Streams
Get Soaked - An In Depth Look At PHP Streams
Davey Shafik
All I Need to Know I Learned by Writing My Own Web Framework
All I Need to Know I Learned by Writing My Own Web Framework
Ben Scofield
What's New in ZF 1.10
What's New in ZF 1.10
Ralph Schindler
Sinatra
Sinatra
Koen Van der Auwera
Using WordPress as your application stack
Using WordPress as your application stack
Paul Bearne
jdbc
jdbc
vikram singh
Apache Click
Apache Click
오석 한
Android Automated Testing
Android Automated Testing
roisagiv
関西PHP勉強会 php5.4つまみぐい
関西PHP勉強会 php5.4つまみぐい
Hisateru Tanaka
Using and scaling Rack and Rack-based middleware
Using and scaling Rack and Rack-based middleware
Alona Mekhovova
ActiveWeb: Chicago Java User Group Presentation
ActiveWeb: Chicago Java User Group Presentation
ipolevoy
Integrating Flex And Rails With Ruby Amf
Integrating Flex And Rails With Ruby Amf
railsconf
Ähnlich wie ApacheCon: Abdera A Java Atom Pub Implementation
(20)
Rack Middleware
Rack Middleware
And the Greatest of These Is ... Rack Support
And the Greatest of These Is ... Rack Support
Merb Pluming - The Router
Merb Pluming - The Router
Avro, la puissance du binaire, la souplesse du JSON
Avro, la puissance du binaire, la souplesse du JSON
Intro Open Social and Dashboards
Intro Open Social and Dashboards
What's Coming in Spring 3.0
What's Coming in Spring 3.0
Aura Project for PHP
Aura Project for PHP
Rails 2.3 and Rack - NHRuby Feb 2009
Rails 2.3 and Rack - NHRuby Feb 2009
Get Soaked - An In Depth Look At PHP Streams
Get Soaked - An In Depth Look At PHP Streams
All I Need to Know I Learned by Writing My Own Web Framework
All I Need to Know I Learned by Writing My Own Web Framework
What's New in ZF 1.10
What's New in ZF 1.10
Sinatra
Sinatra
Using WordPress as your application stack
Using WordPress as your application stack
jdbc
jdbc
Apache Click
Apache Click
Android Automated Testing
Android Automated Testing
関西PHP勉強会 php5.4つまみぐい
関西PHP勉強会 php5.4つまみぐい
Using and scaling Rack and Rack-based middleware
Using and scaling Rack and Rack-based middleware
ActiveWeb: Chicago Java User Group Presentation
ActiveWeb: Chicago Java User Group Presentation
Integrating Flex And Rails With Ruby Amf
Integrating Flex And Rails With Ruby Amf
ApacheCon: Abdera A Java Atom Pub Implementation
1.
Abdera, a Java
AtomPub implementation David Calavera 11870.com
2.
vanity slide •Software architect
at 11870.com • Open source “aholic”: Hudson, Netbeans • Commiter of the Apache Abdera project
3.
Overview •Atom Publishing Protocol
implementation • Atom Syndication Format implementation • version 0.5 comming soon
4.
Creating feeds Abdera abdera
= new Abdera(); Feed feed = abdera.newFeed(); feed.setId(quot;tag:example.org,2008:/fooquot;); feed.setTitle(quot;Test Feedquot;); feed.setSubtitle(quot;Feed subtitlequot;); feed.setUpdated(new Date()); feed.addAuthor(quot;David Calaveraquot;); feed.addLink(quot;http://example.comquot;); feed.addLink(quot;http://example.com/fooquot;,quot;selfquot;); Entry entry = feed.addEntry(); entry.setId(quot;tag:example.org,2007:/foo/entries/1quot;); entry.setTitle(quot;Entry titlequot;); entry.setSummaryAsHtml(quot;<p>This is the entry title</p>quot;); entry.setUpdated(new Date());
5.
Reading feeds Abdera abdera
= new Abdera(); Parser parser = abdera.getParser(); URL url = new URL(quot;http://example.org/feedquot;); Document<Feed> doc = parser.parse(url.openStream(),url); Feed feed = doc.getRoot(); System.out.println(feed.getTitle()); for (Entry entry : feed.getEntries()) { System.out.println(quot;tquot; + entry.getTitle()); }
6.
How does a
server work? • from top to bottom • AbderaServlet • RequestContext • AbderaFilters • Provider • TargetResolver • RequestProcessor • Adapter
7.
Target resolvers •
RouteManager TargetResolver ts = new RouteManager() .addRoute(quot;servicequot;, quot;/quot;, TargetType.TYPE_SERVICE) .addRoute(quot;feedquot;, quot;/:collectionquot;, TargetType.TYPE_COLLECTION) .addRoute(quot;entryquot;, quot;/:collection/:entry:quot;, TargetType.TYPE_ENTRY) .addRoute(quot;openSearchquot;, quot;/os.xmlquot;, CustomTargetType.OPEN_SEARCH); • RegexTargetResolver TargetResolver ts = new RegexTargetResolver() .setPattern(quot;/atom(?[^#]*)?quot;, TargetType.TYPE_SERVICE) .setPattern(quot;/atom/([^/#?;]+)$quot;, TargetType.TYPE_COLLECTION) .setPattern(quot;/atom/([^/#?]+)/([^/#?]+)$quot;, TargetType.TYPE_ENTRY) .setPattern(quot;/os.xmlquot;, CustomTargetType.OPEN_SEARCH);
8.
Adapters •
CollectionAdapter ResponseContext postEntry(RequestContext request); ResponseContext deleteEntry(RequestContext request); ResponseContext getEntry(RequestContext request); ResponseContext headEntry(RequestContext request); ResponseContext optionsEntry(RequestContext request); ResponseContext putEntry(RequestContext request); ResponseContext getFeed(RequestContext request); ResponseContext getCategories(RequestContext request);
9.
Adapters •
MediaCollectionAdapter ResponseContext postMedia(RequestContext request); ResponseContext deleteMedia(RequestContext request); ResponseContext getMedia(RequestContext request); ResponseContext headMedia(RequestContext request); ResponseContext optionsMedia(RequestContext request); ResponseContext putMedia(RequestContext request);
10.
More stuff •
Spring integration • Multipart media creation • OAuth • Open search • JSON Serialization • Custom writers • Pre-built adapters
11.
Questions? •
Resources • Abdera: http://incubator.apache.org/abdera • AtomPub: http://ietf.org/rfc/rfc5023 • Atom format: http://ietf.org/rfc/rfc4287 • Atom list: http://www.imc.org/atom-syntax • My blog: http://thinkincode.net
Jetzt herunterladen