SlideShare a Scribd company logo
1 of 3
WICKET RESTFUL CON WICKET
--------------------------------------------------------------------------------
----------------------------------------------
DESCRIZIONE
E' possibile scrivere webservice di tipo RESTful direttamente in wicket
utilizzando la libreria
"Wicket-rest-annotations".
Si tratta pertanto di una libreria che implementa la specifica JAX-RS. Il
protocollo di comunicazione
è json (http://json.org/json-it.html)
--------------------------------------------------------------------------------
----------------------------------------------
LIBRERIE
- wicketstuff-restannotations-6.0.jar
- wicketstuff-restannotations-json-6.0
E' possibile scarivarle dal sito ufficiale https://github.com/bitstorm/Wicket-
rest-annotations oppure
da http://mvnrepository.com/
Dipendenze:
- gson-2.2.4.jar
Libreria json per java che è possibile scaricare da json.org o da
http://mvnrepository.com/
--------------------------------------------------------------------------------
----------------------------------------------
ESEMPIO
Supponiamo di volere fornire il servizio di scambio pojo Persona tramite
RESTful-json.
Per semplificare l'esempio la classe presenta un numero minimo di proprietà. Ma
è possibile
utilizzare il numero di proprietà desiderate. E' anche possibile utilizzara
proprietà che
fanno riferimento ad altri oggetti o liste. Sarà la libreria che in maniera
trasperente convertirà
gli oggetti in rappresentazione json.
Ovviamente si presuppone che sia già presente un progetto wicket.
Si fa inoltre osservare che non è necessario marcare il pojo con delle
annotazioni.
STEP 01: creare il bean:
package myrest;
public class Persona {
private String nome;
private String cognome;
private int eta;
public Persona(String nome, String cognome, int eta) {
this.nome = nome;
this.cognome = cognome;
this.eta = eta;
}
...
metodi get e set
}
STEP 02: creare la classe per fornire la risorsa:
Questa pagina fornisce tre serivizi:
1) Restituisce tutte le anagrafiche (metodo GET)
2) Elimina un'anagrafica (metodo DELETE)
3) Inserisce un'anagrafica (metodo POST)
Si fa osservare che è sufficiente estendere la classe GsonRestResource
(IResource).
package myrest;
import java.util.ArrayList;
import java.util.List;
import org.wicketstuff.rest.annotations.MethodMapping;
import org.wicketstuff.rest.annotations.parameters.RequestBody;
import org.wicketstuff.rest.resource.gson.GsonRestResource;
import org.wicketstuff.rest.utils.http.HttpMethod;
/**
*
* @author osanet
*/
public class PersonsRestResource extends GsonRestResource {
private List<Persona> persone;
public PersonsRestResource() {
persone = new ArrayList<Persona>();
persone.add(new Persona("pippo01", "rossi01", 10));
persone.add(new Persona("pippo02", "rossi02", 20));
persone.add(new Persona("pippo03", "rossi03", 30));
}
@MethodMapping("/persone")
public List<Persona> getAllPersons() {
return persone;
}
@MethodMapping(value = "/persone/{personIndex}", httpMethod =
HttpMethod.DELETE)
public void deletePerson(int personIndex) {
persone.remove(personIndex);
}
@MethodMapping(value = "/persone", httpMethod = HttpMethod.POST)
public Persona createPerson(@RequestBody Persona persona) {
persone.add(persona);
return persona;
}
}
STEP 03: Registrazione del servizio nell'applicazione
Questa operazione registra il servizio e gli assegna /managerpersone nel path
dell'applicazione
Nel metodo Application.int() aggiungere:
mountResource("/managerpersone", new ResourceReference("restReference") {
PersonsRestResource resource = new PersonsRestResource();
@Override
public IResource getResource() {
return resource;
}
});
STEP 04;
Compilata l'applicazione, supposto che ad esempio myapp01 sia lo scope
dell'applicazione e che /app sia il path assegnato
alla servlet wicket, allora per accedere al servizio rest:
http://localhost:8080/myapp01/app/managerpersone/persone
questo farà una richiedsta di tipo GET a cui corrisponde il metodo
getAllPersons(). Pertanto la procedura risponderà
restituendo l'elenco delle persone (in formato json).
E' anche possibile testare gli altri metodo con un client restful.
--------------------------------------------------------------------------------
----------------------------------------------

