Created
June 11, 2015 21:17
-
-
Save guicara/1c0940b7969c32526e63 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.example.android.network; | |
import android.app.Application; | |
import com.octo.android.robospice.SpringAndroidSpiceService; | |
import com.octo.android.robospice.persistence.CacheManager; | |
import com.octo.android.robospice.persistence.exception.CacheCreationException; | |
import com.octo.android.robospice.persistence.ormlite.InDatabaseObjectPersisterFactory; | |
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; | |
import org.springframework.http.converter.FormHttpMessageConverter; | |
import org.springframework.http.converter.HttpMessageConverter; | |
import org.springframework.http.converter.StringHttpMessageConverter; | |
import org.springframework.http.converter.json.MappingJacksonHttpMessageConverter; | |
import org.springframework.web.client.RestTemplate; | |
import java.util.ArrayList; | |
import java.util.List; | |
/** | |
* RoboSpice SpiceService for the Calendrier-Lunaire Web Service | |
* dedicated to persistence of POJOs inside a database using ORMLite | |
* | |
* Caching : use the ORMLite module of RoboSpice | |
* Networking : use SpringAndroid for REST request | |
* | |
* Process any SpiceRequest instance {@link DaysRequest} | |
* | |
* @author Guillaume MOREL-BAILLY | |
* @version 1.0 | |
* @since 1.0 | |
*/ | |
public class CalendarSpiceService extends SpringAndroidSpiceService { | |
private static final int WEBSERVICES_TIMEOUT = 10000; | |
@Override | |
public CacheManager createCacheManager(Application application) throws CacheCreationException { | |
CacheManager cacheManager = new CacheManager(); | |
List<Class<?>> classCollection = new ArrayList< Class< ? >>(); | |
// Add persisted classe(s) to class collection | |
classCollection.add(Days.class); | |
classCollection.add(Day.class); | |
classCollection.add(Months.class); | |
classCollection.add(Month.class); | |
classCollection.add(Topic.class); | |
classCollection.add(Topics.class); | |
classCollection.add(News.class); | |
classCollection.add(NewsCollection.class); | |
// Init | |
if (DatabaseManager.getHelper() == null) { | |
DatabaseHelper databaseHelper = new DatabaseHelper(application, Consts.DATABASE_NAME, Consts.DATABASE_VERSION); | |
DatabaseManager.setHelper(databaseHelper); | |
} | |
InDatabaseObjectPersisterFactory inDatabaseObjectPersisterFactory = new InDatabaseObjectPersisterFactory(application, DatabaseManager.getHelper(), classCollection); | |
cacheManager.addPersister(inDatabaseObjectPersisterFactory); | |
return cacheManager; | |
} | |
@Override | |
public RestTemplate createRestTemplate() { | |
RestTemplate restTemplate = new RestTemplate(); | |
// Bug on HTTP connection for Android < 2.2 | |
System.setProperty("http.keepAlive", "false"); | |
// Set timeout for requests | |
HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory(); | |
httpRequestFactory.setReadTimeout(WEBSERVICES_TIMEOUT); | |
httpRequestFactory.setConnectTimeout(WEBSERVICES_TIMEOUT); | |
restTemplate.setRequestFactory(httpRequestFactory); | |
// Web services support JSON responses | |
MappingJacksonHttpMessageConverter jsonConverter = new MappingJacksonHttpMessageConverter(); | |
FormHttpMessageConverter formHttpMessageConverter = new FormHttpMessageConverter(); | |
StringHttpMessageConverter stringHttpMessageConverter = new StringHttpMessageConverter(); | |
final List<HttpMessageConverter<?>> listHttpMessageConverters = restTemplate.getMessageConverters(); | |
listHttpMessageConverters.add(jsonConverter); | |
listHttpMessageConverters.add(formHttpMessageConverter); | |
listHttpMessageConverters.add(stringHttpMessageConverter); | |
restTemplate.setMessageConverters(listHttpMessageConverters); | |
return restTemplate; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment