All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jetlinks.plugin.internal.functional.FunctionalPlugin Maven / Gradle / Ivy

The newest version!
package org.jetlinks.plugin.internal.functional;

import io.swagger.v3.oas.annotations.media.Schema;
import org.jetlinks.core.command.Command;
import org.jetlinks.core.command.CommandHandler;
import org.jetlinks.plugin.core.AbstractPlugin;
import org.jetlinks.plugin.core.PluginContext;
import org.jetlinks.plugin.core.PluginType;
import org.jetlinks.supports.command.JavaBeanCommandSupport;

import java.util.Collections;

public abstract class FunctionalPlugin extends AbstractPlugin {

    @Override
    public abstract PluginType getType();

    public FunctionalPlugin(String id, PluginContext context) {
        super(id, context);
        registerCommand(this);
    }


    protected FunctionalService getService(String name) {
        return context()
            .services()
            .getService(FunctionalService.class,name)
            .orElseThrow(() -> new UnsupportedOperationException("Unsupported FunctionalService:" + name));
    }

    @SuppressWarnings("all")
    public void registerCommand(Object instance) {
        new JavaBeanCommandSupport(instance, method -> method.getAnnotation(Schema.class) != null)
            .getHandlers()
            .forEach(handler -> registerHandler(handler.getMetadata().getId(), (CommandHandler) handler));
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy