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

io.quarkiverse.mcp.server.deployment.FeatureMethodBuildItem Maven / Gradle / Ivy

The newest version!
package io.quarkiverse.mcp.server.deployment;

import java.util.Objects;

import org.jboss.jandex.MethodInfo;

import io.quarkiverse.mcp.server.runtime.FeatureMetadata;
import io.quarkiverse.mcp.server.runtime.FeatureMetadata.Feature;
import io.quarkus.arc.processor.BeanInfo;
import io.quarkus.arc.processor.InvokerInfo;
import io.quarkus.builder.item.MultiBuildItem;

final class FeatureMethodBuildItem extends MultiBuildItem {

    private final BeanInfo bean;
    private final InvokerInfo invoker;
    private final String name;
    private final String description;

    private final MethodInfo method;
    private final Feature feature;

    // Resource-only
    private final String uri;
    private final String mimeType;

    FeatureMethodBuildItem(BeanInfo bean, MethodInfo method, InvokerInfo invoker, String name, String description, String uri,
            String mimeType, FeatureMetadata.Feature feature) {
        this.bean = Objects.requireNonNull(bean);
        this.method = Objects.requireNonNull(method);
        this.invoker = Objects.requireNonNull(invoker);
        this.feature = Objects.requireNonNull(feature);
        this.name = Objects.requireNonNull(name);
        this.description = description;
        this.uri = feature == Feature.RESOURCE ? Objects.requireNonNull(uri) : null;
        this.mimeType = mimeType;
    }

    BeanInfo getBean() {
        return bean;
    }

    MethodInfo getMethod() {
        return method;
    }

    InvokerInfo getInvoker() {
        return invoker;
    }

    String getName() {
        return name;
    }

    String getDescription() {
        return description;
    }

    String getUri() {
        return uri;
    }

    String getMimeType() {
        return mimeType;
    }

    Feature getFeature() {
        return feature;
    }

    boolean isTool() {
        return feature == Feature.TOOL;
    }

    boolean isPrompt() {
        return feature == Feature.PROMPT;
    }

    boolean isResource() {
        return feature == Feature.RESOURCE;
    }

    @Override
    public String toString() {
        return "FeatureMethodBuildItem [name=" + name + ", method=" + method.declaringClass() + "#" + method.name()
                + "(), feature=" + feature + "]";
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy