SugarCRM REST API: Un’applicazione in appena dieci minutiAntonio Musarra
Realizzare un’applicazione (semplice) HTML 5 (costruita veramente in dieci minuti) che interagisca con il sistema SugarCRM sfruttando le API REST.
Con gli strumenti adeguati abbiamo avuto modo di costatare come in questi ultimi anni in particolare sia divenuto semplice e quasi immediato realizzare applicazioni web, che interagiscono con servizi prettamente di tipo REST per attingere ai dati. L’utilizzo di framework commisurati al progetto influisce positivamente sul risparmio di tempo necessario per l’implementazione, non considerando ovviamente il tempo necessario per l’apprendimento dell’uso dello strumento.
Come portare il profiler di symfony2 in drupal8Luca Lusso
Molti progetti PHP open source hanno adottato Symfony2 come base per la loro prossima versione, tra questi c'è anche il CMS Drupal (http://drupal.org). In questo talk vedremo come scrivere un modulo per Drupal8 in modo da sfruttare il più possibile il suo nuovo motore Symfony2, dall'integrazione con il service container alla gestione degli eventi, dal routing a Twig. Verrà usato come esempio il modulo webprofiler (http://drupal.org/project/webprofiler) per dimostrare come un bundle per Symfony2 possa essere trasformato in un modulo per Drupal8 e integrato facilmente nel sistema.
Autenticazione delle api con jwt e symfony (Italian)Marco Albarelli
A quick overview of the JWT token format and how it can be used to authenticate REST APIs even without implementing the full Openid Connect stack. The examples show also a TDD approach
What's New in ASP.NET 4.5 and Visual Studio 2012Andrea Dottor
Slide e codice lo potete trovare a questo link:
http://blog.dottor.net/post/2012/09/18/Codice-e-slide-della-sessione-Whats-New-in-ASPNET-45-and-Visual-Studio-2012.aspx
Il Microsoft .NET Framework è in continua evoluzione, e con la prossima versione verranno rilasciate interessanti funzionalità riguardanti ASP.NET.All'interno di questa sessione conosceremo tutte queste novità, ed andremo invece più in dettaglio in alcune di esse, permettendo a chi conosce già ASP.NET di poter essere più produttivo (Strongly Typed Data Controls, Model Binding, Asynchronous, WebSocket, ... ), mentre, per chi invece non ha molta esperienza con questa tecnologia, potrà vedere come i nuovi template di progetto e Visual Studio 2012 potranno aiutarlo ad approcciare correttamente queste tipologie di applicazioni.
SugarCRM REST API: Un’applicazione in appena dieci minutiAntonio Musarra
Realizzare un’applicazione (semplice) HTML 5 (costruita veramente in dieci minuti) che interagisca con il sistema SugarCRM sfruttando le API REST.
Con gli strumenti adeguati abbiamo avuto modo di costatare come in questi ultimi anni in particolare sia divenuto semplice e quasi immediato realizzare applicazioni web, che interagiscono con servizi prettamente di tipo REST per attingere ai dati. L’utilizzo di framework commisurati al progetto influisce positivamente sul risparmio di tempo necessario per l’implementazione, non considerando ovviamente il tempo necessario per l’apprendimento dell’uso dello strumento.
Come portare il profiler di symfony2 in drupal8Luca Lusso
Molti progetti PHP open source hanno adottato Symfony2 come base per la loro prossima versione, tra questi c'è anche il CMS Drupal (http://drupal.org). In questo talk vedremo come scrivere un modulo per Drupal8 in modo da sfruttare il più possibile il suo nuovo motore Symfony2, dall'integrazione con il service container alla gestione degli eventi, dal routing a Twig. Verrà usato come esempio il modulo webprofiler (http://drupal.org/project/webprofiler) per dimostrare come un bundle per Symfony2 possa essere trasformato in un modulo per Drupal8 e integrato facilmente nel sistema.
Autenticazione delle api con jwt e symfony (Italian)Marco Albarelli
A quick overview of the JWT token format and how it can be used to authenticate REST APIs even without implementing the full Openid Connect stack. The examples show also a TDD approach
What's New in ASP.NET 4.5 and Visual Studio 2012Andrea Dottor
Slide e codice lo potete trovare a questo link:
http://blog.dottor.net/post/2012/09/18/Codice-e-slide-della-sessione-Whats-New-in-ASPNET-45-and-Visual-Studio-2012.aspx
Il Microsoft .NET Framework è in continua evoluzione, e con la prossima versione verranno rilasciate interessanti funzionalità riguardanti ASP.NET.All'interno di questa sessione conosceremo tutte queste novità, ed andremo invece più in dettaglio in alcune di esse, permettendo a chi conosce già ASP.NET di poter essere più produttivo (Strongly Typed Data Controls, Model Binding, Asynchronous, WebSocket, ... ), mentre, per chi invece non ha molta esperienza con questa tecnologia, potrà vedere come i nuovi template di progetto e Visual Studio 2012 potranno aiutarlo ad approcciare correttamente queste tipologie di applicazioni.
Il 10 novembre 2015 viene rilasciato TYPO3 CMS 7.6, la nuova versione LTS con supporto fino al 2018. Queste le differenze con la versione 7.5 e fra qualche giorno i documenti con tutte le differenze tra TYPO3 CMS 6.2 LTS e TYPO3 CMS 7 LTS
by Davide Cerbo e Stefano Linguerri
La programmazione web sta facendo passi da gigante e oggi l’utente si aspetta che l’esperienza di utilizzo si avvicini sempre di più a quella a cui è abituato nei classici applicativi desktop. Il mondo degli sviluppatori ha risposto inventanto una nuova sigla: RIA, cioè Rich Internet Application. Google non è stata a guardare e ha fornito la sua risposta a questa esigenza donando alla community Google Web Toolkit. Questo nuovo framework permette di sviluppare in Java tutta l’interfaccia utente per poi ottenere un codice javascript che funzionerà su qualsiasi browser web senza l’installazione di plugin aggiuntivi. In questa presentazione vedremo:
* perchè sviluppare applicazioni RIA
* perchè usare GWT
* come GWT utilizza AJAX per comunicare con il server
* le ottimizzazione che avremo utilizzando GWT
* come uscire dal browser con Google Gear e Mozilla Prism
* e non solo…
Grazie a Team Foundation Build è possibile adottare pratiche di integrazione continua nel proprio progetto. In questa presentazione viene introdotta la struttura di tfs build assieme alle tecniche base per effettuare una customizzazione della build.
Swagger è un semplice ma potente tool per la documentazione delle nostre RESTful API. Definisce una
interfaccia standard e indipendende dal linguaggio, che permette sia a persone che computer di scoprire e
comprendere le capacità di un servizio senza accedere al codice sorgente, a documentazione o ispezione
del traffico di rete. In questo post creeremo la documentazione per l’API members contenuta
nell’applicazione di esempio generata dal modello jboss-javaee6-webapp.
Qt Lezione3: un visualizzatore di immaginiPaolo Sereno
Questa lezione sul toolkit Qt permette di scrivere una semplice applicazione di visualizzazione immagini, i formati sono quelli più comunemente usati: JPG, BMP, PNG etc.
Slide e riferimenti al codice del Meetup del 28/02/2019 del Vue JS Milano dove parlo di creazione di componenti, passaggio di parametri, computed properties
Asp.Net MVC 3 - Il Model View Controller secondo MicrosoftStefano Benedetti
Il pattern architetturale MVC (Model View Controller) favorisce la manutenzione delle applicazioni web tramite una architettura elegante ed una chiara ed esplicita separazione delle competenze, l'impiego dei più diffusi pattern di software engineering, il controllo completo dell'HTML generato e degli URL, la testabilità ed estendibilità.
In questa sessione vedremo le novità principali di Asp.Net MVC in versione 3.
La sessione è stata tenuta a SMAU Business Bologna il 9 giugno 2011
Prepariamoci al cambiamento. ASP.NET MVC e ASP.NET Web API saranno unificati in un unico framework chiamato ASP.NET MVC 6, e questo è solo la prima di una serie di novità che stanno per arrivare.
Tutto si semplifica. Le performance migliorano. Un altro salto tecnologico in avanti portato da ASP.NET 5.
In questa sessione, infatti, vedremo tutte le novità che ASP.NET MVC 6 porta con se, e cercheremo di andare in dettaglio in modo da capire cosa voglia dire realizzare (da zero) o migrare (un'applicazione essitente) a questa nuova versione
I servizi offerti dalla piattaforma BING consentono di realizzare facilmente applicazioni per Windows 8.1 moderne ed evolute. Le funzionalità di Speech Recognition, ad esempio, consentono di fornire all'utente un diverso modo per interagire con la nostra applicazione mentre le funzionalità infrastrutturali di App Linking ci permettono di integrare la nostra applicazione all'interno dei risultati della Smart Search di Windows 8.1, consentendoci di essere più visibili e, quindi, di avere un maggior successo.
Slide della sessione "BING e Windows Store App" tenuta al DotNetCampus 2014 a Roma il 10/05/2014
Asp.NET MVC è un nuovo framework per lo sviluppo di applicazioni web alternativo al modello webform. Questo consente di utilizzare il pattern MVC per lo sviluppo di applicazioni Asp.NET, permettendo quindi una miglior separazione delle responsabilità che a sua volta porta ad una maggior manutenibilità, riusabilità e facilità nel testing.
La sessione illustrerà i motivi che hanno portato alla nascita di Asp.NET MVC e le sue caratteristiche fondamentali.
Agenda:
- Storia dei framework MS per lo sviluppo web
- Introduzione a Asp.NET MVC
- Vantaggi di Asp.NET MVC
- Il pattern MVC
- Hello MVC: DEMO
- Componenti di MVC: Routing, Controller, Model, View
Nel corso di quest’articolo vedremo come sia possibile sfruttare il Service Builder (Liferay Inc., 2014) per creare dei servizi da esporre all’esterno non direttamente collegati all’entità gestiste dallo specifico plugin.
Quello che vogliamo ottenere è quindi un servizio personalizzato chiamato Custom Users Service disponibile pubblicamente e che sfrutti i servizi core del portale. In questo particolare scenario vogliamo fare in modo che il servizio Custom Users Service, esponga un metodo che ritorni al consumer del servizio, la lista di utenti taggati con un determinato tag (Liferay Inc., 2014).
Da un po' di tempo a questa parte quando uno sviluppatore software sente la parola "Clouds" non pensa più alle nuovole, ma a...? Durante l'intervento risponderò a questa domanda e mostrerò come una applicazione web sviluppata con Spring Framework, Apache Maven e OpenJPA può essere installata facilmente e (quasi)gratuitamente sulla piattaforma per il cloud computing messa a disposizione da Google.
Il codice di esempio della presentazione lo trovate su: http://code.google.com/p/gae-javaday10/
Il 10 novembre 2015 viene rilasciato TYPO3 CMS 7.6, la nuova versione LTS con supporto fino al 2018. Queste le differenze con la versione 7.5 e fra qualche giorno i documenti con tutte le differenze tra TYPO3 CMS 6.2 LTS e TYPO3 CMS 7 LTS
by Davide Cerbo e Stefano Linguerri
La programmazione web sta facendo passi da gigante e oggi l’utente si aspetta che l’esperienza di utilizzo si avvicini sempre di più a quella a cui è abituato nei classici applicativi desktop. Il mondo degli sviluppatori ha risposto inventanto una nuova sigla: RIA, cioè Rich Internet Application. Google non è stata a guardare e ha fornito la sua risposta a questa esigenza donando alla community Google Web Toolkit. Questo nuovo framework permette di sviluppare in Java tutta l’interfaccia utente per poi ottenere un codice javascript che funzionerà su qualsiasi browser web senza l’installazione di plugin aggiuntivi. In questa presentazione vedremo:
* perchè sviluppare applicazioni RIA
* perchè usare GWT
* come GWT utilizza AJAX per comunicare con il server
* le ottimizzazione che avremo utilizzando GWT
* come uscire dal browser con Google Gear e Mozilla Prism
* e non solo…
Grazie a Team Foundation Build è possibile adottare pratiche di integrazione continua nel proprio progetto. In questa presentazione viene introdotta la struttura di tfs build assieme alle tecniche base per effettuare una customizzazione della build.
Swagger è un semplice ma potente tool per la documentazione delle nostre RESTful API. Definisce una
interfaccia standard e indipendende dal linguaggio, che permette sia a persone che computer di scoprire e
comprendere le capacità di un servizio senza accedere al codice sorgente, a documentazione o ispezione
del traffico di rete. In questo post creeremo la documentazione per l’API members contenuta
nell’applicazione di esempio generata dal modello jboss-javaee6-webapp.
Qt Lezione3: un visualizzatore di immaginiPaolo Sereno
Questa lezione sul toolkit Qt permette di scrivere una semplice applicazione di visualizzazione immagini, i formati sono quelli più comunemente usati: JPG, BMP, PNG etc.
Slide e riferimenti al codice del Meetup del 28/02/2019 del Vue JS Milano dove parlo di creazione di componenti, passaggio di parametri, computed properties
Asp.Net MVC 3 - Il Model View Controller secondo MicrosoftStefano Benedetti
Il pattern architetturale MVC (Model View Controller) favorisce la manutenzione delle applicazioni web tramite una architettura elegante ed una chiara ed esplicita separazione delle competenze, l'impiego dei più diffusi pattern di software engineering, il controllo completo dell'HTML generato e degli URL, la testabilità ed estendibilità.
In questa sessione vedremo le novità principali di Asp.Net MVC in versione 3.
La sessione è stata tenuta a SMAU Business Bologna il 9 giugno 2011
Prepariamoci al cambiamento. ASP.NET MVC e ASP.NET Web API saranno unificati in un unico framework chiamato ASP.NET MVC 6, e questo è solo la prima di una serie di novità che stanno per arrivare.
Tutto si semplifica. Le performance migliorano. Un altro salto tecnologico in avanti portato da ASP.NET 5.
In questa sessione, infatti, vedremo tutte le novità che ASP.NET MVC 6 porta con se, e cercheremo di andare in dettaglio in modo da capire cosa voglia dire realizzare (da zero) o migrare (un'applicazione essitente) a questa nuova versione
I servizi offerti dalla piattaforma BING consentono di realizzare facilmente applicazioni per Windows 8.1 moderne ed evolute. Le funzionalità di Speech Recognition, ad esempio, consentono di fornire all'utente un diverso modo per interagire con la nostra applicazione mentre le funzionalità infrastrutturali di App Linking ci permettono di integrare la nostra applicazione all'interno dei risultati della Smart Search di Windows 8.1, consentendoci di essere più visibili e, quindi, di avere un maggior successo.
Slide della sessione "BING e Windows Store App" tenuta al DotNetCampus 2014 a Roma il 10/05/2014
Asp.NET MVC è un nuovo framework per lo sviluppo di applicazioni web alternativo al modello webform. Questo consente di utilizzare il pattern MVC per lo sviluppo di applicazioni Asp.NET, permettendo quindi una miglior separazione delle responsabilità che a sua volta porta ad una maggior manutenibilità, riusabilità e facilità nel testing.
La sessione illustrerà i motivi che hanno portato alla nascita di Asp.NET MVC e le sue caratteristiche fondamentali.
Agenda:
- Storia dei framework MS per lo sviluppo web
- Introduzione a Asp.NET MVC
- Vantaggi di Asp.NET MVC
- Il pattern MVC
- Hello MVC: DEMO
- Componenti di MVC: Routing, Controller, Model, View
Nel corso di quest’articolo vedremo come sia possibile sfruttare il Service Builder (Liferay Inc., 2014) per creare dei servizi da esporre all’esterno non direttamente collegati all’entità gestiste dallo specifico plugin.
Quello che vogliamo ottenere è quindi un servizio personalizzato chiamato Custom Users Service disponibile pubblicamente e che sfrutti i servizi core del portale. In questo particolare scenario vogliamo fare in modo che il servizio Custom Users Service, esponga un metodo che ritorni al consumer del servizio, la lista di utenti taggati con un determinato tag (Liferay Inc., 2014).
Da un po' di tempo a questa parte quando uno sviluppatore software sente la parola "Clouds" non pensa più alle nuovole, ma a...? Durante l'intervento risponderò a questa domanda e mostrerò come una applicazione web sviluppata con Spring Framework, Apache Maven e OpenJPA può essere installata facilmente e (quasi)gratuitamente sulla piattaforma per il cloud computing messa a disposizione da Google.
Il codice di esempio della presentazione lo trovate su: http://code.google.com/p/gae-javaday10/
Similar to Creazione di una REST API in Liferay (20)
1. Creazione di una REST API in Liferay portal
Introduzione
In questo periodo ho letto alcuni post molto interessanti sulla creazione di REST API nel portale Liferay. I
servizi si possono creare essenzialmente in due modi: utilizzando il supporto built-in di Liferay, o utilizzando
framework come Spring o Jersey. In questo tutorial espongo come integrare Jersey in Liferay in modo
flessibile e relativamente veloce. Il software che ho utilizzato è il seguente:
• Apache Maven 3.2.3
• JDK 1.7
• liferay-portal-6.2-ce-ga4
• Jersey 2.22.1
• SoapUI 5.0.0
• Windows 7
Prerequisiti
Quando si utilizza un framework esterno a Liferay, occorre scrivere un po’ di codice per l’integrazione col
sistema di sicurezza di Liferay. In sintesi occorre autenticare l’utente e inizializzare il sistema di permessi
così come fa il filtro com.liferay.portal.servlet.filters.secure.SecureFilter. Ho creato la
classe com.sample.rest.liferay.AuthenticationFilter basandomi su tale filtro.
Tipicamente, in caso di successo, i servizi rest restituiscono i seguenti stati HTTP:
• 200 - OK per i metodi GET
• 201 - Created per i metodi POST
• 204 - No Content per i metodi PUT e DELETE
Per aderire a questa convenzione, ho creato l’annotation Status e la classe StatusFilter che
sostituisce lo stato HTTP con quello contenuto in Status.
AuthenticationFilter, Status e StatusFilter si trovano nel progetto com-sample-rest
disponibile al seguente indirizzo: http://www.webalice.it/nmastrapasqua/sources/com-sample-rest.zip.
Eseguiamo il download, e dopo aver decompresso l’archivio, digitiamo il comando mvn install.
Creazione del progetto liferay-jersey-portlet
Nella directory c:progettirest creiamo il progetto maven in modo interattivo:
mvn archetype:generate
quando richiesto, digitiamo il filtro liferay:portlet
2. scegliamo 1, che corrisponde a liferay
Subito dopo, ci viene richiesto di scegliere la versione del modello; nel mio caso
versione 6.2.0-ga1.
Infine impostiamo i parametri groupId
Lavoriamo ora nella directory c:progetti
Figura 1 - Generazione del progetto
liferay-portlet-archetype
Subito dopo, ci viene richiesto di scegliere la versione del modello; nel mio caso
groupId, artifactId, version e confermiamo con
Figura 2 - Scelta della versione
progettirestliferay-jersey-portlet
23 che corrisponde alla
e confermiamo con Y.
3. Modifica del file pom.xml
Aggiungiamo la sezione profile per definire il nostro ambiente di lavoro e le dipendenze da jersey
Jackson e com-sample-rest
Figura 3 - pom.xml
Service Builder
Nella directory src/main/webapp/WEB-INF creiamo il file service.xml
Figura 4 - service.xml
Generiamo l’entità e le CRUD col commando mvn liferay:build-service -P dev. Modifichiamo la
classe ProductImpl aggiungendo il costruttore che riceve in input l’oggetto ProductSoap :
4. Figura 5 - ProductImpl.java
Modifichiamo la classe ProductLocalServiceImpl aggiungendo i metodi che ci occorrono; ho
sovrascritto il metodo addProduct per generare una chiave automatica e ho aggiunto il metodo
updateExistentProduct che aggiorna un prodotto già presente nel database.
Figura 6 - ProductLocalServiceImpl.java
Per questo progetto ho voluto utilizzare un database diverso da quello di default; a tal scopo ho creato il
file ext-spring.xml nella directory srcmainresourcesMETA-INF per la definizione del bean
externalDataSource. Ho definito le coordinate del database nel file portal-ext.properties (occorre
un restart di Liferay) e aggiornato il file service.xml per l’utilizzo della sorgente dati externalDataSource.
Infine ho creato la tabella nmastra_product nel database liferayrestdb.
Figura 7 - portal-ext.properties
Aggiorniamo le interfacce col comando: mvn liferay:build-service -P dev
5. Creazione del servizio REST
La classe che implementa il servizio è ProductRestServices; essa contiene cinque metodi:
• addProduct: metodo POST, consuma e produce dati in formato JSON, restituisce 201 in caso di
successo
• getProduct: metodo GET, produce dati in formato JSON, restituisce 200 in caso di successo
• getProducts: metodo GET, produce dati in formato JSON, restituisce 200 in caso di successo
• deleteProduct: metodo DELETE, restituisce 204 in caso di successo
• updateExistentProduct: metodo PUT, consuma dati in formato JSON, restituisce 204 in caso di
successo
A parte deleteProduct, tutti i metodi utilizzano come parametro la classe ProductSoap generata dal
Service Builder. Tale classe è pensata per la creazione di servizi remoti e ci eviterà problemi di
serializzazione/deserializzazione.
Figura 8 - ProductRestService
La gestione delle eccezioni è fatta via ExceptionMapper; la classe NoSuchProductMapper (annotata con
@Provider) associa l’eccezione NoSuchProductException allo stato HTTP 404 - Not Found.
6. Figura 9 - NoSuchProductMapper.java
Nel file web.xml agganciamo il motore Jersey. Il parametro
jersey.config.server.provider.packages indica alla servlet quali package contengono i provider:
nel nostro caso com.liferay.jersey.rest che contiene ProductRestServices e
NoSuchProductMapper, e com.sample.rest che contiene StatusFilter. Se vogliamo utilizzare la
sicurezza, configuriamo il filtro AuthenticationFilter indicando il tipo di autenticazione.
Figura 10 - web.xml
Assicuriamoci che Liferay sia attivo e deployamo la portlet con il commando:
mvn package liferay:deploy -P dev
7. Test
Per il test del servizio ho utilizzato SoapUI; la figura seguente mostra il progetto:
Figura 11 - Progetto SoapUI
Se abbiamo attivato AuthenticationFilter, su SoapUI dobbiamo impostare Username e Password:
Figura 12 - Autorizzazione
8. POST
Creiamo un prodotto utilizzando la richiesta Request 1 del metodo ADD_PRODUCT:
Figura 13 - Creazione di un prodotto
Ora proviamo ad inviare una richiesta priva di autorizzazione: utilizziamo la richiesta Not Authorized:
Figura 14 - Esempio HTTP Status 401
9. PUT
Aggiorniamo il prezzo del prodotto identificato dall’id 1501 utilizzando la Request 1 del metodo
UPDATE_PRODUCT:
Figura 15 - Aggiornamento di in prodotto
GET
Recuperiamo i dettagli del prodotto 1501; utilizziamo la richiesta OK sotto GET_PRODUCT_BY_ID:
Figura 16 - Recupero prodotto
10. Proviamo ora a cercare un prodotto che non esiste:
Figura 17 - HTTP Status 404
DELETE
Bye bye 1501: utilizziamo Request 1 sotto DELETE_PRODUCT_BY_ID:
Figura 18 - Cancellazione di un prodotto
Nella sezione Link è riportato l'url al quale scaricare il progetto liferay-jersey-portlet. Buona divertimento!
11. Documentazione
La documentazione interattiva (generata con Swagger) è disponibile all’indirizzo :
http://localhost:8080/liferay-jersey-portlet/docs.html
Figura 19 - Documentazione generata da Swagger
Link
https://www.liferay.com/it/
https://jersey.java.net/
http://www.liferaysavvy.com/2012/12/liferay-jersey-restful-web-services.html
https://www.liferay.com/it/web/vitor.silva/blog/-/blogs/using-restful-services-with-liferay
http://cosenonjaviste.it/liferay-esporre-web-services-custom/
http://rlopezblogs.blogspot.it/2014/11/access-multiple-datasources-in-liferay.html
http://www.webalice.it/nmastrapasqua/sources/liferay-jersey-portlet.zip
http://www.webalice.it/nmastrapasqua/sources/REST-Project-1-soapui-project.xml
https://github.com/swagger-api/swagger-core/wiki/Swagger-Core-Jersey-2.X-Project-Setup-1.5