/*
* 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.test.metadata.extension;
import static org.mule.test.metadata.extension.MetadataConnection.CAR;
import org.mule.runtime.extension.api.annotation.metadata.MetadataKeyId;
import org.mule.runtime.extension.api.annotation.metadata.OutputResolver;
import org.mule.runtime.extension.api.annotation.metadata.TypeResolver;
import org.mule.runtime.extension.api.annotation.param.Connection;
import org.mule.runtime.extension.api.annotation.param.Content;
import org.mule.runtime.extension.api.annotation.param.Optional;
import org.mule.runtime.extension.api.annotation.param.ParameterGroup;
import org.mule.runtime.extension.api.annotation.param.Query;
import org.mule.runtime.extension.api.annotation.param.Config;
import org.mule.runtime.extension.api.runtime.operation.Result;
import org.mule.runtime.extension.api.runtime.streaming.PagingProvider;
import org.mule.tck.message.StringAttributes;
import org.mule.test.metadata.extension.model.animals.Animal;
import org.mule.test.metadata.extension.model.animals.AnimalClade;
import org.mule.test.metadata.extension.model.animals.Bear;
import org.mule.test.metadata.extension.model.attribute.AbstractOutputAttributes;
import org.mule.test.metadata.extension.model.shapes.Rectangle;
import org.mule.test.metadata.extension.model.shapes.Shape;
import org.mule.test.metadata.extension.query.MetadataExtensionEntityResolver;
import org.mule.test.metadata.extension.query.MetadataExtensionQueryTranslator;
import org.mule.test.metadata.extension.query.NativeQueryOutputResolver;
import org.mule.test.metadata.extension.resolver.TestBooleanMetadataResolver;
import org.mule.test.metadata.extension.resolver.TestEnumMetadataResolver;
import org.mule.test.metadata.extension.resolver.TestInputAndOutputResolverWithKeyResolver;
import org.mule.test.metadata.extension.resolver.TestInputAndOutputResolverWithoutKeyResolverAndKeyIdParam;
import org.mule.test.metadata.extension.resolver.TestInputResolverWithKeyResolver;
import org.mule.test.metadata.extension.resolver.TestInputResolverWithoutKeyResolver;
import org.mule.test.metadata.extension.resolver.TestMultiLevelKeyResolver;
import org.mule.test.metadata.extension.resolver.TestOutputAnyTypeResolver;
import org.mule.test.metadata.extension.resolver.TestOutputAttributesResolverWithKeyResolver;
import org.mule.test.metadata.extension.resolver.TestOutputResolverWithKeyResolver;
import org.mule.test.metadata.extension.resolver.TestOutputResolverWithoutKeyResolver;
import org.mule.test.metadata.extension.resolver.TestResolverWithCache;
import org.mule.test.metadata.extension.resolver.TestThreadContextClassLoaderResolver;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
import java.util.Map;
public class MetadataOperations {
@OutputResolver(output = TestOutputAnyTypeResolver.class)
public Object contentMetadataWithKeyId(@Config Object object, @Connection MetadataConnection connection,
@MetadataKeyId(TestInputResolverWithKeyResolver.class) String type,
@Optional @Content @TypeResolver(TestInputResolverWithKeyResolver.class) Object content) {
return null;
}
@OutputResolver(output = TestOutputResolverWithKeyResolver.class)
public Object outputMetadataWithKeyId(@Connection MetadataConnection connection,
@MetadataKeyId(TestOutputResolverWithKeyResolver.class) String type,
@Optional @Content Object content) {
return null;
}
@OutputResolver(output = TestOutputResolverWithKeyResolver.class)
public Object metadataKeyWithDefaultValue(@Connection MetadataConnection connection,
@Optional(
defaultValue = CAR) @MetadataKeyId(TestOutputResolverWithKeyResolver.class) String type,
@Optional @Content Object content) {
return type;
}
@OutputResolver(output = TestInputAndOutputResolverWithKeyResolver.class)
public Object contentAndOutputMetadataWithKeyId(@Connection MetadataConnection connection,
@MetadataKeyId(TestInputAndOutputResolverWithKeyResolver.class) String type,
@Optional @TypeResolver(TestInputAndOutputResolverWithKeyResolver.class) Object content) {
return null;
}
@OutputResolver(output = TestInputAndOutputResolverWithKeyResolver.class)
public Object outputAndMultipleInputWithKeyId(@Connection MetadataConnection connection,
@MetadataKeyId(TestInputAndOutputResolverWithKeyResolver.class) String type,
@Optional @TypeResolver(TestInputAndOutputResolverWithKeyResolver.class) Object firstPerson,
@Optional @TypeResolver(TestInputAndOutputResolverWithKeyResolver.class) Object otherPerson) {
return null;
}
@OutputResolver(output = TestInputAndOutputResolverWithKeyResolver.class)
public Object outputOnlyWithoutContentParam(@Connection MetadataConnection connection,
@MetadataKeyId(TestInputAndOutputResolverWithKeyResolver.class) String type) {
return type;
}
public boolean booleanMetadataKey(@Connection MetadataConnection connection, @MetadataKeyId boolean type,
@Optional @TypeResolver(TestBooleanMetadataResolver.class) Object content) {
return type;
}
public AnimalClade enumMetadataKey(@Connection MetadataConnection connection, @MetadataKeyId AnimalClade type,
@Optional @TypeResolver(TestEnumMetadataResolver.class) Object content) {
return type;
}
@OutputResolver(output = TestInputAndOutputResolverWithKeyResolver.class)
public void contentOnlyIgnoresOutput(@Connection MetadataConnection connection,
@MetadataKeyId(TestInputAndOutputResolverWithKeyResolver.class) String type,
@Optional @TypeResolver(TestInputAndOutputResolverWithKeyResolver.class) Object content) {}
@OutputResolver(output = TestOutputAnyTypeResolver.class)
public Object contentMetadataWithoutKeyId(@Connection MetadataConnection connection,
@Optional @TypeResolver(TestInputAndOutputResolverWithoutKeyResolverAndKeyIdParam.class) Object content) {
return null;
}
@OutputResolver(output = TestInputAndOutputResolverWithoutKeyResolverAndKeyIdParam.class)
public Object outputMetadataWithoutKeyId(@Connection MetadataConnection connection, @Optional @Content Object content) {
return null;
}
@OutputResolver(output = TestInputAndOutputResolverWithoutKeyResolverAndKeyIdParam.class)
public Object contentAndOutputMetadataWithoutKeyId(@Connection MetadataConnection connection,
@Optional @Content @TypeResolver(TestInputAndOutputResolverWithoutKeyResolverAndKeyIdParam.class) Object content) {
return null;
}
public void contentMetadataWithoutKeysWithKeyId(@Connection MetadataConnection connection, @MetadataKeyId String type,
@Optional @TypeResolver(TestInputResolverWithoutKeyResolver.class) Object content) {}
@OutputResolver(output = TestOutputResolverWithoutKeyResolver.class)
public Object outputMetadataWithoutKeysWithKeyId(@Connection MetadataConnection connection, @MetadataKeyId String type) {
return null;
}
@OutputResolver(output = TestResolverWithCache.class)
public Object contentAndOutputCacheResolver(@Connection MetadataConnection connection, @MetadataKeyId String type,
@Optional @TypeResolver(TestResolverWithCache.class) Object content) {
return null;
}
@OutputResolver(output = TestOutputAnyTypeResolver.class)
public Object contentOnlyCacheResolver(@Connection MetadataConnection connection, @MetadataKeyId String type,
@Optional @TypeResolver(TestResolverWithCache.class) Object content) {
return null;
}
@OutputResolver(output = TestResolverWithCache.class)
public Object outputAndMetadataKeyCacheResolver(@Connection MetadataConnection connection,
@MetadataKeyId(TestResolverWithCache.class) String type) {
return null;
}
public LocationKey simpleMultiLevelKeyResolver(@Connection MetadataConnection connection,
@ParameterGroup(
name = "key") @MetadataKeyId(TestMultiLevelKeyResolver.class) LocationKey locationKey,
@Optional @TypeResolver(TestMultiLevelKeyResolver.class) Object content) {
return locationKey;
}
@OutputResolver(output = TestOutputAnyTypeResolver.class)
public Result messageAttributesVoidTypeMetadata() {
return null;
}
@OutputResolver(output = TestOutputResolverWithoutKeyResolver.class)
public Result<Object, StringAttributes> messageAttributesPersonTypeMetadata(@MetadataKeyId String type) {
return null;
}
public void resolverContentWithContextClassLoader(
@Optional @TypeResolver(TestThreadContextClassLoaderResolver.class) Object content,
@MetadataKeyId(TestThreadContextClassLoaderResolver.class) String type) {}
@OutputResolver(output = TestThreadContextClassLoaderResolver.class)
public Object resolverOutputWithContextClassLoader(@MetadataKeyId String type) {
return null;
}
@OutputResolver(output = TestOutputAttributesResolverWithKeyResolver.class,
attributes = TestOutputAttributesResolverWithKeyResolver.class)
public Result<Object, AbstractOutputAttributes> outputAttributesWithDynamicMetadata(
@MetadataKeyId(TestOutputAttributesResolverWithKeyResolver.class) String type) {
return null;
}
public List<Result<String, StringAttributes>> listOfMessages() {
return null;
}
@OutputResolver(output = TestOutputResolverWithoutKeyResolver.class)
public List<Result> dynamicListOfMessages(@MetadataKeyId String type) {
return null;
}
public boolean typeWithDeclaredSubtypesMetadata(Shape plainShape, Rectangle rectangleSubtype, Animal animal) {
return false;
}
public void contentParameterShouldNotGenerateMapChildElement(
@Content @TypeResolver(TestInputResolverWithoutKeyResolver.class) Map<String, Object> mapContent) {}
public void contentParameterShouldNotGenerateListChildElement(
@TypeResolver(TestInputResolverWithoutKeyResolver.class) List<String> contents) {}
public void contentParameterShouldNotGeneratePojoChildElement(
@TypeResolver(TestInputResolverWithoutKeyResolver.class) Bear animalContent) {}
@Query(translator = MetadataExtensionQueryTranslator.class,
entityResolver = MetadataExtensionEntityResolver.class,
nativeOutputResolver = NativeQueryOutputResolver.class)
public String doQuery(@MetadataKeyId String query) {
return query;
}
public PagingProvider<MetadataConnection, Animal> pagedOperationMetadata(Animal animal) {
return new PagingProvider<MetadataConnection, Animal>() {
@Override
public List<Animal> getPage(MetadataConnection connection) {
return Collections.singletonList(animal);
}
@Override
public java.util.Optional<Integer> getTotalResults(MetadataConnection connection) {
return java.util.Optional.of(1);
}
@Override
public void close() throws IOException {}
};
}
public Result<Shape, AbstractOutputAttributes> outputAttributesWithDeclaredSubtypesMetadata() {
return null;
}
}