More Related Content

More from santi caltabiano

Le tre leggi di keplero [prof. santi caltabiano]
Le tre leggi di keplero [prof. santi caltabiano]Le tre leggi di keplero [prof. santi caltabiano]
Le tre leggi di keplero [prof. santi caltabiano]santi caltabiano
 
Caduta di un corpo [prof. santi caltabiano]
Caduta di un corpo [prof. santi caltabiano]Caduta di un corpo [prof. santi caltabiano]
Caduta di un corpo [prof. santi caltabiano]santi caltabiano
 
Applicazione dei principi della dinamica [prof. santi caltabiano]
Applicazione dei principi  della dinamica [prof. santi caltabiano]Applicazione dei principi  della dinamica [prof. santi caltabiano]
Applicazione dei principi della dinamica [prof. santi caltabiano]santi caltabiano
 
Principi della dinamica [prof. santi caltabiano]
Principi della dinamica [prof. santi caltabiano]Principi della dinamica [prof. santi caltabiano]
Principi della dinamica [prof. santi caltabiano]santi caltabiano
 
Le leve [prof. santi caltabiano]
Le leve [prof. santi caltabiano]Le leve [prof. santi caltabiano]
Le leve [prof. santi caltabiano]santi caltabiano
 
Coppie di forze [prof. santi caltabiano]
Coppie di forze [prof. santi caltabiano]Coppie di forze [prof. santi caltabiano]
Coppie di forze [prof. santi caltabiano]santi caltabiano
 
Momento di una forza [prof. santi caltabiano]
Momento di una forza [prof. santi caltabiano]Momento di una forza [prof. santi caltabiano]
Momento di una forza [prof. santi caltabiano]santi caltabiano
 
Equilibrio sul piano inclinato [s. caltabiano]
Equilibrio sul piano inclinato [s. caltabiano]Equilibrio sul piano inclinato [s. caltabiano]
Equilibrio sul piano inclinato [s. caltabiano]santi caltabiano
 
La piramide di numeri (prof. s. caltabiano)
La piramide di numeri (prof. s. caltabiano) La piramide di numeri (prof. s. caltabiano)
La piramide di numeri (prof. s. caltabiano) santi caltabiano
 
20 dinamica forze d'attrito
20 dinamica   forze d'attrito20 dinamica   forze d'attrito
20 dinamica forze d'attritosanti caltabiano
 
10 dinamica concetto di forza
10 dinamica   concetto di forza10 dinamica   concetto di forza
10 dinamica concetto di forzasanti caltabiano
 
00130 cinematica moto rettilineo e velocita media
00130 cinematica   moto rettilineo e velocita media00130 cinematica   moto rettilineo e velocita media
00130 cinematica moto rettilineo e velocita mediasanti caltabiano
 
50 cinematica moto rettilineo uniformemente accelerato
50 cinematica   moto rettilineo uniformemente accelerato50 cinematica   moto rettilineo uniformemente accelerato
50 cinematica moto rettilineo uniformemente acceleratosanti caltabiano
 
30 cinematica moto rettilineo uniforme
30 cinematica   moto rettilineo uniforme30 cinematica   moto rettilineo uniforme
30 cinematica moto rettilineo uniformesanti caltabiano
 
40 cinematica moto rettilineo e accelerazione media
40 cinematica   moto rettilineo e accelerazione media40 cinematica   moto rettilineo e accelerazione media
40 cinematica moto rettilineo e accelerazione mediasanti caltabiano
 
10 cinematica introduzione
10 cinematica   introduzione10 cinematica   introduzione
10 cinematica introduzionesanti caltabiano
 
Equazioni di grado superiore al secondo
Equazioni di grado superiore al secondoEquazioni di grado superiore al secondo
Equazioni di grado superiore al secondosanti caltabiano
 
