package by.istin.android.xcore.processor.impl; import android.content.Context; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import by.istin.android.xcore.processor.IProcessor; import by.istin.android.xcore.source.DataSourceRequest; import by.istin.android.xcore.source.IDataSource; import by.istin.android.xcore.utils.IOUtils; import by.istin.android.xcore.utils.Log; public abstract class AbstractStringProcessor<Result> implements IProcessor<Result, InputStream> { public static final String UTF_8 = "UTF-8"; @Override public Result execute(DataSourceRequest dataSourceRequest, IDataSource<InputStream> dataSource, InputStream inputStream) throws Exception { InputStreamReader inputStreamReader = null; BufferedReader streamReader = null; try { inputStreamReader = new InputStreamReader(inputStream, UTF_8); streamReader = new BufferedReader(inputStreamReader); StringBuilder responseStrBuilder = new StringBuilder(); String inputStr; while ((inputStr = streamReader.readLine()) != null) { responseStrBuilder.append(inputStr); } String string = responseStrBuilder.toString(); Log.xd(this, string); return convert(string); } finally { IOUtils.close(inputStream); IOUtils.close(inputStreamReader); IOUtils.close(streamReader); } } protected abstract Result convert(String string) throws Exception; @Override public void cache(Context context, DataSourceRequest dataSourceRequest, Result result) throws Exception { } }