Skip to content

Instantly share code, notes, and snippets.

@guicara
Created June 11, 2015 21:17
Show Gist options
  • Save guicara/1c0940b7969c32526e63 to your computer and use it in GitHub Desktop.
Save guicara/1c0940b7969c32526e63 to your computer and use it in GitHub Desktop.
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