Soumettre la recherche
Mettre en ligne
Oredev 2009 JAX-RS
•
Télécharger en tant que ODP, PDF
•
3 j'aime
•
685 vues
Niklas Gustavsson
Suivre
Introduction to JAX-RS that I gave at Øredev 2009
Lire moins
Lire la suite
Technologie
Design
Signaler
Partager
Signaler
Partager
1 sur 60
Télécharger maintenant
Recommandé
REST made simple with Java
REST made simple with Java
Niklas Gustavsson
the Spring 4 update
the Spring 4 update
Joshua Long
Introduction to SQLite in Adobe AIR
Introduction to SQLite in Adobe AIR
Peter Elst
Whats New in the Http Service Specification - Felix Meschberger
Whats New in the Http Service Specification - Felix Meschberger
mfrancis
JAX-RS 2.1 Reloaded @ Devoxx
JAX-RS 2.1 Reloaded @ Devoxx
Santiago Pericas-Geertsen
Felix HTTP - Paving the road to the future
Felix HTTP - Paving the road to the future
Marcel Offermans
Box connector Mule ESB Integration
Box connector Mule ESB Integration
AnilKumar Etagowni
Simple REST with Dropwizard
Simple REST with Dropwizard
Andrei Savu
Recommandé
REST made simple with Java
REST made simple with Java
Niklas Gustavsson
the Spring 4 update
the Spring 4 update
Joshua Long
Introduction to SQLite in Adobe AIR
Introduction to SQLite in Adobe AIR
Peter Elst
Whats New in the Http Service Specification - Felix Meschberger
Whats New in the Http Service Specification - Felix Meschberger
mfrancis
JAX-RS 2.1 Reloaded @ Devoxx
JAX-RS 2.1 Reloaded @ Devoxx
Santiago Pericas-Geertsen
Felix HTTP - Paving the road to the future
Felix HTTP - Paving the road to the future
Marcel Offermans
Box connector Mule ESB Integration
Box connector Mule ESB Integration
AnilKumar Etagowni
Simple REST with Dropwizard
Simple REST with Dropwizard
Andrei Savu
Dropwizard
Dropwizard
Scott Leberknight
Spring 4 final xtr_presentation
Spring 4 final xtr_presentation
sourabh aggarwal
HTTP Whiteboard - OSGI Compendium 6.0 - How web apps should have been! - R Auge
HTTP Whiteboard - OSGI Compendium 6.0 - How web apps should have been! - R Auge
mfrancis
Mule jdbc
Mule jdbc
KalaimathiS
From Open Source to Open API with Restlet
From Open Source to Open API with Restlet
Restlet
Dropwizard
Dropwizard
Tetiana Saputo
Spring.io
Spring.io
Cédric GILLET
Servlet Part 2
Servlet Part 2
vikram singh
Birhanu distributive assignment
Birhanu distributive assignment
university
Spring4 whats up doc?
Spring4 whats up doc?
David Gómez García
Managing user's data with Spring Session
Managing user's data with Spring Session
David Gómez García
Java Microservices with DropWizard
Java Microservices with DropWizard
Bruno Buger
SCWCD 1. get post - url (cap1 - cap2 )
SCWCD 1. get post - url (cap1 - cap2 )
Francesco Ierna
Spring 4 - A&BP CC
Spring 4 - A&BP CC
JWORKS powered by Ordina
Getting started with Websocket and Server-sent Events using Java - Arun Gupta
Getting started with Websocket and Server-sent Events using Java - Arun Gupta
jaxconf
Getting Started with WebSocket and Server-Sent Events using Java by Arun Gupta
Getting Started with WebSocket and Server-Sent Events using Java by Arun Gupta
Codemotion
RESTFul Web Services - Intro
RESTFul Web Services - Intro
Manuel Correa
An introduction to consuming remote APIs with Drupal 7
An introduction to consuming remote APIs with Drupal 7
Josh Kopel
Web Deployment With Visual Studio 2010
Web Deployment With Visual Studio 2010
Rishu Mehra
AAI 2236-Using the New Java Concurrency Utilities with IBM WebSphere
AAI 2236-Using the New Java Concurrency Utilities with IBM WebSphere
Kevin Sutter
Spotify services - Leetspeak 2014
Spotify services - Leetspeak 2014
Niklas Gustavsson
Spotify services (SDC 2013)
Spotify services (SDC 2013)
Niklas Gustavsson
Contenu connexe
Tendances
Dropwizard
Dropwizard
Scott Leberknight
Spring 4 final xtr_presentation
Spring 4 final xtr_presentation
sourabh aggarwal
HTTP Whiteboard - OSGI Compendium 6.0 - How web apps should have been! - R Auge
HTTP Whiteboard - OSGI Compendium 6.0 - How web apps should have been! - R Auge
mfrancis
Mule jdbc
Mule jdbc
KalaimathiS
From Open Source to Open API with Restlet
From Open Source to Open API with Restlet
Restlet
Dropwizard
Dropwizard
Tetiana Saputo
Spring.io
Spring.io
Cédric GILLET
Servlet Part 2
Servlet Part 2
vikram singh
Birhanu distributive assignment
Birhanu distributive assignment
university
Spring4 whats up doc?
Spring4 whats up doc?
David Gómez García
Managing user's data with Spring Session
Managing user's data with Spring Session
David Gómez García
Java Microservices with DropWizard
Java Microservices with DropWizard
Bruno Buger
SCWCD 1. get post - url (cap1 - cap2 )
SCWCD 1. get post - url (cap1 - cap2 )
Francesco Ierna
Spring 4 - A&BP CC
Spring 4 - A&BP CC
JWORKS powered by Ordina
Getting started with Websocket and Server-sent Events using Java - Arun Gupta
Getting started with Websocket and Server-sent Events using Java - Arun Gupta
jaxconf
Getting Started with WebSocket and Server-Sent Events using Java by Arun Gupta
Getting Started with WebSocket and Server-Sent Events using Java by Arun Gupta
Codemotion
RESTFul Web Services - Intro
RESTFul Web Services - Intro
Manuel Correa
An introduction to consuming remote APIs with Drupal 7
An introduction to consuming remote APIs with Drupal 7
Josh Kopel
Web Deployment With Visual Studio 2010
Web Deployment With Visual Studio 2010
Rishu Mehra
AAI 2236-Using the New Java Concurrency Utilities with IBM WebSphere
AAI 2236-Using the New Java Concurrency Utilities with IBM WebSphere
Kevin Sutter
Tendances
(20)
Dropwizard
Dropwizard
Spring 4 final xtr_presentation
Spring 4 final xtr_presentation
HTTP Whiteboard - OSGI Compendium 6.0 - How web apps should have been! - R Auge
HTTP Whiteboard - OSGI Compendium 6.0 - How web apps should have been! - R Auge
Mule jdbc
Mule jdbc
From Open Source to Open API with Restlet
From Open Source to Open API with Restlet
Dropwizard
Dropwizard
Spring.io
Spring.io
Servlet Part 2
Servlet Part 2
Birhanu distributive assignment
Birhanu distributive assignment
Spring4 whats up doc?
Spring4 whats up doc?
Managing user's data with Spring Session
Managing user's data with Spring Session
Java Microservices with DropWizard
Java Microservices with DropWizard
SCWCD 1. get post - url (cap1 - cap2 )
SCWCD 1. get post - url (cap1 - cap2 )
Spring 4 - A&BP CC
Spring 4 - A&BP CC
Getting started with Websocket and Server-sent Events using Java - Arun Gupta
Getting started with Websocket and Server-sent Events using Java - Arun Gupta
Getting Started with WebSocket and Server-Sent Events using Java by Arun Gupta
Getting Started with WebSocket and Server-Sent Events using Java by Arun Gupta
RESTFul Web Services - Intro
RESTFul Web Services - Intro
An introduction to consuming remote APIs with Drupal 7
An introduction to consuming remote APIs with Drupal 7
Web Deployment With Visual Studio 2010
Web Deployment With Visual Studio 2010
AAI 2236-Using the New Java Concurrency Utilities with IBM WebSphere
AAI 2236-Using the New Java Concurrency Utilities with IBM WebSphere
En vedette
Spotify services - Leetspeak 2014
Spotify services - Leetspeak 2014
Niklas Gustavsson
Spotify services (SDC 2013)
Spotify services (SDC 2013)
Niklas Gustavsson
Modern Software Architectures: Building Solutions for Web, Cloud, and Mobile
Modern Software Architectures: Building Solutions for Web, Cloud, and Mobile
Dan Mohl
Modern Software Architecture Styles and Patterns
Modern Software Architecture Styles and Patterns
Ganesh Samarthyam
The Modern Software Architect
The Modern Software Architect
Niels Bech Nielsen
Spotify architecture - Pressing play
Spotify architecture - Pressing play
Niklas Gustavsson
Spotify: Data center & Backend buildout
Spotify: Data center & Backend buildout
David Poblador i Garcia
Software Architecture Patterns
Software Architecture Patterns
Assaf Gannon
Big Data At Spotify
Big Data At Spotify
Adam Kawa
A Spotify Presentation - Case studies
A Spotify Presentation - Case studies
Emily Wilkinson
Algorithmic Music Recommendations at Spotify
Algorithmic Music Recommendations at Spotify
Chris Johnson
Music Recommendations at Scale with Spark
Music Recommendations at Scale with Spark
Chris Johnson
Scala Data Pipelines for Music Recommendations
Scala Data Pipelines for Music Recommendations
Chris Johnson
Interactive Recommender Systems with Netflix and Spotify
Interactive Recommender Systems with Netflix and Spotify
Chris Johnson
From Idea to Execution: Spotify's Discover Weekly
From Idea to Execution: Spotify's Discover Weekly
Chris Johnson
En vedette
(15)
Spotify services - Leetspeak 2014
Spotify services - Leetspeak 2014
Spotify services (SDC 2013)
Spotify services (SDC 2013)
Modern Software Architectures: Building Solutions for Web, Cloud, and Mobile
Modern Software Architectures: Building Solutions for Web, Cloud, and Mobile
Modern Software Architecture Styles and Patterns
Modern Software Architecture Styles and Patterns
The Modern Software Architect
The Modern Software Architect
Spotify architecture - Pressing play
Spotify architecture - Pressing play
Spotify: Data center & Backend buildout
Spotify: Data center & Backend buildout
Software Architecture Patterns
Software Architecture Patterns
Big Data At Spotify
Big Data At Spotify
A Spotify Presentation - Case studies
A Spotify Presentation - Case studies
Algorithmic Music Recommendations at Spotify
Algorithmic Music Recommendations at Spotify
Music Recommendations at Scale with Spark
Music Recommendations at Scale with Spark
Scala Data Pipelines for Music Recommendations
Scala Data Pipelines for Music Recommendations
Interactive Recommender Systems with Netflix and Spotify
Interactive Recommender Systems with Netflix and Spotify
From Idea to Execution: Spotify's Discover Weekly
From Idea to Execution: Spotify's Discover Weekly
Similaire à Oredev 2009 JAX-RS
REST made simple with Java
REST made simple with Java
elliando dias
REST
REST
Andreas Bjärlestam
RESTEasy
RESTEasy
Massimiliano Dessì
May 2010 - RestEasy
May 2010 - RestEasy
JBug Italy
Networking and Data Access with Eqela
Networking and Data Access with Eqela
jobandesther
Java Servlets
Java Servlets
BG Java EE Course
CTS Conference Web 2.0 Tutorial Part 2
CTS Conference Web 2.0 Tutorial Part 2
Geoffrey Fox
Java Technology
Java Technology
ifnu bima
Overview of RESTful web services
Overview of RESTful web services
nbuddharaju
Developing RESTful WebServices using Jersey
Developing RESTful WebServices using Jersey
b_kathir
Play Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and Scala
Yevgeniy Brikman
Rapid JCR Applications Development with Sling
Rapid JCR Applications Development with Sling
Felix Meschberger
Spring 4 Web App
Spring 4 Web App
Rossen Stoyanchev
RESTful web service with JBoss Fuse
RESTful web service with JBoss Fuse
ejlp12
CDI, Seam & RESTEasy: You haven't seen REST yet!
CDI, Seam & RESTEasy: You haven't seen REST yet!
Dan Allen
Using and scaling Rack and Rack-based middleware
Using and scaling Rack and Rack-based middleware
Alona Mekhovova
05 status-codes
05 status-codes
snopteck
112815 java ee8_davidd
112815 java ee8_davidd
Takashi Ito
RESTful Web Services with JAX-RS
RESTful Web Services with JAX-RS
Carol McDonald
JavaEE6 my way
JavaEE6 my way
Nicola Pedot
Similaire à Oredev 2009 JAX-RS
(20)
REST made simple with Java
REST made simple with Java
REST
REST
RESTEasy
RESTEasy
May 2010 - RestEasy
May 2010 - RestEasy
Networking and Data Access with Eqela
Networking and Data Access with Eqela
Java Servlets
Java Servlets
CTS Conference Web 2.0 Tutorial Part 2
CTS Conference Web 2.0 Tutorial Part 2
Java Technology
Java Technology
Overview of RESTful web services
Overview of RESTful web services
Developing RESTful WebServices using Jersey
Developing RESTful WebServices using Jersey
Play Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and Scala
Rapid JCR Applications Development with Sling
Rapid JCR Applications Development with Sling
Spring 4 Web App
Spring 4 Web App
RESTful web service with JBoss Fuse
RESTful web service with JBoss Fuse
CDI, Seam & RESTEasy: You haven't seen REST yet!
CDI, Seam & RESTEasy: You haven't seen REST yet!
Using and scaling Rack and Rack-based middleware
Using and scaling Rack and Rack-based middleware
05 status-codes
05 status-codes
112815 java ee8_davidd
112815 java ee8_davidd
RESTful Web Services with JAX-RS
RESTful Web Services with JAX-RS
JavaEE6 my way
JavaEE6 my way
Plus de Niklas Gustavsson
Real-time web
Real-time web
Niklas Gustavsson
RESTful web services
RESTful web services
Niklas Gustavsson
Not only SQL
Not only SQL
Niklas Gustavsson
HTML5
HTML5
Niklas Gustavsson
The future is bright
The future is bright
Niklas Gustavsson
CouchDB
CouchDB
Niklas Gustavsson
Apachecon Eu 2008 Mina
Apachecon Eu 2008 Mina
Niklas Gustavsson
Plus de Niklas Gustavsson
(7)
Real-time web
Real-time web
RESTful web services
RESTful web services
Not only SQL
Not only SQL
HTML5
HTML5
The future is bright
The future is bright
CouchDB
CouchDB
Apachecon Eu 2008 Mina
Apachecon Eu 2008 Mina
Dernier
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
Enterprise Knowledge
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
Rizwan Syed
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
BookNet Canada
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
The Digital Insurer
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
ThousandEyes
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
comworks
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Hyundai Motor Group
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
Mark Billinghurst
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Wonjun Hwang
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
Neo4j
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
null - The Open Security Community
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
BookNet Canada
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
Memoori
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
Padma Pradeep
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Alan Dix
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
Florian Wilhelm
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
9953056974 Low Rate Call Girls In Saket, Delhi NCR
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
Neo4j
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
Mattias Andersson
Dernier
(20)
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
Oredev 2009 JAX-RS
1.
SDC 2008
REST made simple with Java
2.
Niklas Gustavsson [email_address]
http://protocol7.com http://twitter.com/protocol7
3.
REST made simple
with Java
4.
REST?
5.
HTTP 1.1
6.
Some HTTP history
7.
Some HTTP history
8.
HTTP used right
9.
Constraints
10.
Constraints Everything is
a resource
11.
Constraints A resource
has an identifier http://example.com/reports/niklas
12.
Constraints We transfer
representations
13.
Constraints All resources
expose a uniform interface GET, POST, PUT, DELETE
14.
Constraints Hypermedia as
the engine of application state
15.
Constraints Client-server, Stateless,
Cacheable, Layered
16.
Why?
17.
Why? It's easy!
Well, it's not
18.
Why? It's what
the cool kids use
19.
Why? Web has
been successful, copy!
20.
Why? It's what
others use
21.
Why? Interoperability on
the right level
22.
Frameworks!
23.
JAX-RS (aka JSR-311)
24.
Jersey http://jersey.dev.java.net
Restlets http://www.restlet.org RESTeasy http://www.jboss.org/resteasy CXF http://cxf.apache.org
25.
POJO based Annotation
heavy
26.
Resources
27.
Code! Show me
the code!
28.
public class TimeReportService
{ private TimeReportDao reportDao; public TimeReport getReport(String username) { return reportDao.forUser(username); } public void saveReport(TimeReport report) { reportDao.update(report); } ... }
29.
Request mapping
30.
31.
@Path("reports") public class
TimeReportService { private TimeReportDao reportDao; @GET public TimeReport getReport(String username) { return reportDao.forUser(username); } @PUT public void saveReport(TimeReport report) { reportDao.update(report); } ... }
32.
Parameters
33.
@Path("reports/ {username} ")
public class TimeReportService { @GET public TimeReport getReport(@PathParam("username") String username) { return reportDao.forUser(username); } ... } http://example.com/report/ niklas
34.
@GET public TimeReport
getReport(@Context SecurityContext sc) { if(sc.isSecure()) { Principal user = sc.getUserPrincipal(); return reportDao.forUser(user.getName()); } else { ... throw error, redirect to login } }
35.
@GET public TimeReport
getReport(@CookieParam("username") String username) { return reportDao.forUser(username); }
36.
Any media type
is allowed XML, JSON, text/plain, binary, ...
37.
Entity providers MessageBodyReader,
MessageBodyWriter
38.
39.
Standard Entity providers
40.
Writing your own
Entity provider
41.
BEGIN:VEVENT DTSTART:20091102T080000Z DTEND:20091106T170000Z
SUMMARY:OREDEV END:VEVENT
42.
@Provider @Produces("text/calendar") public
class TimeReportICalWriter implements MessageBodyWriter<TimeReport> { public void writeTo(TimeReport t, Class<?> type, Type genericType,Annotation[] annotations,MediaType mediaType,MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream) { PrintWriter wr = new PrintWriter(entityStream); ... for(TimeRange range : t.getRanges()) { wr.println("BEGIN:VEVENT"); wr.println("DTSTART:" + DF.format(range.getStartTime())); wr.println("DTEND:" + DF.format(range.getEndTime())); wr.println("SUMMARY:" + range.getDescription()); wr.println("END:VEVENT"); } ... }
43.
Request Response ResponseBuilder
44.
Exception Mapping
45.
Application
46.
47.
public class TimeReportApplication
extends Application { @Override public Set<Class<?>> getClasses() { Set<Class<?>> classes = new HashSet<Class<?>>(); classes .add(TimeReportService.class); classes .add(TimeReportICalWriter.class); return classes ; } }
48.
Deployment
49.
JAX-RS limitations
50.
JAX-RS limitations Lifecycle
support
51.
JAX-RS limitations Conneg
only http://example.com/report http://example.com/report.xml http://example.com/report.cal http://example.com/report.json
52.
JAX-RS limitations Limited
security support
53.
JAX-RS limitations Leaky
abstraction
54.
JAX-RS limitations Weak
support for links
55.
Try it out!
And have a look at the alternatives
56.
Want more? http://github.com/protocol7/jax-rs-demo
57.
Want more?
58.
Questions?
59.
[email_address]
60.
Attributions http://www.flickr.com/photos/psd/421186578/ http://www.flickr.com/photos/sineout/2491569707/
http://www.flickr.com/photos/apelad/sets/72157594388426362/ http://www.flickr.com/photos/goopymart/289959670
Notes de l'éditeur
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
From Göteborg Callista
Télécharger maintenant