Circonferenza passante per 3 punti
Circonferenza passante per 3 puntiCirconferenza passante per 3 punti
Circonferenza passante per 3 puntisanti caltabiano
 

More from santi caltabiano (20)

Le tre leggi di keplero [prof. santi caltabiano]
Le tre leggi di keplero [prof. santi caltabiano]Le tre leggi di keplero [prof. santi caltabiano]
Le tre leggi di keplero [prof. santi caltabiano]
 
Caduta di un corpo [prof. santi caltabiano]
Caduta di un corpo [prof. santi caltabiano]Caduta di un corpo [prof. santi caltabiano]
Caduta di un corpo [prof. santi caltabiano]
 
Applicazione dei principi della dinamica [prof. santi caltabiano]
Applicazione dei principi  della dinamica [prof. santi caltabiano]Applicazione dei principi  della dinamica [prof. santi caltabiano]
Applicazione dei principi della dinamica [prof. santi caltabiano]
 
Principi della dinamica [prof. santi caltabiano]
Principi della dinamica [prof. santi caltabiano]Principi della dinamica [prof. santi caltabiano]
Principi della dinamica [prof. santi caltabiano]
 
Le leve [prof. santi caltabiano]
Le leve [prof. santi caltabiano]Le leve [prof. santi caltabiano]
Le leve [prof. santi caltabiano]
 
Coppie di forze [prof. santi caltabiano]
Coppie di forze [prof. santi caltabiano]Coppie di forze [prof. santi caltabiano]
Coppie di forze [prof. santi caltabiano]
 
Momento di una forza [prof. santi caltabiano]
Momento di una forza [prof. santi caltabiano]Momento di una forza [prof. santi caltabiano]
Momento di una forza [prof. santi caltabiano]
 
Equilibrio sul piano inclinato [s. caltabiano]
Equilibrio sul piano inclinato [s. caltabiano]Equilibrio sul piano inclinato [s. caltabiano]
Equilibrio sul piano inclinato [s. caltabiano]
 
La piramide di numeri (prof. s. caltabiano)
La piramide di numeri (prof. s. caltabiano) La piramide di numeri (prof. s. caltabiano)
La piramide di numeri (prof. s. caltabiano)
 
20 dinamica forze d'attrito
20 dinamica   forze d'attrito20 dinamica   forze d'attrito
20 dinamica forze d'attrito
 
10 dinamica concetto di forza
10 dinamica   concetto di forza10 dinamica   concetto di forza
10 dinamica concetto di forza
 
Vettori
VettoriVettori
Vettori
 
00130 cinematica moto rettilineo e velocita media
00130 cinematica   moto rettilineo e velocita media00130 cinematica   moto rettilineo e velocita media
00130 cinematica moto rettilineo e velocita media
 
50 cinematica moto rettilineo uniformemente accelerato
50 cinematica   moto rettilineo uniformemente accelerato50 cinematica   moto rettilineo uniformemente accelerato
50 cinematica moto rettilineo uniformemente accelerato
 
30 cinematica moto rettilineo uniforme
30 cinematica   moto rettilineo uniforme30 cinematica   moto rettilineo uniforme
30 cinematica moto rettilineo uniforme
 
40 cinematica moto rettilineo e accelerazione media
40 cinematica   moto rettilineo e accelerazione media40 cinematica   moto rettilineo e accelerazione media
40 cinematica moto rettilineo e accelerazione media
 
10 cinematica introduzione
10 cinematica   introduzione10 cinematica   introduzione
10 cinematica introduzione
 
Equazioni di grado superiore al secondo
Equazioni di grado superiore al secondoEquazioni di grado superiore al secondo
Equazioni di grado superiore al secondo
 
Circonferenza passante per 3 punti
Circonferenza passante per 3 puntiCirconferenza passante per 3 punti
Circonferenza passante per 3 punti
 
La circonferenza
La circonferenzaLa circonferenza
La circonferenza
 

