mercury.core.AngularDocumentationService.java Source code

Java tutorial

Introduction

Here is the source code for mercury.core.AngularDocumentationService.java

Source

/*
 * /*
 *     This file is part of ImageJ FX.
 *
 *     ImageJ FX is free software: you can redistribute it and/or modify
 *     it under the terms of the GNU General Public License as published by
 *     the Free Software Foundation, either version 3 of the License, or
 *     (at your option) any later version.
 *
 *     ImageJ FX is distributed in the hope that it will be useful,
 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *     GNU General Public License for more details.
 *
 *     You should have received a copy of the GNU General Public License
 *     along with ImageJ FX.  If not, see <http://www.gnu.org/licenses/>. 
 *
 *    Copyright 2015,2016 Cyril MONGIS, Michael Knop
 *
 */
package mercury.core;

import mercury.core.Deferred;
import com.fasterxml.jackson.databind.ObjectMapper;
import ijfx.ui.main.ImageJFX;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Cyril MONGIS, 2015
 */
public class AngularDocumentationService {

    AngularBinder manager;

    public AngularDocumentationService(AngularBinder manager) {
        this.manager = manager;
    }

    @AngularMethod(description = "Returns a list of available services", inputExample = "{}", outputExample = "['DocumentationService','TestService']", inputDescription = "Nothing")
    public void getServiceList(Deferred deferred, JSONParameters param) {
        ArrayList<String> serviceNames = new ArrayList<>();
        manager.services().forEach(service -> serviceNames.add(service.getName()));

        deferred.parseAndResolve(JSONUtils.formatObjectForJSON(serviceNames));

        // deferred.parseAndResolve("['DocumentationService','TestService']");

    }

    @AngularMethod(description = "Returns the list of the methods proposed by the service with their descriptions.", inputDescription = "Service name", inputExample = "{'name':'DocumentationService'}", outputExample = "[{'name':'doSomething','inputExample':'...','outputExample':''}]")
    public void getMethodList(Deferred deferred, JSONParameters params) {
        String serviceName = params.getFirstString();
        MercuryTimer t = new MercuryTimer(this.getClass().getSimpleName());
        t.start();
        ObjectMapper mapper = new ObjectMapper();
        t.elapsed("initialising mapper");
        try {

            String json = mapper.writeValueAsString(manager.getService(serviceName).getMethodDescriptionList());
            t.elapsed("JSON transformation");
            deferred.parseAndResolve(json);
            t.elapsed("JSON resolve");
        } catch (Exception ex) {
            ImageJFX.getLogger().log(Level.SEVERE, null, ex);
            deferred.parseAndReject("[]");
        }
    }

}