/** * Mule Development Kit * Copyright 2010-2011 (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.mule.devkit.apt; import org.mule.devkit.generation.Generator; import org.mule.devkit.generation.adapter.CapabilitiesAdapterGenerator; import org.mule.devkit.generation.adapter.ConnectionManagerGenerator; import org.mule.devkit.generation.adapter.HttpCallbackAdapterGenerator; import org.mule.devkit.generation.adapter.InjectAdapterGenerator; import org.mule.devkit.generation.adapter.LifecycleAdapterFactoryGenerator; import org.mule.devkit.generation.adapter.LifecycleAdapterGenerator; import org.mule.devkit.generation.adapter.OAuth1AdapterGenerator; import org.mule.devkit.generation.adapter.OAuth2AdapterGenerator; import org.mule.devkit.generation.adapter.PoolAdapterGenerator; import org.mule.devkit.generation.adapter.RestAdapterGenerator; import org.mule.devkit.generation.callback.DefaultHttpCallbackGenerator; import org.mule.devkit.generation.mule.MessageProcessorGenerator; import org.mule.devkit.generation.mule.MessageSourceGenerator; import org.mule.devkit.generation.mule.NestedProcessorChainGenerator; import org.mule.devkit.generation.mule.NestedProcessorStringGenerator; import org.mule.devkit.generation.mule.RegistryBootstrapGenerator; import org.mule.devkit.generation.mule.expression.ExpressionEnricherGenerator; import org.mule.devkit.generation.mule.expression.ExpressionEvaluatorGenerator; import org.mule.devkit.generation.mule.oauth.AuthorizeBeanDefinitionParserGenerator; import org.mule.devkit.generation.mule.oauth.AuthorizeMessageProcessorGenerator; import org.mule.devkit.generation.mule.oauth.DefaultRestoreAccessTokenCallbackFactoryGenerator; import org.mule.devkit.generation.mule.oauth.DefaultRestoreAccessTokenCallbackGenerator; import org.mule.devkit.generation.mule.oauth.DefaultSaveAccessTokenCallbackFactoryGenerator; import org.mule.devkit.generation.mule.oauth.DefaultSaveAccessTokenCallbackGenerator; import org.mule.devkit.generation.mule.studio.MuleStudioPluginGenerator; import org.mule.devkit.generation.mule.transfomer.EnumTransformerGenerator; import org.mule.devkit.generation.mule.transfomer.JaxbTransformerGenerator; import org.mule.devkit.generation.mule.transfomer.StringToDateTransformerGenerator; import org.mule.devkit.generation.mule.transfomer.TransformerGenerator; import org.mule.devkit.generation.spring.BeanDefinitionParserGenerator; import org.mule.devkit.generation.spring.NamespaceHandlerGenerator; import org.mule.devkit.generation.spring.SchemaGenerator; import org.mule.devkit.validation.BasicValidator; import org.mule.devkit.validation.ConnectorValidator; import org.mule.devkit.validation.InjectValidator; import org.mule.devkit.validation.JavaDocValidator; import org.mule.devkit.validation.OAuthValidator; import org.mule.devkit.validation.ProcessorValidator; import org.mule.devkit.validation.RestValidator; import org.mule.devkit.validation.SourceValidator; import org.mule.devkit.validation.StudioValidator; import org.mule.devkit.validation.TransformerValidator; import org.mule.devkit.validation.Validator; import javax.annotation.processing.SupportedAnnotationTypes; import javax.annotation.processing.SupportedSourceVersion; import javax.lang.model.SourceVersion; import java.util.ArrayList; import java.util.Collections; import java.util.List; @SupportedAnnotationTypes(value = {"org.mule.api.annotations.Connector", "org.mule.api.annotations.ExpressionLanguage", "org.mule.api.annotations.Module"}) @SupportedSourceVersion(SourceVersion.RELEASE_6) public class DevKitAnnotationProcessor extends AbstractAnnotationProcessor { private List<Validator> validators; private List<Generator> generators; public DevKitAnnotationProcessor() { generators = new ArrayList<Generator>(); generators.add(new StringToDateTransformerGenerator()); generators.add(new DefaultHttpCallbackGenerator()); generators.add(new CapabilitiesAdapterGenerator()); generators.add(new LifecycleAdapterGenerator()); generators.add(new InjectAdapterGenerator()); generators.add(new RestAdapterGenerator()); generators.add(new HttpCallbackAdapterGenerator()); generators.add(new OAuth1AdapterGenerator()); generators.add(new OAuth2AdapterGenerator()); generators.add(new LifecycleAdapterFactoryGenerator()); generators.add(new ConnectionManagerGenerator()); // this should be the last on the chain of adapters generators.add(new PoolAdapterGenerator()); generators.add(new JaxbTransformerGenerator()); generators.add(new TransformerGenerator()); generators.add(new EnumTransformerGenerator()); generators.add(new NestedProcessorChainGenerator()); generators.add(new NestedProcessorStringGenerator()); generators.add(new DefaultSaveAccessTokenCallbackGenerator()); generators.add(new DefaultRestoreAccessTokenCallbackGenerator()); generators.add(new DefaultRestoreAccessTokenCallbackFactoryGenerator()); generators.add(new DefaultSaveAccessTokenCallbackFactoryGenerator()); generators.add(new BeanDefinitionParserGenerator()); generators.add(new MessageSourceGenerator()); generators.add(new MessageProcessorGenerator()); generators.add(new AuthorizeMessageProcessorGenerator()); generators.add(new AuthorizeBeanDefinitionParserGenerator()); generators.add(new NamespaceHandlerGenerator()); generators.add(new ExpressionEvaluatorGenerator()); generators.add(new ExpressionEnricherGenerator()); generators.add(new RegistryBootstrapGenerator()); generators.add(new MuleStudioPluginGenerator()); generators.add(new SchemaGenerator()); validators = new ArrayList<Validator>(); validators.add(new JavaDocValidator()); validators.add(new StudioValidator()); validators.add(new BasicValidator()); validators.add(new OAuthValidator()); validators.add(new ProcessorValidator()); validators.add(new ConnectorValidator()); validators.add(new SourceValidator()); validators.add(new TransformerValidator()); validators.add(new InjectValidator()); validators.add(new RestValidator()); } public DevKitAnnotationProcessor(List<Validator> validators, List<Generator> generators) { this.validators = new ArrayList<Validator>(validators); this.generators = new ArrayList<Generator>(generators); } @Override public List<Validator> getValidators() { return Collections.unmodifiableList(validators); } @Override public List<Generator> getGenerators() { return Collections.unmodifiableList(generators); } }