RESTful Webservice con wicket [SC]ful webservice con wicket [sc]

  • 1. WICKET RESTFUL CON WICKET -------------------------------------------------------------------------------- ---------------------------------------------- DESCRIZIONE E' possibile scrivere webservice di tipo RESTful direttamente in wicket utilizzando la libreria "Wicket-rest-annotations". Si tratta pertanto di una libreria che implementa la specifica JAX-RS. Il protocollo di comunicazione è json (http://json.org/json-it.html) -------------------------------------------------------------------------------- ---------------------------------------------- LIBRERIE - wicketstuff-restannotations-6.0.jar - wicketstuff-restannotations-json-6.0 E' possibile scarivarle dal sito ufficiale https://github.com/bitstorm/Wicket- rest-annotations oppure da http://mvnrepository.com/ Dipendenze: - gson-2.2.4.jar Libreria json per java che è possibile scaricare da json.org o da http://mvnrepository.com/ -------------------------------------------------------------------------------- ---------------------------------------------- ESEMPIO Supponiamo di volere fornire il servizio di scambio pojo Persona tramite RESTful-json. Per semplificare l'esempio la classe presenta un numero minimo di proprietà. Ma è possibile utilizzare il numero di proprietà desiderate. E' anche possibile utilizzara proprietà che fanno riferimento ad altri oggetti o liste. Sarà la libreria che in maniera trasperente convertirà gli oggetti in rappresentazione json. Ovviamente si presuppone che sia già presente un progetto wicket. Si fa inoltre osservare che non è necessario marcare il pojo con delle annotazioni. STEP 01: creare il bean: package myrest; public class Persona { private String nome; private String cognome; private int eta; public Persona(String nome, String cognome, int eta) { this.nome = nome; this.cognome = cognome; this.eta = eta; } ... metodi get e set
  • 2. } STEP 02: creare la classe per fornire la risorsa: Questa pagina fornisce tre serivizi: 1) Restituisce tutte le anagrafiche (metodo GET) 2) Elimina un'anagrafica (metodo DELETE) 3) Inserisce un'anagrafica (metodo POST) Si fa osservare che è sufficiente estendere la classe GsonRestResource (IResource). package myrest; import java.util.ArrayList; import java.util.List; import org.wicketstuff.rest.annotations.MethodMapping; import org.wicketstuff.rest.annotations.parameters.RequestBody; import org.wicketstuff.rest.resource.gson.GsonRestResource; import org.wicketstuff.rest.utils.http.HttpMethod; /** * * @author osanet */ public class PersonsRestResource extends GsonRestResource { private List<Persona> persone; public PersonsRestResource() { persone = new ArrayList<Persona>(); persone.add(new Persona("pippo01", "rossi01", 10)); persone.add(new Persona("pippo02", "rossi02", 20)); persone.add(new Persona("pippo03", "rossi03", 30)); } @MethodMapping("/persone") public List<Persona> getAllPersons() { return persone; } @MethodMapping(value = "/persone/{personIndex}", httpMethod = HttpMethod.DELETE) public void deletePerson(int personIndex) { persone.remove(personIndex); } @MethodMapping(value = "/persone", httpMethod = HttpMethod.POST) public Persona createPerson(@RequestBody Persona persona) { persone.add(persona); return persona; } } STEP 03: Registrazione del servizio nell'applicazione Questa operazione registra il servizio e gli assegna /managerpersone nel path dell'applicazione Nel metodo Application.int() aggiungere:
  • 3. mountResource("/managerpersone", new ResourceReference("restReference") { PersonsRestResource resource = new PersonsRestResource(); @Override public IResource getResource() { return resource; } }); STEP 04; Compilata l'applicazione, supposto che ad esempio myapp01 sia lo scope dell'applicazione e che /app sia il path assegnato alla servlet wicket, allora per accedere al servizio rest: http://localhost:8080/myapp01/app/managerpersone/persone questo farà una richiedsta di tipo GET a cui corrisponde il metodo getAllPersons(). Pertanto la procedura risponderà restituendo l'elenco delle persone (in formato json). E' anche possibile testare gli altri metodo con un client restful. -------------------------------------------------------------------------------- ----------------------------------------------