/*
* Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com
* The software in this package is published under the terms of the CPAL v1.0
* license, a copy of which has been included with this distribution in the
* LICENSE.txt file.
*/
package org.mule.runtime.core.internal.metadata;
import static java.util.Collections.emptyList;
import org.mule.runtime.api.metadata.resolving.AttributesTypeResolver;
import org.mule.runtime.api.metadata.resolving.InputTypeResolver;
import org.mule.runtime.api.metadata.resolving.OutputTypeResolver;
import org.mule.runtime.api.metadata.resolving.QueryEntityResolver;
import org.mule.runtime.api.metadata.resolving.TypeKeysResolver;
import org.mule.runtime.extension.api.metadata.MetadataResolverFactory;
import org.mule.runtime.extension.api.metadata.NullMetadataResolver;
import org.mule.runtime.extension.api.metadata.NullQueryMetadataResolver;
import java.util.Collection;
/**
* Null implementation of a {@link MetadataResolverFactory}, which returns a {@link NullMetadataResolver} for every resolver
* provided by the factory
*
* @since 4.0
*/
public class NullMetadataResolverFactory implements MetadataResolverFactory {
private final NullMetadataResolver metadataResolver;
private final NullQueryMetadataResolver queryOutputMetadataResolver;
public NullMetadataResolverFactory() {
this.metadataResolver = new NullMetadataResolver();
this.queryOutputMetadataResolver = new NullQueryMetadataResolver();
}
/**
* @return a {@link NullMetadataResolver} implementation of {@link TypeKeysResolver}
*/
@Override
public TypeKeysResolver getKeyResolver() {
return metadataResolver;
}
/**
* @return a {@link NullMetadataResolver} implementation of {@link InputTypeResolver}
*/
@Override
public <T> InputTypeResolver<T> getInputResolver(String parameterName) {
return (InputTypeResolver<T>) metadataResolver;
}
@Override
public Collection<InputTypeResolver> getInputResolvers() {
return emptyList();
}
/**
* @return a {@link NullMetadataResolver} implementation of {@link OutputTypeResolver}
*/
@Override
public <T> OutputTypeResolver<T> getOutputResolver() {
return (OutputTypeResolver<T>) metadataResolver;
}
/**
* @return a {@link NullMetadataResolver} instance implementation of {@link AttributesTypeResolver}
*/
@Override
public <T> AttributesTypeResolver<T> getOutputAttributesResolver() {
return (AttributesTypeResolver<T>) metadataResolver;
}
/**
* @return a {@link NullQueryMetadataResolver} instance.
*/
@Override
public QueryEntityResolver getQueryEntityResolver() {
return queryOutputMetadataResolver;
}
}