Package com.mozilla.grouperfish.batch.handlers

Source Code of com.mozilla.grouperfish.batch.handlers.PutHandler

package com.mozilla.grouperfish.batch.handlers;

import static com.mozilla.grouperfish.batch.scheduling.Helpers.resultsFilename;

import java.io.Reader;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.mozilla.grouperfish.base.StreamTool;
import com.mozilla.grouperfish.model.Fail;
import com.mozilla.grouperfish.model.Task;
import com.mozilla.grouperfish.naming.Scope;
import com.mozilla.grouperfish.rest.jaxrs.ResultsResource;
import com.mozilla.grouperfish.services.api.FileSystem;
import com.mozilla.grouperfish.services.api.Grid;


/**
* Put run results into results storage.
*/
public class PutHandler implements TaskHandler {

    private static final Logger log = LoggerFactory.getLogger(PutHandler.class);

    private final FileSystem fs;
    private final Grid grid;

    public PutHandler(final Grid grid, final FileSystem fs) {
        this.grid = grid;
        this.fs = fs;
    }

    @Override
    public Task handle(final Task task) throws Fail {

        if (!task.isOk()) {
            log.debug("Not putting result for failed task %s", task);
        }

        final String key = ResultsResource.key(task.transform().name(), task.query().name());
        final Map<String, String> results = new Scope(task.namespace(), grid).results();

        try {
            final Reader reader = fs.reader(resultsFilename(task));
            results.put(key, StreamTool.consume(reader));
        }
        catch (final Exception e) {
            throw Fail.hard(task, "Could not read results from filesystem.", e);
        }
        return task;
    }

}
TOP

Related Classes of com.mozilla.grouperfish.batch.handlers.PutHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.