package com.google.jstestdriver.servlet.fileset; import com.google.common.collect.Lists; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.google.inject.Inject; import com.google.jstestdriver.SlaveBrowser; import com.google.jstestdriver.model.JstdTestCase; import com.google.jstestdriver.model.JstdTestCaseDelta; import com.google.jstestdriver.server.JstdTestCaseStore; import java.util.Collection; import java.util.List; /** * Handles uploads to the server file cache. * @author corbinrsmith@gmail.com (Cory Smith) */ public class TestCaseUpload implements FileSetRequestHandler<Collection<JstdTestCaseDelta>> { public static final String ACTION = "serverFileUpload"; private final JstdTestCaseStore store; private final Gson gson; @Inject public TestCaseUpload(JstdTestCaseStore store, Gson gson) { this.store = store; this.gson = gson; } @Override public Collection<JstdTestCaseDelta> handle(SlaveBrowser browser, String data) { Collection<JstdTestCase> testCases = deserialize(data); List<JstdTestCaseDelta> deltas = Lists.newArrayList(); for (JstdTestCase testCase : testCases) { deltas.add(store.addCase(testCase)); } return deltas; } @Override public boolean canHandle(String action) { return ACTION.equalsIgnoreCase(action); } private Collection<JstdTestCase> deserialize(String data) { return gson.fromJson(data, new TypeToken<Collection<JstdTestCase>>() {}.getType()); } }