You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by gn...@apache.org on 2019/01/11 22:09:16 UTC

[camel] 11/13: Leverage @Component, @Dataformat and @Language annotations

This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git

commit b5621f80f6b9ea6e6728e9c3dbdaf515cdcc65ea
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Fri Jan 11 10:58:18 2019 +0100

    Leverage @Component, @Dataformat and @Language annotations
---
 .../apache/camel/component/bean/BeanComponent.java |   1 +
 .../camel/component/beanclass/ClassComponent.java  |   1 +
 .../camel/component/browse/BrowseComponent.java    |   1 +
 .../component/controlbus/ControlBusComponent.java  |   1 +
 .../component/dataformat/DataFormatComponent.java  |   2 +
 .../camel/component/dataset/DataSetComponent.java  |   1 +
 .../camel/component/direct/DirectComponent.java    |   2 +
 .../component/directvm/DirectVmComponent.java      |   1 +
 .../apache/camel/component/file/FileComponent.java |   4 +
 .../camel/component/file/FileProcessStrategy.java  |  19 ++
 .../component/language/LanguageComponent.java      |   1 +
 .../apache/camel/component/log/LogComponent.java   |   1 +
 .../apache/camel/component/mock/MockComponent.java |   1 +
 .../component/properties/PropertiesComponent.java  |   2 +
 .../apache/camel/component/ref/RefComponent.java   |   1 +
 .../camel/component/rest/RestApiComponent.java     |   1 +
 .../apache/camel/component/rest/RestComponent.java |   1 +
 .../apache/camel/component/saga/SagaComponent.java |   1 +
 .../component/scheduler/SchedulerComponent.java    |   1 +
 .../apache/camel/component/seda/SedaComponent.java |   1 +
 .../apache/camel/component/stub/StubComponent.java |   1 +
 .../apache/camel/component/test/TestComponent.java |   1 +
 .../camel/component/timer/TimerComponent.java      |   1 +
 .../component/validator/ValidatorComponent.java    |   1 +
 .../org/apache/camel/component/vm/VmComponent.java |   1 +
 .../apache/camel/component/xslt/XsltComponent.java |   2 +
 .../apache/camel/component/xslt/XsltHelper.java    |   4 +-
 .../java/org/apache/camel/impl/GzipDataFormat.java |   2 +
 .../apache/camel/impl/SerializationDataFormat.java |   2 +
 .../org/apache/camel/impl/StringDataFormat.java    |   2 +
 .../java/org/apache/camel/impl/ZipDataFormat.java  |   2 +
 .../converter/AnnotationTypeConverterLoader.java   |   4 +-
 .../apache/camel/language/bean/BeanLanguage.java   |   1 +
 .../camel/language/constant/ConstantLanguage.java  |   1 +
 .../camel/language/header/HeaderLanguage.java      |   1 +
 .../property/ExchangePropertyLanguage.java         |   1 +
 .../org/apache/camel/language/ref/RefLanguage.java |   1 +
 .../apache/camel/language/simple/FileLanguage.java |   3 +
 .../camel/language/simple/SimpleLanguage.java      |   2 +
 .../camel/language/tokenizer/TokenizeLanguage.java |   1 +
 .../language/tokenizer/XMLTokenizeLanguage.java    |   2 +
 .../apache/camel/language/xpath/XPathLanguage.java |   2 +
 .../services/org/apache/camel/component/bean       |  18 --
 .../services/org/apache/camel/component/browse     |  18 --
 .../services/org/apache/camel/component/class      |  18 --
 .../services/org/apache/camel/component/controlbus |  18 --
 .../services/org/apache/camel/component/dataformat |  18 --
 .../services/org/apache/camel/component/dataset    |  18 --
 .../services/org/apache/camel/component/direct     |  18 --
 .../services/org/apache/camel/component/direct-vm  |  18 --
 .../services/org/apache/camel/component/file       |  19 --
 .../services/org/apache/camel/component/language   |  18 --
 .../services/org/apache/camel/component/log        |  18 --
 .../services/org/apache/camel/component/mock       |  18 --
 .../services/org/apache/camel/component/properties |  18 --
 .../services/org/apache/camel/component/ref        |  18 --
 .../services/org/apache/camel/component/rest       |  18 --
 .../services/org/apache/camel/component/rest-api   |  18 --
 .../services/org/apache/camel/component/saga       |  18 --
 .../services/org/apache/camel/component/scheduler  |  18 --
 .../services/org/apache/camel/component/seda       |  18 --
 .../services/org/apache/camel/component/stub       |  18 --
 .../services/org/apache/camel/component/test       |  18 --
 .../services/org/apache/camel/component/timer      |  18 --
 .../services/org/apache/camel/component/validator  |  18 --
 .../services/org/apache/camel/component/vm         |  18 --
 .../services/org/apache/camel/component/xslt       |  18 --
 .../services/org/apache/camel/dataformat/gzip      |  18 --
 .../org/apache/camel/dataformat/serialization      |  18 --
 .../services/org/apache/camel/dataformat/string    |  18 --
 .../services/org/apache/camel/dataformat/zip       |  18 --
 .../services/org/apache/camel/language/bean        |  18 --
 .../services/org/apache/camel/language/constant    |  18 --
 .../org/apache/camel/language/exchangeProperty     |  18 --
 .../services/org/apache/camel/language/file        |  18 --
 .../services/org/apache/camel/language/header      |  18 --
 .../services/org/apache/camel/language/ref         |  18 --
 .../services/org/apache/camel/language/simple      |  18 --
 .../services/org/apache/camel/language/tokenize    |  18 --
 .../services/org/apache/camel/language/xpath       |  18 --
 .../services/org/apache/camel/language/xtokenize   |  18 --
 .../apache/camel/component/ahc/ws/WsComponent.java |   2 +
 .../services/org/apache/camel/component/ahc-ws     |  18 --
 .../services/org/apache/camel/component/ahc-wss    |  18 --
 .../apache/camel/component/ahc/AhcComponent.java   |   2 +
 .../services/org/apache/camel/component/ahc        |  18 --
 .../apache/camel/component/amqp/AMQPComponent.java |   2 +
 .../services/org/apache/camel/component/amqp       |  18 --
 .../apache/camel/component/apns/ApnsComponent.java |   2 +
 .../services/org/apache/camel/component/apns       |  18 --
 .../apache/camel/component/as2/AS2Component.java   |   2 +
 .../services/org/apache/camel/component/as2        |  18 --
 .../camel/dataformat/asn1/ASN1DataFormat.java      |   2 +
 .../services/org/apache/camel/dataformat/asn1      |  18 --
 .../component/asterisk/AsteriskComponent.java      |   2 +
 .../services/org/apache/camel/component/asterisk   |  17 --
 .../camel/component/atmos/AtmosComponent.java      |   2 +
 .../services/org/apache/camel/component/atmos      |  18 --
 .../atmosphere/websocket/WebsocketComponent.java   |   2 +
 .../apache/camel/component/atmosphere-websocket    |  17 --
 .../apache/camel/component/atom/AtomComponent.java |   2 +
 .../services/org/apache/camel/component/atom       |  18 --
 .../atomix/client/map/AtomixMapComponent.java      |   2 +
 .../client/messaging/AtomixMessagingComponent.java |   2 +
 .../client/multimap/AtomixMultiMapComponent.java   |   2 +
 .../atomix/client/queue/AtomixQueueComponent.java  |   2 +
 .../atomix/client/set/AtomixSetComponent.java      |   2 +
 .../atomix/client/value/AtomixValueComponent.java  |   2 +
 .../services/org/apache/camel/component/atomix-map |  18 --
 .../org/apache/camel/component/atomix-messaging    |  18 --
 .../org/apache/camel/component/atomix-multimap     |  18 --
 .../org/apache/camel/component/atomix-queue        |  18 --
 .../services/org/apache/camel/component/atomix-set |  18 --
 .../org/apache/camel/component/atomix-value        |  18 --
 .../apache/camel/component/avro/AvroComponent.java |   2 +
 .../camel/dataformat/avro/AvroDataFormat.java      |   2 +
 .../services/org/apache/camel/component/avro       |  17 --
 .../services/org/apache/camel/dataformat/avro      |  18 --
 .../apache/camel/component/aws/cw/CwComponent.java |   2 +
 .../camel/component/aws/ddb/DdbComponent.java      |   3 +
 .../aws/ddbstream/DdbStreamComponent.java          |   3 +
 .../camel/component/aws/ec2/EC2Component.java      |   3 +
 .../camel/component/aws/eks/EKSComponent.java      |   2 +
 .../aws/firehose/KinesisFirehoseComponent.java     |   3 +
 .../camel/component/aws/iam/IAMComponent.java      |   3 +
 .../component/aws/kinesis/KinesisComponent.java    |   3 +
 .../camel/component/aws/kms/KMSComponent.java      |   3 +
 .../component/aws/lambda/LambdaComponent.java      |   3 +
 .../apache/camel/component/aws/mq/MQComponent.java |   3 +
 .../apache/camel/component/aws/s3/S3Component.java |   3 +
 .../camel/component/aws/sdb/SdbComponent.java      |   2 +
 .../camel/component/aws/ses/SesComponent.java      |   3 +
 .../camel/component/aws/sns/SnsComponent.java      |   3 +
 .../camel/component/aws/sqs/SqsComponent.java      |   3 +
 .../camel/component/aws/swf/SWFComponent.java      |   3 +
 .../services/org/apache/camel/component/aws-cw     |  18 --
 .../services/org/apache/camel/component/aws-ddb    |  18 --
 .../org/apache/camel/component/aws-ddbstream       |  18 --
 .../services/org/apache/camel/component/aws-ec2    |  18 --
 .../services/org/apache/camel/component/aws-eks    |  18 --
 .../services/org/apache/camel/component/aws-iam    |  18 --
 .../org/apache/camel/component/aws-kinesis         |  18 --
 .../apache/camel/component/aws-kinesis-firehose    |  18 --
 .../services/org/apache/camel/component/aws-kms    |  18 --
 .../services/org/apache/camel/component/aws-lambda |  18 --
 .../services/org/apache/camel/component/aws-mq     |  18 --
 .../services/org/apache/camel/component/aws-s3     |  18 --
 .../services/org/apache/camel/component/aws-sdb    |  18 --
 .../services/org/apache/camel/component/aws-ses    |  18 --
 .../services/org/apache/camel/component/aws-sns    |  18 --
 .../services/org/apache/camel/component/aws-sqs    |  18 --
 .../services/org/apache/camel/component/aws-swf    |  18 --
 .../component/azure/blob/BlobServiceComponent.java |   2 +
 .../azure/queue/QueueServiceComponent.java         |   2 +
 .../services/org/apache/camel/component/azure-blob |  18 --
 .../org/apache/camel/component/azure-queue         |  18 --
 .../dataformat/barcode/BarcodeDataFormat.java      |   2 +
 .../services/org/apache/camel/dataformat/barcode   |  18 --
 .../camel/dataformat/base64/Base64DataFormat.java  |   2 +
 .../services/org/apache/camel/dataformat/base64    |  18 --
 .../bean/validator/BeanValidatorComponent.java     |   2 +
 .../org/apache/camel/component/bean-validator      |  18 --
 .../camel/dataformat/beanio/BeanIODataFormat.java  |   2 +
 .../services/org/apache/camel/dataformat/beanio    |  18 --
 .../component/beanstalk/BeanstalkComponent.java    |   2 +
 .../services/org/apache/camel/component/beanstalk  |  18 --
 .../dataformat/bindy/csv/BindyCsvDataFormat.java   |   2 +
 .../bindy/fixed/BindyFixedLengthDataFormat.java    |   2 +
 .../bindy/kvp/BindyKeyValuePairDataFormat.java     |   2 +
 .../services/org/apache/camel/dataformat/bindy-csv |  18 --
 .../org/apache/camel/dataformat/bindy-fixed        |  18 --
 .../services/org/apache/camel/dataformat/bindy-kvp |  18 --
 .../camel/component/bonita/BonitaComponent.java    |   2 +
 .../services/org/apache/camel/component/bonita     |  17 --
 .../camel/component/boon/BoonDataFormat.java       |   2 +
 .../services/org/apache/camel/dataformat/boon      |  18 --
 .../apache/camel/component/box/BoxComponent.java   |   2 +
 .../services/org/apache/camel/component/box        |  18 --
 .../component/braintree/BraintreeComponent.java    |   2 +
 .../services/org/apache/camel/component/braintree  |  18 --
 .../caffeine/cache/CaffeineCacheComponent.java     |   2 +
 .../caffeine/load/CaffeineLoadCacheComponent.java  |   2 +
 .../org/apache/camel/component/caffeine-cache      |  18 --
 .../org/apache/camel/component/caffeine-loadcache  |  18 --
 .../component/cassandra/CassandraComponent.java    |   2 +
 .../services/org/apache/camel/component/cql        |  18 --
 .../chronicle/engine/ChronicleEngineComponent.java |   2 +
 .../org/apache/camel/component/chronicle-engine    |  18 --
 .../camel/component/chunk/ChunkComponent.java      |   2 +
 .../services/org/apache/camel/component/chunk      |  18 --
 .../org/apache/camel/component/cm/CMComponent.java |   2 +
 .../services/org/apache/camel/component/cm-sms     |  18 --
 .../src/main/resources/log4j2.properties           |  28 ---
 .../apache/camel/component/cmis/CMISComponent.java |   2 +
 .../services/org/apache/camel/component/cmis       |  18 --
 .../java/org/apache/camel/coap/CoAPComponent.java  |   2 +
 .../camel-coap/src/main/resources/LICENSE.txt      | 203 ---------------------
 .../services/org/apache/camel/component/coap       |  18 --
 .../camel-coap/src/main/resources/NOTICE.txt       |  11 --
 .../camel/component/cometd/CometdComponent.java    |   2 +
 .../services/org/apache/camel/component/cometd     |  17 --
 .../services/org/apache/camel/component/cometds    |  17 --
 .../camel/component/consul/ConsulComponent.java    |   2 +
 .../services/org/apache/camel/component/consul     |  18 --
 .../camel/component/corda/CordaComponent.java      |   2 +
 .../services/org/apache/camel/component/corda      |  18 --
 .../component/couchbase/CouchbaseComponent.java    |   2 +
 .../services/org/apache/camel/component/couchbase  |  19 --
 .../camel/component/couchdb/CouchDbComponent.java  |   2 +
 .../services/org/apache/camel/component/couchdb    |  18 --
 .../component/crypto/cms/CryptoCmsComponent.java   |   2 +
 .../services/org/apache/camel/component/crypto-cms |  18 --
 .../crypto/DigitalSignatureComponent.java          |   2 +
 .../camel/converter/crypto/CryptoDataFormat.java   |   2 +
 .../converter/crypto/PGPKeyAccessDataFormat.java   |   2 +
 .../services/org/apache/camel/component/crypto     |  18 --
 .../services/org/apache/camel/dataformat/crypto    |  17 --
 .../services/org/apache/camel/dataformat/pgp       |  17 --
 .../apache/camel/dataformat/csv/CsvDataFormat.java |   2 +
 .../services/org/apache/camel/dataformat/csv       |  18 --
 .../apache/camel/component/cxf/CxfComponent.java   |   2 +
 .../camel/component/cxf/jaxrs/CxfRsComponent.java  |   2 +
 .../services/org/apache/camel/component/cxf        |  18 --
 .../services/org/apache/camel/component/cxfbean    |  18 --
 .../services/org/apache/camel/component/cxfrs      |  18 --
 .../digitalocean/DigitalOceanComponent.java        |   2 +
 .../org/apache/camel/component/digitalocean        |  18 --
 .../src/main/resources/log4j2.properties           |  22 ---
 .../component/disruptor/DisruptorComponent.java    |   2 +
 .../disruptor/vm/DisruptorVmComponent.java         |   2 +
 .../services/org/apache/camel/component/disruptor  |  18 --
 .../org/apache/camel/component/disruptor-vm        |  18 --
 .../apache/camel/component/dns/DnsComponent.java   |   2 +
 .../services/org/apache/camel/component/dns        |  19 --
 .../camel/component/docker/DockerComponent.java    |   2 +
 .../services/org/apache/camel/component/docker     |  17 --
 .../camel/component/dozer/DozerComponent.java      |   2 +
 .../services/org/apache/camel/component/dozer      |  17 --
 .../camel/component/drill/DrillComponent.java      |   2 +
 .../services/org/apache/camel/component/drill      |  17 --
 .../camel/component/dropbox/DropboxComponent.java  |   2 +
 .../services/org/apache/camel/component/dropbox    |  18 --
 .../camel/component/ehcache/EhcacheComponent.java  |   2 +
 .../services/org/apache/camel/component/ehcache    |  18 --
 .../apache/camel/component/ejb/EjbComponent.java   |   2 +
 .../services/org/apache/camel/component/ejb        |  18 --
 .../elasticsearch/ElasticsearchComponent.java      |   2 +
 .../org/apache/camel/component/elasticsearch-rest  |  18 --
 .../camel/component/elsql/ElsqlComponent.java      |   2 +
 .../services/org/apache/camel/component/elsql      |  18 --
 .../apache/camel/component/etcd/EtcdComponent.java |   2 +
 .../services/org/apache/camel/component/etcd       |  18 --
 .../component/eventadmin/EventAdminComponent.java  |   2 +
 .../services/org/apache/camel/component/eventadmin |  18 --
 .../apache/camel/component/exec/ExecComponent.java |   2 +
 .../services/org/apache/camel/component/exec       |  18 --
 .../component/facebook/FacebookComponent.java      |   2 +
 .../services/org/apache/camel/component/facebook   |  18 --
 .../component/fastjson/FastjsonDataFormat.java     |   2 +
 .../org/apache/camel/dataformat/json-fastjson      |  18 --
 .../apache/camel/component/fhir/FhirComponent.java |   2 +
 .../camel/component/fhir/FhirJsonDataFormat.java   |   2 +
 .../camel/component/fhir/FhirXmlDataFormat.java    |   2 +
 .../services/org/apache/camel/component/fhir       |  18 --
 .../services/org/apache/camel/dataformat/fhirJson  |  18 --
 .../services/org/apache/camel/dataformat/fhirXml   |  18 --
 .../component/flatpack/FlatpackComponent.java      |   2 +
 .../dataformat/flatpack/FlatpackDataFormat.java    |   2 +
 .../services/org/apache/camel/component/flatpack   |  18 --
 .../services/org/apache/camel/dataformat/flatpack  |  18 --
 .../camel/component/flink/FlinkComponent.java      |   2 +
 .../services/org/apache/camel/component/flink      |  18 --
 .../apache/camel/component/fop/FopComponent.java   |   2 +
 .../services/org/apache/camel/component/fop        |  18 --
 .../component/freemarker/FreemarkerComponent.java  |   2 +
 .../services/org/apache/camel/component/freemarker |  18 --
 .../camel/component/file/remote/FtpComponent.java  |   5 +
 .../camel/component/file/remote/FtpsComponent.java |   5 +
 .../camel/component/file/remote/SftpComponent.java |   5 +
 .../services/org/apache/camel/component/ftp        |  19 --
 .../services/org/apache/camel/component/ftps       |  19 --
 .../services/org/apache/camel/component/sftp       |  19 --
 .../camel/component/ganglia/GangliaComponent.java  |   2 +
 .../services/org/apache/camel/component/ganglia    |  17 --
 .../component/geocoder/GeoCoderComponent.java      |   2 +
 .../services/org/apache/camel/component/geocoder   |  18 --
 .../apache/camel/component/git/GitComponent.java   |   2 +
 .../services/org/apache/camel/component/git        |  18 --
 .../camel/component/github/GitHubComponent.java    |   2 +
 .../services/org/apache/camel/component/github     |  18 --
 .../google/bigquery/GoogleBigQueryComponent.java   |   2 +
 .../bigquery/sql/GoogleBigQuerySQLComponent.java   |   3 +-
 .../org/apache/camel/component/google-bigquery     |  18 --
 .../org/apache/camel/component/google-bigquery-sql |  18 --
 .../google/calendar/GoogleCalendarComponent.java   |   2 +
 .../stream/GoogleCalendarStreamComponent.java      |   2 +
 .../org/apache/camel/component/google-calendar     |  17 --
 .../apache/camel/component/google-calendar-stream  |  17 --
 .../google/drive/GoogleDriveComponent.java         |   2 +
 .../org/apache/camel/component/google-drive        |  18 --
 .../component/google/mail/GoogleMailComponent.java |   2 +
 .../mail/stream/GoogleMailStreamComponent.java     |   2 +
 .../org/apache/camel/component/google-mail         |  17 --
 .../org/apache/camel/component/google-mail-stream  |  17 --
 .../google/pubsub/GooglePubsubComponent.java       |   2 +
 .../org/apache/camel/component/google-pubsub       |  18 --
 .../google/sheets/GoogleSheetsComponent.java       |   2 +
 .../sheets/stream/GoogleSheetsStreamComponent.java |   2 +
 .../org/apache/camel/component/google-sheets       |  17 --
 .../apache/camel/component/google-sheets-stream    |  17 --
 .../apache/camel/component/gora/GoraComponent.java |   2 +
 .../services/org/apache/camel/component/gora       |  18 --
 .../camel/component/grape/GrapeComponent.java      |   2 +
 .../services/org/apache/camel/component/grape      |  17 --
 .../camel/language/groovy/GroovyLanguage.java      |   2 +
 .../services/org/apache/camel/language/groovy      |  18 --
 .../apache/camel/component/grpc/GrpcComponent.java |   2 +
 .../services/org/apache/camel/component/grpc       |  18 --
 .../camel/component/gson/GsonDataFormat.java       |   2 +
 .../services/org/apache/camel/dataformat/json-gson |  18 --
 .../guava/eventbus/GuavaEventBusComponent.java     |   2 +
 .../org/apache/camel/component/guava-eventbus      |  18 --
 .../component/hazelcast/HazelcastComponent.java    | 160 ----------------
 .../HazelcastAtomicnumberComponent.java            |   2 +
 .../instance/HazelcastInstanceComponent.java       |   2 +
 .../hazelcast/list/HazelcastListComponent.java     |   2 +
 .../hazelcast/map/HazelcastMapComponent.java       |   2 +
 .../multimap/HazelcastMultimapComponent.java       |   2 +
 .../hazelcast/queue/HazelcastQueueComponent.java   |   2 +
 .../HazelcastReplicatedmapComponent.java           |   2 +
 .../ringbuffer/HazelcastRingbufferComponent.java   |   2 +
 .../hazelcast/seda/HazelcastSedaComponent.java     |   2 +
 .../hazelcast/set/HazelcastSetComponent.java       |   2 +
 .../hazelcast/topic/HazelcastTopicComponent.java   |   2 +
 .../services/org/apache/camel/component/hazelcast  |  18 --
 .../apache/camel/component/hazelcast-atomicvalue   |  18 --
 .../org/apache/camel/component/hazelcast-instance  |  18 --
 .../org/apache/camel/component/hazelcast-list      |  18 --
 .../org/apache/camel/component/hazelcast-map       |  18 --
 .../org/apache/camel/component/hazelcast-multimap  |  18 --
 .../org/apache/camel/component/hazelcast-queue     |  18 --
 .../apache/camel/component/hazelcast-replicatedmap |  18 --
 .../apache/camel/component/hazelcast-ringbuffer    |  18 --
 .../org/apache/camel/component/hazelcast-seda      |  18 --
 .../org/apache/camel/component/hazelcast-set       |  18 --
 .../org/apache/camel/component/hazelcast-topic     |  18 --
 .../camel/component/hbase/HBaseComponent.java      |   2 +
 .../services/org/apache/camel/component/hbase      |  18 --
 .../camel/component/hdfs2/HdfsComponent.java       |   2 +
 .../services/org/apache/camel/component/hdfs       |  18 --
 .../services/org/apache/camel/component/hdfs2      |  18 --
 .../camel/component/hipchat/HipchatComponent.java  |   2 +
 .../services/org/apache/camel/component/hipchat    |  18 --
 .../apache/camel/component/hl7/HL7DataFormat.java  |   2 +
 .../apache/camel/component/hl7/TerserLanguage.java |   1 +
 .../services/org/apache/camel/dataformat/hl7       |  18 --
 .../services/org/apache/camel/language/terser      |  18 --
 .../camel/component/http4/HttpComponent.java       |   2 +
 .../services/org/apache/camel/component/http       |  18 --
 .../services/org/apache/camel/component/http4      |  18 --
 .../services/org/apache/camel/component/https      |  18 --
 .../services/org/apache/camel/component/https4     |  18 --
 .../camel/component/ical/ICalDataFormat.java       |   2 +
 .../services/org/apache/camel/dataformat/ical      |  18 --
 .../component/iec60870/client/ClientComponent.java |   2 +
 .../component/iec60870/server/ServerComponent.java |   2 +
 .../org/apache/camel/component/iec60870-client     |  18 --
 .../org/apache/camel/component/iec60870-server     |  18 --
 .../camel/component/ignite/IgniteComponent.java    | 138 --------------
 .../ignite/cache/IgniteCacheComponent.java         |   2 +
 .../ignite/compute/IgniteComputeComponent.java     |   2 +
 .../ignite/events/IgniteEventsComponent.java       |   2 +
 .../ignite/idgen/IgniteIdGenComponent.java         |   2 +
 .../ignite/messaging/IgniteMessagingComponent.java |   2 +
 .../ignite/queue/IgniteQueueComponent.java         |   2 +
 .../component/ignite/set/IgniteSetComponent.java   |   2 +
 .../services/org/apache/camel/component/ignite     |  18 --
 .../org/apache/camel/component/ignite-cache        |  18 --
 .../org/apache/camel/component/ignite-compute      |  18 --
 .../org/apache/camel/component/ignite-events       |  18 --
 .../org/apache/camel/component/ignite-idgen        |  18 --
 .../org/apache/camel/component/ignite-messaging    |  18 --
 .../org/apache/camel/component/ignite-queue        |  18 --
 .../services/org/apache/camel/component/ignite-set |  18 --
 .../component/infinispan/InfinispanComponent.java  |   2 +
 .../services/org/apache/camel/component/infinispan |  17 --
 .../component/influxdb/InfluxDbComponent.java      |   2 +
 .../services/org/apache/camel/component/influxdb   |  17 --
 .../apache/camel/component/iota/IOTAComponent.java |   2 +
 .../services/org/apache/camel/component/iota       |  18 --
 .../apache/camel/component/ipfs/IPFSComponent.java |   3 +-
 .../services/org/apache/camel/component/ipfs       |  18 --
 .../apache/camel/component/irc/IrcComponent.java   |   3 +
 .../services/org/apache/camel/component/irc        |  17 --
 .../services/org/apache/camel/component/ircs       |  17 --
 .../camel/component/ironmq/IronMQComponent.java    |   2 +
 .../services/org/apache/camel/component/ironmq     |  18 --
 .../camel/component/jackson/JacksonDataFormat.java |   2 +
 .../org/apache/camel/dataformat/json-jackson       |  18 --
 .../component/jacksonxml/JacksonXMLDataFormat.java |   2 +
 .../org/apache/camel/dataformat/jacksonxml         |  18 --
 .../camel/converter/jaxb/JaxbDataFormat.java       |   2 +
 .../services/org/apache/camel/dataformat/jaxb      |  18 --
 .../apache/camel/component/jbpm/JBPMComponent.java |   2 +
 .../services/org/apache/camel/component/jbpm       |  18 --
 .../camel/component/jcache/JCacheComponent.java    |   2 +
 .../services/org/apache/camel/component/jcache     |  18 --
 .../camel/component/jclouds/JcloudsComponent.java  |   2 +
 .../services/org/apache/camel/component/jclouds    |  18 --
 .../apache/camel/component/jcr/JcrComponent.java   |   2 +
 .../services/org/apache/camel/component/jcr        |  18 --
 .../apache/camel/component/jdbc/JdbcComponent.java |   2 +
 .../services/org/apache/camel/component/jdbc       |  18 --
 .../component/jetty9/JettyHttpComponent9.java      |   2 +
 .../services/org/apache/camel/component/jetty      |  17 --
 .../jgroups/raft/JGroupsRaftComponent.java         |   2 +
 .../org/apache/camel/component/jgroups-raft        |  18 --
 .../camel/component/jgroups/JGroupsComponent.java  |   2 +
 .../src/main/resources/META-INF}/LICENSE.txt       |   0
 .../src/main/resources/META-INF}/NOTICE.txt        |   0
 .../services/org/apache/camel/component/jgroups    |  18 --
 .../camel/dataformat/jibx/JibxDataFormat.java      |   2 +
 .../services/org/apache/camel/dataformat/jibx      |  18 --
 .../component/validator/jing/JingComponent.java    |   2 +
 .../services/org/apache/camel/component/jing       |  18 --
 .../apache/camel/component/jms/JmsComponent.java   |   2 +
 .../services/org/apache/camel/component/jms        |  18 --
 .../apache/camel/component/jmx/JMXComponent.java   |   2 +
 .../services/org/apache/camel/component/jmx        |  17 --
 .../camel/component/johnzon/JohnzonDataFormat.java |   2 +
 .../org/apache/camel/dataformat/json-johnzon       |  18 --
 .../apache/camel/component/jolt/JoltComponent.java |   2 +
 .../services/org/apache/camel/component/jolt       |  18 --
 .../apache/camel/component/jpa/JpaComponent.java   |   2 +
 .../services/org/apache/camel/component/jpa        |  18 --
 .../apache/camel/component/scp/ScpComponent.java   |   6 +
 .../services/org/apache/camel/component/scp        |  19 --
 .../jsonvalidator/JsonValidatorComponent.java      |   2 +
 .../org/apache/camel/component/json-validator      |  18 --
 .../apache/camel/jsonpath/JsonPathLanguage.java    |   2 +
 .../services/org/apache/camel/language/jsonpath    |  18 --
 .../camel/component/jt400/Jt400Component.java      |   2 +
 .../services/org/apache/camel/component/jt400      |  18 --
 .../camel/component/kafka/KafkaComponent.java      |   2 +
 .../services/org/apache/camel/component/kafka      |  18 --
 .../config_maps/KubernetesConfigMapsComponent.java |   2 +
 .../KubernetesDeploymentsComponent.java            |   2 +
 .../kubernetes/hpa/KubernetesHPAComponent.java     |   2 +
 .../kubernetes/job/KubernetesJobComponent.java     |   2 +
 .../namespaces/KubernetesNamespacesComponent.java  |   2 +
 .../kubernetes/nodes/KubernetesNodesComponent.java |   2 +
 .../KubernetesPersistentVolumesComponent.java      |   2 +
 ...KubernetesPersistentVolumesClaimsComponent.java |   2 +
 .../kubernetes/pods/KubernetesPodsComponent.java   |   2 +
 .../KubernetesReplicationControllersComponent.java |   2 +
 .../KubernetesResourcesQuotaComponent.java         |   2 +
 .../secrets/KubernetesSecretsComponent.java        |   2 +
 .../KubernetesServiceAccountsComponent.java        |   2 +
 .../services/KubernetesServicesComponent.java      |   2 +
 .../OpenshiftBuildConfigsComponent.java            |   2 +
 .../openshift/builds/OpenshiftBuildsComponent.java |   2 +
 .../apache/camel/component/kubernetes-config-maps  |  18 --
 .../apache/camel/component/kubernetes-deployments  |  18 --
 .../org/apache/camel/component/kubernetes-hpa      |  18 --
 .../org/apache/camel/component/kubernetes-job      |  18 --
 .../apache/camel/component/kubernetes-namespaces   |  18 --
 .../org/apache/camel/component/kubernetes-nodes    |  18 --
 .../camel/component/kubernetes-persistent-volumes  |  18 --
 .../component/kubernetes-persistent-volumes-claims |  18 --
 .../org/apache/camel/component/kubernetes-pods     |  18 --
 .../component/kubernetes-replication-controllers   |  18 --
 .../camel/component/kubernetes-resources-quota     |  18 --
 .../org/apache/camel/component/kubernetes-secrets  |  18 --
 .../camel/component/kubernetes-service-accounts    |  18 --
 .../org/apache/camel/component/kubernetes-services |  18 --
 .../apache/camel/component/openshift-build-configs |  18 --
 .../org/apache/camel/component/openshift-builds    |  18 --
 .../apache/camel/component/ldap/LdapComponent.java |   2 +
 .../services/org/apache/camel/component/ldap       |  18 --
 .../apache/camel/component/ldif/LdifComponent.java |   2 +
 .../services/org/apache/camel/component/ldif       |  18 --
 .../component/linkedin/LinkedInComponent.java      |   2 +
 .../services/org/apache/camel/component/linkedin   |  18 --
 .../camel/component/lucene/LuceneComponent.java    |   2 +
 .../services/org/apache/camel/component/lucene     |  17 --
 .../component/lumberjack/LumberjackComponent.java  |   2 +
 .../src/main/resources/META-INF}/LICENSE.txt       |   0
 .../src/main/resources/META-INF}/NOTICE.txt        |   0
 .../services/org/apache/camel/component/lumberjack |  17 --
 .../apache/camel/dataformat/lzf/LZFDataFormat.java |   2 +
 .../services/org/apache/camel/dataformat/lzf       |  18 --
 .../apache/camel/component/mail/MailComponent.java |   2 +
 .../mime/multipart/MimeMultipartDataFormat.java    |   2 +
 .../services/org/apache/camel/component/imap       |  18 --
 .../services/org/apache/camel/component/imaps      |  18 --
 .../services/org/apache/camel/component/pop3       |  18 --
 .../services/org/apache/camel/component/pop3s      |  18 --
 .../services/org/apache/camel/component/smtp       |  18 --
 .../services/org/apache/camel/component/smtps      |  18 --
 .../org/apache/camel/dataformat/mime-multipart     |  18 --
 .../camel/component/master/MasterComponent.java    |   2 +
 .../services/org/apache/camel/component/master     |  17 --
 .../camel/component/metrics/MetricsComponent.java  |   2 +
 .../services/org/apache/camel/component/metrics    |  18 --
 .../component/micrometer/MicrometerComponent.java  |   2 +
 .../services/org/apache/camel/component/micrometer |  18 --
 .../component/milo/client/MiloClientComponent.java |   2 +
 .../component/milo/server/MiloServerComponent.java |   2 +
 .../org/apache/camel/component/milo-client         |  18 --
 .../org/apache/camel/component/milo-server         |  18 --
 .../camel/component/mina2/Mina2Component.java      |   2 +
 .../services/org/apache/camel/component/mina       |  18 --
 .../services/org/apache/camel/component/mina2      |  18 --
 .../apache/camel/component/mllp/MllpComponent.java |   2 +
 .../services/org/apache/camel/component/mllp       |  18 --
 .../component/mongodb/gridfs/GridFsComponent.java  |   2 +
 .../org/apache/camel/component/mongodb-gridfs      |  18 --
 .../camel/component/mongodb3/MongoDbComponent.java |   2 +
 .../services/org/apache/camel/component/mongodb    |  18 --
 .../services/org/apache/camel/component/mongodb3   |  18 --
 .../apache/camel/component/mqtt/MQTTComponent.java |   3 +
 .../services/org/apache/camel/component/mqtt       |  18 --
 .../component/validator/msv/MsvComponent.java      |   2 +
 .../services/org/apache/camel/component/msv        |  18 --
 .../component/mustache/MustacheComponent.java      |   2 +
 .../services/org/apache/camel/component/mustache   |  18 --
 .../apache/camel/component/mvel/MvelComponent.java |   2 +
 .../apache/camel/language/mvel/MvelLanguage.java   |   5 +-
 .../services/org/apache/camel/component/mvel       |  18 --
 .../services/org/apache/camel/language/mvel        |  18 --
 .../component/mybatis/MyBatisBeanComponent.java    |   2 +
 .../camel/component/mybatis/MyBatisComponent.java  |   2 +
 .../services/org/apache/camel/component/mybatis    |  18 --
 .../org/apache/camel/component/mybatis-bean        |  18 --
 .../camel/component/nagios/NagiosComponent.java    |   2 +
 .../services/org/apache/camel/component/nagios     |  17 --
 .../apache/camel/component/nats/NatsComponent.java |   2 +
 .../services/org/apache/camel/component/nats       |  18 --
 .../component/netty4/http/NettyHttpComponent.java  |   2 +
 .../services/org/apache/camel/component/netty-http |  17 --
 .../org/apache/camel/component/netty4-http         |  17 --
 .../camel/component/netty4/NettyComponent.java     |   2 +
 .../services/org/apache/camel/component/netty      |  17 --
 .../services/org/apache/camel/component/netty4     |  17 --
 .../apache/camel/component/nsq/NsqComponent.java   |   2 +
 .../services/org/apache/camel/component/nsq        |  18 --
 .../apache/camel/language/ognl/OgnlLanguage.java   |   5 +-
 .../services/org/apache/camel/language/ognl        |  18 --
 .../camel/component/olingo2/Olingo2Component.java  |   2 +
 .../services/org/apache/camel/component/olingo2    |  18 --
 .../camel/component/olingo4/Olingo4Component.java  |   2 +
 .../services/org/apache/camel/component/olingo4    |  18 --
 .../openstack/cinder/CinderComponent.java          |   2 +
 .../openstack/glance/GlanceComponent.java          |   2 +
 .../openstack/keystone/KeystoneComponent.java      |   2 +
 .../openstack/neutron/NeutronComponent.java        |   2 +
 .../component/openstack/nova/NovaComponent.java    |   2 +
 .../component/openstack/swift/SwiftComponent.java  |   2 +
 .../org/apache/camel/component/openstack-cinder    |  18 --
 .../org/apache/camel/component/openstack-glance    |  18 --
 .../org/apache/camel/component/openstack-keystone  |  18 --
 .../org/apache/camel/component/openstack-neutron   |  18 --
 .../org/apache/camel/component/openstack-nova      |  18 --
 .../org/apache/camel/component/openstack-swift     |  18 --
 .../optaplanner/OptaPlannerComponent.java          |   2 +
 .../org/apache/camel/component/optaplanner         |  18 --
 .../apache/camel/component/paho/PahoComponent.java |   2 +
 .../services/org/apache/camel/component/paho       |  18 --
 .../component/paxlogging/PaxLoggingComponent.java  |   2 +
 .../services/org/apache/camel/component/paxlogging |  18 --
 .../apache/camel/component/pdf/PdfComponent.java   |   2 +
 .../services/org/apache/camel/component/pdf        |  17 --
 .../camel/component/pgevent/PgEventComponent.java  |   2 +
 .../services/org/apache/camel/component/pgevent    |  18 --
 .../camel/component/printer/PrinterComponent.java  |   2 +
 .../services/org/apache/camel/component/lpr        |  17 --
 .../dataformat/protobuf/ProtobufDataFormat.java    |   2 +
 .../services/org/apache/camel/dataformat/protobuf  |  18 --
 .../camel/component/pubnub/PubNubComponent.java    |   2 +
 .../services/org/apache/camel/component/pubnub     |  18 --
 .../camel/component/quartz2/QuartzComponent.java   |   2 +
 .../services/org/apache/camel/component/quartz     |  18 --
 .../services/org/apache/camel/component/quartz2    |  18 --
 .../component/quickfixj/QuickfixjComponent.java    |   2 +
 .../services/org/apache/camel/component/quickfix   |  18 --
 .../component/rabbitmq/RabbitMQComponent.java      |   2 +
 .../services/org/apache/camel/component/rabbitmq   |  17 --
 .../reactive/streams/ReactiveStreamsComponent.java |   2 +
 .../org/apache/camel/component/reactive-streams    |  18 --
 .../rest/swagger/RestSwaggerComponent.java         |   2 +
 .../org/apache/camel/component/rest-swagger        |  17 --
 .../camel/component/restlet/RestletComponent.java  |   1 +
 .../services/org/apache/camel/component/restlet    |  18 --
 .../apache/camel/component/rmi/RmiComponent.java   |   2 +
 .../services/org/apache/camel/component/rmi        |  18 --
 .../apache/camel/component/rss/RssComponent.java   |   2 +
 .../apache/camel/dataformat/rss/RssDataFormat.java |   2 +
 .../services/org/apache/camel/component/rss        |  18 --
 .../services/org/apache/camel/dataformat/rss       |  18 --
 .../component/salesforce/SalesforceComponent.java  |   2 +
 .../services/org/apache/camel/component/salesforce |  18 --
 .../sap/netweaver/NetWeaverComponent.java          |   2 +
 .../org/apache/camel/component/sap-netweaver       |  18 --
 .../camel/component/xquery/XQueryComponent.java    |   2 +
 .../camel/language/xquery/XQueryLanguage.java      |   2 +
 .../services/org/apache/camel/component/xquery     |  18 --
 .../services/org/apache/camel/language/xquery      |  18 --
 .../component/schematron/SchematronComponent.java  |   2 +
 .../services/org/apache/camel/component/schematron |  18 --
 .../camel/builder/script/JavaScriptLanguage.java   |   1 +
 .../services/org/apache/camel/language/javaScript  |  18 --
 .../camel/component/service/ServiceComponent.java  |   2 +
 .../services/org/apache/camel/component/service    |  17 --
 .../component/servicenow/ServiceNowComponent.java  |   2 +
 .../services/org/apache/camel/component/servicenow |  18 --
 .../camel/component/servlet/ServletComponent.java  |   2 +
 .../services/org/apache/camel/component/servlet    |  18 --
 .../apache/camel/component/sip/SipComponent.java   |   2 +
 .../services/org/apache/camel/component/sip        |  18 --
 .../services/org/apache/camel/component/sips       |  18 --
 .../apache/camel/component/sjms/SjmsComponent.java |   2 +
 .../component/sjms/batch/SjmsBatchComponent.java   |   2 +
 .../services/org/apache/camel/component/sjms       |  18 --
 .../services/org/apache/camel/component/sjms-batch |  18 --
 .../camel/component/sjms2/Sjms2Component.java      |   2 +
 .../services/org/apache/camel/component/sjms2      |  18 --
 .../camel/component/slack/SlackComponent.java      |   2 +
 .../services/org/apache/camel/component/slack      |  18 --
 .../apache/camel/component/smpp/SmppComponent.java |   2 +
 .../services/org/apache/camel/component/smpp       |  18 --
 .../services/org/apache/camel/component/smpps      |  18 --
 .../component/snakeyaml/SnakeYAMLDataFormat.java   |   2 +
 .../org/apache/camel/dataformat/yaml-snakeyaml     |  18 --
 .../apache/camel/component/snmp/SnmpComponent.java |   2 +
 .../services/org/apache/camel/component/snmp       |  17 --
 .../camel/dataformat/soap/SoapJaxbDataFormat.java  |   2 +
 .../services/org/apache/camel/dataformat/soapjaxb  |  18 --
 .../apache/camel/component/solr/SolrComponent.java |   2 +
 .../services/org/apache/camel/component/solr       |  18 --
 .../services/org/apache/camel/component/solrCloud  |  18 --
 .../services/org/apache/camel/component/solrs      |  18 --
 .../camel/component/sparkrest/SparkComponent.java  |   2 +
 .../services/org/apache/camel/component/spark-rest |  17 --
 .../camel/component/spark/SparkComponent.java      |   2 +
 .../services/org/apache/camel/component/spark      |  18 --
 .../camel/component/splunk/SplunkComponent.java    |   2 +
 .../services/org/apache/camel/component/splunk     |  17 --
 .../spring/batch/SpringBatchComponent.java         |   2 +
 .../org/apache/camel/component/spring-batch        |  18 --
 .../integration/SpringIntegrationComponent.java    |   2 +
 .../org/apache/camel/component/spring-integration  |  18 --
 .../component/springldap/SpringLdapComponent.java  |   2 +
 .../org/apache/camel/component/spring-ldap         |  18 --
 .../camel/component/redis/RedisComponent.java      |   2 +
 .../org/apache/camel/component/spring-redis        |  18 --
 .../spring/ws/SpringWebserviceComponent.java       |   2 +
 .../services/org/apache/camel/component/spring-ws  |  18 --
 .../camel/component/event/EventComponent.java      |   2 +
 .../apache/camel/language/spel/SpelLanguage.java   |   5 +-
 .../org/apache/camel/component/spring-event        |  18 --
 .../services/org/apache/camel/language/spel        |  18 --
 .../apache/camel/component/sql/SqlComponent.java   |   2 +
 .../component/sql/stored/SqlStoredComponent.java   |   2 +
 .../services/org/apache/camel/component/sql        |  18 --
 .../services/org/apache/camel/component/sql-stored |  18 --
 .../apache/camel/component/ssh/SshComponent.java   |   2 +
 .../services/org/apache/camel/component/ssh        |  18 --
 .../apache/camel/component/stax/StAXComponent.java |   2 +
 .../services/org/apache/camel/component/stax       |  17 --
 .../camel/component/stomp/StompComponent.java      |   2 +
 .../services/org/apache/camel/component/stomp      |  18 --
 .../camel/component/stream/StreamComponent.java    |   2 +
 .../services/org/apache/camel/component/stream     |  18 --
 .../stringtemplate/StringTemplateComponent.java    |   2 +
 .../org/apache/camel/component/string-template     |  18 --
 .../camel/component/syslog/SyslogDataFormat.java   |   2 +
 .../services/org/apache/camel/dataformat/syslog    |  18 --
 .../dataformat/tagsoup/TidyMarkupDataFormat.java   |   2 +
 .../org/apache/camel/dataformat/tidyMarkup         |  18 --
 .../dataformat/tarfile/TarFileDataFormat.java      |   2 +
 .../services/org/apache/camel/dataformat/tarfile   |  18 --
 .../component/telegram/TelegramComponent.java      |   3 +
 .../services/org/apache/camel/component/telegram   |  17 --
 .../camel/component/thrift/ThriftComponent.java    |   2 +
 .../camel/dataformat/thrift/ThriftDataFormat.java  |   2 +
 .../services/org/apache/camel/component/thrift     |  18 --
 .../services/org/apache/camel/dataformat/thrift    |  18 --
 .../apache/camel/component/tika/TikaComponent.java |   2 +
 .../services/org/apache/camel/component/tika       |  17 --
 .../camel/component/twilio/TwilioComponent.java    |   2 +
 .../services/org/apache/camel/component/twilio     |  18 --
 .../TwitterDirectMessageComponent.java             |   2 +
 .../twitter/search/TwitterSearchComponent.java     |   2 +
 .../streaming/TwitterStreamingComponent.java       |   2 +
 .../twitter/timeline/TwitterTimelineComponent.java |   2 +
 .../apache/camel/component/twitter-directmessage   |  18 --
 .../org/apache/camel/component/twitter-search      |  18 --
 .../org/apache/camel/component/twitter-streaming   |  18 --
 .../org/apache/camel/component/twitter-timeline    |  18 --
 .../component/undertow/UndertowComponent.java      |   2 +
 .../services/org/apache/camel/component/undertow   |  18 --
 .../univocity/UniVocityCsvDataFormat.java          |   2 +
 .../univocity/UniVocityFixedWidthDataFormat.java   |   2 +
 .../univocity/UniVocityTsvDataFormat.java          |   2 +
 .../org/apache/camel/dataformat/univocity-csv      |  18 --
 .../org/apache/camel/dataformat/univocity-fixed    |  18 --
 .../org/apache/camel/dataformat/univocity-tsv      |  18 --
 .../component/velocity/VelocityComponent.java      |   2 +
 .../services/org/apache/camel/component/velocity   |  18 --
 .../camel/component/vertx/VertxComponent.java      |   2 +
 .../services/org/apache/camel/component/vertx      |  17 --
 .../camel/component/weather/WeatherComponent.java  |   2 +
 .../services/org/apache/camel/component/weather    |  18 --
 .../camel/component/web3j/Web3jComponent.java      |   2 +
 .../services/org/apache/camel/component/web3j      |  18 --
 .../websocket/jsr356/JSR356WebSocketComponent.java |   2 +
 .../org/apache/camel/component/websocket-jsr356    |  17 --
 .../component/websocket/WebsocketComponent.java    |   2 +
 .../services/org/apache/camel/component/websocket  |  17 --
 .../component/wordpress/WordpressComponent.java    |   2 +
 .../services/org/apache/camel/component/wordpress  |  18 --
 .../camel/component/xchange/XChangeComponent.java  |   2 +
 .../services/org/apache/camel/component/xchange    |  18 --
 .../xmlsecurity/XmlSignatureComponent.java         |   2 +
 .../xmlsecurity/XMLSecurityDataFormat.java         |   4 +-
 .../org/apache/camel/component/xmlsecurity         |  18 --
 .../services/org/apache/camel/dataformat/secureXML |  18 --
 .../apache/camel/component/xmpp/XmppComponent.java |   2 +
 .../services/org/apache/camel/component/xmpp       |  18 --
 .../camel/dataformat/xstream/JsonDataFormat.java   |   2 +
 .../dataformat/xstream/XStreamDataFormat.java      |   2 +
 .../org/apache/camel/dataformat/json-xstream       |  18 --
 .../services/org/apache/camel/dataformat/xstream   |  18 --
 .../camel/component/yammer/YammerComponent.java    |   2 +
 .../services/org/apache/camel/component/yammer     |  17 --
 .../camel/component/zendesk/ZendeskComponent.java  |   2 +
 .../services/org/apache/camel/component/zendesk    |  18 --
 .../dataformat/zipfile/ZipFileDataFormat.java      |   2 +
 .../services/org/apache/camel/dataformat/zipfile   |  18 --
 .../component/zookeepermaster/MasterComponent.java |   2 +
 .../org/apache/camel/component/zookeeper-master    |  17 --
 .../component/zookeeper/ZooKeeperComponent.java    |   2 +
 .../services/org/apache/camel/component/zookeeper  |  17 --
 .../org/apache/camel/tools/apt/SpiProcessor.java   | 117 ++++++++++++
 .../services/javax.annotation.processing.Processor |   1 +
 .../apache/camel/spi/annotations/Component.java    |  21 ++-
 .../apache/camel/spi/annotations/Dataformat.java   |  21 ++-
 .../org/apache/camel/spi/annotations/Factory.java  |  21 ++-
 .../org/apache/camel/spi/annotations/Language.java |  21 ++-
 749 files changed, 903 insertions(+), 7354 deletions(-)

diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/BeanComponent.java b/camel-core/src/main/java/org/apache/camel/component/bean/BeanComponent.java
index 2766af8..416952c 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/BeanComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/BeanComponent.java
@@ -28,6 +28,7 @@ import org.apache.camel.support.LRUCacheFactory;
 /**
  * The <a href="http://camel.apache.org/bean.html">Bean Component</a> is for invoking Java beans from Camel.
  */
+@org.apache.camel.spi.annotations.Component("bean")
 public class BeanComponent extends DefaultComponent {
 
     // use an internal soft cache for BeanInfo as they are costly to introspect
diff --git a/camel-core/src/main/java/org/apache/camel/component/beanclass/ClassComponent.java b/camel-core/src/main/java/org/apache/camel/component/beanclass/ClassComponent.java
index ed3b2f0..2bdd39c 100644
--- a/camel-core/src/main/java/org/apache/camel/component/beanclass/ClassComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/beanclass/ClassComponent.java
@@ -30,6 +30,7 @@ import org.apache.camel.support.IntrospectionSupport;
  * <p/>
  * This component is an extension to the {@link org.apache.camel.component.bean.BeanComponent}.
  */
+@org.apache.camel.spi.annotations.Component("class")
 public class ClassComponent extends BeanComponent {
 
     public ClassComponent() {
diff --git a/camel-core/src/main/java/org/apache/camel/component/browse/BrowseComponent.java b/camel-core/src/main/java/org/apache/camel/component/browse/BrowseComponent.java
index 1fe4ab2..bff785c 100644
--- a/camel-core/src/main/java/org/apache/camel/component/browse/BrowseComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/browse/BrowseComponent.java
@@ -25,6 +25,7 @@ import org.apache.camel.support.DefaultComponent;
  * The <a href="http://camel.apache.org/browse.html">Browse Component</a> provides a simple
  * <a href="http://camel.apache.org/browsableendpoint.html">BrowsableEndpoint</a> for testing visualization or debugging.
  */
+@org.apache.camel.spi.annotations.Component("browse")
 public class BrowseComponent extends DefaultComponent {
 
     public BrowseComponent() {
diff --git a/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusComponent.java b/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusComponent.java
index 71f4f0a..539adbd 100644
--- a/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusComponent.java
@@ -25,6 +25,7 @@ import org.apache.camel.support.DefaultComponent;
 /**
  * The <a href="http://camel.apache.org/controlbus.html">Control Bus component</a> allows sending messages to a control-bus endpoint to control the lifecycle of routes.
  */
+@org.apache.camel.spi.annotations.Component("controlbus")
 public class ControlBusComponent extends DefaultComponent {
 
     private ExecutorService executorService;
diff --git a/camel-core/src/main/java/org/apache/camel/component/dataformat/DataFormatComponent.java b/camel-core/src/main/java/org/apache/camel/component/dataformat/DataFormatComponent.java
index 797fa6f..22f054c 100644
--- a/camel-core/src/main/java/org/apache/camel/component/dataformat/DataFormatComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/dataformat/DataFormatComponent.java
@@ -20,6 +20,7 @@ import java.util.Map;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.spi.DataFormat;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.support.EndpointHelper;
 import org.apache.camel.util.StringHelper;
@@ -27,6 +28,7 @@ import org.apache.camel.util.StringHelper;
 /**
  * The <a href="http://camel.apache.org/dataformat-component.html">Data Format Component</a> enables using <a href="https://camel.apache.org/data-format.html">Data Format</a> as a component.
  */
+@Component("dataformat")
 public class DataFormatComponent extends DefaultComponent {
 
     public DataFormatComponent() {
diff --git a/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetComponent.java b/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetComponent.java
index 457ae5d..07d314f 100644
--- a/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetComponent.java
@@ -25,6 +25,7 @@ import org.apache.camel.support.DefaultComponent;
 /**
  * Component for <a href="http://camel.apache.org/dataset.html">DataSet</a>.
  */
+@org.apache.camel.spi.annotations.Component("dataset")
 public class DataSetComponent extends DefaultComponent {
 
     public DataSetComponent() {
diff --git a/camel-core/src/main/java/org/apache/camel/component/direct/DirectComponent.java b/camel-core/src/main/java/org/apache/camel/component/direct/DirectComponent.java
index 34eb0e1..feca46f 100644
--- a/camel-core/src/main/java/org/apache/camel/component/direct/DirectComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/direct/DirectComponent.java
@@ -21,12 +21,14 @@ import java.util.Map;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.support.ServiceHelper;
 
 /**
  * The <a href="http://camel.apache.org/direct.html">Direct Component</a> manages {@link DirectEndpoint} and holds the list of named direct endpoints.
  */
+@Component("direct")
 public class DirectComponent extends DefaultComponent {
 
     // must keep a map of consumers on the component to ensure endpoints can lookup old consumers
diff --git a/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmComponent.java b/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmComponent.java
index a4beb8a..50eb0ad 100644
--- a/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/directvm/DirectVmComponent.java
@@ -31,6 +31,7 @@ import org.apache.camel.support.DefaultComponent;
 /**
  * The <a href="http://camel.apache.org/direct-vm.html">Direct VM Component</a> manages {@link DirectVmEndpoint} and holds the list of named direct-vm endpoints.
  */
+@org.apache.camel.spi.annotations.Component("direct-vm")
 public class DirectVmComponent extends DefaultComponent {
 
     private static final AtomicInteger START_COUNTER = new AtomicInteger();
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/FileComponent.java b/camel-core/src/main/java/org/apache/camel/component/file/FileComponent.java
index 1bd1b6a..3df7bd1 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/FileComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/FileComponent.java
@@ -20,12 +20,16 @@ import java.io.File;
 import java.util.Map;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.component.file.strategy.FileProcessStrategyFactory;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.util.FileUtil;
 import org.apache.camel.util.StringHelper;
 
 /**
  *  * The <a href="http://camel.apache.org/file.html">File Component</a> provides access to file systems.
  */
+@Component("file")
+@FileProcessStrategy(FileProcessStrategyFactory.class)
 public class FileComponent extends GenericFileComponent<File> {
     /**
      * GenericFile property on Camel Exchanges.
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/FileProcessStrategy.java b/camel-core/src/main/java/org/apache/camel/component/file/FileProcessStrategy.java
new file mode 100644
index 0000000..48a5682
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/component/file/FileProcessStrategy.java
@@ -0,0 +1,19 @@
+package org.apache.camel.component.file;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.apache.camel.spi.annotations.Factory;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Target({ElementType.TYPE })
+@Factory("strategy.factory")
+public @interface FileProcessStrategy {
+
+    Class value();
+
+}
diff --git a/camel-core/src/main/java/org/apache/camel/component/language/LanguageComponent.java b/camel-core/src/main/java/org/apache/camel/component/language/LanguageComponent.java
index 69abdae..8e27f98 100644
--- a/camel-core/src/main/java/org/apache/camel/component/language/LanguageComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/language/LanguageComponent.java
@@ -30,6 +30,7 @@ import org.apache.camel.util.StringHelper;
  * The <a href="http://camel.apache.org/language-component.html">Language component</a> enables sending
  * {@link org.apache.camel.Exchange}s to a given language in order to have a script executed.
  */
+@org.apache.camel.spi.annotations.Component("language")
 public class LanguageComponent extends DefaultComponent {
 
     public static final String RESOURCE = "resource:";
diff --git a/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java b/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
index 1164e37..21fce8d 100644
--- a/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
@@ -32,6 +32,7 @@ import org.slf4j.Logger;
  * The <a href="http://camel.apache.org/log.html">Log Component</a>
  * is for logging message exchanges via the underlying logging mechanism.
  */
+@org.apache.camel.spi.annotations.Component("log")
 public class LogComponent extends DefaultComponent {
 
     @Metadata(label = "advanced")
diff --git a/camel-core/src/main/java/org/apache/camel/component/mock/MockComponent.java b/camel-core/src/main/java/org/apache/camel/component/mock/MockComponent.java
index aa146e1..6711113 100644
--- a/camel-core/src/main/java/org/apache/camel/component/mock/MockComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/mock/MockComponent.java
@@ -28,6 +28,7 @@ import org.apache.camel.support.DefaultComponent;
 /**
  * The <a href="http://camel.apache.org/mock.html">Mock Component</a> provides mock endpoints for testing.
  */
+@org.apache.camel.spi.annotations.Component("mock")
 public class MockComponent extends DefaultComponent {
 
     public MockComponent() {
diff --git a/camel-core/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java b/camel-core/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java
index 64c3398..d4f32ac 100644
--- a/camel-core/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java
@@ -29,6 +29,7 @@ import java.util.stream.Collectors;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.support.LRUCacheFactory;
 import org.apache.camel.util.FilePathResolver;
@@ -37,6 +38,7 @@ import org.apache.camel.util.ObjectHelper;
 /**
  * The <a href="http://camel.apache.org/properties">Properties Component</a> allows you to use property placeholders when defining Endpoint URIs
  */
+@Component("properties")
 public class PropertiesComponent extends DefaultComponent {
 
     /**
diff --git a/camel-core/src/main/java/org/apache/camel/component/ref/RefComponent.java b/camel-core/src/main/java/org/apache/camel/component/ref/RefComponent.java
index 92b605f..c4f3013 100644
--- a/camel-core/src/main/java/org/apache/camel/component/ref/RefComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/ref/RefComponent.java
@@ -26,6 +26,7 @@ import org.apache.camel.support.DefaultComponent;
  * <p/>
  * This component uses the <tt>ref:</tt> notation instead of the mostly common <tt>uri:</tt> notation. 
  */
+@org.apache.camel.spi.annotations.Component("ref")
 public class RefComponent extends DefaultComponent {
 
     public RefComponent() {
diff --git a/camel-core/src/main/java/org/apache/camel/component/rest/RestApiComponent.java b/camel-core/src/main/java/org/apache/camel/component/rest/RestApiComponent.java
index beef49e..65cd5d5 100644
--- a/camel-core/src/main/java/org/apache/camel/component/rest/RestApiComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/rest/RestApiComponent.java
@@ -24,6 +24,7 @@ import org.apache.camel.support.DefaultComponent;
 /**
  * Rest API component.
  */
+@org.apache.camel.spi.annotations.Component("rest-api")
 public class RestApiComponent extends DefaultComponent {
 
     public RestApiComponent() {
diff --git a/camel-core/src/main/java/org/apache/camel/component/rest/RestComponent.java b/camel-core/src/main/java/org/apache/camel/component/rest/RestComponent.java
index 4909959..ce7f1fb 100644
--- a/camel-core/src/main/java/org/apache/camel/component/rest/RestComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/rest/RestComponent.java
@@ -39,6 +39,7 @@ import org.apache.camel.util.URISupport;
 /**
  * Rest component.
  */
+@org.apache.camel.spi.annotations.Component("rest")
 @Metadata(label = "verifiers", enums = "parameters,connectivity")
 public class RestComponent extends DefaultComponent {
 
diff --git a/camel-core/src/main/java/org/apache/camel/component/saga/SagaComponent.java b/camel-core/src/main/java/org/apache/camel/component/saga/SagaComponent.java
index 0067ebc..ec5a538 100644
--- a/camel-core/src/main/java/org/apache/camel/component/saga/SagaComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/saga/SagaComponent.java
@@ -27,6 +27,7 @@ import org.slf4j.LoggerFactory;
 /**
  * The saga component for interacting with the saga processing framework.
  */
+@org.apache.camel.spi.annotations.Component("saga")
 public class SagaComponent extends DefaultComponent {
 
     protected final Logger log = LoggerFactory.getLogger(getClass());
diff --git a/camel-core/src/main/java/org/apache/camel/component/scheduler/SchedulerComponent.java b/camel-core/src/main/java/org/apache/camel/component/scheduler/SchedulerComponent.java
index 5504677..2bd3c12 100644
--- a/camel-core/src/main/java/org/apache/camel/component/scheduler/SchedulerComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/scheduler/SchedulerComponent.java
@@ -26,6 +26,7 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.support.DefaultComponent;
 
+@org.apache.camel.spi.annotations.Component("scheduler")
 public class SchedulerComponent extends DefaultComponent {
 
     private final Map<String, ScheduledExecutorService> executors = new HashMap<>();
diff --git a/camel-core/src/main/java/org/apache/camel/component/seda/SedaComponent.java b/camel-core/src/main/java/org/apache/camel/component/seda/SedaComponent.java
index 6fe75e6..ff1147c 100644
--- a/camel-core/src/main/java/org/apache/camel/component/seda/SedaComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/seda/SedaComponent.java
@@ -32,6 +32,7 @@ import org.slf4j.LoggerFactory;
 /**
  * The <a href="http://camel.apache.org/seda.html">SEDA Component</a> is for asynchronous SEDA exchanges on a {@link BlockingQueue} within a CamelContext
  */
+@org.apache.camel.spi.annotations.Component("seda")
 public class SedaComponent extends DefaultComponent {
     protected final Logger log = LoggerFactory.getLogger(getClass());
     protected final int maxConcurrentConsumers = SedaConstants.MAX_CONCURRENT_CONSUMERS;
diff --git a/camel-core/src/main/java/org/apache/camel/component/stub/StubComponent.java b/camel-core/src/main/java/org/apache/camel/component/stub/StubComponent.java
index 05d2d68..a251a5b 100644
--- a/camel-core/src/main/java/org/apache/camel/component/stub/StubComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/stub/StubComponent.java
@@ -30,6 +30,7 @@ import org.apache.camel.component.vm.VmComponent;
  * Allows you to easily stub out a middleware transport by prefixing the URI with "stub:" which is
  * handy for testing out routes, or isolating bits of middleware.
  */
+@org.apache.camel.spi.annotations.Component("stub")
 public class StubComponent extends VmComponent {
 
     public StubComponent() {
diff --git a/camel-core/src/main/java/org/apache/camel/component/test/TestComponent.java b/camel-core/src/main/java/org/apache/camel/component/test/TestComponent.java
index 81dcef0..bc89ee8 100644
--- a/camel-core/src/main/java/org/apache/camel/component/test/TestComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/test/TestComponent.java
@@ -29,6 +29,7 @@ import org.apache.camel.util.URISupport;
  * Component for testing by polling test messages from another endpoint on startup as the expected message bodies to
  * receive during testing.
  */
+@org.apache.camel.spi.annotations.Component("test")
 public class TestComponent extends DefaultComponent {
 
     public TestComponent() {
diff --git a/camel-core/src/main/java/org/apache/camel/component/timer/TimerComponent.java b/camel-core/src/main/java/org/apache/camel/component/timer/TimerComponent.java
index 8a70211..53657c9 100644
--- a/camel-core/src/main/java/org/apache/camel/component/timer/TimerComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/timer/TimerComponent.java
@@ -33,6 +33,7 @@ import org.apache.camel.support.DefaultComponent;
  * Represents the component that manages {@link TimerEndpoint}.  It holds the
  * list of {@link TimerConsumer} objects that are started.
  */
+@org.apache.camel.spi.annotations.Component("timer")
 public class TimerComponent extends DefaultComponent {
     private final Map<String, Timer> timers = new HashMap<>();
     private final Map<String, AtomicInteger> refCounts = new HashMap<>();
diff --git a/camel-core/src/main/java/org/apache/camel/component/validator/ValidatorComponent.java b/camel-core/src/main/java/org/apache/camel/component/validator/ValidatorComponent.java
index e226cb8..3144a13 100644
--- a/camel-core/src/main/java/org/apache/camel/component/validator/ValidatorComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/validator/ValidatorComponent.java
@@ -25,6 +25,7 @@ import org.apache.camel.support.DefaultComponent;
 /**
  * The <a href="http://camel.apache.org/validation.html">Validator Component</a> is for validating XML against a schema
  */
+@org.apache.camel.spi.annotations.Component("validator")
 public class ValidatorComponent extends DefaultComponent {
 
     @Metadata(label = "advanced", description = "To use a custom LSResourceResolver which depends on a dynamic endpoint resource URI")
diff --git a/camel-core/src/main/java/org/apache/camel/component/vm/VmComponent.java b/camel-core/src/main/java/org/apache/camel/component/vm/VmComponent.java
index dee1049..2cde188 100644
--- a/camel-core/src/main/java/org/apache/camel/component/vm/VmComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/vm/VmComponent.java
@@ -34,6 +34,7 @@ import org.apache.camel.component.seda.SedaComponent;
  *
  * i.e. to handle communicating across CamelContext instances and possibly across web application contexts, providing that camel-core.jar is on the system classpath.
  */
+@org.apache.camel.spi.annotations.Component("vm")
 public class VmComponent extends SedaComponent {
     protected static final Map<String, QueueReference> QUEUES = new HashMap<>();
     protected static final Map<String, VmEndpoint> ENDPOINTS = new HashMap<>();
diff --git a/camel-core/src/main/java/org/apache/camel/component/xslt/XsltComponent.java b/camel-core/src/main/java/org/apache/camel/component/xslt/XsltComponent.java
index 00241a3..e02d073 100644
--- a/camel-core/src/main/java/org/apache/camel/component/xslt/XsltComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/xslt/XsltComponent.java
@@ -25,6 +25,7 @@ import javax.xml.transform.URIResolver;
 import org.apache.camel.Endpoint;
 import org.apache.camel.converter.jaxp.XmlConverter;
 import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.support.EndpointHelper;
 import org.apache.camel.support.ResourceHelper;
@@ -32,6 +33,7 @@ import org.apache.camel.support.ResourceHelper;
 /**
  * The <a href="http://camel.apache.org/xslt.html">XSLT Component</a> is for performing XSLT transformations of messages
  */
+@Component("xslt")
 public class XsltComponent extends DefaultComponent {
 
     @Metadata(label = "advanced")
diff --git a/camel-core/src/main/java/org/apache/camel/component/xslt/XsltHelper.java b/camel-core/src/main/java/org/apache/camel/component/xslt/XsltHelper.java
index a4096d2..936a2d4 100644
--- a/camel-core/src/main/java/org/apache/camel/component/xslt/XsltHelper.java
+++ b/camel-core/src/main/java/org/apache/camel/component/xslt/XsltHelper.java
@@ -56,7 +56,7 @@ final class XsltHelper {
         if (saxonConfigurationProperties != null && !saxonConfigurationProperties.isEmpty()) {
             Method method = factoryClass.getMethod("getConfiguration");
             if (method != null) {
-                Object configuration = method.invoke(factory, null);
+                Object configuration = method.invoke(factory);
                 if (configuration != null) {
                     method = configuration.getClass().getMethod("setConfigurationProperty", String.class, Object.class);
                     for (Map.Entry<String, Object> entry : saxonConfigurationProperties.entrySet()) {
@@ -73,7 +73,7 @@ final class XsltHelper {
         if (saxonExtensionFunctions != null && !saxonExtensionFunctions.isEmpty()) {
             Method method = factoryClass.getMethod("getConfiguration");
             if (method != null) {
-                Object configuration = method.invoke(factory, null);
+                Object configuration = method.invoke(factory);
                 if (configuration != null) {
                     Class<?> extensionClass = camelContext.getClassResolver().resolveMandatoryClass(
                         SAXON_EXTENDED_FUNCTION_DEFINITION_CLASS_NAME, XsltComponent.class.getClassLoader()
diff --git a/camel-core/src/main/java/org/apache/camel/impl/GzipDataFormat.java b/camel-core/src/main/java/org/apache/camel/impl/GzipDataFormat.java
index 0647c36..2441442 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/GzipDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/GzipDataFormat.java
@@ -25,11 +25,13 @@ import org.apache.camel.Exchange;
 import org.apache.camel.converter.stream.OutputStreamBuilder;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataFormatName;
+import org.apache.camel.spi.annotations.Dataformat;
 import org.apache.camel.util.IOHelper;
 
 /**
  * GZip {@link org.apache.camel.spi.DataFormat} for reading/writing data using gzip.
  */
+@Dataformat("gzip")
 public class GzipDataFormat extends org.apache.camel.support.ServiceSupport implements DataFormat, DataFormatName {
 
     @Override
diff --git a/camel-core/src/main/java/org/apache/camel/impl/SerializationDataFormat.java b/camel-core/src/main/java/org/apache/camel/impl/SerializationDataFormat.java
index 11622fb..65449b3 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/SerializationDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/SerializationDataFormat.java
@@ -25,12 +25,14 @@ import java.io.OutputStream;
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataFormatName;
+import org.apache.camel.spi.annotations.Dataformat;
 import org.apache.camel.support.ExchangeHelper;
 
 /**
  * The <a href="http://camel.apache.org/data-format.html">data format</a>
  * using Java Serialization.
  */
+@Dataformat("serialization")
 public class SerializationDataFormat extends org.apache.camel.support.ServiceSupport implements DataFormat, DataFormatName {
 
     @Override
diff --git a/camel-core/src/main/java/org/apache/camel/impl/StringDataFormat.java b/camel-core/src/main/java/org/apache/camel/impl/StringDataFormat.java
index 42982e9..01019b3 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/StringDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/StringDataFormat.java
@@ -23,12 +23,14 @@ import java.io.OutputStream;
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataFormatName;
+import org.apache.camel.spi.annotations.Dataformat;
 import org.apache.camel.support.ExchangeHelper;
 
 /**
  * The text based <a href="http://camel.apache.org/data-format.html">data format</a> supporting
  * charset encoding.
  */
+@Dataformat("string")
 public class StringDataFormat extends org.apache.camel.support.ServiceSupport implements DataFormat, DataFormatName {
 
     private String charset;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ZipDataFormat.java b/camel-core/src/main/java/org/apache/camel/impl/ZipDataFormat.java
index be61e43..bb42b55 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ZipDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/ZipDataFormat.java
@@ -26,12 +26,14 @@ import org.apache.camel.Exchange;
 import org.apache.camel.converter.stream.OutputStreamBuilder;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataFormatName;
+import org.apache.camel.spi.annotations.Dataformat;
 import org.apache.camel.util.IOHelper;
 
 /**
  * "Deflate" compression data format.
  * See {@link org.apache.camel.model.dataformat.ZipFileDataFormat} for Zip file compression.
  */
+@Dataformat("zip")
 public class ZipDataFormat extends org.apache.camel.support.ServiceSupport implements DataFormat, DataFormatName {
 
     private int compressionLevel;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/AnnotationTypeConverterLoader.java b/camel-core/src/main/java/org/apache/camel/impl/converter/AnnotationTypeConverterLoader.java
index 6e16e4f..87d5f02 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/converter/AnnotationTypeConverterLoader.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/converter/AnnotationTypeConverterLoader.java
@@ -112,7 +112,9 @@ public class AnnotationTypeConverterLoader implements TypeConverterLoader {
 
         // if there is any packages to scan and load @Converter classes, then do it
         if (packageNames != null && packageNames.length > 0) {
-            LOG.trace("Found converter packages to scan: {}", packageNames);
+            if (LOG.isTraceEnabled()) {
+                LOG.trace("Found converter packages to scan: {}", String.join(", ", packageNames));
+            }
             Set<Class<?>> scannedClasses = resolver.findAnnotated(Converter.class, packageNames);
             if (scannedClasses.isEmpty()) {
                 throw new TypeConverterLoaderException("Cannot find any type converter classes from the following packages: " + Arrays.asList(packageNames));
diff --git a/camel-core/src/main/java/org/apache/camel/language/bean/BeanLanguage.java b/camel-core/src/main/java/org/apache/camel/language/bean/BeanLanguage.java
index c43b88d..609e245 100644
--- a/camel-core/src/main/java/org/apache/camel/language/bean/BeanLanguage.java
+++ b/camel-core/src/main/java/org/apache/camel/language/bean/BeanLanguage.java
@@ -37,6 +37,7 @@ import org.apache.camel.util.StringHelper;
  * As of Camel 1.5 the bean language also supports invoking a provided bean by
  * its classname or the bean itself.
  */
+@org.apache.camel.spi.annotations.Language("bean")
 public class BeanLanguage implements Language, IsSingleton {
 
     /**
diff --git a/camel-core/src/main/java/org/apache/camel/language/constant/ConstantLanguage.java b/camel-core/src/main/java/org/apache/camel/language/constant/ConstantLanguage.java
index 0d0a876..61002d9 100644
--- a/camel-core/src/main/java/org/apache/camel/language/constant/ConstantLanguage.java
+++ b/camel-core/src/main/java/org/apache/camel/language/constant/ConstantLanguage.java
@@ -26,6 +26,7 @@ import org.apache.camel.support.ExpressionToPredicateAdapter;
 /**
  * A language for constant expressions.
  */
+@org.apache.camel.spi.annotations.Language("constant")
 public class ConstantLanguage implements Language, IsSingleton {
 
     public static Expression constant(Object value) {        
diff --git a/camel-core/src/main/java/org/apache/camel/language/header/HeaderLanguage.java b/camel-core/src/main/java/org/apache/camel/language/header/HeaderLanguage.java
index 45b47dd..0073ec1 100644
--- a/camel-core/src/main/java/org/apache/camel/language/header/HeaderLanguage.java
+++ b/camel-core/src/main/java/org/apache/camel/language/header/HeaderLanguage.java
@@ -26,6 +26,7 @@ import org.apache.camel.support.ExpressionToPredicateAdapter;
 /**
  * A language for header expressions.
  */
+@org.apache.camel.spi.annotations.Language("header")
 public class HeaderLanguage implements Language, IsSingleton {
 
     public static Expression header(String headerName) {        
diff --git a/camel-core/src/main/java/org/apache/camel/language/property/ExchangePropertyLanguage.java b/camel-core/src/main/java/org/apache/camel/language/property/ExchangePropertyLanguage.java
index 36caece..a3a1bf0 100644
--- a/camel-core/src/main/java/org/apache/camel/language/property/ExchangePropertyLanguage.java
+++ b/camel-core/src/main/java/org/apache/camel/language/property/ExchangePropertyLanguage.java
@@ -26,6 +26,7 @@ import org.apache.camel.support.ExpressionToPredicateAdapter;
 /**
  * A language for exchange property expressions.
  */
+@org.apache.camel.spi.annotations.Language("exchangeProperty")
 public class ExchangePropertyLanguage implements Language, IsSingleton {
 
     public static Expression exchangeProperty(String propertyName) {
diff --git a/camel-core/src/main/java/org/apache/camel/language/ref/RefLanguage.java b/camel-core/src/main/java/org/apache/camel/language/ref/RefLanguage.java
index 315cb6f..2f6e57f 100644
--- a/camel-core/src/main/java/org/apache/camel/language/ref/RefLanguage.java
+++ b/camel-core/src/main/java/org/apache/camel/language/ref/RefLanguage.java
@@ -29,6 +29,7 @@ import org.apache.camel.support.PredicateToExpressionAdapter;
 /**
  * A language for referred expressions or predicates.
  */
+@org.apache.camel.spi.annotations.Language("ref")
 public class RefLanguage implements Language, IsSingleton {
 
     public static Expression ref(Object value) {
diff --git a/camel-core/src/main/java/org/apache/camel/language/simple/FileLanguage.java b/camel-core/src/main/java/org/apache/camel/language/simple/FileLanguage.java
index ff58663..58ebc07 100644
--- a/camel-core/src/main/java/org/apache/camel/language/simple/FileLanguage.java
+++ b/camel-core/src/main/java/org/apache/camel/language/simple/FileLanguage.java
@@ -16,9 +16,12 @@
  */
 package org.apache.camel.language.simple;
 
+import org.apache.camel.spi.annotations.Language;
+
 /**
  *
  */
+@Language("file")
 public class FileLanguage extends SimpleLanguage {
 
     public FileLanguage() {
diff --git a/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java b/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
index e1099c4..9e174d0 100644
--- a/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
+++ b/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
@@ -22,6 +22,7 @@ import org.apache.camel.Expression;
 import org.apache.camel.Predicate;
 import org.apache.camel.StaticService;
 import org.apache.camel.builder.ExpressionBuilder;
+import org.apache.camel.spi.annotations.Language;
 import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.LRUCache;
 import org.apache.camel.support.LRUCacheFactory;
@@ -96,6 +97,7 @@ import org.slf4j.LoggerFactory;
  * <br/>
  * The <b>only</b> file is the filename only with all paths clipped.
  */
+@Language("simple")
 public class SimpleLanguage extends LanguageSupport implements StaticService {
 
     private static final Logger LOG = LoggerFactory.getLogger(SimpleLanguage.class);
diff --git a/camel-core/src/main/java/org/apache/camel/language/tokenizer/TokenizeLanguage.java b/camel-core/src/main/java/org/apache/camel/language/tokenizer/TokenizeLanguage.java
index f5f5276..097d2f4 100644
--- a/camel-core/src/main/java/org/apache/camel/language/tokenizer/TokenizeLanguage.java
+++ b/camel-core/src/main/java/org/apache/camel/language/tokenizer/TokenizeLanguage.java
@@ -37,6 +37,7 @@ import org.apache.camel.util.ObjectHelper;
  * Where as the pair mode only supports <tt>token</tt> and <tt>endToken</tt>.
  * And the <tt>xml</tt> mode supports the <tt>inheritNamespaceTagName</tt> option.
  */
+@org.apache.camel.spi.annotations.Language("tokenize")
 public class TokenizeLanguage implements Language, IsSingleton {
 
     private String token;
diff --git a/camel-core/src/main/java/org/apache/camel/language/tokenizer/XMLTokenizeLanguage.java b/camel-core/src/main/java/org/apache/camel/language/tokenizer/XMLTokenizeLanguage.java
index 9f91afe..43b964e 100644
--- a/camel-core/src/main/java/org/apache/camel/language/tokenizer/XMLTokenizeLanguage.java
+++ b/camel-core/src/main/java/org/apache/camel/language/tokenizer/XMLTokenizeLanguage.java
@@ -19,6 +19,7 @@ package org.apache.camel.language.tokenizer;
 import org.apache.camel.Expression;
 import org.apache.camel.Predicate;
 import org.apache.camel.builder.ExpressionBuilder;
+import org.apache.camel.spi.annotations.Language;
 import org.apache.camel.support.ExpressionToPredicateAdapter;
 import org.apache.camel.support.LanguageSupport;
 import org.apache.camel.util.ObjectHelper;
@@ -33,6 +34,7 @@ import org.apache.camel.util.ObjectHelper;
  *     <li>unwrap - unwrapping the extracted token to its child content</li>
  * </ul>
  */
+@Language("xtokenize")
 public class XMLTokenizeLanguage extends LanguageSupport {
 
     private String path;
diff --git a/camel-core/src/main/java/org/apache/camel/language/xpath/XPathLanguage.java b/camel-core/src/main/java/org/apache/camel/language/xpath/XPathLanguage.java
index 8db476d..a94de53 100644
--- a/camel-core/src/main/java/org/apache/camel/language/xpath/XPathLanguage.java
+++ b/camel-core/src/main/java/org/apache/camel/language/xpath/XPathLanguage.java
@@ -22,11 +22,13 @@ import javax.xml.xpath.XPathFactory;
 import org.apache.camel.Expression;
 import org.apache.camel.Predicate;
 import org.apache.camel.builder.xml.XPathBuilder;
+import org.apache.camel.spi.annotations.Language;
 import org.apache.camel.support.LanguageSupport;
 
 /**
  * XPath language.
  */
+@Language("xpath")
 public class XPathLanguage extends LanguageSupport {
     private QName resultType;
     private XPathFactory xpathFactory;
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/bean b/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/bean
deleted file mode 100644
index af3425f..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/bean
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.bean.BeanComponent
\ No newline at end of file
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/browse b/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/browse
deleted file mode 100644
index 9dca222..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/browse
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.browse.BrowseComponent
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/class b/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/class
deleted file mode 100644
index 4a47193..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/class
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.beanclass.ClassComponent
\ No newline at end of file
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/controlbus b/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/controlbus
deleted file mode 100644
index d0f4af6..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/controlbus
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.controlbus.ControlBusComponent
\ No newline at end of file
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/dataformat b/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/dataformat
deleted file mode 100644
index 4f29da3..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/dataformat
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.dataformat.DataFormatComponent
\ No newline at end of file
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/dataset b/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/dataset
deleted file mode 100644
index 46ad0a4..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/dataset
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.dataset.DataSetComponent
\ No newline at end of file
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/direct b/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/direct
deleted file mode 100644
index 6bef78d..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/direct
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.direct.DirectComponent
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/direct-vm b/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/direct-vm
deleted file mode 100644
index 1771c72..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/direct-vm
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.directvm.DirectVmComponent
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/file b/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/file
deleted file mode 100644
index 2172240..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/file
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.file.FileComponent
-strategy.factory.class=org.apache.camel.component.file.strategy.FileProcessStrategyFactory
\ No newline at end of file
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/language b/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/language
deleted file mode 100644
index 0e089a4..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/language
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.language.LanguageComponent
\ No newline at end of file
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/log b/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/log
deleted file mode 100644
index e988625..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/log
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.log.LogComponent
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/mock b/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/mock
deleted file mode 100644
index c44289d..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/mock
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.mock.MockComponent
\ No newline at end of file
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/properties b/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/properties
deleted file mode 100644
index 0caaa3d..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/properties
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.properties.PropertiesComponent
\ No newline at end of file
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/ref b/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/ref
deleted file mode 100644
index 0a12761..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/ref
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.ref.RefComponent
\ No newline at end of file
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/rest b/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/rest
deleted file mode 100644
index 40c85ca5..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/rest
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.rest.RestComponent
\ No newline at end of file
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/rest-api b/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/rest-api
deleted file mode 100644
index 385496b..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/rest-api
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.rest.RestApiComponent
\ No newline at end of file
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/saga b/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/saga
deleted file mode 100644
index 0a4dd38..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/saga
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.saga.SagaComponent
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/scheduler b/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/scheduler
deleted file mode 100644
index 0805ee2..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/scheduler
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.scheduler.SchedulerComponent
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/seda b/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/seda
deleted file mode 100644
index c16229e..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/seda
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.seda.SedaComponent
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/stub b/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/stub
deleted file mode 100644
index 7b3d574..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/stub
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.stub.StubComponent
\ No newline at end of file
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/test b/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/test
deleted file mode 100644
index e017afc..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/test
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.test.TestComponent
\ No newline at end of file
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/timer b/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/timer
deleted file mode 100644
index 87adb9a..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/timer
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.timer.TimerComponent
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/validator b/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/validator
deleted file mode 100644
index ac863b9..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/validator
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.validator.ValidatorComponent
\ No newline at end of file
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/vm b/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/vm
deleted file mode 100644
index 2ec95e1..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/vm
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.vm.VmComponent
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/xslt b/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/xslt
deleted file mode 100644
index 7b29611..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/xslt
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.xslt.XsltComponent
\ No newline at end of file
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/dataformat/gzip b/camel-core/src/main/resources/META-INF/services/org/apache/camel/dataformat/gzip
deleted file mode 100644
index 08cefe5..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/dataformat/gzip
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.impl.GzipDataFormat
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/dataformat/serialization b/camel-core/src/main/resources/META-INF/services/org/apache/camel/dataformat/serialization
deleted file mode 100644
index fb6899a..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/dataformat/serialization
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.impl.SerializationDataFormat
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/dataformat/string b/camel-core/src/main/resources/META-INF/services/org/apache/camel/dataformat/string
deleted file mode 100644
index 757b501..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/dataformat/string
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.impl.StringDataFormat
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/dataformat/zip b/camel-core/src/main/resources/META-INF/services/org/apache/camel/dataformat/zip
deleted file mode 100644
index 526007c..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/dataformat/zip
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.impl.ZipDataFormat
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/bean b/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/bean
deleted file mode 100644
index 028e2cb..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/bean
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.language.bean.BeanLanguage
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/constant b/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/constant
deleted file mode 100644
index e06b330..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/constant
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.language.constant.ConstantLanguage
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/exchangeProperty b/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/exchangeProperty
deleted file mode 100644
index 27c64b2..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/exchangeProperty
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.language.property.ExchangePropertyLanguage
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/file b/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/file
deleted file mode 100644
index c907df9..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/file
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.language.simple.FileLanguage
\ No newline at end of file
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/header b/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/header
deleted file mode 100644
index d761389..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/header
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.language.header.HeaderLanguage
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/ref b/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/ref
deleted file mode 100644
index da58bfe..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/ref
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.language.ref.RefLanguage
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/simple b/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/simple
deleted file mode 100644
index e133fe5..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/simple
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.language.simple.SimpleLanguage
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/tokenize b/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/tokenize
deleted file mode 100644
index 9f1eb15..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/tokenize
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.language.tokenizer.TokenizeLanguage
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/xpath b/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/xpath
deleted file mode 100644
index d43786b..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/xpath
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.language.xpath.XPathLanguage
diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/xtokenize b/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/xtokenize
deleted file mode 100644
index e9a9898..0000000
--- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/language/xtokenize
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.language.tokenizer.XMLTokenizeLanguage
diff --git a/components/camel-ahc-ws/src/main/java/org/apache/camel/component/ahc/ws/WsComponent.java b/components/camel-ahc-ws/src/main/java/org/apache/camel/component/ahc/ws/WsComponent.java
index 6fe85b9..771d490 100644
--- a/components/camel-ahc-ws/src/main/java/org/apache/camel/component/ahc/ws/WsComponent.java
+++ b/components/camel-ahc-ws/src/main/java/org/apache/camel/component/ahc/ws/WsComponent.java
@@ -20,10 +20,12 @@ import java.net.URI;
 
 import org.apache.camel.component.ahc.AhcComponent;
 import org.apache.camel.component.ahc.AhcEndpoint;
+import org.apache.camel.spi.annotations.Component;
 
 /**
  * To exchange data with external Websocket servers using <a href="http://github.com/sonatype/async-http-client">Async Http Client</a>
  */
+@Component("ahc-ws,ahc-wss")
 public class WsComponent extends AhcComponent {
     
     @Override
diff --git a/components/camel-ahc-ws/src/main/resources/META-INF/services/org/apache/camel/component/ahc-ws b/components/camel-ahc-ws/src/main/resources/META-INF/services/org/apache/camel/component/ahc-ws
deleted file mode 100644
index 60c0ec7..0000000
--- a/components/camel-ahc-ws/src/main/resources/META-INF/services/org/apache/camel/component/ahc-ws
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.ahc.ws.WsComponent
diff --git a/components/camel-ahc-ws/src/main/resources/META-INF/services/org/apache/camel/component/ahc-wss b/components/camel-ahc-ws/src/main/resources/META-INF/services/org/apache/camel/component/ahc-wss
deleted file mode 100644
index 60c0ec7..0000000
--- a/components/camel-ahc-ws/src/main/resources/META-INF/services/org/apache/camel/component/ahc-wss
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.ahc.ws.WsComponent
diff --git a/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/AhcComponent.java b/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/AhcComponent.java
index 61419a3..42b61eb 100644
--- a/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/AhcComponent.java
+++ b/components/camel-ahc/src/main/java/org/apache/camel/component/ahc/AhcComponent.java
@@ -24,6 +24,7 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.SSLContextParametersAware;
 import org.apache.camel.impl.HeaderFilterStrategyComponent;
 import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.IntrospectionSupport;
 import org.apache.camel.support.jsse.SSLContextParameters;
 import org.apache.camel.util.ObjectHelper;
@@ -38,6 +39,7 @@ import org.asynchttpclient.Realm.Builder;
 /**
  *  To call external HTTP services using <a href="http://github.com/sonatype/async-http-client">Async Http Client</a>
  */
+@Component("ahc")
 public class AhcComponent extends HeaderFilterStrategyComponent implements SSLContextParametersAware {
     
     private static final String CLIENT_CONFIG_PREFIX = "clientConfig.";
diff --git a/components/camel-ahc/src/main/resources/META-INF/services/org/apache/camel/component/ahc b/components/camel-ahc/src/main/resources/META-INF/services/org/apache/camel/component/ahc
deleted file mode 100644
index 5b3e2b3..0000000
--- a/components/camel-ahc/src/main/resources/META-INF/services/org/apache/camel/component/ahc
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.ahc.AhcComponent
diff --git a/components/camel-amqp/src/main/java/org/apache/camel/component/amqp/AMQPComponent.java b/components/camel-amqp/src/main/java/org/apache/camel/component/amqp/AMQPComponent.java
index ae8bfa0..6f93b28 100644
--- a/components/camel-amqp/src/main/java/org/apache/camel/component/amqp/AMQPComponent.java
+++ b/components/camel-amqp/src/main/java/org/apache/camel/component/amqp/AMQPComponent.java
@@ -23,11 +23,13 @@ import javax.jms.ConnectionFactory;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.jms.JmsComponent;
 import org.apache.camel.component.jms.JmsConfiguration;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.qpid.jms.JmsConnectionFactory;
 
 /**
  * Messaging with AMQP protocol using Apache QPid Client.
  */
+@Component("amqp")
 public class AMQPComponent extends JmsComponent {
 
     // Constructors
diff --git a/components/camel-amqp/src/main/resources/META-INF/services/org/apache/camel/component/amqp b/components/camel-amqp/src/main/resources/META-INF/services/org/apache/camel/component/amqp
deleted file mode 100644
index 7590efa..0000000
--- a/components/camel-amqp/src/main/resources/META-INF/services/org/apache/camel/component/amqp
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.amqp.AMQPComponent
diff --git a/components/camel-apns/src/main/java/org/apache/camel/component/apns/ApnsComponent.java b/components/camel-apns/src/main/java/org/apache/camel/component/apns/ApnsComponent.java
index c29de3e..3725ae0 100644
--- a/components/camel-apns/src/main/java/org/apache/camel/component/apns/ApnsComponent.java
+++ b/components/camel-apns/src/main/java/org/apache/camel/component/apns/ApnsComponent.java
@@ -21,11 +21,13 @@ import java.util.Map;
 import com.notnoop.apns.ApnsService;
 import org.apache.camel.Endpoint;
 import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
 /**
  * For sending notifications to Apple iOS devices
  */
+@Component("apns")
 public class ApnsComponent extends DefaultComponent {
 
     @Metadata(required = true)
diff --git a/components/camel-apns/src/main/resources/META-INF/services/org/apache/camel/component/apns b/components/camel-apns/src/main/resources/META-INF/services/org/apache/camel/component/apns
deleted file mode 100644
index 1426cf4..0000000
--- a/components/camel-apns/src/main/resources/META-INF/services/org/apache/camel/component/apns
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.apns.ApnsComponent
diff --git a/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Component.java b/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Component.java
index 1a74b82..d6c369b 100644
--- a/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Component.java
+++ b/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Component.java
@@ -22,6 +22,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.as2.internal.AS2ApiCollection;
 import org.apache.camel.component.as2.internal.AS2ApiName;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.component.AbstractApiComponent;
 import org.bouncycastle.jce.provider.BouncyCastleProvider;
 import org.slf4j.Logger;
@@ -30,6 +31,7 @@ import org.slf4j.LoggerFactory;
 /**
  * Represents the component that manages {@link AS2Endpoint}.
  */
+@Component("as2")
 public class AS2Component extends AbstractApiComponent<AS2ApiName, AS2Configuration, AS2ApiCollection> {
     
     public AS2Component() {
diff --git a/components/camel-as2/camel-as2-component/src/main/resources/META-INF/services/org/apache/camel/component/as2 b/components/camel-as2/camel-as2-component/src/main/resources/META-INF/services/org/apache/camel/component/as2
deleted file mode 100644
index ebe24f8..0000000
--- a/components/camel-as2/camel-as2-component/src/main/resources/META-INF/services/org/apache/camel/component/as2
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.as2.AS2Component
diff --git a/components/camel-asn1/src/main/java/org/apache/camel/dataformat/asn1/ASN1DataFormat.java b/components/camel-asn1/src/main/java/org/apache/camel/dataformat/asn1/ASN1DataFormat.java
index 5b2d270..6e70ce8 100644
--- a/components/camel-asn1/src/main/java/org/apache/camel/dataformat/asn1/ASN1DataFormat.java
+++ b/components/camel-asn1/src/main/java/org/apache/camel/dataformat/asn1/ASN1DataFormat.java
@@ -27,6 +27,7 @@ import java.lang.reflect.Method;
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataFormatName;
+import org.apache.camel.spi.annotations.Dataformat;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.ObjectHelper;
@@ -34,6 +35,7 @@ import org.bouncycastle.asn1.ASN1InputStream;
 import org.bouncycastle.asn1.ASN1Primitive;
 import org.openmuc.jasn1.ber.ReverseByteArrayOutputStream;
 
+@Dataformat("asn1")
 public class ASN1DataFormat extends ServiceSupport implements DataFormat, DataFormatName {
     private boolean usingIterator;
     private String clazzName;
diff --git a/components/camel-asn1/src/main/resources/META-INF/services/org/apache/camel/dataformat/asn1 b/components/camel-asn1/src/main/resources/META-INF/services/org/apache/camel/dataformat/asn1
deleted file mode 100644
index e2890a5..0000000
--- a/components/camel-asn1/src/main/resources/META-INF/services/org/apache/camel/dataformat/asn1
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.dataformat.asn1.ASN1DataFormat
diff --git a/components/camel-asterisk/src/main/java/org/apache/camel/component/asterisk/AsteriskComponent.java b/components/camel-asterisk/src/main/java/org/apache/camel/component/asterisk/AsteriskComponent.java
index 747f0622..84d1e46 100644
--- a/components/camel-asterisk/src/main/java/org/apache/camel/component/asterisk/AsteriskComponent.java
+++ b/components/camel-asterisk/src/main/java/org/apache/camel/component/asterisk/AsteriskComponent.java
@@ -20,11 +20,13 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
 /**
  * Represents the component that manages {@link AsteriskEndpoint}.
  */
+@Component("asterisk")
 public class AsteriskComponent extends DefaultComponent {
 
     public AsteriskComponent() {
diff --git a/components/camel-asterisk/src/main/resources/META-INF/services/org/apache/camel/component/asterisk b/components/camel-asterisk/src/main/resources/META-INF/services/org/apache/camel/component/asterisk
deleted file mode 100644
index 4923c0b..0000000
--- a/components/camel-asterisk/src/main/resources/META-INF/services/org/apache/camel/component/asterisk
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-class=org.apache.camel.component.asterisk.AsteriskComponent
diff --git a/components/camel-atmos/src/main/java/org/apache/camel/component/atmos/AtmosComponent.java b/components/camel-atmos/src/main/java/org/apache/camel/component/atmos/AtmosComponent.java
index 653c8db..565be92 100644
--- a/components/camel-atmos/src/main/java/org/apache/camel/component/atmos/AtmosComponent.java
+++ b/components/camel-atmos/src/main/java/org/apache/camel/component/atmos/AtmosComponent.java
@@ -21,9 +21,11 @@ import java.util.Map;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.atmos.util.AtmosOperation;
 import org.apache.camel.component.atmos.validator.AtmosConfigurationValidator;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.spi.Metadata;
 
+@Component("atmos")
 public class AtmosComponent extends DefaultComponent {
 
     @Metadata(label = "security")
diff --git a/components/camel-atmos/src/main/resources/META-INF/services/org/apache/camel/component/atmos b/components/camel-atmos/src/main/resources/META-INF/services/org/apache/camel/component/atmos
deleted file mode 100644
index 8a22a6a..0000000
--- a/components/camel-atmos/src/main/resources/META-INF/services/org/apache/camel/component/atmos
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.atmos.AtmosComponent
diff --git a/components/camel-atmosphere-websocket/src/main/java/org/apache/camel/component/atmosphere/websocket/WebsocketComponent.java b/components/camel-atmosphere-websocket/src/main/java/org/apache/camel/component/atmosphere/websocket/WebsocketComponent.java
index 82b0bca..033b0b3 100644
--- a/components/camel-atmosphere-websocket/src/main/java/org/apache/camel/component/atmosphere/websocket/WebsocketComponent.java
+++ b/components/camel-atmosphere-websocket/src/main/java/org/apache/camel/component/atmosphere/websocket/WebsocketComponent.java
@@ -22,10 +22,12 @@ import java.util.Map;
 
 import org.apache.camel.component.servlet.ServletComponent;
 import org.apache.camel.component.servlet.ServletEndpoint;
+import org.apache.camel.spi.annotations.Component;
 
 /**
  * To exchange data with external Websocket clients using Atmosphere
  */
+@Component("atmosphere-websocket")
 public class WebsocketComponent extends ServletComponent {
     private Map<String, WebSocketStore> stores;
     
diff --git a/components/camel-atmosphere-websocket/src/main/resources/META-INF/services/org/apache/camel/component/atmosphere-websocket b/components/camel-atmosphere-websocket/src/main/resources/META-INF/services/org/apache/camel/component/atmosphere-websocket
deleted file mode 100755
index 3ca5b7d..0000000
--- a/components/camel-atmosphere-websocket/src/main/resources/META-INF/services/org/apache/camel/component/atmosphere-websocket
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-class=org.apache.camel.component.atmosphere.websocket.WebsocketComponent
diff --git a/components/camel-atom/src/main/java/org/apache/camel/component/atom/AtomComponent.java b/components/camel-atom/src/main/java/org/apache/camel/component/atom/AtomComponent.java
index b74706d..16d1956 100644
--- a/components/camel-atom/src/main/java/org/apache/camel/component/atom/AtomComponent.java
+++ b/components/camel-atom/src/main/java/org/apache/camel/component/atom/AtomComponent.java
@@ -22,11 +22,13 @@ import java.util.Map;
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.feed.FeedComponent;
 import org.apache.camel.component.feed.FeedEndpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.util.URISupport;
 
 /**
  * To consume Atom RSS feeds.
  */
+@Component("atom")
 public class AtomComponent extends FeedComponent {
 
     public AtomComponent() {
diff --git a/components/camel-atom/src/main/resources/META-INF/services/org/apache/camel/component/atom b/components/camel-atom/src/main/resources/META-INF/services/org/apache/camel/component/atom
deleted file mode 100755
index 4ec8df0..0000000
--- a/components/camel-atom/src/main/resources/META-INF/services/org/apache/camel/component/atom
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.atom.AtomComponent
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/map/AtomixMapComponent.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/map/AtomixMapComponent.java
index ede1408..9623b01 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/map/AtomixMapComponent.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/map/AtomixMapComponent.java
@@ -21,7 +21,9 @@ import java.util.Map;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.atomix.client.AbstractAtomixClientComponent;
+import org.apache.camel.spi.annotations.Component;
 
+@Component("atomix-map")
 public final class AtomixMapComponent extends AbstractAtomixClientComponent<AtomixMapConfiguration> {
     private AtomixMapConfiguration configuration = new AtomixMapConfiguration();
 
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/messaging/AtomixMessagingComponent.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/messaging/AtomixMessagingComponent.java
index efd2454..53e0f3f 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/messaging/AtomixMessagingComponent.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/messaging/AtomixMessagingComponent.java
@@ -21,7 +21,9 @@ import java.util.Map;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.atomix.client.AbstractAtomixClientComponent;
+import org.apache.camel.spi.annotations.Component;
 
+@Component("atomix-messaging")
 public final class AtomixMessagingComponent extends AbstractAtomixClientComponent<AtomixMessagingConfiguration> {
     private AtomixMessagingConfiguration configuration = new AtomixMessagingConfiguration();
 
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/multimap/AtomixMultiMapComponent.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/multimap/AtomixMultiMapComponent.java
index a6f8cde..bde6737 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/multimap/AtomixMultiMapComponent.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/multimap/AtomixMultiMapComponent.java
@@ -21,7 +21,9 @@ import java.util.Map;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.atomix.client.AbstractAtomixClientComponent;
+import org.apache.camel.spi.annotations.Component;
 
+@Component("atomix-multimap")
 public final class AtomixMultiMapComponent extends AbstractAtomixClientComponent<AtomixMultiMapConfiguration> {
     private AtomixMultiMapConfiguration configuration = new AtomixMultiMapConfiguration();
 
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/queue/AtomixQueueComponent.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/queue/AtomixQueueComponent.java
index 5383f73..2e6dd15 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/queue/AtomixQueueComponent.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/queue/AtomixQueueComponent.java
@@ -21,7 +21,9 @@ import java.util.Map;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.atomix.client.AbstractAtomixClientComponent;
+import org.apache.camel.spi.annotations.Component;
 
+@Component("atomix-queue")
 public final class AtomixQueueComponent extends AbstractAtomixClientComponent<AtomixQueueConfiguration> {
     private AtomixQueueConfiguration configuration = new AtomixQueueConfiguration();
 
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/set/AtomixSetComponent.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/set/AtomixSetComponent.java
index 7eb90a0..99f6dc4 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/set/AtomixSetComponent.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/set/AtomixSetComponent.java
@@ -21,7 +21,9 @@ import java.util.Map;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.atomix.client.AbstractAtomixClientComponent;
+import org.apache.camel.spi.annotations.Component;
 
+@Component("atomix-set")
 public final class AtomixSetComponent extends AbstractAtomixClientComponent<AtomixSetConfiguration> {
     private AtomixSetConfiguration configuration = new AtomixSetConfiguration();
 
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/value/AtomixValueComponent.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/value/AtomixValueComponent.java
index ffef6dc..66c2ec1 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/value/AtomixValueComponent.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/value/AtomixValueComponent.java
@@ -21,7 +21,9 @@ import java.util.Map;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.atomix.client.AbstractAtomixClientComponent;
+import org.apache.camel.spi.annotations.Component;
 
+@Component("atomix-value")
 public final class AtomixValueComponent extends AbstractAtomixClientComponent<AtomixValueConfiguration> {
     private AtomixValueConfiguration configuration = new AtomixValueConfiguration();
 
diff --git a/components/camel-atomix/src/main/resources/META-INF/services/org/apache/camel/component/atomix-map b/components/camel-atomix/src/main/resources/META-INF/services/org/apache/camel/component/atomix-map
deleted file mode 100644
index 316fc30..0000000
--- a/components/camel-atomix/src/main/resources/META-INF/services/org/apache/camel/component/atomix-map
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.atomix.client.map.AtomixMapComponent
diff --git a/components/camel-atomix/src/main/resources/META-INF/services/org/apache/camel/component/atomix-messaging b/components/camel-atomix/src/main/resources/META-INF/services/org/apache/camel/component/atomix-messaging
deleted file mode 100644
index bc99c91..0000000
--- a/components/camel-atomix/src/main/resources/META-INF/services/org/apache/camel/component/atomix-messaging
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.atomix.client.messaging.AtomixMessagingComponent
diff --git a/components/camel-atomix/src/main/resources/META-INF/services/org/apache/camel/component/atomix-multimap b/components/camel-atomix/src/main/resources/META-INF/services/org/apache/camel/component/atomix-multimap
deleted file mode 100644
index 66ddf18..0000000
--- a/components/camel-atomix/src/main/resources/META-INF/services/org/apache/camel/component/atomix-multimap
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.atomix.client.multimap.AtomixMultiMapComponent
diff --git a/components/camel-atomix/src/main/resources/META-INF/services/org/apache/camel/component/atomix-queue b/components/camel-atomix/src/main/resources/META-INF/services/org/apache/camel/component/atomix-queue
deleted file mode 100644
index 5f3dab1..0000000
--- a/components/camel-atomix/src/main/resources/META-INF/services/org/apache/camel/component/atomix-queue
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.atomix.client.queue.AtomixQueueComponent
diff --git a/components/camel-atomix/src/main/resources/META-INF/services/org/apache/camel/component/atomix-set b/components/camel-atomix/src/main/resources/META-INF/services/org/apache/camel/component/atomix-set
deleted file mode 100644
index c784eca..0000000
--- a/components/camel-atomix/src/main/resources/META-INF/services/org/apache/camel/component/atomix-set
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.atomix.client.set.AtomixSetComponent
diff --git a/components/camel-atomix/src/main/resources/META-INF/services/org/apache/camel/component/atomix-value b/components/camel-atomix/src/main/resources/META-INF/services/org/apache/camel/component/atomix-value
deleted file mode 100644
index b24b0fe..0000000
--- a/components/camel-atomix/src/main/resources/META-INF/services/org/apache/camel/component/atomix-value
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.atomix.client.value.AtomixValueComponent
diff --git a/components/camel-avro/src/main/java/org/apache/camel/component/avro/AvroComponent.java b/components/camel-avro/src/main/java/org/apache/camel/component/avro/AvroComponent.java
index 2ac54a1..6c27bc3 100644
--- a/components/camel-avro/src/main/java/org/apache/camel/component/avro/AvroComponent.java
+++ b/components/camel-avro/src/main/java/org/apache/camel/component/avro/AvroComponent.java
@@ -27,10 +27,12 @@ import org.apache.avro.Protocol;
 import org.apache.avro.reflect.ReflectData;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.util.URISupport;
 
+@Component("avro")
 public class AvroComponent extends DefaultComponent {
 
     private ConcurrentMap<String, AvroListener> listenerRegistry = new ConcurrentHashMap<>();
diff --git a/components/camel-avro/src/main/java/org/apache/camel/dataformat/avro/AvroDataFormat.java b/components/camel-avro/src/main/java/org/apache/camel/dataformat/avro/AvroDataFormat.java
index 03e449b..5a5f4fd 100644
--- a/components/camel-avro/src/main/java/org/apache/camel/dataformat/avro/AvroDataFormat.java
+++ b/components/camel-avro/src/main/java/org/apache/camel/dataformat/avro/AvroDataFormat.java
@@ -38,9 +38,11 @@ import org.apache.camel.CamelException;
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataFormatName;
+import org.apache.camel.spi.annotations.Dataformat;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.ObjectHelper;
 
+@Dataformat("avro")
 public class AvroDataFormat extends ServiceSupport implements DataFormat, DataFormatName, CamelContextAware {
 
     private static final String GENERIC_CONTAINER_CLASSNAME = GenericContainer.class.getName();
diff --git a/components/camel-avro/src/main/resources/META-INF/services/org/apache/camel/component/avro b/components/camel-avro/src/main/resources/META-INF/services/org/apache/camel/component/avro
deleted file mode 100644
index b4e1935..0000000
--- a/components/camel-avro/src/main/resources/META-INF/services/org/apache/camel/component/avro
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-class=org.apache.camel.component.avro.AvroComponent
diff --git a/components/camel-avro/src/main/resources/META-INF/services/org/apache/camel/dataformat/avro b/components/camel-avro/src/main/resources/META-INF/services/org/apache/camel/dataformat/avro
deleted file mode 100644
index 7b19e8d..0000000
--- a/components/camel-avro/src/main/resources/META-INF/services/org/apache/camel/dataformat/avro
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.dataformat.avro.AvroDataFormat
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/cw/CwComponent.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/cw/CwComponent.java
index 276f034..89c2bad 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/cw/CwComponent.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/cw/CwComponent.java
@@ -20,10 +20,12 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.util.ObjectHelper;
 
+@Component("aws-cw")
 public class CwComponent extends DefaultComponent {
 
     @Metadata
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddb/DdbComponent.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddb/DdbComponent.java
index 38a7b72..5fcd1bc 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddb/DdbComponent.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddb/DdbComponent.java
@@ -20,10 +20,13 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.util.ObjectHelper;
 
+@Component("aws-ddb")
 public class DdbComponent extends DefaultComponent {
 
     @Metadata
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/DdbStreamComponent.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/DdbStreamComponent.java
index 765a4ad..43a2b6a 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/DdbStreamComponent.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ddbstream/DdbStreamComponent.java
@@ -19,10 +19,13 @@ package org.apache.camel.component.aws.ddbstream;
 import java.util.Map;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.util.ObjectHelper;
 
+@Component("aws-ddbstream")
 public class DdbStreamComponent extends DefaultComponent {
     
     @Metadata
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ec2/EC2Component.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ec2/EC2Component.java
index 752e615..e562c4b 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ec2/EC2Component.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ec2/EC2Component.java
@@ -20,6 +20,8 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.util.ObjectHelper;
@@ -27,6 +29,7 @@ import org.apache.camel.util.ObjectHelper;
 /**
  * For working with Amazon's Elastic Compute Cloud (EC2).
  */
+@Component("aws-ec2")
 public class EC2Component extends DefaultComponent {
 
     @Metadata
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/eks/EKSComponent.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/eks/EKSComponent.java
index bc5e461..033db3d 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/eks/EKSComponent.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/eks/EKSComponent.java
@@ -21,12 +21,14 @@ import java.util.Map;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.util.ObjectHelper;
 
 /**
  * For working with Amazon EKS.
  */
+@Component("aws-eks")
 public class EKSComponent extends DefaultComponent {
 
     @Metadata
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/firehose/KinesisFirehoseComponent.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/firehose/KinesisFirehoseComponent.java
index e7c6dc6..33e0120 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/firehose/KinesisFirehoseComponent.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/firehose/KinesisFirehoseComponent.java
@@ -20,10 +20,13 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.util.ObjectHelper;
 
+@Component("aws-kinesis-firehose")
 public class KinesisFirehoseComponent extends DefaultComponent {
 
     @Metadata
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/iam/IAMComponent.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/iam/IAMComponent.java
index 83f572a..7064113 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/iam/IAMComponent.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/iam/IAMComponent.java
@@ -20,6 +20,8 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.util.ObjectHelper;
@@ -27,6 +29,7 @@ import org.apache.camel.util.ObjectHelper;
 /**
  * For working with Amazon KMS.
  */
+@Component("aws-iam")
 public class IAMComponent extends DefaultComponent {
 
     @Metadata
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/kinesis/KinesisComponent.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/kinesis/KinesisComponent.java
index 6fa668b..7dbd5ab 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/kinesis/KinesisComponent.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/kinesis/KinesisComponent.java
@@ -20,10 +20,13 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.util.ObjectHelper;
 
+@Component("aws-kinesis")
 public class KinesisComponent extends DefaultComponent {
 
     @Metadata
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/kms/KMSComponent.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/kms/KMSComponent.java
index d547e9c..361b205 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/kms/KMSComponent.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/kms/KMSComponent.java
@@ -20,6 +20,8 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.util.ObjectHelper;
@@ -27,6 +29,7 @@ import org.apache.camel.util.ObjectHelper;
 /**
  * For working with Amazon KMS.
  */
+@Component("aws-kms")
 public class KMSComponent extends DefaultComponent {
 
     @Metadata
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/lambda/LambdaComponent.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/lambda/LambdaComponent.java
index 4975223..bac35af 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/lambda/LambdaComponent.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/lambda/LambdaComponent.java
@@ -20,10 +20,13 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.util.ObjectHelper;
 
+@Component("aws-lambda")
 public class LambdaComponent extends DefaultComponent {
 
     @Metadata
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/mq/MQComponent.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/mq/MQComponent.java
index 2eecc0d..c7f7b43 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/mq/MQComponent.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/mq/MQComponent.java
@@ -20,6 +20,8 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.util.ObjectHelper;
@@ -27,6 +29,7 @@ import org.apache.camel.util.ObjectHelper;
 /**
  * For working with Amazon MQ.
  */
+@Component("aws-mq")
 public class MQComponent extends DefaultComponent {
 
     @Metadata
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/s3/S3Component.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/s3/S3Component.java
index b9812e0..4e0bf49 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/s3/S3Component.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/s3/S3Component.java
@@ -21,10 +21,13 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.util.ObjectHelper;
 
+@Component("aws-s3")
 public class S3Component extends DefaultComponent {
 
     @Metadata
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/sdb/SdbComponent.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/sdb/SdbComponent.java
index 19b5d5f..a203284 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/sdb/SdbComponent.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/sdb/SdbComponent.java
@@ -20,8 +20,10 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
+@Component("aws-sdb")
 public class SdbComponent extends DefaultComponent {
 
     public SdbComponent() {
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ses/SesComponent.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ses/SesComponent.java
index 837c23a..5824871 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ses/SesComponent.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ses/SesComponent.java
@@ -20,10 +20,13 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.util.ObjectHelper;
 
+@Component("aws-ses")
 public class SesComponent extends DefaultComponent {
 
     @Metadata
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/sns/SnsComponent.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/sns/SnsComponent.java
index 61b6eb0..ab69650 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/sns/SnsComponent.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/sns/SnsComponent.java
@@ -21,10 +21,13 @@ import java.util.Map;
 import com.amazonaws.regions.Regions;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.util.ObjectHelper;
 
+@Component("aws-sns")
 public class SnsComponent extends DefaultComponent {
     
     @Metadata
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsComponent.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsComponent.java
index a4e883e..73766b1 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsComponent.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsComponent.java
@@ -21,10 +21,13 @@ import java.util.Map;
 import com.amazonaws.regions.Regions;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.util.ObjectHelper;
 
+@Component("aws-sqs")
 public class SqsComponent extends DefaultComponent {
     
     @Metadata
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/swf/SWFComponent.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/swf/SWFComponent.java
index 3fc06f3..74a33ac 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/swf/SWFComponent.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/swf/SWFComponent.java
@@ -20,11 +20,14 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.support.IntrospectionSupport;
 import org.apache.camel.util.ObjectHelper;
 
+@Component("aws-swf")
 public class SWFComponent extends DefaultComponent {
 
     @Metadata
diff --git a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-cw b/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-cw
deleted file mode 100644
index f9a22cc..0000000
--- a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-cw
+++ /dev/null
@@ -1,18 +0,0 @@
-## ---------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You 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.
-## ---------------------------------------------------------------------------
-
-class=org.apache.camel.component.aws.cw.CwComponent
diff --git a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-ddb b/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-ddb
deleted file mode 100644
index 487ac86..0000000
--- a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-ddb
+++ /dev/null
@@ -1,18 +0,0 @@
-## ---------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You 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.
-## ---------------------------------------------------------------------------
-
-class=org.apache.camel.component.aws.ddb.DdbComponent
diff --git a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-ddbstream b/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-ddbstream
deleted file mode 100644
index 48a8509..0000000
--- a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-ddbstream
+++ /dev/null
@@ -1,18 +0,0 @@
-## ---------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You 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.
-## ---------------------------------------------------------------------------
-
-class=org.apache.camel.component.aws.ddbstream.DdbStreamComponent
diff --git a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-ec2 b/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-ec2
deleted file mode 100644
index 9a2bcfa..0000000
--- a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-ec2
+++ /dev/null
@@ -1,18 +0,0 @@
-## ---------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You 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.
-## ---------------------------------------------------------------------------
-
-class=org.apache.camel.component.aws.ec2.EC2Component
diff --git a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-eks b/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-eks
deleted file mode 100644
index 8622df4..0000000
--- a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-eks
+++ /dev/null
@@ -1,18 +0,0 @@
-## ---------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You 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.
-## ---------------------------------------------------------------------------
-
-class=org.apache.camel.component.aws.eks.EKSComponent
diff --git a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-iam b/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-iam
deleted file mode 100644
index ab88eb6..0000000
--- a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-iam
+++ /dev/null
@@ -1,18 +0,0 @@
-## ---------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You 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.
-## ---------------------------------------------------------------------------
-
-class=org.apache.camel.component.aws.iam.IAMComponent
diff --git a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-kinesis b/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-kinesis
deleted file mode 100644
index 2329cbf..0000000
--- a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-kinesis
+++ /dev/null
@@ -1,18 +0,0 @@
-## ---------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You 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.
-## ---------------------------------------------------------------------------
-
-class=org.apache.camel.component.aws.kinesis.KinesisComponent
diff --git a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-kinesis-firehose b/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-kinesis-firehose
deleted file mode 100644
index 2f91974..0000000
--- a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-kinesis-firehose
+++ /dev/null
@@ -1,18 +0,0 @@
-## ---------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You 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.
-## ---------------------------------------------------------------------------
-
-class=org.apache.camel.component.aws.firehose.KinesisFirehoseComponent
diff --git a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-kms b/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-kms
deleted file mode 100644
index 3a89cd7..0000000
--- a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-kms
+++ /dev/null
@@ -1,18 +0,0 @@
-## ---------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You 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.
-## ---------------------------------------------------------------------------
-
-class=org.apache.camel.component.aws.kms.KMSComponent
diff --git a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-lambda b/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-lambda
deleted file mode 100644
index 51364f7..0000000
--- a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-lambda
+++ /dev/null
@@ -1,18 +0,0 @@
-## ---------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You 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.
-## ---------------------------------------------------------------------------
-
-class=org.apache.camel.component.aws.lambda.LambdaComponent
diff --git a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-mq b/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-mq
deleted file mode 100644
index c1a05f1..0000000
--- a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-mq
+++ /dev/null
@@ -1,18 +0,0 @@
-## ---------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You 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.
-## ---------------------------------------------------------------------------
-
-class=org.apache.camel.component.aws.mq.MQComponent
diff --git a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-s3 b/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-s3
deleted file mode 100644
index 5e00f0d..0000000
--- a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-s3
+++ /dev/null
@@ -1,18 +0,0 @@
-## ---------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You 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.
-## ---------------------------------------------------------------------------
-
-class=org.apache.camel.component.aws.s3.S3Component
diff --git a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-sdb b/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-sdb
deleted file mode 100644
index 5ee7373..0000000
--- a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-sdb
+++ /dev/null
@@ -1,18 +0,0 @@
-## ---------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You 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.
-## ---------------------------------------------------------------------------
-
-class=org.apache.camel.component.aws.sdb.SdbComponent
diff --git a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-ses b/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-ses
deleted file mode 100644
index 2598cc5..0000000
--- a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-ses
+++ /dev/null
@@ -1,18 +0,0 @@
-## ---------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You 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.
-## ---------------------------------------------------------------------------
-
-class=org.apache.camel.component.aws.ses.SesComponent
diff --git a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-sns b/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-sns
deleted file mode 100644
index c8ca845..0000000
--- a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-sns
+++ /dev/null
@@ -1,18 +0,0 @@
-## ---------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You 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.
-## ---------------------------------------------------------------------------
-
-class=org.apache.camel.component.aws.sns.SnsComponent
diff --git a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-sqs b/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-sqs
deleted file mode 100644
index 0055799..0000000
--- a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-sqs
+++ /dev/null
@@ -1,18 +0,0 @@
-## ---------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You 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.
-## ---------------------------------------------------------------------------
-
-class=org.apache.camel.component.aws.sqs.SqsComponent
diff --git a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-swf b/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-swf
deleted file mode 100644
index 3d10c74..0000000
--- a/components/camel-aws/src/main/resources/META-INF/services/org/apache/camel/component/aws-swf
+++ /dev/null
@@ -1,18 +0,0 @@
-## ---------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You 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.
-## ---------------------------------------------------------------------------
-
-class=org.apache.camel.component.aws.swf.SWFComponent
diff --git a/components/camel-azure/src/main/java/org/apache/camel/component/azure/blob/BlobServiceComponent.java b/components/camel-azure/src/main/java/org/apache/camel/component/azure/blob/BlobServiceComponent.java
index 7f4fb15..02d015e 100644
--- a/components/camel-azure/src/main/java/org/apache/camel/component/azure/blob/BlobServiceComponent.java
+++ b/components/camel-azure/src/main/java/org/apache/camel/component/azure/blob/BlobServiceComponent.java
@@ -23,8 +23,10 @@ import com.microsoft.azure.storage.StorageCredentialsAnonymous;
 import com.microsoft.azure.storage.blob.CloudBlob;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
+@Component("azure-blob")
 public class BlobServiceComponent extends DefaultComponent {
     
     public BlobServiceComponent() {
diff --git a/components/camel-azure/src/main/java/org/apache/camel/component/azure/queue/QueueServiceComponent.java b/components/camel-azure/src/main/java/org/apache/camel/component/azure/queue/QueueServiceComponent.java
index 6889411..9b48919 100644
--- a/components/camel-azure/src/main/java/org/apache/camel/component/azure/queue/QueueServiceComponent.java
+++ b/components/camel-azure/src/main/java/org/apache/camel/component/azure/queue/QueueServiceComponent.java
@@ -23,8 +23,10 @@ import com.microsoft.azure.storage.queue.CloudQueue;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
+@Component("azure-queue")
 public class QueueServiceComponent extends DefaultComponent {
 
     public QueueServiceComponent() {
diff --git a/components/camel-azure/src/main/resources/META-INF/services/org/apache/camel/component/azure-blob b/components/camel-azure/src/main/resources/META-INF/services/org/apache/camel/component/azure-blob
deleted file mode 100644
index 285f97d..0000000
--- a/components/camel-azure/src/main/resources/META-INF/services/org/apache/camel/component/azure-blob
+++ /dev/null
@@ -1,18 +0,0 @@
-## ---------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You 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.
-## ---------------------------------------------------------------------------
-
-class=org.apache.camel.component.azure.blob.BlobServiceComponent
diff --git a/components/camel-azure/src/main/resources/META-INF/services/org/apache/camel/component/azure-queue b/components/camel-azure/src/main/resources/META-INF/services/org/apache/camel/component/azure-queue
deleted file mode 100644
index debd117..0000000
--- a/components/camel-azure/src/main/resources/META-INF/services/org/apache/camel/component/azure-queue
+++ /dev/null
@@ -1,18 +0,0 @@
-## ---------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You 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.
-## ---------------------------------------------------------------------------
-
-class=org.apache.camel.component.azure.queue.QueueServiceComponent
diff --git a/components/camel-barcode/src/main/java/org/apache/camel/dataformat/barcode/BarcodeDataFormat.java b/components/camel-barcode/src/main/java/org/apache/camel/dataformat/barcode/BarcodeDataFormat.java
index 68791f5..8695e78 100644
--- a/components/camel-barcode/src/main/java/org/apache/camel/dataformat/barcode/BarcodeDataFormat.java
+++ b/components/camel-barcode/src/main/java/org/apache/camel/dataformat/barcode/BarcodeDataFormat.java
@@ -39,6 +39,7 @@ import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataFormatName;
+import org.apache.camel.spi.annotations.Dataformat;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.support.ExchangeHelper;
 
@@ -49,6 +50,7 @@ import org.apache.camel.support.ExchangeHelper;
  * <p/>
  * https://github.com/zxing/zxing
  */
+@Dataformat("barcode")
 public class BarcodeDataFormat extends ServiceSupport implements DataFormat, DataFormatName {
 
     /**
diff --git a/components/camel-barcode/src/main/resources/META-INF/services/org/apache/camel/dataformat/barcode b/components/camel-barcode/src/main/resources/META-INF/services/org/apache/camel/dataformat/barcode
deleted file mode 100644
index bd5d1c1..0000000
--- a/components/camel-barcode/src/main/resources/META-INF/services/org/apache/camel/dataformat/barcode
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.dataformat.barcode.BarcodeDataFormat
diff --git a/components/camel-base64/src/main/java/org/apache/camel/dataformat/base64/Base64DataFormat.java b/components/camel-base64/src/main/java/org/apache/camel/dataformat/base64/Base64DataFormat.java
index c77cb16..5441651 100644
--- a/components/camel-base64/src/main/java/org/apache/camel/dataformat/base64/Base64DataFormat.java
+++ b/components/camel-base64/src/main/java/org/apache/camel/dataformat/base64/Base64DataFormat.java
@@ -22,6 +22,7 @@ import java.io.OutputStream;
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataFormatName;
+import org.apache.camel.spi.annotations.Dataformat;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.util.IOHelper;
@@ -29,6 +30,7 @@ import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.codec.binary.Base64InputStream;
 import org.apache.commons.codec.binary.Base64OutputStream;
 
+@Dataformat("base64")
 public class Base64DataFormat extends ServiceSupport implements DataFormat, DataFormatName {
 
     private int lineLength = Base64.MIME_CHUNK_SIZE;
diff --git a/components/camel-base64/src/main/resources/META-INF/services/org/apache/camel/dataformat/base64 b/components/camel-base64/src/main/resources/META-INF/services/org/apache/camel/dataformat/base64
deleted file mode 100644
index 4ceb836..0000000
--- a/components/camel-base64/src/main/resources/META-INF/services/org/apache/camel/dataformat/base64
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.dataformat.base64.Base64DataFormat
diff --git a/components/camel-bean-validator/src/main/java/org/apache/camel/component/bean/validator/BeanValidatorComponent.java b/components/camel-bean-validator/src/main/java/org/apache/camel/component/bean/validator/BeanValidatorComponent.java
index 7a1a3b9..5e400ca 100644
--- a/components/camel-bean-validator/src/main/java/org/apache/camel/component/bean/validator/BeanValidatorComponent.java
+++ b/components/camel-bean-validator/src/main/java/org/apache/camel/component/bean/validator/BeanValidatorComponent.java
@@ -19,12 +19,14 @@ package org.apache.camel.component.bean.validator;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
 /**
  * Bean Validator Component for validating Java beans against reference implementation of JSR 303 Validator (Hibernate
  * Validator).
  */
+@Component("bean-validator")
 public class BeanValidatorComponent extends DefaultComponent {
 
     public BeanValidatorComponent() {
diff --git a/components/camel-bean-validator/src/main/resources/META-INF/services/org/apache/camel/component/bean-validator b/components/camel-bean-validator/src/main/resources/META-INF/services/org/apache/camel/component/bean-validator
deleted file mode 100644
index e073334..0000000
--- a/components/camel-bean-validator/src/main/resources/META-INF/services/org/apache/camel/component/bean-validator
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.bean.validator.BeanValidatorComponent
diff --git a/components/camel-beanio/src/main/java/org/apache/camel/dataformat/beanio/BeanIODataFormat.java b/components/camel-beanio/src/main/java/org/apache/camel/dataformat/beanio/BeanIODataFormat.java
index c1d1621..cf10fe0 100644
--- a/components/camel-beanio/src/main/java/org/apache/camel/dataformat/beanio/BeanIODataFormat.java
+++ b/components/camel-beanio/src/main/java/org/apache/camel/dataformat/beanio/BeanIODataFormat.java
@@ -33,6 +33,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.NoTypeConversionAvailableException;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataFormatName;
+import org.apache.camel.spi.annotations.Dataformat;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.support.ResourceHelper;
@@ -49,6 +50,7 @@ import static org.apache.camel.dataformat.beanio.BeanIOHelper.getOrCreateBeanRea
  * A <a href="http://camel.apache.org/data-format.html">data format</a> (
  * {@link DataFormat}) for beanio data.
  */
+@Dataformat("beanio")
 public class BeanIODataFormat extends ServiceSupport implements DataFormat, DataFormatName, CamelContextAware {
 
     private transient CamelContext camelContext;
diff --git a/components/camel-beanio/src/main/resources/META-INF/services/org/apache/camel/dataformat/beanio b/components/camel-beanio/src/main/resources/META-INF/services/org/apache/camel/dataformat/beanio
deleted file mode 100644
index f5f1bf8..0000000
--- a/components/camel-beanio/src/main/resources/META-INF/services/org/apache/camel/dataformat/beanio
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.dataformat.beanio.BeanIODataFormat
diff --git a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkComponent.java b/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkComponent.java
index d4cf8e2..9dfa081 100644
--- a/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkComponent.java
+++ b/components/camel-beanstalk/src/main/java/org/apache/camel/component/beanstalk/BeanstalkComponent.java
@@ -19,6 +19,7 @@ package org.apache.camel.component.beanstalk;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
 /**
@@ -39,6 +40,7 @@ import org.apache.camel.support.DefaultComponent;
  * @see BeanstalkEndpoint
  * @see ConnectionSettingsFactory
  */
+@Component("beanstalk")
 public class BeanstalkComponent extends DefaultComponent {
     public static final String DEFAULT_TUBE = "default";
 
diff --git a/components/camel-beanstalk/src/main/resources/META-INF/services/org/apache/camel/component/beanstalk b/components/camel-beanstalk/src/main/resources/META-INF/services/org/apache/camel/component/beanstalk
deleted file mode 100644
index c290f54..0000000
--- a/components/camel-beanstalk/src/main/resources/META-INF/services/org/apache/camel/component/beanstalk
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.beanstalk.BeanstalkComponent
diff --git a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/csv/BindyCsvDataFormat.java b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/csv/BindyCsvDataFormat.java
index e09e6c2..4d918b0 100644
--- a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/csv/BindyCsvDataFormat.java
+++ b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/csv/BindyCsvDataFormat.java
@@ -42,6 +42,7 @@ import org.apache.camel.dataformat.bindy.FormatFactory;
 import org.apache.camel.dataformat.bindy.WrappedException;
 import org.apache.camel.dataformat.bindy.util.ConverterUtils;
 import org.apache.camel.spi.DataFormat;
+import org.apache.camel.spi.annotations.Dataformat;
 import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.support.ObjectHelper;
@@ -52,6 +53,7 @@ import org.slf4j.LoggerFactory;
  * A <a href="http://camel.apache.org/data-format.html">data format</a> (
  * {@link DataFormat}) using Bindy to marshal to and from CSV files
  */
+@Dataformat("bindy-csv")
 public class BindyCsvDataFormat extends BindyAbstractDataFormat {
     private static final Logger LOG = LoggerFactory.getLogger(BindyCsvDataFormat.class);
 
diff --git a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/fixed/BindyFixedLengthDataFormat.java b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/fixed/BindyFixedLengthDataFormat.java
index 2a13c83..717dc97 100644
--- a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/fixed/BindyFixedLengthDataFormat.java
+++ b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/fixed/BindyFixedLengthDataFormat.java
@@ -34,6 +34,7 @@ import org.apache.camel.dataformat.bindy.BindyFixedLengthFactory;
 import org.apache.camel.dataformat.bindy.FormatFactory;
 import org.apache.camel.dataformat.bindy.util.ConverterUtils;
 import org.apache.camel.spi.DataFormat;
+import org.apache.camel.spi.annotations.Dataformat;
 import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.support.ObjectHelper;
@@ -44,6 +45,7 @@ import org.slf4j.LoggerFactory;
  * A <a href="http://camel.apache.org/data-format.html">data format</a> (
  * {@link DataFormat}) using Bindy to marshal to and from Fixed Length
  */
+@Dataformat("bindy-fixed")
 public class BindyFixedLengthDataFormat extends BindyAbstractDataFormat {
 
     public static final String CAMEL_BINDY_FIXED_LENGTH_HEADER = "CamelBindyFixedLengthHeader";
diff --git a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/kvp/BindyKeyValuePairDataFormat.java b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/kvp/BindyKeyValuePairDataFormat.java
index a45820a..ac1ba47 100644
--- a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/kvp/BindyKeyValuePairDataFormat.java
+++ b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/kvp/BindyKeyValuePairDataFormat.java
@@ -39,6 +39,7 @@ import org.apache.camel.dataformat.bindy.FormatFactory;
 import org.apache.camel.dataformat.bindy.WrappedException;
 import org.apache.camel.dataformat.bindy.util.ConverterUtils;
 import org.apache.camel.spi.DataFormat;
+import org.apache.camel.spi.annotations.Dataformat;
 import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.support.ObjectHelper;
@@ -49,6 +50,7 @@ import org.slf4j.LoggerFactory;
  * A <a href="http://camel.apache.org/data-format.html">data format</a> (
  * {@link DataFormat}) using Bindy to marshal to and from CSV files
  */
+@Dataformat("bindy-kvp")
 public class BindyKeyValuePairDataFormat extends BindyAbstractDataFormat {
 
     private static final Logger LOG = LoggerFactory.getLogger(BindyKeyValuePairDataFormat.class);
diff --git a/components/camel-bindy/src/main/resources/META-INF/services/org/apache/camel/dataformat/bindy-csv b/components/camel-bindy/src/main/resources/META-INF/services/org/apache/camel/dataformat/bindy-csv
deleted file mode 100644
index 8ccd523..0000000
--- a/components/camel-bindy/src/main/resources/META-INF/services/org/apache/camel/dataformat/bindy-csv
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.dataformat.bindy.csv.BindyCsvDataFormat
diff --git a/components/camel-bindy/src/main/resources/META-INF/services/org/apache/camel/dataformat/bindy-fixed b/components/camel-bindy/src/main/resources/META-INF/services/org/apache/camel/dataformat/bindy-fixed
deleted file mode 100644
index 7654200..0000000
--- a/components/camel-bindy/src/main/resources/META-INF/services/org/apache/camel/dataformat/bindy-fixed
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.dataformat.bindy.fixed.BindyFixedLengthDataFormat
diff --git a/components/camel-bindy/src/main/resources/META-INF/services/org/apache/camel/dataformat/bindy-kvp b/components/camel-bindy/src/main/resources/META-INF/services/org/apache/camel/dataformat/bindy-kvp
deleted file mode 100644
index 1a9cb8b..0000000
--- a/components/camel-bindy/src/main/resources/META-INF/services/org/apache/camel/dataformat/bindy-kvp
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.dataformat.bindy.kvp.BindyKeyValuePairDataFormat
diff --git a/components/camel-bonita/src/main/java/org/apache/camel/component/bonita/BonitaComponent.java b/components/camel-bonita/src/main/java/org/apache/camel/component/bonita/BonitaComponent.java
index 72c3c7d..6480fcd 100644
--- a/components/camel-bonita/src/main/java/org/apache/camel/component/bonita/BonitaComponent.java
+++ b/components/camel-bonita/src/main/java/org/apache/camel/component/bonita/BonitaComponent.java
@@ -21,8 +21,10 @@ import java.util.Map;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.bonita.util.BonitaOperation;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
+@Component("bonita")
 public class BonitaComponent extends DefaultComponent {
 
     public BonitaComponent() {
diff --git a/components/camel-bonita/src/main/resources/META-INF/services/org/apache/camel/component/bonita b/components/camel-bonita/src/main/resources/META-INF/services/org/apache/camel/component/bonita
deleted file mode 100644
index 0017801..0000000
--- a/components/camel-bonita/src/main/resources/META-INF/services/org/apache/camel/component/bonita
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-class=org.apache.camel.component.bonita.BonitaComponent
diff --git a/components/camel-boon/src/main/java/org/apache/camel/component/boon/BoonDataFormat.java b/components/camel-boon/src/main/java/org/apache/camel/component/boon/BoonDataFormat.java
index 3b6ad8a..e6edc41 100644
--- a/components/camel-boon/src/main/java/org/apache/camel/component/boon/BoonDataFormat.java
+++ b/components/camel-boon/src/main/java/org/apache/camel/component/boon/BoonDataFormat.java
@@ -28,6 +28,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.NonManagedService;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataFormatName;
+import org.apache.camel.spi.annotations.Dataformat;
 import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.IOHelper;
@@ -40,6 +41,7 @@ import org.boon.json.ObjectMapper;
  * href="http://richardhightower.github.io/site/Boon/">Boon</a> to marshal to
  * and from JSON.
  */
+@Dataformat("boon")
 public class BoonDataFormat extends ServiceSupport implements DataFormat, DataFormatName, NonManagedService {
 
     private final ObjectMapper objectMapper;
diff --git a/components/camel-boon/src/main/resources/META-INF/services/org/apache/camel/dataformat/boon b/components/camel-boon/src/main/resources/META-INF/services/org/apache/camel/dataformat/boon
deleted file mode 100644
index 328f3d1..0000000
--- a/components/camel-boon/src/main/resources/META-INF/services/org/apache/camel/dataformat/boon
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.boon.BoonDataFormat
diff --git a/components/camel-box/camel-box-component/src/main/java/org/apache/camel/component/box/BoxComponent.java b/components/camel-box/camel-box-component/src/main/java/org/apache/camel/component/box/BoxComponent.java
index 23a3d62..785045a 100644
--- a/components/camel-box/camel-box-component/src/main/java/org/apache/camel/component/box/BoxComponent.java
+++ b/components/camel-box/camel-box-component/src/main/java/org/apache/camel/component/box/BoxComponent.java
@@ -23,8 +23,10 @@ import org.apache.camel.component.box.internal.BoxApiCollection;
 import org.apache.camel.component.box.internal.BoxApiName;
 import org.apache.camel.component.box.internal.BoxConnectionHelper;
 import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.component.AbstractApiComponent;
 
+@Component("box")
 public class BoxComponent extends AbstractApiComponent<BoxApiName, BoxConfiguration, BoxApiCollection> {
 
     @Metadata(label = "advanced")
diff --git a/components/camel-box/camel-box-component/src/main/resources/META-INF/services/org/apache/camel/component/box b/components/camel-box/camel-box-component/src/main/resources/META-INF/services/org/apache/camel/component/box
deleted file mode 100644
index 43c4063..0000000
--- a/components/camel-box/camel-box-component/src/main/resources/META-INF/services/org/apache/camel/component/box
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.box.BoxComponent
diff --git a/components/camel-braintree/src/main/java/org/apache/camel/component/braintree/BraintreeComponent.java b/components/camel-braintree/src/main/java/org/apache/camel/component/braintree/BraintreeComponent.java
index 858e078..0765fad 100644
--- a/components/camel-braintree/src/main/java/org/apache/camel/component/braintree/BraintreeComponent.java
+++ b/components/camel-braintree/src/main/java/org/apache/camel/component/braintree/BraintreeComponent.java
@@ -24,11 +24,13 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.braintree.internal.BraintreeApiCollection;
 import org.apache.camel.component.braintree.internal.BraintreeApiName;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.component.AbstractApiComponent;
 
 /**
  * Represents the component that manages {@link BraintreeEndpoint}.
  */
+@Component("braintree")
 public class BraintreeComponent extends AbstractApiComponent<BraintreeApiName, BraintreeConfiguration, BraintreeApiCollection> {
     private final Map<String, BraintreeGateway> gateways;
 
diff --git a/components/camel-braintree/src/main/resources/META-INF/services/org/apache/camel/component/braintree b/components/camel-braintree/src/main/resources/META-INF/services/org/apache/camel/component/braintree
deleted file mode 100644
index cb28621..0000000
--- a/components/camel-braintree/src/main/resources/META-INF/services/org/apache/camel/component/braintree
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.braintree.BraintreeComponent
diff --git a/components/camel-caffeine/src/main/java/org/apache/camel/component/caffeine/cache/CaffeineCacheComponent.java b/components/camel-caffeine/src/main/java/org/apache/camel/component/caffeine/cache/CaffeineCacheComponent.java
index f283fe4..05fee02 100644
--- a/components/camel-caffeine/src/main/java/org/apache/camel/component/caffeine/cache/CaffeineCacheComponent.java
+++ b/components/camel-caffeine/src/main/java/org/apache/camel/component/caffeine/cache/CaffeineCacheComponent.java
@@ -21,6 +21,7 @@ import java.util.Map;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.caffeine.CaffeineConfiguration;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.util.ObjectHelper;
@@ -30,6 +31,7 @@ import org.slf4j.LoggerFactory;
 /**
  * Represents the component that manages {@link DefaultComponent}.
  */
+@Component("caffeine-cache")
 public class CaffeineCacheComponent extends DefaultComponent {
     private static final Logger LOGGER = LoggerFactory.getLogger(CaffeineCacheComponent.class);
 
diff --git a/components/camel-caffeine/src/main/java/org/apache/camel/component/caffeine/load/CaffeineLoadCacheComponent.java b/components/camel-caffeine/src/main/java/org/apache/camel/component/caffeine/load/CaffeineLoadCacheComponent.java
index 46671fb..8009a34 100644
--- a/components/camel-caffeine/src/main/java/org/apache/camel/component/caffeine/load/CaffeineLoadCacheComponent.java
+++ b/components/camel-caffeine/src/main/java/org/apache/camel/component/caffeine/load/CaffeineLoadCacheComponent.java
@@ -22,6 +22,7 @@ import com.github.benmanes.caffeine.cache.LoadingCache;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.caffeine.CaffeineConfiguration;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.util.ObjectHelper;
@@ -31,6 +32,7 @@ import org.slf4j.LoggerFactory;
 /**
  * Represents the component that manages {@link DefaultComponent}.
  */
+@Component("caffeine-loadcache")
 public class CaffeineLoadCacheComponent extends DefaultComponent {
     private static final Logger LOGGER = LoggerFactory.getLogger(CaffeineLoadCacheComponent.class);
 
diff --git a/components/camel-caffeine/src/main/resources/META-INF/services/org/apache/camel/component/caffeine-cache b/components/camel-caffeine/src/main/resources/META-INF/services/org/apache/camel/component/caffeine-cache
deleted file mode 100644
index dbc98eb..0000000
--- a/components/camel-caffeine/src/main/resources/META-INF/services/org/apache/camel/component/caffeine-cache
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.caffeine.cache.CaffeineCacheComponent
diff --git a/components/camel-caffeine/src/main/resources/META-INF/services/org/apache/camel/component/caffeine-loadcache b/components/camel-caffeine/src/main/resources/META-INF/services/org/apache/camel/component/caffeine-loadcache
deleted file mode 100644
index fdd2a65..0000000
--- a/components/camel-caffeine/src/main/resources/META-INF/services/org/apache/camel/component/caffeine-loadcache
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.caffeine.load.CaffeineLoadCacheComponent
diff --git a/components/camel-cassandraql/src/main/java/org/apache/camel/component/cassandra/CassandraComponent.java b/components/camel-cassandraql/src/main/java/org/apache/camel/component/cassandra/CassandraComponent.java
index 9d030af..57a3e15 100644
--- a/components/camel-cassandraql/src/main/java/org/apache/camel/component/cassandra/CassandraComponent.java
+++ b/components/camel-cassandraql/src/main/java/org/apache/camel/component/cassandra/CassandraComponent.java
@@ -20,6 +20,7 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.util.StringHelper;
@@ -38,6 +39,7 @@ import org.apache.camel.util.StringHelper;
  * <li>cql:bean:clusterRef/keyspace</li>
  * </ul>
  */
+@Component("cql")
 public class CassandraComponent extends DefaultComponent {
 
     public CassandraComponent() {
diff --git a/components/camel-cassandraql/src/main/resources/META-INF/services/org/apache/camel/component/cql b/components/camel-cassandraql/src/main/resources/META-INF/services/org/apache/camel/component/cql
deleted file mode 100644
index 66c5093..0000000
--- a/components/camel-cassandraql/src/main/resources/META-INF/services/org/apache/camel/component/cql
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.cassandra.CassandraComponent
diff --git a/components/camel-chronicle/src/main/java/org/apache/camel/component/chronicle/engine/ChronicleEngineComponent.java b/components/camel-chronicle/src/main/java/org/apache/camel/component/chronicle/engine/ChronicleEngineComponent.java
index 33e55da..0fdcbca 100644
--- a/components/camel-chronicle/src/main/java/org/apache/camel/component/chronicle/engine/ChronicleEngineComponent.java
+++ b/components/camel-chronicle/src/main/java/org/apache/camel/component/chronicle/engine/ChronicleEngineComponent.java
@@ -20,12 +20,14 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.util.StringHelper;
 
 /**
  * Represents the component that manages {@link ChronicleEngineEndpoint}.
  */
+@Component("chronicle-engine")
 public class ChronicleEngineComponent extends DefaultComponent {
     
     public ChronicleEngineComponent() {
diff --git a/components/camel-chronicle/src/main/resources/META-INF/services/org/apache/camel/component/chronicle-engine b/components/camel-chronicle/src/main/resources/META-INF/services/org/apache/camel/component/chronicle-engine
deleted file mode 100644
index 09777f5..0000000
--- a/components/camel-chronicle/src/main/resources/META-INF/services/org/apache/camel/component/chronicle-engine
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.chronicle.engine.ChronicleEngineComponent
diff --git a/components/camel-chunk/src/main/java/org/apache/camel/component/chunk/ChunkComponent.java b/components/camel-chunk/src/main/java/org/apache/camel/component/chunk/ChunkComponent.java
index 53d1857..2375794 100644
--- a/components/camel-chunk/src/main/java/org/apache/camel/component/chunk/ChunkComponent.java
+++ b/components/camel-chunk/src/main/java/org/apache/camel/component/chunk/ChunkComponent.java
@@ -19,8 +19,10 @@ package org.apache.camel.component.chunk;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
+@Component("chunk")
 public class ChunkComponent extends DefaultComponent {
 
     public ChunkComponent() {
diff --git a/components/camel-chunk/src/main/resources/META-INF/services/org/apache/camel/component/chunk b/components/camel-chunk/src/main/resources/META-INF/services/org/apache/camel/component/chunk
deleted file mode 100644
index a07813d..0000000
--- a/components/camel-chunk/src/main/resources/META-INF/services/org/apache/camel/component/chunk
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.chunk.ChunkComponent
diff --git a/components/camel-cm-sms/src/main/java/org/apache/camel/component/cm/CMComponent.java b/components/camel-cm-sms/src/main/java/org/apache/camel/component/cm/CMComponent.java
index 4e4a3be..49f41ef 100644
--- a/components/camel-cm-sms/src/main/java/org/apache/camel/component/cm/CMComponent.java
+++ b/components/camel-cm-sms/src/main/java/org/apache/camel/component/cm/CMComponent.java
@@ -26,11 +26,13 @@ import javax.validation.ValidatorFactory;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.ResolveEndpointFailedException;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
 /**
  * Represents the component that manages {@link CMEndpoint}s.
  */
+@Component("cm-sms")
 public class CMComponent extends DefaultComponent {
 
     private Validator validator;
diff --git a/components/camel-cm-sms/src/main/resources/META-INF/services/org/apache/camel/component/cm-sms b/components/camel-cm-sms/src/main/resources/META-INF/services/org/apache/camel/component/cm-sms
deleted file mode 100644
index bf9d84b..0000000
--- a/components/camel-cm-sms/src/main/resources/META-INF/services/org/apache/camel/component/cm-sms
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.cm.CMComponent
diff --git a/components/camel-cm-sms/src/main/resources/log4j2.properties b/components/camel-cm-sms/src/main/resources/log4j2.properties
deleted file mode 100644
index 12311f1..0000000
--- a/components/camel-cm-sms/src/main/resources/log4j2.properties
+++ /dev/null
@@ -1,28 +0,0 @@
-## ---------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You 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.
-## ---------------------------------------------------------------------------
-
-appender.file.type = File
-appender.file.name = file
-appender.file.fileName = target/camel-cm-sms-test.log
-appender.file.layout.type = PatternLayout
-appender.file.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
-appender.out.type = Console
-appender.out.name = out
-appender.out.layout.type = PatternLayout
-appender.out.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
-rootLogger.level = INFO
-rootLogger.appenderRef.file.ref = file
diff --git a/components/camel-cmis/src/main/java/org/apache/camel/component/cmis/CMISComponent.java b/components/camel-cmis/src/main/java/org/apache/camel/component/cmis/CMISComponent.java
index b23997c..346a81c 100644
--- a/components/camel-cmis/src/main/java/org/apache/camel/component/cmis/CMISComponent.java
+++ b/components/camel-cmis/src/main/java/org/apache/camel/component/cmis/CMISComponent.java
@@ -20,11 +20,13 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
 /**
  * Represents the component that manages {@link CMISComponent}.
  */
+@Component("cmis")
 public class CMISComponent extends DefaultComponent {
 
     private CMISSessionFacadeFactory sessionFacadeFactory;
diff --git a/components/camel-cmis/src/main/resources/META-INF/services/org/apache/camel/component/cmis b/components/camel-cmis/src/main/resources/META-INF/services/org/apache/camel/component/cmis
deleted file mode 100644
index 45144a3..0000000
--- a/components/camel-cmis/src/main/resources/META-INF/services/org/apache/camel/component/cmis
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.cmis.CMISComponent
diff --git a/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPComponent.java b/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPComponent.java
index d8d6b88..4282f9b 100644
--- a/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPComponent.java
+++ b/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPComponent.java
@@ -25,6 +25,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Consumer;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Processor;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.spi.RestConfiguration;
 import org.apache.camel.spi.RestConsumerFactory;
@@ -40,6 +41,7 @@ import org.slf4j.LoggerFactory;
 /**
  * Represents the component that manages {@link CoAPEndpoint}.
  */
+@Component("coap")
 public class CoAPComponent extends DefaultComponent implements RestConsumerFactory {
     static final int DEFAULT_PORT = 5684;
     private static final Logger LOG = LoggerFactory.getLogger(CoAPComponent.class);
diff --git a/components/camel-coap/src/main/resources/LICENSE.txt b/components/camel-coap/src/main/resources/LICENSE.txt
deleted file mode 100644
index 6b0b127..0000000
--- a/components/camel-coap/src/main/resources/LICENSE.txt
+++ /dev/null
@@ -1,203 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   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.
-
diff --git a/components/camel-coap/src/main/resources/META-INF/services/org/apache/camel/component/coap b/components/camel-coap/src/main/resources/META-INF/services/org/apache/camel/component/coap
deleted file mode 100644
index e0129bc..0000000
--- a/components/camel-coap/src/main/resources/META-INF/services/org/apache/camel/component/coap
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.coap.CoAPComponent
diff --git a/components/camel-coap/src/main/resources/NOTICE.txt b/components/camel-coap/src/main/resources/NOTICE.txt
deleted file mode 100644
index 2e215bf..0000000
--- a/components/camel-coap/src/main/resources/NOTICE.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-   =========================================================================
-   ==  NOTICE file corresponding to the section 4 d of                    ==
-   ==  the Apache License, Version 2.0,                                   ==
-   ==  in this case for the Apache Camel distribution.                    ==
-   =========================================================================
-
-   This product includes software developed by
-   The Apache Software Foundation (http://www.apache.org/).
-
-   Please read the different LICENSE files present in the licenses directory of
-   this distribution.
diff --git a/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdComponent.java b/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdComponent.java
index c0ab11a..a5d2a01 100644
--- a/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdComponent.java
+++ b/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdComponent.java
@@ -27,6 +27,7 @@ import javax.servlet.DispatcherType;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.SSLContextParametersAware;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.support.jsse.SSLContextParameters;
@@ -51,6 +52,7 @@ import org.slf4j.LoggerFactory;
 /**
  * Component for Jetty Cometd
  */
+@Component("cometd,cometds")
 public class CometdComponent extends DefaultComponent implements SSLContextParametersAware {
     private static final Logger LOG = LoggerFactory.getLogger(CometdComponent.class);
 
diff --git a/components/camel-cometd/src/main/resources/META-INF/services/org/apache/camel/component/cometd b/components/camel-cometd/src/main/resources/META-INF/services/org/apache/camel/component/cometd
deleted file mode 100644
index 13c22a7..0000000
--- a/components/camel-cometd/src/main/resources/META-INF/services/org/apache/camel/component/cometd
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-class=org.apache.camel.component.cometd.CometdComponent
diff --git a/components/camel-cometd/src/main/resources/META-INF/services/org/apache/camel/component/cometds b/components/camel-cometd/src/main/resources/META-INF/services/org/apache/camel/component/cometds
deleted file mode 100644
index 13c22a7..0000000
--- a/components/camel-cometd/src/main/resources/META-INF/services/org/apache/camel/component/cometds
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-class=org.apache.camel.component.cometd.CometdComponent
diff --git a/components/camel-consul/src/main/java/org/apache/camel/component/consul/ConsulComponent.java b/components/camel-consul/src/main/java/org/apache/camel/component/consul/ConsulComponent.java
index 04b2879..3c6476d 100644
--- a/components/camel-consul/src/main/java/org/apache/camel/component/consul/ConsulComponent.java
+++ b/components/camel-consul/src/main/java/org/apache/camel/component/consul/ConsulComponent.java
@@ -33,6 +33,7 @@ import org.apache.camel.component.consul.endpoint.ConsulKeyValueProducer;
 import org.apache.camel.component.consul.endpoint.ConsulPreparedQueryProducer;
 import org.apache.camel.component.consul.endpoint.ConsulSessionProducer;
 import org.apache.camel.component.consul.endpoint.ConsulStatusProducer;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.support.jsse.SSLContextParameters;
@@ -40,6 +41,7 @@ import org.apache.camel.support.jsse.SSLContextParameters;
 /**
  * Represents the component that manages {@link ConsulEndpoint}.
  */
+@Component("consul")
 public class ConsulComponent extends DefaultComponent implements SSLContextParametersAware {
 
     @Metadata(label = "advanced")
diff --git a/components/camel-consul/src/main/resources/META-INF/services/org/apache/camel/component/consul b/components/camel-consul/src/main/resources/META-INF/services/org/apache/camel/component/consul
deleted file mode 100644
index da084e1..0000000
--- a/components/camel-consul/src/main/resources/META-INF/services/org/apache/camel/component/consul
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.consul.ConsulComponent
diff --git a/components/camel-corda/src/main/java/org/apache/camel/component/corda/CordaComponent.java b/components/camel-corda/src/main/java/org/apache/camel/component/corda/CordaComponent.java
index 13d3fa4..6d977bc 100644
--- a/components/camel-corda/src/main/java/org/apache/camel/component/corda/CordaComponent.java
+++ b/components/camel-corda/src/main/java/org/apache/camel/component/corda/CordaComponent.java
@@ -21,11 +21,13 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 
 import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
 /**
  * Represents the component that manages {@link CordaComponent}.
  */
+@Component("corda")
 public class CordaComponent extends DefaultComponent {
 
     @Metadata(description = "Default configuration")
diff --git a/components/camel-corda/src/main/resources/META-INF/services/org/apache/camel/component/corda b/components/camel-corda/src/main/resources/META-INF/services/org/apache/camel/component/corda
deleted file mode 100755
index b7423d9..0000000
--- a/components/camel-corda/src/main/resources/META-INF/services/org/apache/camel/component/corda
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.corda.CordaComponent
diff --git a/components/camel-couchbase/src/main/java/org/apache/camel/component/couchbase/CouchbaseComponent.java b/components/camel-couchbase/src/main/java/org/apache/camel/component/couchbase/CouchbaseComponent.java
index 1bd6c2b..1cbac3b 100644
--- a/components/camel-couchbase/src/main/java/org/apache/camel/component/couchbase/CouchbaseComponent.java
+++ b/components/camel-couchbase/src/main/java/org/apache/camel/component/couchbase/CouchbaseComponent.java
@@ -19,11 +19,13 @@ package org.apache.camel.component.couchbase;
 import java.util.Map;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
 /**
  * Couchbase component.
  */
+@Component("couchbase")
 public class CouchbaseComponent extends DefaultComponent {
 
     public CouchbaseComponent() {
diff --git a/components/camel-couchbase/src/main/resources/META-INF/services/org/apache/camel/component/couchbase b/components/camel-couchbase/src/main/resources/META-INF/services/org/apache/camel/component/couchbase
deleted file mode 100644
index c580c63..0000000
--- a/components/camel-couchbase/src/main/resources/META-INF/services/org/apache/camel/component/couchbase
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.couchbase.CouchbaseComponent
-
diff --git a/components/camel-couchdb/src/main/java/org/apache/camel/component/couchdb/CouchDbComponent.java b/components/camel-couchdb/src/main/java/org/apache/camel/component/couchdb/CouchDbComponent.java
index 9f7aedc..9b9f613 100644
--- a/components/camel-couchdb/src/main/java/org/apache/camel/component/couchdb/CouchDbComponent.java
+++ b/components/camel-couchdb/src/main/java/org/apache/camel/component/couchdb/CouchDbComponent.java
@@ -19,8 +19,10 @@ package org.apache.camel.component.couchdb;
 import java.util.Map;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
+@Component("couchdb")
 public class CouchDbComponent extends DefaultComponent {
 
     public CouchDbComponent() {
diff --git a/components/camel-couchdb/src/main/resources/META-INF/services/org/apache/camel/component/couchdb b/components/camel-couchdb/src/main/resources/META-INF/services/org/apache/camel/component/couchdb
deleted file mode 100644
index 1dede52..0000000
--- a/components/camel-couchdb/src/main/resources/META-INF/services/org/apache/camel/component/couchdb
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.couchdb.CouchDbComponent
\ No newline at end of file
diff --git a/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/CryptoCmsComponent.java b/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/CryptoCmsComponent.java
index 90db00d..209211d 100644
--- a/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/CryptoCmsComponent.java
+++ b/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/CryptoCmsComponent.java
@@ -34,11 +34,13 @@ import org.apache.camel.component.crypto.cms.sig.SignedDataCreator;
 import org.apache.camel.component.crypto.cms.sig.SignedDataCreatorConfiguration;
 import org.apache.camel.component.crypto.cms.sig.SignedDataVerifierConfiguration;
 import org.apache.camel.component.crypto.cms.sig.SignedDataVerifierFromHeader;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.util.ObjectHelper;
 import org.bouncycastle.jce.provider.BouncyCastleProvider;
 
+@Component("crypto-cms")
 public class CryptoCmsComponent extends DefaultComponent {
 
     @Metadata(label = "advanced")
diff --git a/components/camel-crypto-cms/src/main/resources/META-INF/services/org/apache/camel/component/crypto-cms b/components/camel-crypto-cms/src/main/resources/META-INF/services/org/apache/camel/component/crypto-cms
deleted file mode 100644
index 542d209..0000000
--- a/components/camel-crypto-cms/src/main/resources/META-INF/services/org/apache/camel/component/crypto-cms
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.crypto.cms.CryptoCmsComponent
diff --git a/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureComponent.java b/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureComponent.java
index 8ec0835..63cdb02 100644
--- a/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureComponent.java
+++ b/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureComponent.java
@@ -22,10 +22,12 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.util.ObjectHelper;
 
+@Component("crypto")
 public class DigitalSignatureComponent extends DefaultComponent {
 
     @Metadata(label = "advanced")
diff --git a/components/camel-crypto/src/main/java/org/apache/camel/converter/crypto/CryptoDataFormat.java b/components/camel-crypto/src/main/java/org/apache/camel/converter/crypto/CryptoDataFormat.java
index dc6c830..88202e3 100644
--- a/components/camel-crypto/src/main/java/org/apache/camel/converter/crypto/CryptoDataFormat.java
+++ b/components/camel-crypto/src/main/java/org/apache/camel/converter/crypto/CryptoDataFormat.java
@@ -36,6 +36,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.converter.stream.OutputStreamBuilder;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataFormatName;
+import org.apache.camel.spi.annotations.Dataformat;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.util.IOHelper;
@@ -69,6 +70,7 @@ import org.slf4j.LoggerFactory;
  * <li>http://en.wikipedia.org/wiki/HMAC</li>
  * </ul>
  */
+@Dataformat("crypto")
 public class CryptoDataFormat extends ServiceSupport implements DataFormat, DataFormatName {
 
     public static final String KEY = "CamelCryptoKey";
diff --git a/components/camel-crypto/src/main/java/org/apache/camel/converter/crypto/PGPKeyAccessDataFormat.java b/components/camel-crypto/src/main/java/org/apache/camel/converter/crypto/PGPKeyAccessDataFormat.java
index 50b9f47..e2d81e3 100644
--- a/components/camel-crypto/src/main/java/org/apache/camel/converter/crypto/PGPKeyAccessDataFormat.java
+++ b/components/camel-crypto/src/main/java/org/apache/camel/converter/crypto/PGPKeyAccessDataFormat.java
@@ -33,6 +33,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.converter.stream.OutputStreamBuilder;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataFormatName;
+import org.apache.camel.spi.annotations.Dataformat;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.util.IOHelper;
@@ -77,6 +78,7 @@ import org.slf4j.LoggerFactory;
  * If you want to provide the key access via keyrings in the format of a byte
  * array or file, then you should use the class {@link PGPDataFormat}.
  */
+@Dataformat("pgp")
 public class PGPKeyAccessDataFormat extends ServiceSupport implements DataFormat, DataFormatName {
 
     public static final String KEY_USERID = "CamelPGPDataFormatKeyUserid";
diff --git a/components/camel-crypto/src/main/resources/META-INF/services/org/apache/camel/component/crypto b/components/camel-crypto/src/main/resources/META-INF/services/org/apache/camel/component/crypto
deleted file mode 100644
index 9131405..0000000
--- a/components/camel-crypto/src/main/resources/META-INF/services/org/apache/camel/component/crypto
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.crypto.DigitalSignatureComponent
diff --git a/components/camel-crypto/src/main/resources/META-INF/services/org/apache/camel/dataformat/crypto b/components/camel-crypto/src/main/resources/META-INF/services/org/apache/camel/dataformat/crypto
deleted file mode 100644
index faa4b58..0000000
--- a/components/camel-crypto/src/main/resources/META-INF/services/org/apache/camel/dataformat/crypto
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-class=org.apache.camel.converter.crypto.CryptoDataFormat
diff --git a/components/camel-crypto/src/main/resources/META-INF/services/org/apache/camel/dataformat/pgp b/components/camel-crypto/src/main/resources/META-INF/services/org/apache/camel/dataformat/pgp
deleted file mode 100644
index 38dc61b..0000000
--- a/components/camel-crypto/src/main/resources/META-INF/services/org/apache/camel/dataformat/pgp
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-class=org.apache.camel.converter.crypto.PGPDataFormat
diff --git a/components/camel-csv/src/main/java/org/apache/camel/dataformat/csv/CsvDataFormat.java b/components/camel-csv/src/main/java/org/apache/camel/dataformat/csv/CsvDataFormat.java
index c6f1e1a..e9bee40 100644
--- a/components/camel-csv/src/main/java/org/apache/camel/dataformat/csv/CsvDataFormat.java
+++ b/components/camel-csv/src/main/java/org/apache/camel/dataformat/csv/CsvDataFormat.java
@@ -23,6 +23,7 @@ import java.util.Arrays;
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataFormatName;
+import org.apache.camel.spi.annotations.Dataformat;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.commons.csv.CSVFormat;
 import org.apache.commons.csv.QuoteMode;
@@ -36,6 +37,7 @@ import org.apache.commons.csv.QuoteMode;
  * Autogeneration can be disabled. In this case, only the fields defined in
  * csvConfig are written on the output.
  */
+@Dataformat("csv")
 public class CsvDataFormat extends ServiceSupport implements DataFormat, DataFormatName {
     // CSV format options
     private CSVFormat format = CSVFormat.DEFAULT;
diff --git a/components/camel-csv/src/main/resources/META-INF/services/org/apache/camel/dataformat/csv b/components/camel-csv/src/main/resources/META-INF/services/org/apache/camel/dataformat/csv
deleted file mode 100644
index acd7044..0000000
--- a/components/camel-csv/src/main/resources/META-INF/services/org/apache/camel/dataformat/csv
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.dataformat.csv.CsvDataFormat
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfComponent.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfComponent.java
index c0f79c9..d5a7ed6 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfComponent.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfComponent.java
@@ -24,6 +24,7 @@ import org.apache.camel.SSLContextParametersAware;
 import org.apache.camel.component.cxf.common.message.CxfConstants;
 import org.apache.camel.impl.HeaderFilterStrategyComponent;
 import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.IntrospectionSupport;
 import org.apache.cxf.message.Message;
@@ -31,6 +32,7 @@ import org.apache.cxf.message.Message;
 /**
  * Defines the <a href="http://camel.apache.org/cxf.html">CXF Component</a>
  */
+@Component("cxf")
 public class CxfComponent extends HeaderFilterStrategyComponent implements SSLContextParametersAware {
 
     @Metadata(label = "advanced")
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsComponent.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsComponent.java
index 200f8db..7bedb0e 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsComponent.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsComponent.java
@@ -27,6 +27,7 @@ import org.apache.camel.component.cxf.blueprint.BlueprintSupport;
 import org.apache.camel.component.cxf.common.message.CxfConstants;
 import org.apache.camel.impl.HeaderFilterStrategyComponent;
 import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.util.CastUtils;
 import org.apache.camel.support.ObjectHelper;
@@ -37,6 +38,7 @@ import org.slf4j.LoggerFactory;
 /**
  * Defines the <a href="http://camel.apache.org/cxfrs.html">CXF RS Component</a> 
  */
+@Component("cxfrs")
 public class CxfRsComponent extends HeaderFilterStrategyComponent implements SSLContextParametersAware {
 
     private static final Logger LOG = LoggerFactory.getLogger(CxfRsComponent.class);
diff --git a/components/camel-cxf/src/main/resources/META-INF/services/org/apache/camel/component/cxf b/components/camel-cxf/src/main/resources/META-INF/services/org/apache/camel/component/cxf
deleted file mode 100644
index 3ac6def..0000000
--- a/components/camel-cxf/src/main/resources/META-INF/services/org/apache/camel/component/cxf
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.cxf.CxfComponent
diff --git a/components/camel-cxf/src/main/resources/META-INF/services/org/apache/camel/component/cxfbean b/components/camel-cxf/src/main/resources/META-INF/services/org/apache/camel/component/cxfbean
deleted file mode 100644
index ffed023..0000000
--- a/components/camel-cxf/src/main/resources/META-INF/services/org/apache/camel/component/cxfbean
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.cxf.cxfbean.CxfBeanComponent
diff --git a/components/camel-cxf/src/main/resources/META-INF/services/org/apache/camel/component/cxfrs b/components/camel-cxf/src/main/resources/META-INF/services/org/apache/camel/component/cxfrs
deleted file mode 100644
index 3cddd7d..0000000
--- a/components/camel-cxf/src/main/resources/META-INF/services/org/apache/camel/component/cxfrs
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.cxf.jaxrs.CxfRsComponent
diff --git a/components/camel-digitalocean/src/main/java/org/apache/camel/component/digitalocean/DigitalOceanComponent.java b/components/camel-digitalocean/src/main/java/org/apache/camel/component/digitalocean/DigitalOceanComponent.java
index 56ac1e7..a09f42c 100644
--- a/components/camel-digitalocean/src/main/java/org/apache/camel/component/digitalocean/DigitalOceanComponent.java
+++ b/components/camel-digitalocean/src/main/java/org/apache/camel/component/digitalocean/DigitalOceanComponent.java
@@ -20,6 +20,7 @@ import java.util.Map;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.digitalocean.constants.DigitalOceanResources;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
@@ -28,6 +29,7 @@ import org.slf4j.LoggerFactory;
 /**
  * Represents the component that manages {@link DigitalOceanEndpoint}.
  */
+@Component("digitalocean")
 public class DigitalOceanComponent extends DefaultComponent {
 
     private static final transient Logger LOG = LoggerFactory.getLogger(DigitalOceanComponent.class);
diff --git a/components/camel-digitalocean/src/main/resources/META-INF/services/org/apache/camel/component/digitalocean b/components/camel-digitalocean/src/main/resources/META-INF/services/org/apache/camel/component/digitalocean
deleted file mode 100644
index 05cf444..0000000
--- a/components/camel-digitalocean/src/main/resources/META-INF/services/org/apache/camel/component/digitalocean
+++ /dev/null
@@ -1,18 +0,0 @@
-## ---------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You 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.
-## ---------------------------------------------------------------------------
-
-class=org.apache.camel.component.digitalocean.DigitalOceanComponent
diff --git a/components/camel-digitalocean/src/main/resources/log4j2.properties b/components/camel-digitalocean/src/main/resources/log4j2.properties
deleted file mode 100644
index a7687ab..0000000
--- a/components/camel-digitalocean/src/main/resources/log4j2.properties
+++ /dev/null
@@ -1,22 +0,0 @@
-## ---------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You 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.
-## ---------------------------------------------------------------------------
-appender.out.type=Console
-appender.out.name=out
-appender.out.layout.type=PatternLayout
-appender.out.layout.pattern=[%30.30t] %-30.30c{1} %-5p %m%n
-rootLogger.level=DEBUG
-rootLogger.appenderRef.out.ref=out
diff --git a/components/camel-disruptor/src/main/java/org/apache/camel/component/disruptor/DisruptorComponent.java b/components/camel-disruptor/src/main/java/org/apache/camel/component/disruptor/DisruptorComponent.java
index d034bd2..4bf4445 100644
--- a/components/camel-disruptor/src/main/java/org/apache/camel/component/disruptor/DisruptorComponent.java
+++ b/components/camel-disruptor/src/main/java/org/apache/camel/component/disruptor/DisruptorComponent.java
@@ -20,6 +20,7 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.spi.Metadata;
 import org.slf4j.Logger;
@@ -30,6 +31,7 @@ import org.slf4j.LoggerFactory;
  * for asynchronous SEDA exchanges on an
  * <a href="https://github.com/LMAX-Exchange/disruptor">LMAX Disruptor</a> within a CamelContext
  */
+@Component("disruptor")
 public class DisruptorComponent extends DefaultComponent {
     
     public static final int DEFAULT_BUFFER_SIZE = 1024;
diff --git a/components/camel-disruptor/src/main/java/org/apache/camel/component/disruptor/vm/DisruptorVmComponent.java b/components/camel-disruptor/src/main/java/org/apache/camel/component/disruptor/vm/DisruptorVmComponent.java
index 7a8ce62..a77b021 100644
--- a/components/camel-disruptor/src/main/java/org/apache/camel/component/disruptor/vm/DisruptorVmComponent.java
+++ b/components/camel-disruptor/src/main/java/org/apache/camel/component/disruptor/vm/DisruptorVmComponent.java
@@ -22,6 +22,7 @@ import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.camel.component.disruptor.DisruptorComponent;
 import org.apache.camel.component.disruptor.DisruptorReference;
+import org.apache.camel.spi.annotations.Component;
 
 /**
  * An implementation of the <a href="http://camel.apache.org/vm.html">VM components</a>
@@ -30,6 +31,7 @@ import org.apache.camel.component.disruptor.DisruptorReference;
  * the camel-disruptor.jar. i.e. to handle communicating across CamelContext instances and possibly across
  * web application contexts, providing that camel-disruptor.jar is on the system classpath.
  */
+@Component("disruptor-vm")
 public class DisruptorVmComponent extends DisruptorComponent {
     protected static final Map<String, DisruptorReference> DISRUPTORS = new HashMap<>();
     private static final AtomicInteger START_COUNTER = new AtomicInteger();
diff --git a/components/camel-disruptor/src/main/resources/META-INF/services/org/apache/camel/component/disruptor b/components/camel-disruptor/src/main/resources/META-INF/services/org/apache/camel/component/disruptor
deleted file mode 100644
index bf2d43a..0000000
--- a/components/camel-disruptor/src/main/resources/META-INF/services/org/apache/camel/component/disruptor
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.disruptor.DisruptorComponent
diff --git a/components/camel-disruptor/src/main/resources/META-INF/services/org/apache/camel/component/disruptor-vm b/components/camel-disruptor/src/main/resources/META-INF/services/org/apache/camel/component/disruptor-vm
deleted file mode 100644
index 3f7666f..0000000
--- a/components/camel-disruptor/src/main/resources/META-INF/services/org/apache/camel/component/disruptor-vm
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.disruptor.vm.DisruptorVmComponent
diff --git a/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsComponent.java b/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsComponent.java
index e7f371f..6120fca 100644
--- a/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsComponent.java
+++ b/components/camel-dns/src/main/java/org/apache/camel/component/dns/DnsComponent.java
@@ -19,6 +19,7 @@ package org.apache.camel.component.dns;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
 /**
@@ -67,6 +68,7 @@ import org.apache.camel.support.DefaultComponent;
  * <p/>
  * </p>
  */
+@Component("dns")
 public class DnsComponent extends DefaultComponent {
 
     public DnsComponent() {
diff --git a/components/camel-dns/src/main/resources/META-INF/services/org/apache/camel/component/dns b/components/camel-dns/src/main/resources/META-INF/services/org/apache/camel/component/dns
deleted file mode 100644
index 2f22a1b..0000000
--- a/components/camel-dns/src/main/resources/META-INF/services/org/apache/camel/component/dns
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you 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.
-#
-class=org.apache.camel.component.dns.DnsComponent
\ No newline at end of file
diff --git a/components/camel-docker/src/main/java/org/apache/camel/component/docker/DockerComponent.java b/components/camel-docker/src/main/java/org/apache/camel/component/docker/DockerComponent.java
index 71b0fa4..b7eef6a 100644
--- a/components/camel-docker/src/main/java/org/apache/camel/component/docker/DockerComponent.java
+++ b/components/camel-docker/src/main/java/org/apache/camel/component/docker/DockerComponent.java
@@ -22,12 +22,14 @@ import java.util.Map;
 import com.github.dockerjava.api.DockerClient;
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.docker.exception.DockerException;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.spi.Metadata;
 
 /**
  * Represents the component that manages {@link DockerEndpoint}.
  */
+@Component("docker")
 public class DockerComponent extends DefaultComponent {
 
     @Metadata(label = "advanced")
diff --git a/components/camel-docker/src/main/resources/META-INF/services/org/apache/camel/component/docker b/components/camel-docker/src/main/resources/META-INF/services/org/apache/camel/component/docker
deleted file mode 100644
index 32402d0..0000000
--- a/components/camel-docker/src/main/resources/META-INF/services/org/apache/camel/component/docker
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-class=org.apache.camel.component.docker.DockerComponent
diff --git a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerComponent.java b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerComponent.java
index 880d239..a81c900 100644
--- a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerComponent.java
+++ b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerComponent.java
@@ -21,8 +21,10 @@ import java.util.Map;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.converter.dozer.DozerBeanMapperConfiguration;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
+@Component("dozer")
 public class DozerComponent extends DefaultComponent {
 
     public DozerComponent() {
diff --git a/components/camel-dozer/src/main/resources/META-INF/services/org/apache/camel/component/dozer b/components/camel-dozer/src/main/resources/META-INF/services/org/apache/camel/component/dozer
deleted file mode 100644
index 22afe69..0000000
--- a/components/camel-dozer/src/main/resources/META-INF/services/org/apache/camel/component/dozer
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-class=org.apache.camel.component.dozer.DozerComponent
\ No newline at end of file
diff --git a/components/camel-drill/src/main/java/org/apache/camel/component/drill/DrillComponent.java b/components/camel-drill/src/main/java/org/apache/camel/component/drill/DrillComponent.java
index 8bb7445..15dea49 100644
--- a/components/camel-drill/src/main/java/org/apache/camel/component/drill/DrillComponent.java
+++ b/components/camel-drill/src/main/java/org/apache/camel/component/drill/DrillComponent.java
@@ -20,12 +20,14 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
 /**
  * Represents the component that manages {@link DrillEndpoint}. It holds the
  * list of named direct endpoints.
  */
+@Component("drill")
 public class DrillComponent extends DefaultComponent {
 
     public DrillComponent() {
diff --git a/components/camel-drill/src/main/resources/META-INF/services/org/apache/camel/component/drill b/components/camel-drill/src/main/resources/META-INF/services/org/apache/camel/component/drill
deleted file mode 100644
index 5104ea3..0000000
--- a/components/camel-drill/src/main/resources/META-INF/services/org/apache/camel/component/drill
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-class=org.apache.camel.component.drill.DrillComponent
diff --git a/components/camel-dropbox/src/main/java/org/apache/camel/component/dropbox/DropboxComponent.java b/components/camel-dropbox/src/main/java/org/apache/camel/component/dropbox/DropboxComponent.java
index 26d0ca1..3051e34 100644
--- a/components/camel-dropbox/src/main/java/org/apache/camel/component/dropbox/DropboxComponent.java
+++ b/components/camel-dropbox/src/main/java/org/apache/camel/component/dropbox/DropboxComponent.java
@@ -24,10 +24,12 @@ import org.apache.camel.component.dropbox.util.DropboxOperation;
 import org.apache.camel.component.dropbox.util.DropboxPropertyManager;
 import org.apache.camel.component.dropbox.util.DropboxUploadMode;
 import org.apache.camel.component.dropbox.validator.DropboxConfigurationValidator;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@Component("dropbox")
 public class DropboxComponent extends DefaultComponent {
 
     private static final transient Logger LOG = LoggerFactory.getLogger(DropboxComponent.class);
diff --git a/components/camel-dropbox/src/main/resources/META-INF/services/org/apache/camel/component/dropbox b/components/camel-dropbox/src/main/resources/META-INF/services/org/apache/camel/component/dropbox
deleted file mode 100755
index 1ed5712..0000000
--- a/components/camel-dropbox/src/main/resources/META-INF/services/org/apache/camel/component/dropbox
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.dropbox.DropboxComponent
diff --git a/components/camel-ehcache/src/main/java/org/apache/camel/component/ehcache/EhcacheComponent.java b/components/camel-ehcache/src/main/java/org/apache/camel/component/ehcache/EhcacheComponent.java
index 0f9a801..289ec2e 100644
--- a/components/camel-ehcache/src/main/java/org/apache/camel/component/ehcache/EhcacheComponent.java
+++ b/components/camel-ehcache/src/main/java/org/apache/camel/component/ehcache/EhcacheComponent.java
@@ -24,6 +24,7 @@ import java.util.concurrent.ConcurrentMap;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.spi.ClassResolver;
 import org.apache.camel.spi.Metadata;
@@ -40,6 +41,7 @@ import org.slf4j.LoggerFactory;
 /**
  * Represents the component that manages {@link DefaultComponent}.
  */
+@Component("ehcache")
 public class EhcacheComponent extends DefaultComponent {
     private static final Logger LOGGER = LoggerFactory.getLogger(EhcacheComponent.class);
 
diff --git a/components/camel-ehcache/src/main/resources/META-INF/services/org/apache/camel/component/ehcache b/components/camel-ehcache/src/main/resources/META-INF/services/org/apache/camel/component/ehcache
deleted file mode 100644
index 9b3dafd..0000000
--- a/components/camel-ehcache/src/main/resources/META-INF/services/org/apache/camel/component/ehcache
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.ehcache.EhcacheComponent
diff --git a/components/camel-ejb/src/main/java/org/apache/camel/component/ejb/EjbComponent.java b/components/camel-ejb/src/main/java/org/apache/camel/component/ejb/EjbComponent.java
index 6682d18..af57778 100644
--- a/components/camel-ejb/src/main/java/org/apache/camel/component/ejb/EjbComponent.java
+++ b/components/camel-ejb/src/main/java/org/apache/camel/component/ejb/EjbComponent.java
@@ -28,10 +28,12 @@ import org.apache.camel.component.bean.BeanComponent;
 import org.apache.camel.component.bean.BeanHolder;
 import org.apache.camel.impl.JndiRegistry;
 import org.apache.camel.spi.Registry;
+import org.apache.camel.spi.annotations.Component;
 
 /**
  * EJB component to invoke EJBs like the {@link org.apache.camel.component.bean.BeanComponent}.
  */
+@Component("ejb")
 public class EjbComponent extends BeanComponent {
 
     private Context context;
diff --git a/components/camel-ejb/src/main/resources/META-INF/services/org/apache/camel/component/ejb b/components/camel-ejb/src/main/resources/META-INF/services/org/apache/camel/component/ejb
deleted file mode 100644
index 3c04121..0000000
--- a/components/camel-ejb/src/main/resources/META-INF/services/org/apache/camel/component/ejb
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.ejb.EjbComponent
\ No newline at end of file
diff --git a/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchComponent.java b/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchComponent.java
index 657913d..e26f2cf 100644
--- a/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchComponent.java
+++ b/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchComponent.java
@@ -24,6 +24,7 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.spi.Metadata;
 import org.apache.http.HttpHost;
@@ -32,6 +33,7 @@ import org.elasticsearch.client.RestClient;
 /**
  * Represents the component that manages {@link ElasticsearchEndpoint}.
  */
+@Component("elasticsearch-rest")
 public class ElasticsearchComponent extends DefaultComponent {
 
     @Metadata(label = "advanced")
diff --git a/components/camel-elasticsearch-rest/src/main/resources/META-INF/services/org/apache/camel/component/elasticsearch-rest b/components/camel-elasticsearch-rest/src/main/resources/META-INF/services/org/apache/camel/component/elasticsearch-rest
deleted file mode 100644
index af7e7da..0000000
--- a/components/camel-elasticsearch-rest/src/main/resources/META-INF/services/org/apache/camel/component/elasticsearch-rest
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.elasticsearch.ElasticsearchComponent
\ No newline at end of file
diff --git a/components/camel-elsql/src/main/java/org/apache/camel/component/elsql/ElsqlComponent.java b/components/camel-elsql/src/main/java/org/apache/camel/component/elsql/ElsqlComponent.java
index 744a890..1c636d5 100644
--- a/components/camel-elsql/src/main/java/org/apache/camel/component/elsql/ElsqlComponent.java
+++ b/components/camel-elsql/src/main/java/org/apache/camel/component/elsql/ElsqlComponent.java
@@ -21,12 +21,14 @@ import javax.sql.DataSource;
 
 import com.opengamma.elsql.ElSqlConfig;
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.support.IntrospectionSupport;
 import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
 
+@Component("elsql")
 public class ElsqlComponent extends DefaultComponent {
 
     private ElSqlDatabaseVendor databaseVendor;
diff --git a/components/camel-elsql/src/main/resources/META-INF/services/org/apache/camel/component/elsql b/components/camel-elsql/src/main/resources/META-INF/services/org/apache/camel/component/elsql
deleted file mode 100644
index d27a646..0000000
--- a/components/camel-elsql/src/main/resources/META-INF/services/org/apache/camel/component/elsql
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.elsql.ElsqlComponent
diff --git a/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdComponent.java b/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdComponent.java
index 1472b16..21ffffd 100644
--- a/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdComponent.java
+++ b/components/camel-etcd/src/main/java/org/apache/camel/component/etcd/EtcdComponent.java
@@ -22,6 +22,7 @@ import java.util.Optional;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.SSLContextParametersAware;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.util.StringHelper;
@@ -30,6 +31,7 @@ import org.apache.camel.support.jsse.SSLContextParameters;
 /**
  * Represents the component that manages {@link AbstractEtcdEndpoint}.
  */
+@Component("etcd")
 public class EtcdComponent extends DefaultComponent implements SSLContextParametersAware {
 
     @Metadata(label = "advanced")
diff --git a/components/camel-etcd/src/main/resources/META-INF/services/org/apache/camel/component/etcd b/components/camel-etcd/src/main/resources/META-INF/services/org/apache/camel/component/etcd
deleted file mode 100644
index 5d21d89..0000000
--- a/components/camel-etcd/src/main/resources/META-INF/services/org/apache/camel/component/etcd
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.etcd.EtcdComponent
diff --git a/components/camel-eventadmin/src/main/java/org/apache/camel/component/eventadmin/EventAdminComponent.java b/components/camel-eventadmin/src/main/java/org/apache/camel/component/eventadmin/EventAdminComponent.java
index 3235625..ee30f84 100644
--- a/components/camel-eventadmin/src/main/java/org/apache/camel/component/eventadmin/EventAdminComponent.java
+++ b/components/camel-eventadmin/src/main/java/org/apache/camel/component/eventadmin/EventAdminComponent.java
@@ -19,6 +19,7 @@ package org.apache.camel.component.eventadmin;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.util.ObjectHelper;
 import org.osgi.framework.BundleContext;
@@ -26,6 +27,7 @@ import org.osgi.framework.BundleContext;
 /**
  * OSGi EventAdmin component.
  */
+@Component("eventadmin")
 public class EventAdminComponent extends DefaultComponent {
 
     private BundleContext bundleContext;
diff --git a/components/camel-eventadmin/src/main/resources/META-INF/services/org/apache/camel/component/eventadmin b/components/camel-eventadmin/src/main/resources/META-INF/services/org/apache/camel/component/eventadmin
deleted file mode 100644
index dfb7aa2..0000000
--- a/components/camel-eventadmin/src/main/resources/META-INF/services/org/apache/camel/component/eventadmin
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.eventadmin.EventAdminComponent
diff --git a/components/camel-exec/src/main/java/org/apache/camel/component/exec/ExecComponent.java b/components/camel-exec/src/main/java/org/apache/camel/component/exec/ExecComponent.java
index 55e1862..879af39 100644
--- a/components/camel-exec/src/main/java/org/apache/camel/component/exec/ExecComponent.java
+++ b/components/camel-exec/src/main/java/org/apache/camel/component/exec/ExecComponent.java
@@ -20,12 +20,14 @@ import java.net.URLDecoder;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
 /**
  * Represents the component that manages {@link ExecEndpoint}. With the
  * component it is possible to execute system commands.
  */
+@Component("exec")
 public class ExecComponent extends DefaultComponent {
 
     public ExecComponent() {
diff --git a/components/camel-exec/src/main/resources/META-INF/services/org/apache/camel/component/exec b/components/camel-exec/src/main/resources/META-INF/services/org/apache/camel/component/exec
deleted file mode 100644
index 302a7d4..0000000
--- a/components/camel-exec/src/main/resources/META-INF/services/org/apache/camel/component/exec
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.exec.ExecComponent
diff --git a/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/FacebookComponent.java b/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/FacebookComponent.java
index 5448dda..0397a7c 100644
--- a/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/FacebookComponent.java
+++ b/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/FacebookComponent.java
@@ -23,6 +23,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.facebook.config.FacebookConfiguration;
 import org.apache.camel.component.facebook.config.FacebookEndpointConfiguration;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.support.IntrospectionSupport;
@@ -30,6 +31,7 @@ import org.apache.camel.support.IntrospectionSupport;
 /**
  * Represents the component that manages {@link FacebookEndpoint}.
  */
+@Component("facebook")
 public class FacebookComponent extends DefaultComponent {
 
     @Metadata(label = "advanced")
diff --git a/components/camel-facebook/src/main/resources/META-INF/services/org/apache/camel/component/facebook b/components/camel-facebook/src/main/resources/META-INF/services/org/apache/camel/component/facebook
deleted file mode 100644
index 0ee7e12..0000000
--- a/components/camel-facebook/src/main/resources/META-INF/services/org/apache/camel/component/facebook
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.facebook.FacebookComponent
diff --git a/components/camel-fastjson/src/main/java/org/apache/camel/component/fastjson/FastjsonDataFormat.java b/components/camel-fastjson/src/main/java/org/apache/camel/component/fastjson/FastjsonDataFormat.java
index 61c935e..29c4372 100644
--- a/components/camel-fastjson/src/main/java/org/apache/camel/component/fastjson/FastjsonDataFormat.java
+++ b/components/camel-fastjson/src/main/java/org/apache/camel/component/fastjson/FastjsonDataFormat.java
@@ -28,12 +28,14 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Message;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataFormatName;
+import org.apache.camel.spi.annotations.Dataformat;
 import org.apache.camel.support.ServiceSupport;
 
 /**
  * A <a href="http://camel.apache.org/data-format.html">data format</a> ({@link DataFormat})
  * using <a href="https://github.com/alibaba/fastjson">Fastjson</a> to marshal to and from JSON.
  */
+@Dataformat("json-fastjson")
 public class FastjsonDataFormat extends ServiceSupport implements DataFormat, DataFormatName {
 
     private FastJsonConfig config;
diff --git a/components/camel-fastjson/src/main/resources/META-INF/services/org/apache/camel/dataformat/json-fastjson b/components/camel-fastjson/src/main/resources/META-INF/services/org/apache/camel/dataformat/json-fastjson
deleted file mode 100644
index 7fcdaff..0000000
--- a/components/camel-fastjson/src/main/resources/META-INF/services/org/apache/camel/dataformat/json-fastjson
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.fastjson.FastjsonDataFormat
diff --git a/components/camel-fhir/camel-fhir-component/src/main/java/org/apache/camel/component/fhir/FhirComponent.java b/components/camel-fhir/camel-fhir-component/src/main/java/org/apache/camel/component/fhir/FhirComponent.java
index 2e85c3d..2dd8591 100644
--- a/components/camel-fhir/camel-fhir-component/src/main/java/org/apache/camel/component/fhir/FhirComponent.java
+++ b/components/camel-fhir/camel-fhir-component/src/main/java/org/apache/camel/component/fhir/FhirComponent.java
@@ -23,11 +23,13 @@ import org.apache.camel.component.fhir.internal.FhirApiCollection;
 import org.apache.camel.component.fhir.internal.FhirApiName;
 import org.apache.camel.component.fhir.internal.FhirHelper;
 import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.component.AbstractApiComponent;
 
 /**
  * Represents the component that manages {@link FhirEndpoint}.
  */
+@Component("fhir")
 public class FhirComponent extends AbstractApiComponent<FhirApiName, FhirConfiguration, FhirApiCollection> {
 
     @Metadata(label = "advanced")
diff --git a/components/camel-fhir/camel-fhir-component/src/main/java/org/apache/camel/component/fhir/FhirJsonDataFormat.java b/components/camel-fhir/camel-fhir-component/src/main/java/org/apache/camel/component/fhir/FhirJsonDataFormat.java
index d384b54..01b22ce 100644
--- a/components/camel-fhir/camel-fhir-component/src/main/java/org/apache/camel/component/fhir/FhirJsonDataFormat.java
+++ b/components/camel-fhir/camel-fhir-component/src/main/java/org/apache/camel/component/fhir/FhirJsonDataFormat.java
@@ -22,8 +22,10 @@ import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import ca.uhn.fhir.parser.IParser;
 import org.apache.camel.Exchange;
+import org.apache.camel.spi.annotations.Dataformat;
 import org.hl7.fhir.instance.model.api.IBaseResource;
 
+@Dataformat("fhirJson")
 public class FhirJsonDataFormat extends FhirDataFormat {
 
     @Override
diff --git a/components/camel-fhir/camel-fhir-component/src/main/java/org/apache/camel/component/fhir/FhirXmlDataFormat.java b/components/camel-fhir/camel-fhir-component/src/main/java/org/apache/camel/component/fhir/FhirXmlDataFormat.java
index 844ff96..b2e5ca3 100644
--- a/components/camel-fhir/camel-fhir-component/src/main/java/org/apache/camel/component/fhir/FhirXmlDataFormat.java
+++ b/components/camel-fhir/camel-fhir-component/src/main/java/org/apache/camel/component/fhir/FhirXmlDataFormat.java
@@ -22,8 +22,10 @@ import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import ca.uhn.fhir.parser.IParser;
 import org.apache.camel.Exchange;
+import org.apache.camel.spi.annotations.Dataformat;
 import org.hl7.fhir.instance.model.api.IBaseResource;
 
+@Dataformat("fhirXml")
 public class FhirXmlDataFormat extends FhirDataFormat {
     
 
diff --git a/components/camel-fhir/camel-fhir-component/src/main/resources/META-INF/services/org/apache/camel/component/fhir b/components/camel-fhir/camel-fhir-component/src/main/resources/META-INF/services/org/apache/camel/component/fhir
deleted file mode 100644
index da70c09..0000000
--- a/components/camel-fhir/camel-fhir-component/src/main/resources/META-INF/services/org/apache/camel/component/fhir
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.fhir.FhirComponent
diff --git a/components/camel-fhir/camel-fhir-component/src/main/resources/META-INF/services/org/apache/camel/dataformat/fhirJson b/components/camel-fhir/camel-fhir-component/src/main/resources/META-INF/services/org/apache/camel/dataformat/fhirJson
deleted file mode 100644
index 7783571..0000000
--- a/components/camel-fhir/camel-fhir-component/src/main/resources/META-INF/services/org/apache/camel/dataformat/fhirJson
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.fhir.FhirJsonDataFormat
diff --git a/components/camel-fhir/camel-fhir-component/src/main/resources/META-INF/services/org/apache/camel/dataformat/fhirXml b/components/camel-fhir/camel-fhir-component/src/main/resources/META-INF/services/org/apache/camel/dataformat/fhirXml
deleted file mode 100644
index dc4d791..0000000
--- a/components/camel-fhir/camel-fhir-component/src/main/resources/META-INF/services/org/apache/camel/dataformat/fhirXml
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.fhir.FhirXmlDataFormat
diff --git a/components/camel-flatpack/src/main/java/org/apache/camel/component/flatpack/FlatpackComponent.java b/components/camel-flatpack/src/main/java/org/apache/camel/component/flatpack/FlatpackComponent.java
index 03049df..ed200bb 100644
--- a/components/camel-flatpack/src/main/java/org/apache/camel/component/flatpack/FlatpackComponent.java
+++ b/components/camel-flatpack/src/main/java/org/apache/camel/component/flatpack/FlatpackComponent.java
@@ -19,12 +19,14 @@ package org.apache.camel.component.flatpack;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
 /**
  * A <a href="http://flatpack.sourceforge.net/">Flatpack Component</a>
  * for working with fixed width and delimited files
  */
+@Component("flatpack")
 public class FlatpackComponent extends DefaultComponent {
 
     public static final String HEADER_ID = "header";
diff --git a/components/camel-flatpack/src/main/java/org/apache/camel/dataformat/flatpack/FlatpackDataFormat.java b/components/camel-flatpack/src/main/java/org/apache/camel/dataformat/flatpack/FlatpackDataFormat.java
index 4bf0596..d2dd89b 100644
--- a/components/camel-flatpack/src/main/java/org/apache/camel/dataformat/flatpack/FlatpackDataFormat.java
+++ b/components/camel-flatpack/src/main/java/org/apache/camel/dataformat/flatpack/FlatpackDataFormat.java
@@ -37,6 +37,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.component.flatpack.DataSetList;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataFormatName;
+import org.apache.camel.spi.annotations.Dataformat;
 import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.ObjectHelper;
@@ -55,6 +56,7 @@ import org.slf4j.LoggerFactory;
  * </ul>
  * <b>Notice:</b> The Flatpack library does currently not support header and trailers for the marshal operation.
  */
+@Dataformat("flatpack")
 public class FlatpackDataFormat extends ServiceSupport implements DataFormat, DataFormatName {
     private static final Logger LOG = LoggerFactory.getLogger(FlatpackDataFormat.class);
     private ParserFactory parserFactory = DefaultParserFactory.getInstance();
diff --git a/components/camel-flatpack/src/main/resources/META-INF/services/org/apache/camel/component/flatpack b/components/camel-flatpack/src/main/resources/META-INF/services/org/apache/camel/component/flatpack
deleted file mode 100644
index 8da424f..0000000
--- a/components/camel-flatpack/src/main/resources/META-INF/services/org/apache/camel/component/flatpack
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.flatpack.FlatpackComponent
\ No newline at end of file
diff --git a/components/camel-flatpack/src/main/resources/META-INF/services/org/apache/camel/dataformat/flatpack b/components/camel-flatpack/src/main/resources/META-INF/services/org/apache/camel/dataformat/flatpack
deleted file mode 100644
index 6731ece..0000000
--- a/components/camel-flatpack/src/main/resources/META-INF/services/org/apache/camel/dataformat/flatpack
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.dataformat.flatpack.FlatpackDataFormat
diff --git a/components/camel-flink/src/main/java/org/apache/camel/component/flink/FlinkComponent.java b/components/camel-flink/src/main/java/org/apache/camel/component/flink/FlinkComponent.java
index 6fa0b95..533385c 100644
--- a/components/camel-flink/src/main/java/org/apache/camel/component/flink/FlinkComponent.java
+++ b/components/camel-flink/src/main/java/org/apache/camel/component/flink/FlinkComponent.java
@@ -19,6 +19,7 @@ package org.apache.camel.component.flink;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.streaming.api.datastream.DataStream;
@@ -26,6 +27,7 @@ import org.apache.flink.streaming.api.datastream.DataStream;
 /**
  * The flink component can be used to send DataSet or DataStream jobs to Apache Flink cluster.
  */
+@Component("flink")
 public class FlinkComponent extends DefaultComponent {
 
     private DataSet ds;
diff --git a/components/camel-flink/src/main/resources/META-INF/services/org/apache/camel/component/flink b/components/camel-flink/src/main/resources/META-INF/services/org/apache/camel/component/flink
deleted file mode 100644
index 3c36c74..0000000
--- a/components/camel-flink/src/main/resources/META-INF/services/org/apache/camel/component/flink
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.flink.FlinkComponent
diff --git a/components/camel-fop/src/main/java/org/apache/camel/component/fop/FopComponent.java b/components/camel-fop/src/main/java/org/apache/camel/component/fop/FopComponent.java
index e3ab62a..a843993 100644
--- a/components/camel-fop/src/main/java/org/apache/camel/component/fop/FopComponent.java
+++ b/components/camel-fop/src/main/java/org/apache/camel/component/fop/FopComponent.java
@@ -19,11 +19,13 @@ package org.apache.camel.component.fop;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
 /**
  * Represents the component that manages {@link FopEndpoint}.
  */
+@Component("fop")
 public class FopComponent extends DefaultComponent {
 
     public FopComponent() {
diff --git a/components/camel-fop/src/main/resources/META-INF/services/org/apache/camel/component/fop b/components/camel-fop/src/main/resources/META-INF/services/org/apache/camel/component/fop
deleted file mode 100644
index 96cdc01..0000000
--- a/components/camel-fop/src/main/resources/META-INF/services/org/apache/camel/component/fop
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.fop.FopComponent
diff --git a/components/camel-freemarker/src/main/java/org/apache/camel/component/freemarker/FreemarkerComponent.java b/components/camel-freemarker/src/main/java/org/apache/camel/component/freemarker/FreemarkerComponent.java
index 7e3ba75..99355c9 100644
--- a/components/camel-freemarker/src/main/java/org/apache/camel/component/freemarker/FreemarkerComponent.java
+++ b/components/camel-freemarker/src/main/java/org/apache/camel/component/freemarker/FreemarkerComponent.java
@@ -23,6 +23,7 @@ import freemarker.cache.NullCacheStorage;
 import freemarker.cache.URLTemplateLoader;
 import freemarker.template.Configuration;
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.util.ObjectHelper;
@@ -31,6 +32,7 @@ import org.apache.camel.support.ResourceHelper;
 /**
  * Freemarker component.
  */
+@Component("freemarker")
 public class FreemarkerComponent extends DefaultComponent {
 
     @Metadata(label = "advanced")
diff --git a/components/camel-freemarker/src/main/resources/META-INF/services/org/apache/camel/component/freemarker b/components/camel-freemarker/src/main/resources/META-INF/services/org/apache/camel/component/freemarker
deleted file mode 100644
index 05bf487..0000000
--- a/components/camel-freemarker/src/main/resources/META-INF/services/org/apache/camel/component/freemarker
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.freemarker.FreemarkerComponent
diff --git a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpComponent.java b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpComponent.java
index ebaab57..f737f9a 100644
--- a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpComponent.java
+++ b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpComponent.java
@@ -20,13 +20,18 @@ import java.net.URI;
 import java.util.Map;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.component.file.FileProcessStrategy;
 import org.apache.camel.component.file.GenericFileEndpoint;
+import org.apache.camel.component.file.remote.strategy.FtpProcessStrategyFactory;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.IntrospectionSupport;
 import org.apache.commons.net.ftp.FTPFile;
 
 /**
  * FTP Component
  */
+@Component("ftp")
+@FileProcessStrategy(FtpProcessStrategyFactory.class)
 public class FtpComponent extends RemoteFileComponent<FTPFile> {
 
     public FtpComponent() {
diff --git a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpsComponent.java b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpsComponent.java
index e5d2310..58e3280 100644
--- a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpsComponent.java
+++ b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpsComponent.java
@@ -21,8 +21,11 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.SSLContextParametersAware;
+import org.apache.camel.component.file.FileProcessStrategy;
 import org.apache.camel.component.file.GenericFileEndpoint;
+import org.apache.camel.component.file.remote.strategy.FtpProcessStrategyFactory;
 import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.IntrospectionSupport;
 import org.apache.commons.net.ftp.FTPFile;
 
@@ -31,6 +34,8 @@ import org.apache.commons.net.ftp.FTPFile;
  * <p/>
  * If desired, the JVM property <tt>-Djavax.net.debug=all</tt> can be used to see wire-level SSL details.
  */
+@Component("ftps")
+@FileProcessStrategy(FtpProcessStrategyFactory.class)
 public class FtpsComponent extends FtpComponent implements SSLContextParametersAware {
 
     @Metadata(label = "security", defaultValue = "false")
diff --git a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpComponent.java b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpComponent.java
index 359d7cc..bf35c2e 100644
--- a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpComponent.java
+++ b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpComponent.java
@@ -20,11 +20,16 @@ import java.net.URI;
 import java.util.Map;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.component.file.FileProcessStrategy;
 import org.apache.camel.component.file.GenericFileEndpoint;
+import org.apache.camel.component.file.remote.strategy.FtpProcessStrategyFactory;
+import org.apache.camel.spi.annotations.Component;
 
 /**
  * Secure FTP Component
  */
+@Component("sftp")
+@FileProcessStrategy(FtpProcessStrategyFactory.class)
 public class SftpComponent extends RemoteFileComponent<SftpRemoteFile> {
 
     public SftpComponent() {
diff --git a/components/camel-ftp/src/main/resources/META-INF/services/org/apache/camel/component/ftp b/components/camel-ftp/src/main/resources/META-INF/services/org/apache/camel/component/ftp
deleted file mode 100644
index c7d4466..0000000
--- a/components/camel-ftp/src/main/resources/META-INF/services/org/apache/camel/component/ftp
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.file.remote.FtpComponent
-strategy.factory.class=org.apache.camel.component.file.remote.strategy.FtpProcessStrategyFactory
diff --git a/components/camel-ftp/src/main/resources/META-INF/services/org/apache/camel/component/ftps b/components/camel-ftp/src/main/resources/META-INF/services/org/apache/camel/component/ftps
deleted file mode 100644
index 4957ada..0000000
--- a/components/camel-ftp/src/main/resources/META-INF/services/org/apache/camel/component/ftps
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.file.remote.FtpsComponent
-strategy.factory.class=org.apache.camel.component.file.remote.strategy.FtpProcessStrategyFactory
diff --git a/components/camel-ftp/src/main/resources/META-INF/services/org/apache/camel/component/sftp b/components/camel-ftp/src/main/resources/META-INF/services/org/apache/camel/component/sftp
deleted file mode 100644
index 87a617e..0000000
--- a/components/camel-ftp/src/main/resources/META-INF/services/org/apache/camel/component/sftp
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.file.remote.SftpComponent
-strategy.factory.class=org.apache.camel.component.file.remote.strategy.SftpProcessStrategyFactory
diff --git a/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaComponent.java b/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaComponent.java
index 980c74e..0658622 100644
--- a/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaComponent.java
+++ b/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaComponent.java
@@ -20,10 +20,12 @@ import java.net.URI;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.util.ObjectHelper;
 
+@Component("ganglia")
 public class GangliaComponent extends DefaultComponent {
 
     @Metadata(label = "advanced")
diff --git a/components/camel-ganglia/src/main/resources/META-INF/services/org/apache/camel/component/ganglia b/components/camel-ganglia/src/main/resources/META-INF/services/org/apache/camel/component/ganglia
deleted file mode 100644
index 19d4014..0000000
--- a/components/camel-ganglia/src/main/resources/META-INF/services/org/apache/camel/component/ganglia
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-class=org.apache.camel.component.ganglia.GangliaComponent
diff --git a/components/camel-geocoder/src/main/java/org/apache/camel/component/geocoder/GeoCoderComponent.java b/components/camel-geocoder/src/main/java/org/apache/camel/component/geocoder/GeoCoderComponent.java
index 37ef840..bf529a7 100644
--- a/components/camel-geocoder/src/main/java/org/apache/camel/component/geocoder/GeoCoderComponent.java
+++ b/components/camel-geocoder/src/main/java/org/apache/camel/component/geocoder/GeoCoderComponent.java
@@ -19,11 +19,13 @@ package org.apache.camel.component.geocoder;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
 /**
  * Represents the component that manages {@link GeoCoderEndpoint}.
  */
+@Component("geocoder")
 public class GeoCoderComponent extends DefaultComponent {
 
     public GeoCoderComponent() {
diff --git a/components/camel-geocoder/src/main/resources/META-INF/services/org/apache/camel/component/geocoder b/components/camel-geocoder/src/main/resources/META-INF/services/org/apache/camel/component/geocoder
deleted file mode 100644
index c0ad9a3..0000000
--- a/components/camel-geocoder/src/main/resources/META-INF/services/org/apache/camel/component/geocoder
+++ /dev/null
@@ -1,18 +0,0 @@
-## ------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You 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.
-## ------------------------------------------------------------------------
-
-class=org.apache.camel.component.geocoder.GeoCoderComponent
diff --git a/components/camel-git/src/main/java/org/apache/camel/component/git/GitComponent.java b/components/camel-git/src/main/java/org/apache/camel/component/git/GitComponent.java
index 6de32fd..84fed45 100644
--- a/components/camel-git/src/main/java/org/apache/camel/component/git/GitComponent.java
+++ b/components/camel-git/src/main/java/org/apache/camel/component/git/GitComponent.java
@@ -19,11 +19,13 @@ package org.apache.camel.component.git;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
 /**
  * Represents the component that manages {@link GitEndpoint}.
  */
+@Component("git")
 public class GitComponent extends DefaultComponent {
 
     protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
diff --git a/components/camel-git/src/main/resources/META-INF/services/org/apache/camel/component/git b/components/camel-git/src/main/resources/META-INF/services/org/apache/camel/component/git
deleted file mode 100644
index 05f799b..0000000
--- a/components/camel-git/src/main/resources/META-INF/services/org/apache/camel/component/git
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.git.GitComponent
diff --git a/components/camel-github/src/main/java/org/apache/camel/component/github/GitHubComponent.java b/components/camel-github/src/main/java/org/apache/camel/component/github/GitHubComponent.java
index 7d07230..f99bc29 100644
--- a/components/camel-github/src/main/java/org/apache/camel/component/github/GitHubComponent.java
+++ b/components/camel-github/src/main/java/org/apache/camel/component/github/GitHubComponent.java
@@ -19,11 +19,13 @@ package org.apache.camel.component.github;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
 /**
  * Represents the component that manages {@link GitHubEndpoint}.
  */
+@Component("github")
 public class GitHubComponent extends DefaultComponent {
 
     protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
diff --git a/components/camel-github/src/main/resources/META-INF/services/org/apache/camel/component/github b/components/camel-github/src/main/resources/META-INF/services/org/apache/camel/component/github
deleted file mode 100644
index 5e25a16..0000000
--- a/components/camel-github/src/main/resources/META-INF/services/org/apache/camel/component/github
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.github.GitHubComponent
diff --git a/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryComponent.java b/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryComponent.java
index bd54817..ff6515c 100644
--- a/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryComponent.java
+++ b/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryComponent.java
@@ -20,8 +20,10 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
+@Component("google-bigquery")
 public class GoogleBigQueryComponent extends DefaultComponent {
     private String projectId;
     private String datasetId;
diff --git a/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLComponent.java b/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLComponent.java
index 00ce426..9196af6 100644
--- a/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLComponent.java
+++ b/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLComponent.java
@@ -20,9 +20,10 @@ import java.util.Map;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
-
+@Component("google-bigquery-sql")
 public class GoogleBigQuerySQLComponent extends DefaultComponent {
     private String projectId;
     private GoogleBigQueryConnectionFactory connectionFactory;
diff --git a/components/camel-google-bigquery/src/main/resources/META-INF/services/org/apache/camel/component/google-bigquery b/components/camel-google-bigquery/src/main/resources/META-INF/services/org/apache/camel/component/google-bigquery
deleted file mode 100644
index 07053a6..0000000
--- a/components/camel-google-bigquery/src/main/resources/META-INF/services/org/apache/camel/component/google-bigquery
+++ /dev/null
@@ -1,18 +0,0 @@
-## ------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You 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.
-## ------------------------------------------------------------------------
-
-class=org.apache.camel.component.google.bigquery.GoogleBigQueryComponent
diff --git a/components/camel-google-bigquery/src/main/resources/META-INF/services/org/apache/camel/component/google-bigquery-sql b/components/camel-google-bigquery/src/main/resources/META-INF/services/org/apache/camel/component/google-bigquery-sql
deleted file mode 100644
index 1bf97f0..0000000
--- a/components/camel-google-bigquery/src/main/resources/META-INF/services/org/apache/camel/component/google-bigquery-sql
+++ /dev/null
@@ -1,18 +0,0 @@
-## ------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You 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.
-## ------------------------------------------------------------------------
-
-class=org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLComponent
diff --git a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarComponent.java b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarComponent.java
index a4ab889..787aa54 100644
--- a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarComponent.java
+++ b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarComponent.java
@@ -25,11 +25,13 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.component.google.calendar.internal.GoogleCalendarApiCollection;
 import org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName;
 import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.component.AbstractApiComponent;
 
 /**
  * Represents the component that manages {@link GoogleCalendarEndpoint}.
  */
+@Component("google-calendar")
 public class GoogleCalendarComponent extends AbstractApiComponent<GoogleCalendarApiName, GoogleCalendarConfiguration, GoogleCalendarApiCollection> {
 
     @Metadata(label = "advanced")
diff --git a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamComponent.java b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamComponent.java
index de0a404..d1c5c85 100644
--- a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamComponent.java
+++ b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamComponent.java
@@ -23,12 +23,14 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.google.calendar.BatchGoogleCalendarClientFactory;
 import org.apache.camel.component.google.calendar.GoogleCalendarClientFactory;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.spi.Metadata;
 
 /**
  * Represents the component that manages {@link GoogleCalendarStreamEndpoint}.
  */
+@Component("google-calendar-stream")
 public class GoogleCalendarStreamComponent extends DefaultComponent {
 
     @Metadata(label = "advanced")
diff --git a/components/camel-google-calendar/src/main/resources/META-INF/services/org/apache/camel/component/google-calendar b/components/camel-google-calendar/src/main/resources/META-INF/services/org/apache/camel/component/google-calendar
deleted file mode 100644
index e177eac..0000000
--- a/components/camel-google-calendar/src/main/resources/META-INF/services/org/apache/camel/component/google-calendar
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-class=org.apache.camel.component.google.calendar.GoogleCalendarComponent
diff --git a/components/camel-google-calendar/src/main/resources/META-INF/services/org/apache/camel/component/google-calendar-stream b/components/camel-google-calendar/src/main/resources/META-INF/services/org/apache/camel/component/google-calendar-stream
deleted file mode 100644
index 1e548d6..0000000
--- a/components/camel-google-calendar/src/main/resources/META-INF/services/org/apache/camel/component/google-calendar-stream
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-class=org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamComponent
diff --git a/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveComponent.java b/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveComponent.java
index 2fd04ad..2f8a98c 100644
--- a/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveComponent.java
+++ b/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveComponent.java
@@ -22,12 +22,14 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.component.google.drive.internal.GoogleDriveApiCollection;
 import org.apache.camel.component.google.drive.internal.GoogleDriveApiName;
 import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.support.component.AbstractApiComponent;
 
 /**
  * Represents the component that manages {@link GoogleDriveEndpoint}.
  */
+@Component("google-drive")
 public class GoogleDriveComponent extends AbstractApiComponent<GoogleDriveApiName, GoogleDriveConfiguration, GoogleDriveApiCollection> {
 
     @Metadata(label = "advanced")
diff --git a/components/camel-google-drive/src/main/resources/META-INF/services/org/apache/camel/component/google-drive b/components/camel-google-drive/src/main/resources/META-INF/services/org/apache/camel/component/google-drive
deleted file mode 100644
index e06f16f..0000000
--- a/components/camel-google-drive/src/main/resources/META-INF/services/org/apache/camel/component/google-drive
+++ /dev/null
@@ -1,18 +0,0 @@
-## ------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You 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.
-## ------------------------------------------------------------------------
-
-class=org.apache.camel.component.google.drive.GoogleDriveComponent
diff --git a/components/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailComponent.java b/components/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailComponent.java
index 31958da..3c7a6cc 100644
--- a/components/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailComponent.java
+++ b/components/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailComponent.java
@@ -23,11 +23,13 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.component.google.mail.internal.GoogleMailApiCollection;
 import org.apache.camel.component.google.mail.internal.GoogleMailApiName;
 import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.component.AbstractApiComponent;
 
 /**
  * Represents the component that manages {@link GoogleMailEndpoint}.
  */
+@Component("google-mail")
 public class GoogleMailComponent extends AbstractApiComponent<GoogleMailApiName, GoogleMailConfiguration, GoogleMailApiCollection> {
 
     @Metadata(label = "advanced")
diff --git a/components/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamComponent.java b/components/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamComponent.java
index a8895cb..94938d3 100644
--- a/components/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamComponent.java
+++ b/components/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamComponent.java
@@ -24,12 +24,14 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.google.mail.BatchGoogleMailClientFactory;
 import org.apache.camel.component.google.mail.GoogleMailClientFactory;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.spi.Metadata;
 
 /**
  * Represents the component that manages {@link GoogleMailStreamEndpoint}.
  */
+@Component("google-mail-stream")
 public class GoogleMailStreamComponent extends DefaultComponent {
 
     @Metadata(label = "advanced")
diff --git a/components/camel-google-mail/src/main/resources/META-INF/services/org/apache/camel/component/google-mail b/components/camel-google-mail/src/main/resources/META-INF/services/org/apache/camel/component/google-mail
deleted file mode 100644
index bf88e1b..0000000
--- a/components/camel-google-mail/src/main/resources/META-INF/services/org/apache/camel/component/google-mail
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-class=org.apache.camel.component.google.mail.GoogleMailComponent
diff --git a/components/camel-google-mail/src/main/resources/META-INF/services/org/apache/camel/component/google-mail-stream b/components/camel-google-mail/src/main/resources/META-INF/services/org/apache/camel/component/google-mail-stream
deleted file mode 100644
index a57907f..0000000
--- a/components/camel-google-mail/src/main/resources/META-INF/services/org/apache/camel/component/google-mail-stream
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-class=org.apache.camel.component.google.mail.stream.GoogleMailStreamComponent
diff --git a/components/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubComponent.java b/components/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubComponent.java
index 99efc1c..9b0259e 100644
--- a/components/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubComponent.java
+++ b/components/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubComponent.java
@@ -19,11 +19,13 @@ package org.apache.camel.component.google.pubsub;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
 /**
  * Represents the component that manages {@link GooglePubsubEndpoint}.
  */
+@Component("google-pubsub")
 public class GooglePubsubComponent extends DefaultComponent {
 
     private GooglePubsubConnectionFactory connectionFactory;
diff --git a/components/camel-google-pubsub/src/main/resources/META-INF/services/org/apache/camel/component/google-pubsub b/components/camel-google-pubsub/src/main/resources/META-INF/services/org/apache/camel/component/google-pubsub
deleted file mode 100644
index ae01293..0000000
--- a/components/camel-google-pubsub/src/main/resources/META-INF/services/org/apache/camel/component/google-pubsub
+++ /dev/null
@@ -1,18 +0,0 @@
-## ------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You 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.
-## ------------------------------------------------------------------------
-
-class=org.apache.camel.component.google.pubsub.GooglePubsubComponent
diff --git a/components/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/GoogleSheetsComponent.java b/components/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/GoogleSheetsComponent.java
index bc4d568..08cdf20 100644
--- a/components/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/GoogleSheetsComponent.java
+++ b/components/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/GoogleSheetsComponent.java
@@ -22,6 +22,7 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.component.google.sheets.internal.GoogleSheetsApiCollection;
 import org.apache.camel.component.google.sheets.internal.GoogleSheetsApiName;
 import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.component.AbstractApiComponent;
 
 
@@ -29,6 +30,7 @@ import org.apache.camel.support.component.AbstractApiComponent;
  * Represents the component that manages {@link GoogleSheetsEndpoint}.
  */
 @Metadata(label = "verifiers", enums = "parameters,connectivity")
+@Component("google-sheets")
 public class GoogleSheetsComponent extends AbstractApiComponent<GoogleSheetsApiName, GoogleSheetsConfiguration, GoogleSheetsApiCollection> {
 
     @Metadata(label = "advanced")
diff --git a/components/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/stream/GoogleSheetsStreamComponent.java b/components/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/stream/GoogleSheetsStreamComponent.java
index 3eeb3fe..9329db5 100644
--- a/components/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/stream/GoogleSheetsStreamComponent.java
+++ b/components/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/stream/GoogleSheetsStreamComponent.java
@@ -25,12 +25,14 @@ import org.apache.camel.component.google.sheets.BatchGoogleSheetsClientFactory;
 import org.apache.camel.component.google.sheets.GoogleSheetsClientFactory;
 import org.apache.camel.component.google.sheets.GoogleSheetsVerifierExtension;
 import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
 /**
  * Represents the component that manages {@link GoogleSheetsStreamEndpoint}.
  */
 @Metadata(label = "verifiers", enums = "parameters,connectivity")
+@Component("google-sheets-stream")
 public class GoogleSheetsStreamComponent extends DefaultComponent {
 
     @Metadata(label = "advanced")
diff --git a/components/camel-google-sheets/src/main/resources/META-INF/services/org/apache/camel/component/google-sheets b/components/camel-google-sheets/src/main/resources/META-INF/services/org/apache/camel/component/google-sheets
deleted file mode 100644
index a3e7e26..0000000
--- a/components/camel-google-sheets/src/main/resources/META-INF/services/org/apache/camel/component/google-sheets
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-class=org.apache.camel.component.google.sheets.GoogleSheetsComponent
diff --git a/components/camel-google-sheets/src/main/resources/META-INF/services/org/apache/camel/component/google-sheets-stream b/components/camel-google-sheets/src/main/resources/META-INF/services/org/apache/camel/component/google-sheets-stream
deleted file mode 100644
index 0ac2679..0000000
--- a/components/camel-google-sheets/src/main/resources/META-INF/services/org/apache/camel/component/google-sheets-stream
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-class=org.apache.camel.component.google.sheets.stream.GoogleSheetsStreamComponent
diff --git a/components/camel-gora/src/main/java/org/apache/camel/component/gora/GoraComponent.java b/components/camel-gora/src/main/java/org/apache/camel/component/gora/GoraComponent.java
index 8cbb728..fa10ce1 100644
--- a/components/camel-gora/src/main/java/org/apache/camel/component/gora/GoraComponent.java
+++ b/components/camel-gora/src/main/java/org/apache/camel/component/gora/GoraComponent.java
@@ -21,6 +21,7 @@ import java.util.Map;
 import java.util.Properties;
 
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.gora.persistency.Persistent;
 import org.apache.gora.store.DataStore;
@@ -29,6 +30,7 @@ import org.apache.hadoop.conf.Configuration;
 
 import static org.apache.camel.component.gora.GoraConstants.GORA_DEFAULT_DATASTORE_KEY;
 
+@Component("gora")
 public class GoraComponent extends DefaultComponent {
 
     /**
diff --git a/components/camel-gora/src/main/resources/META-INF/services/org/apache/camel/component/gora b/components/camel-gora/src/main/resources/META-INF/services/org/apache/camel/component/gora
deleted file mode 100644
index 4cb9abb..0000000
--- a/components/camel-gora/src/main/resources/META-INF/services/org/apache/camel/component/gora
+++ /dev/null
@@ -1,18 +0,0 @@
-## ------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You 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.
-## ------------------------------------------------------------------------
-
-class=org.apache.camel.component.gora.GoraComponent
diff --git a/components/camel-grape/src/main/java/org/apache/camel/component/grape/GrapeComponent.java b/components/camel-grape/src/main/java/org/apache/camel/component/grape/GrapeComponent.java
index 7fbcf04..d5d99dc 100644
--- a/components/camel-grape/src/main/java/org/apache/camel/component/grape/GrapeComponent.java
+++ b/components/camel-grape/src/main/java/org/apache/camel/component/grape/GrapeComponent.java
@@ -21,8 +21,10 @@ import java.util.Map;
 import groovy.lang.GroovyClassLoader;
 import org.apache.camel.CamelContext;
 import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
+@Component("grape")
 public class GrapeComponent extends DefaultComponent {
 
     @Metadata(label = "advanced", description = "Implementation of org.apache.camel.component.grape.PatchesRepository, by default: FilePatchesRepository")
diff --git a/components/camel-grape/src/main/resources/META-INF/services/org/apache/camel/component/grape b/components/camel-grape/src/main/resources/META-INF/services/org/apache/camel/component/grape
deleted file mode 100644
index 747706a..0000000
--- a/components/camel-grape/src/main/resources/META-INF/services/org/apache/camel/component/grape
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-
-class=org.apache.camel.component.grape.GrapeComponent
\ No newline at end of file
diff --git a/components/camel-groovy/src/main/java/org/apache/camel/language/groovy/GroovyLanguage.java b/components/camel-groovy/src/main/java/org/apache/camel/language/groovy/GroovyLanguage.java
index 4eadc43..14c0099 100644
--- a/components/camel-groovy/src/main/java/org/apache/camel/language/groovy/GroovyLanguage.java
+++ b/components/camel-groovy/src/main/java/org/apache/camel/language/groovy/GroovyLanguage.java
@@ -18,10 +18,12 @@ package org.apache.camel.language.groovy;
 
 import groovy.lang.Script;
 import org.apache.camel.Service;
+import org.apache.camel.spi.annotations.Language;
 import org.apache.camel.support.LanguageSupport;
 import org.apache.camel.support.LRUSoftCache;
 import org.codehaus.groovy.runtime.InvokerHelper;
 
+@Language("groovy")
 public class GroovyLanguage extends LanguageSupport {
 
     // Cache used to stores the compiled scripts (aka their classes)
diff --git a/components/camel-groovy/src/main/resources/META-INF/services/org/apache/camel/language/groovy b/components/camel-groovy/src/main/resources/META-INF/services/org/apache/camel/language/groovy
deleted file mode 100644
index 7e073d3..0000000
--- a/components/camel-groovy/src/main/resources/META-INF/services/org/apache/camel/language/groovy
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.language.groovy.GroovyLanguage
\ No newline at end of file
diff --git a/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcComponent.java b/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcComponent.java
index 675b40f..235c648 100644
--- a/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcComponent.java
+++ b/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcComponent.java
@@ -20,11 +20,13 @@ import java.net.URI;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
 /**
  * Represents the component that manages {@link GrpcEndpoint}.
  */
+@Component("grpc")
 public class GrpcComponent extends DefaultComponent {
 
     protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
diff --git a/components/camel-grpc/src/main/resources/META-INF/services/org/apache/camel/component/grpc b/components/camel-grpc/src/main/resources/META-INF/services/org/apache/camel/component/grpc
deleted file mode 100644
index 0605143..0000000
--- a/components/camel-grpc/src/main/resources/META-INF/services/org/apache/camel/component/grpc
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.grpc.GrpcComponent
diff --git a/components/camel-gson/src/main/java/org/apache/camel/component/gson/GsonDataFormat.java b/components/camel-gson/src/main/java/org/apache/camel/component/gson/GsonDataFormat.java
index 81f953f..17e41ad 100644
--- a/components/camel-gson/src/main/java/org/apache/camel/component/gson/GsonDataFormat.java
+++ b/components/camel-gson/src/main/java/org/apache/camel/component/gson/GsonDataFormat.java
@@ -35,6 +35,7 @@ import com.google.gson.LongSerializationPolicy;
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataFormatName;
+import org.apache.camel.spi.annotations.Dataformat;
 import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.IOHelper;
@@ -43,6 +44,7 @@ import org.apache.camel.util.IOHelper;
  * A <a href="http://camel.apache.org/data-format.html">data format</a> ({@link DataFormat})
  * using <a href="http://code.google.com/p/google-gson/">Gson</a> to marshal to and from JSON.
  */
+@Dataformat("json-gson")
 public class GsonDataFormat extends ServiceSupport implements DataFormat, DataFormatName {
 
     private Gson gson;
diff --git a/components/camel-gson/src/main/resources/META-INF/services/org/apache/camel/dataformat/json-gson b/components/camel-gson/src/main/resources/META-INF/services/org/apache/camel/dataformat/json-gson
deleted file mode 100644
index 5256011..0000000
--- a/components/camel-gson/src/main/resources/META-INF/services/org/apache/camel/dataformat/json-gson
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.gson.GsonDataFormat
diff --git a/components/camel-guava-eventbus/src/main/java/org/apache/camel/component/guava/eventbus/GuavaEventBusComponent.java b/components/camel-guava-eventbus/src/main/java/org/apache/camel/component/guava/eventbus/GuavaEventBusComponent.java
index dae8cdc..c8e7567 100644
--- a/components/camel-guava-eventbus/src/main/java/org/apache/camel/component/guava/eventbus/GuavaEventBusComponent.java
+++ b/components/camel-guava-eventbus/src/main/java/org/apache/camel/component/guava/eventbus/GuavaEventBusComponent.java
@@ -20,6 +20,7 @@ import java.util.Map;
 
 import com.google.common.eventbus.EventBus;
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
 /**
@@ -27,6 +28,7 @@ import org.apache.camel.support.DefaultComponent;
  * (http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/eventbus/EventBus.html). Supports both
  * producer and consumer endpoints.
  */
+@Component("guava-eventbus")
 public class GuavaEventBusComponent extends DefaultComponent {
 
     private EventBus eventBus;
diff --git a/components/camel-guava-eventbus/src/main/resources/META-INF/services/org/apache/camel/component/guava-eventbus b/components/camel-guava-eventbus/src/main/resources/META-INF/services/org/apache/camel/component/guava-eventbus
deleted file mode 100644
index 2700f9b..0000000
--- a/components/camel-guava-eventbus/src/main/resources/META-INF/services/org/apache/camel/component/guava-eventbus
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.guava.eventbus.GuavaEventBusComponent
diff --git a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/HazelcastComponent.java b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/HazelcastComponent.java
deleted file mode 100644
index fc1e75f..0000000
--- a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/HazelcastComponent.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.apache.camel.component.hazelcast;
-
-import java.util.Map;
-
-import com.hazelcast.core.HazelcastInstance;
-import org.apache.camel.CamelContext;
-import org.apache.camel.component.hazelcast.atomicnumber.HazelcastAtomicnumberEndpoint;
-import org.apache.camel.component.hazelcast.instance.HazelcastInstanceEndpoint;
-import org.apache.camel.component.hazelcast.list.HazelcastListEndpoint;
-import org.apache.camel.component.hazelcast.map.HazelcastMapEndpoint;
-import org.apache.camel.component.hazelcast.multimap.HazelcastMultimapEndpoint;
-import org.apache.camel.component.hazelcast.queue.HazelcastQueueConfiguration;
-import org.apache.camel.component.hazelcast.queue.HazelcastQueueEndpoint;
-import org.apache.camel.component.hazelcast.replicatedmap.HazelcastReplicatedmapEndpoint;
-import org.apache.camel.component.hazelcast.ringbuffer.HazelcastRingbufferEndpoint;
-import org.apache.camel.component.hazelcast.seda.HazelcastSedaConfiguration;
-import org.apache.camel.component.hazelcast.seda.HazelcastSedaEndpoint;
-import org.apache.camel.component.hazelcast.set.HazelcastSetEndpoint;
-import org.apache.camel.component.hazelcast.topic.HazelcastTopicConfiguration;
-import org.apache.camel.component.hazelcast.topic.HazelcastTopicEndpoint;
-import org.apache.camel.util.StringHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @deprecated
- * 
- */
-@Deprecated
-public class HazelcastComponent extends HazelcastDefaultComponent {
-
-    private static final Logger LOG = LoggerFactory.getLogger(HazelcastComponent.class);
-
-    public HazelcastComponent() {
-    }
-
-    public HazelcastComponent(final CamelContext context) {
-        super(context);
-    }
-
-    @Override
-    protected HazelcastDefaultEndpoint doCreateEndpoint(String uri, String remaining, Map<String, Object> parameters, HazelcastInstance hzInstance) throws Exception {
-
-        HazelcastDefaultEndpoint endpoint = null;
-
-        LOG.warn("The scheme syntax 'hazelcast:{}' has been deprecated. Use 'hazelcast-{}' instead.", remaining, remaining);
-
-        // check type of endpoint
-        if (remaining.startsWith(HazelcastConstants.MAP_PREFIX)) {
-            // remaining is the cache name
-            remaining = StringHelper.removeStartingCharacters(remaining.substring(HazelcastConstants.MAP_PREFIX.length()), '/');
-            endpoint = new HazelcastMapEndpoint(hzInstance, uri, remaining, this);
-            endpoint.setCommand(HazelcastCommand.map);
-        }
-
-        if (remaining.startsWith(HazelcastConstants.MULTIMAP_PREFIX)) {
-            // remaining is the cache name
-            remaining = StringHelper.removeStartingCharacters(remaining.substring(HazelcastConstants.MULTIMAP_PREFIX.length()), '/');
-            endpoint = new HazelcastMultimapEndpoint(hzInstance, uri, remaining, this);
-            endpoint.setCommand(HazelcastCommand.multimap);
-        }
-
-        if (remaining.startsWith(HazelcastConstants.ATOMICNUMBER_PREFIX)) {
-            // remaining is the name of the atomic value
-            remaining = StringHelper.removeStartingCharacters(remaining.substring(HazelcastConstants.ATOMICNUMBER_PREFIX.length()), '/');
-            endpoint = new HazelcastAtomicnumberEndpoint(hzInstance, uri, this, remaining);
-            endpoint.setCommand(HazelcastCommand.atomicvalue);
-        }
-
-        if (remaining.startsWith(HazelcastConstants.INSTANCE_PREFIX)) {
-            // remaining is anything (name it foo ;)
-            remaining = StringHelper.removeStartingCharacters(remaining.substring(HazelcastConstants.INSTANCE_PREFIX.length()), '/');
-            endpoint = new HazelcastInstanceEndpoint(hzInstance, uri, this);
-            endpoint.setCommand(HazelcastCommand.instance);
-        }
-
-        if (remaining.startsWith(HazelcastConstants.QUEUE_PREFIX)) {
-            // remaining is anything (name it foo ;)
-            remaining = StringHelper.removeStartingCharacters(remaining.substring(HazelcastConstants.QUEUE_PREFIX.length()), '/');
-            final HazelcastQueueConfiguration config = new HazelcastQueueConfiguration();
-            setProperties(config, parameters);
-            endpoint = new HazelcastQueueEndpoint(hzInstance, uri, this, remaining, config);
-            endpoint.setCommand(HazelcastCommand.queue);
-        }
-
-        if (remaining.startsWith(HazelcastConstants.TOPIC_PREFIX)) {
-            // remaining is anything (name it foo ;)
-            remaining = StringHelper.removeStartingCharacters(remaining.substring(HazelcastConstants.TOPIC_PREFIX.length()), '/');
-            final HazelcastTopicConfiguration config = new HazelcastTopicConfiguration();
-            setProperties(config, parameters);
-            endpoint = new HazelcastTopicEndpoint(hzInstance, uri, this, remaining, config);
-            endpoint.setCommand(HazelcastCommand.topic);
-        }
-
-        if (remaining.startsWith(HazelcastConstants.SEDA_PREFIX)) {
-            // remaining is anything (name it foo ;)
-            remaining = StringHelper.removeStartingCharacters(remaining.substring(HazelcastConstants.SEDA_PREFIX.length()), '/');
-            final HazelcastSedaConfiguration config = new HazelcastSedaConfiguration();
-            setProperties(config, parameters);
-            config.setQueueName(remaining);
-            endpoint = new HazelcastSedaEndpoint(hzInstance, uri, this, config);
-            endpoint.setCacheName(remaining);
-            endpoint.setCommand(HazelcastCommand.seda);
-        }
-
-        if (remaining.startsWith(HazelcastConstants.LIST_PREFIX)) {
-            // remaining is anything (name it foo ;)
-            remaining = StringHelper.removeStartingCharacters(remaining.substring(HazelcastConstants.LIST_PREFIX.length()), '/');
-            endpoint = new HazelcastListEndpoint(hzInstance, uri, this, remaining);
-            endpoint.setCommand(HazelcastCommand.list);
-        }
-
-        if (remaining.startsWith(HazelcastConstants.REPLICATEDMAP_PREFIX)) {
-            // remaining is anything (name it foo ;)
-            remaining = StringHelper.removeStartingCharacters(remaining.substring(HazelcastConstants.REPLICATEDMAP_PREFIX.length()), '/');
-            endpoint = new HazelcastReplicatedmapEndpoint(hzInstance, uri, remaining, this);
-            endpoint.setCommand(HazelcastCommand.replicatedmap);
-        } 
-        
-        if (remaining.startsWith(HazelcastConstants.SET_PREFIX)) {
-            // remaining is anything (name it foo ;)
-            remaining = StringHelper.removeStartingCharacters(remaining.substring(HazelcastConstants.SET_PREFIX.length()), '/');
-            endpoint = new HazelcastSetEndpoint(hzInstance, uri, this, remaining);
-            endpoint.setCommand(HazelcastCommand.set);
-        } 
-        
-        
-        if (remaining.startsWith(HazelcastConstants.RINGBUFFER_PREFIX)) {
-            // remaining is anything (name it foo ;)
-            remaining = StringHelper.removeStartingCharacters(remaining.substring(HazelcastConstants.RINGBUFFER_PREFIX.length()), '/');
-            endpoint = new HazelcastRingbufferEndpoint(hzInstance, uri, this, remaining);
-            endpoint.setCommand(HazelcastCommand.ringbuffer);
-        } 
-        
-        if (endpoint == null) {
-            throw new IllegalArgumentException(String.format("Your URI does not provide a correct 'type' prefix. It should be anything like " 
-                    + "'hazelcast:[%s|%s|%s|%s|%s|%s|%s|%s|%s|%s]name' but is '%s'.",
-                    HazelcastConstants.MAP_PREFIX, HazelcastConstants.MULTIMAP_PREFIX, HazelcastConstants.ATOMICNUMBER_PREFIX, HazelcastConstants.INSTANCE_PREFIX, HazelcastConstants.QUEUE_PREFIX,
-                    HazelcastConstants.SEDA_PREFIX, HazelcastConstants.LIST_PREFIX, HazelcastConstants.REPLICATEDMAP_PREFIX, HazelcastConstants.SET_PREFIX, HazelcastConstants.RINGBUFFER_PREFIX, uri));
-        }
-        return endpoint;
-    }
-
-}
diff --git a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/atomicnumber/HazelcastAtomicnumberComponent.java b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/atomicnumber/HazelcastAtomicnumberComponent.java
index 821b6b7..21b6526 100644
--- a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/atomicnumber/HazelcastAtomicnumberComponent.java
+++ b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/atomicnumber/HazelcastAtomicnumberComponent.java
@@ -23,7 +23,9 @@ import com.hazelcast.core.HazelcastInstance;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.hazelcast.HazelcastDefaultComponent;
 import org.apache.camel.component.hazelcast.HazelcastDefaultEndpoint;
+import org.apache.camel.spi.annotations.Component;
 
+@Component("hazelcast-atomicvalue")
 public class HazelcastAtomicnumberComponent extends HazelcastDefaultComponent {
 
     public HazelcastAtomicnumberComponent() {
diff --git a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/instance/HazelcastInstanceComponent.java b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/instance/HazelcastInstanceComponent.java
index 6554815..55cabcb 100644
--- a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/instance/HazelcastInstanceComponent.java
+++ b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/instance/HazelcastInstanceComponent.java
@@ -23,7 +23,9 @@ import com.hazelcast.core.HazelcastInstance;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.hazelcast.HazelcastDefaultComponent;
 import org.apache.camel.component.hazelcast.HazelcastDefaultEndpoint;
+import org.apache.camel.spi.annotations.Component;
 
+@Component("hazelcast-instance")
 public class HazelcastInstanceComponent extends HazelcastDefaultComponent {
 
     public HazelcastInstanceComponent() {
diff --git a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/list/HazelcastListComponent.java b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/list/HazelcastListComponent.java
index 230b14c..054f119 100644
--- a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/list/HazelcastListComponent.java
+++ b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/list/HazelcastListComponent.java
@@ -23,7 +23,9 @@ import com.hazelcast.core.HazelcastInstance;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.hazelcast.HazelcastDefaultComponent;
 import org.apache.camel.component.hazelcast.HazelcastDefaultEndpoint;
+import org.apache.camel.spi.annotations.Component;
 
+@Component("hazelcast-list")
 public class HazelcastListComponent extends HazelcastDefaultComponent {
 
     public HazelcastListComponent() {
diff --git a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/map/HazelcastMapComponent.java b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/map/HazelcastMapComponent.java
index f1f23f3..76604fd 100644
--- a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/map/HazelcastMapComponent.java
+++ b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/map/HazelcastMapComponent.java
@@ -23,7 +23,9 @@ import com.hazelcast.core.HazelcastInstance;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.hazelcast.HazelcastDefaultComponent;
 import org.apache.camel.component.hazelcast.HazelcastDefaultEndpoint;
+import org.apache.camel.spi.annotations.Component;
 
+@Component("hazelcast-map")
 public class HazelcastMapComponent extends HazelcastDefaultComponent {
 
     public HazelcastMapComponent() {
diff --git a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/multimap/HazelcastMultimapComponent.java b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/multimap/HazelcastMultimapComponent.java
index deba8a0..49eee6b 100644
--- a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/multimap/HazelcastMultimapComponent.java
+++ b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/multimap/HazelcastMultimapComponent.java
@@ -23,7 +23,9 @@ import com.hazelcast.core.HazelcastInstance;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.hazelcast.HazelcastDefaultComponent;
 import org.apache.camel.component.hazelcast.HazelcastDefaultEndpoint;
+import org.apache.camel.spi.annotations.Component;
 
+@Component("hazelcast-multimap")
 public class HazelcastMultimapComponent extends HazelcastDefaultComponent {
 
     public HazelcastMultimapComponent() {
diff --git a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/queue/HazelcastQueueComponent.java b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/queue/HazelcastQueueComponent.java
index 7262c72..4c80db3 100644
--- a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/queue/HazelcastQueueComponent.java
+++ b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/queue/HazelcastQueueComponent.java
@@ -23,7 +23,9 @@ import com.hazelcast.core.HazelcastInstance;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.hazelcast.HazelcastDefaultComponent;
 import org.apache.camel.component.hazelcast.HazelcastDefaultEndpoint;
+import org.apache.camel.spi.annotations.Component;
 
+@Component("hazelcast-queue")
 public class HazelcastQueueComponent extends HazelcastDefaultComponent {
 
     public HazelcastQueueComponent() {
diff --git a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/replicatedmap/HazelcastReplicatedmapComponent.java b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/replicatedmap/HazelcastReplicatedmapComponent.java
index 424bdd7..2391365 100644
--- a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/replicatedmap/HazelcastReplicatedmapComponent.java
+++ b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/replicatedmap/HazelcastReplicatedmapComponent.java
@@ -23,7 +23,9 @@ import com.hazelcast.core.HazelcastInstance;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.hazelcast.HazelcastDefaultComponent;
 import org.apache.camel.component.hazelcast.HazelcastDefaultEndpoint;
+import org.apache.camel.spi.annotations.Component;
 
+@Component("hazelcast-replicatedmap")
 public class HazelcastReplicatedmapComponent extends HazelcastDefaultComponent {
 
     public HazelcastReplicatedmapComponent() {
diff --git a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/ringbuffer/HazelcastRingbufferComponent.java b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/ringbuffer/HazelcastRingbufferComponent.java
index 6248281..ba17a5d 100644
--- a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/ringbuffer/HazelcastRingbufferComponent.java
+++ b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/ringbuffer/HazelcastRingbufferComponent.java
@@ -23,7 +23,9 @@ import com.hazelcast.core.HazelcastInstance;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.hazelcast.HazelcastDefaultComponent;
 import org.apache.camel.component.hazelcast.HazelcastDefaultEndpoint;
+import org.apache.camel.spi.annotations.Component;
 
+@Component("hazelcast-ringbuffer")
 public class HazelcastRingbufferComponent extends HazelcastDefaultComponent {
 
     public HazelcastRingbufferComponent() {
diff --git a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/seda/HazelcastSedaComponent.java b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/seda/HazelcastSedaComponent.java
index 972e0c9..7db9ffb 100644
--- a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/seda/HazelcastSedaComponent.java
+++ b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/seda/HazelcastSedaComponent.java
@@ -23,7 +23,9 @@ import com.hazelcast.core.HazelcastInstance;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.hazelcast.HazelcastDefaultComponent;
 import org.apache.camel.component.hazelcast.HazelcastDefaultEndpoint;
+import org.apache.camel.spi.annotations.Component;
 
+@Component("hazelcast-seda")
 public class HazelcastSedaComponent extends HazelcastDefaultComponent {
 
     public HazelcastSedaComponent() {
diff --git a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/set/HazelcastSetComponent.java b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/set/HazelcastSetComponent.java
index b566cca..653baa1 100644
--- a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/set/HazelcastSetComponent.java
+++ b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/set/HazelcastSetComponent.java
@@ -23,7 +23,9 @@ import com.hazelcast.core.HazelcastInstance;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.hazelcast.HazelcastDefaultComponent;
 import org.apache.camel.component.hazelcast.HazelcastDefaultEndpoint;
+import org.apache.camel.spi.annotations.Component;
 
+@Component("hazelcast-set")
 public class HazelcastSetComponent extends HazelcastDefaultComponent {
 
     public HazelcastSetComponent() {
diff --git a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/topic/HazelcastTopicComponent.java b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/topic/HazelcastTopicComponent.java
index df5445d..d092749 100644
--- a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/topic/HazelcastTopicComponent.java
+++ b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/topic/HazelcastTopicComponent.java
@@ -23,7 +23,9 @@ import com.hazelcast.core.HazelcastInstance;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.hazelcast.HazelcastDefaultComponent;
 import org.apache.camel.component.hazelcast.HazelcastDefaultEndpoint;
+import org.apache.camel.spi.annotations.Component;
 
+@Component("hazelcast-topic")
 public class HazelcastTopicComponent extends HazelcastDefaultComponent {
 
     public HazelcastTopicComponent() {
diff --git a/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast b/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast
deleted file mode 100644
index cfc340a..0000000
--- a/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.hazelcast.HazelcastComponent
diff --git a/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast-atomicvalue b/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast-atomicvalue
deleted file mode 100644
index 583616a..0000000
--- a/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast-atomicvalue
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.hazelcast.atomicnumber.HazelcastAtomicnumberComponent
diff --git a/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast-instance b/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast-instance
deleted file mode 100644
index 4d47929..0000000
--- a/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast-instance
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.hazelcast.instance.HazelcastInstanceComponent
diff --git a/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast-list b/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast-list
deleted file mode 100644
index 97c33f9..0000000
--- a/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast-list
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.hazelcast.list.HazelcastListComponent
diff --git a/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast-map b/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast-map
deleted file mode 100644
index 24adef8..0000000
--- a/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast-map
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.hazelcast.map.HazelcastMapComponent
diff --git a/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast-multimap b/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast-multimap
deleted file mode 100644
index 62f82a0..0000000
--- a/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast-multimap
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.hazelcast.multimap.HazelcastMultimapComponent
diff --git a/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast-queue b/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast-queue
deleted file mode 100644
index cc350f2..0000000
--- a/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast-queue
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.hazelcast.queue.HazelcastQueueComponent
diff --git a/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast-replicatedmap b/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast-replicatedmap
deleted file mode 100644
index 5c1fbc6..0000000
--- a/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast-replicatedmap
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.hazelcast.replicatedmap.HazelcastReplicatedmapComponent
diff --git a/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast-ringbuffer b/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast-ringbuffer
deleted file mode 100644
index f2e3e65..0000000
--- a/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast-ringbuffer
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.hazelcast.ringbuffer.HazelcastRingbufferComponent
diff --git a/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast-seda b/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast-seda
deleted file mode 100644
index 4d96a59..0000000
--- a/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast-seda
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.hazelcast.seda.HazelcastSedaComponent
diff --git a/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast-set b/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast-set
deleted file mode 100644
index 313d664..0000000
--- a/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast-set
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.hazelcast.set.HazelcastSetComponent
diff --git a/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast-topic b/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast-topic
deleted file mode 100644
index 407d64f..0000000
--- a/components/camel-hazelcast/src/main/resources/META-INF/services/org/apache/camel/component/hazelcast-topic
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.hazelcast.topic.HazelcastTopicComponent
diff --git a/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/HBaseComponent.java b/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/HBaseComponent.java
index 7e2cb39..300211bf 100644
--- a/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/HBaseComponent.java
+++ b/components/camel-hbase/src/main/java/org/apache/camel/component/hbase/HBaseComponent.java
@@ -21,6 +21,7 @@ import java.util.concurrent.Executors;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.support.IntrospectionSupport;
@@ -32,6 +33,7 @@ import org.apache.hadoop.hbase.client.ConnectionFactory;
 /**
  * Represents the component that manages {@link HBaseEndpoint}.
  */
+@Component("hbase")
 public class HBaseComponent extends DefaultComponent {
 
     private Connection connection;
diff --git a/components/camel-hbase/src/main/resources/META-INF/services/org/apache/camel/component/hbase b/components/camel-hbase/src/main/resources/META-INF/services/org/apache/camel/component/hbase
deleted file mode 100644
index 4aa75c3..0000000
--- a/components/camel-hbase/src/main/resources/META-INF/services/org/apache/camel/component/hbase
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.hbase.HBaseComponent
diff --git a/components/camel-hdfs2/src/main/java/org/apache/camel/component/hdfs2/HdfsComponent.java b/components/camel-hdfs2/src/main/java/org/apache/camel/component/hdfs2/HdfsComponent.java
index 763b989..e04940f 100644
--- a/components/camel-hdfs2/src/main/java/org/apache/camel/component/hdfs2/HdfsComponent.java
+++ b/components/camel-hdfs2/src/main/java/org/apache/camel/component/hdfs2/HdfsComponent.java
@@ -22,11 +22,13 @@ import java.util.Map;
 import javax.security.auth.login.Configuration;
 
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@Component("hdfs,hdfs2")
 public class HdfsComponent extends DefaultComponent {
 
     private static final Logger LOG = LoggerFactory.getLogger(HdfsComponent.class);
diff --git a/components/camel-hdfs2/src/main/resources/META-INF/services/org/apache/camel/component/hdfs b/components/camel-hdfs2/src/main/resources/META-INF/services/org/apache/camel/component/hdfs
deleted file mode 100644
index acde85a..0000000
--- a/components/camel-hdfs2/src/main/resources/META-INF/services/org/apache/camel/component/hdfs
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.hdfs2.HdfsComponent
diff --git a/components/camel-hdfs2/src/main/resources/META-INF/services/org/apache/camel/component/hdfs2 b/components/camel-hdfs2/src/main/resources/META-INF/services/org/apache/camel/component/hdfs2
deleted file mode 100644
index acde85a..0000000
--- a/components/camel-hdfs2/src/main/resources/META-INF/services/org/apache/camel/component/hdfs2
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.hdfs2.HdfsComponent
diff --git a/components/camel-hipchat/src/main/java/org/apache/camel/component/hipchat/HipchatComponent.java b/components/camel-hipchat/src/main/java/org/apache/camel/component/hipchat/HipchatComponent.java
index 6ee3151..eef7daf 100644
--- a/components/camel-hipchat/src/main/java/org/apache/camel/component/hipchat/HipchatComponent.java
+++ b/components/camel-hipchat/src/main/java/org/apache/camel/component/hipchat/HipchatComponent.java
@@ -21,6 +21,7 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.util.URISupport;
 
@@ -32,6 +33,7 @@ import org.apache.camel.util.URISupport;
  * at @see <a href="https://www.hipchat.com/account/api">Hipchat Auth Token</a>. The messages produced and consumed
  * would be from/to owner of the provided auth token.
  */
+@Component("hipchat")
 public class HipchatComponent extends DefaultComponent {
 
     public HipchatComponent() {
diff --git a/components/camel-hipchat/src/main/resources/META-INF/services/org/apache/camel/component/hipchat b/components/camel-hipchat/src/main/resources/META-INF/services/org/apache/camel/component/hipchat
deleted file mode 100644
index a1b35c5..0000000
--- a/components/camel-hipchat/src/main/resources/META-INF/services/org/apache/camel/component/hipchat
+++ /dev/null
@@ -1,18 +0,0 @@
-## ---------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You 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.
-## ---------------------------------------------------------------------------
-
-class=org.apache.camel.component.hipchat.HipchatComponent
diff --git a/components/camel-hl7/src/main/java/org/apache/camel/component/hl7/HL7DataFormat.java b/components/camel-hl7/src/main/java/org/apache/camel/component/hl7/HL7DataFormat.java
index 3b145a2..da3b741 100644
--- a/components/camel-hl7/src/main/java/org/apache/camel/component/hl7/HL7DataFormat.java
+++ b/components/camel-hl7/src/main/java/org/apache/camel/component/hl7/HL7DataFormat.java
@@ -34,6 +34,7 @@ import ca.uhn.hl7v2.validation.impl.ValidationContextFactory;
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataFormatName;
+import org.apache.camel.spi.annotations.Dataformat;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.support.ExchangeHelper;
 
@@ -86,6 +87,7 @@ import static org.apache.camel.component.hl7.HL7Constants.HL7_VERSION_ID;
  *
  * @see org.apache.camel.component.hl7.HL7MLLPCodec
  */
+@Dataformat("hl7")
 public class HL7DataFormat extends ServiceSupport implements DataFormat, DataFormatName {
 
     private static final Map<String, String> HEADER_MAP = new HashMap<>();
diff --git a/components/camel-hl7/src/main/java/org/apache/camel/component/hl7/TerserLanguage.java b/components/camel-hl7/src/main/java/org/apache/camel/component/hl7/TerserLanguage.java
index b19133a..ea64858 100644
--- a/components/camel-hl7/src/main/java/org/apache/camel/component/hl7/TerserLanguage.java
+++ b/components/camel-hl7/src/main/java/org/apache/camel/component/hl7/TerserLanguage.java
@@ -29,6 +29,7 @@ import org.apache.camel.support.ExpressionToPredicateAdapter;
 import org.apache.camel.util.ObjectHelper;
 
 
+@org.apache.camel.spi.annotations.Language("terser")
 public class TerserLanguage implements Language {
 
     public static Expression terser(final String expression) {
diff --git a/components/camel-hl7/src/main/resources/META-INF/services/org/apache/camel/dataformat/hl7 b/components/camel-hl7/src/main/resources/META-INF/services/org/apache/camel/dataformat/hl7
deleted file mode 100644
index 5875ceb..0000000
--- a/components/camel-hl7/src/main/resources/META-INF/services/org/apache/camel/dataformat/hl7
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.hl7.HL7DataFormat
diff --git a/components/camel-hl7/src/main/resources/META-INF/services/org/apache/camel/language/terser b/components/camel-hl7/src/main/resources/META-INF/services/org/apache/camel/language/terser
deleted file mode 100644
index be2d04e..0000000
--- a/components/camel-hl7/src/main/resources/META-INF/services/org/apache/camel/language/terser
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.hl7.TerserLanguage
\ No newline at end of file
diff --git a/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpComponent.java b/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpComponent.java
index cfbf6ca..afee58d 100644
--- a/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpComponent.java
+++ b/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpComponent.java
@@ -41,6 +41,7 @@ import org.apache.camel.spi.HeaderFilterStrategy;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.RestConfiguration;
 import org.apache.camel.spi.RestProducerFactory;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.IntrospectionSupport;
 import org.apache.camel.support.RestProducerFactoryHelper;
 import org.apache.camel.support.ServiceHelper;
@@ -69,6 +70,7 @@ import org.apache.http.ssl.SSLContexts;
  * Component</a>
  */
 @Metadata(label = "verifiers", enums = "parameters,connectivity")
+@Component("http,http4,https,https4")
 public class HttpComponent extends HttpCommonComponent implements RestProducerFactory, SSLContextParametersAware {
 
     @Metadata(label = "advanced", description = "To use the custom HttpClientConfigurer to perform configuration of the HttpClient that will be used.")
diff --git a/components/camel-http4/src/main/resources/META-INF/services/org/apache/camel/component/http b/components/camel-http4/src/main/resources/META-INF/services/org/apache/camel/component/http
deleted file mode 100644
index 12005c6..0000000
--- a/components/camel-http4/src/main/resources/META-INF/services/org/apache/camel/component/http
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.http4.HttpComponent
diff --git a/components/camel-http4/src/main/resources/META-INF/services/org/apache/camel/component/http4 b/components/camel-http4/src/main/resources/META-INF/services/org/apache/camel/component/http4
deleted file mode 100644
index 12005c6..0000000
--- a/components/camel-http4/src/main/resources/META-INF/services/org/apache/camel/component/http4
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.http4.HttpComponent
diff --git a/components/camel-http4/src/main/resources/META-INF/services/org/apache/camel/component/https b/components/camel-http4/src/main/resources/META-INF/services/org/apache/camel/component/https
deleted file mode 100644
index 12005c6..0000000
--- a/components/camel-http4/src/main/resources/META-INF/services/org/apache/camel/component/https
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.http4.HttpComponent
diff --git a/components/camel-http4/src/main/resources/META-INF/services/org/apache/camel/component/https4 b/components/camel-http4/src/main/resources/META-INF/services/org/apache/camel/component/https4
deleted file mode 100644
index 12005c6..0000000
--- a/components/camel-http4/src/main/resources/META-INF/services/org/apache/camel/component/https4
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.http4.HttpComponent
diff --git a/components/camel-ical/src/main/java/org/apache/camel/component/ical/ICalDataFormat.java b/components/camel-ical/src/main/java/org/apache/camel/component/ical/ICalDataFormat.java
index eae6ff8..31b4577 100644
--- a/components/camel-ical/src/main/java/org/apache/camel/component/ical/ICalDataFormat.java
+++ b/components/camel-ical/src/main/java/org/apache/camel/component/ical/ICalDataFormat.java
@@ -26,11 +26,13 @@ import net.fortuna.ical4j.model.Calendar;
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataFormatName;
+import org.apache.camel.spi.annotations.Dataformat;
 import org.apache.camel.support.ServiceSupport;
 
 /**
  * Bridge ICal data format to camel world.
  */
+@Dataformat("ical")
 public class ICalDataFormat extends ServiceSupport implements DataFormat, DataFormatName {
 
     private CalendarOutputter outputer = new CalendarOutputter();
diff --git a/components/camel-ical/src/main/resources/META-INF/services/org/apache/camel/dataformat/ical b/components/camel-ical/src/main/resources/META-INF/services/org/apache/camel/dataformat/ical
deleted file mode 100644
index 1e0e773..0000000
--- a/components/camel-ical/src/main/resources/META-INF/services/org/apache/camel/dataformat/ical
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.ical.ICalDataFormat
\ No newline at end of file
diff --git a/components/camel-iec60870/src/main/java/org/apache/camel/component/iec60870/client/ClientComponent.java b/components/camel-iec60870/src/main/java/org/apache/camel/component/iec60870/client/ClientComponent.java
index 24190f7..096a880 100644
--- a/components/camel-iec60870/src/main/java/org/apache/camel/component/iec60870/client/ClientComponent.java
+++ b/components/camel-iec60870/src/main/java/org/apache/camel/component/iec60870/client/ClientComponent.java
@@ -24,8 +24,10 @@ import org.apache.camel.component.iec60870.AbstractIecComponent;
 import org.apache.camel.component.iec60870.ConnectionId;
 import org.apache.camel.component.iec60870.Constants;
 import org.apache.camel.component.iec60870.ObjectAddress;
+import org.apache.camel.spi.annotations.Component;
 import org.eclipse.neoscada.protocol.iec60870.client.data.DataModuleOptions;
 
+@Component("iec60870-client")
 public class ClientComponent extends AbstractIecComponent<ClientConnectionMultiplexor, ClientOptions> {
 
     public ClientComponent(final CamelContext context) {
diff --git a/components/camel-iec60870/src/main/java/org/apache/camel/component/iec60870/server/ServerComponent.java b/components/camel-iec60870/src/main/java/org/apache/camel/component/iec60870/server/ServerComponent.java
index aa8b1f1..a4ead01 100644
--- a/components/camel-iec60870/src/main/java/org/apache/camel/component/iec60870/server/ServerComponent.java
+++ b/components/camel-iec60870/src/main/java/org/apache/camel/component/iec60870/server/ServerComponent.java
@@ -25,8 +25,10 @@ import org.apache.camel.component.iec60870.AbstractIecComponent;
 import org.apache.camel.component.iec60870.ConnectionId;
 import org.apache.camel.component.iec60870.Constants;
 import org.apache.camel.component.iec60870.ObjectAddress;
+import org.apache.camel.spi.annotations.Component;
 import org.eclipse.neoscada.protocol.iec60870.server.data.DataModuleOptions;
 
+@Component("iec60870-server")
 public class ServerComponent extends AbstractIecComponent<ServerConnectionMultiplexor, ServerOptions> {
 
     public ServerComponent(final CamelContext context) {
diff --git a/components/camel-iec60870/src/main/resources/META-INF/services/org/apache/camel/component/iec60870-client b/components/camel-iec60870/src/main/resources/META-INF/services/org/apache/camel/component/iec60870-client
deleted file mode 100644
index 4194ef0..0000000
--- a/components/camel-iec60870/src/main/resources/META-INF/services/org/apache/camel/component/iec60870-client
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.iec60870.client.ClientComponent
\ No newline at end of file
diff --git a/components/camel-iec60870/src/main/resources/META-INF/services/org/apache/camel/component/iec60870-server b/components/camel-iec60870/src/main/resources/META-INF/services/org/apache/camel/component/iec60870-server
deleted file mode 100644
index 25afe0d..0000000
--- a/components/camel-iec60870/src/main/resources/META-INF/services/org/apache/camel/component/iec60870-server
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.iec60870.server.ServerComponent
\ No newline at end of file
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/IgniteComponent.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/IgniteComponent.java
deleted file mode 100644
index 04546a9..0000000
--- a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/IgniteComponent.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.apache.camel.component.ignite;
-
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URI;
-import java.net.URL;
-import java.util.Map;
-
-import org.apache.camel.Endpoint;
-import org.apache.camel.component.ignite.cache.IgniteCacheEndpoint;
-import org.apache.camel.component.ignite.compute.IgniteComputeEndpoint;
-import org.apache.camel.component.ignite.events.IgniteEventsEndpoint;
-import org.apache.camel.component.ignite.idgen.IgniteIdGenEndpoint;
-import org.apache.camel.component.ignite.messaging.IgniteMessagingEndpoint;
-import org.apache.camel.component.ignite.queue.IgniteQueueEndpoint;
-import org.apache.camel.component.ignite.set.IgniteSetEndpoint;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.URISupport;
-import org.apache.ignite.Ignite;
-import org.apache.ignite.configuration.IgniteConfiguration;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * The Ignite Component integrates Apache Camel with Apache Ignite, providing endpoints for the following functions:
- * <ul>
- * <li>Cache operations.</li>
- * <li>Cluster computation.</li>
- * <li>Messaging.</li>
- * <li>Eventing.</li>
- * <li>Id Generation.</li>
- * <li>Set operations.</li>
- * <li>Queue operations.</li>
- * </ul>
- * @deprecated Use 
- * {@link org.apache.camel.component.ignite.cache.IgniteCacheComponent},
- * {@link org.apache.camel.component.ignite.compute.IgniteComputeComponent},
- * {@link org.apache.camel.component.ignite.events.IgniteEventsComponent},
- * {@link org.apache.camel.component.ignite.idgen.IgniteIdGenComponent},
- * {@link org.apache.camel.component.ignite.messaging.IgniteMessagingComponent},
- * {@link org.apache.camel.component.ignite.queue.IgniteQueueComponent} and
- * {@link org.apache.camel.component.ignite.set.IgniteSetComponent}
- */
-@Deprecated
-public class IgniteComponent extends AbstractIgniteComponent {
-
-    private static final Logger LOG = LoggerFactory.getLogger(IgniteComponent.class);
-
-    public static IgniteComponent fromIgnite(Ignite ignite) {
-        IgniteComponent answer = new IgniteComponent();
-        answer.setIgnite(ignite);
-        return answer;
-    }
-
-    public static IgniteComponent fromConfiguration(IgniteConfiguration configuration) {
-        IgniteComponent answer = new IgniteComponent();
-        answer.setIgniteConfiguration(configuration);
-        return answer;
-    }
-
-    public static IgniteComponent fromInputStream(InputStream inputStream) {
-        IgniteComponent answer = new IgniteComponent();
-        answer.setConfigurationResource(inputStream);
-        return answer;
-    }
-
-    public static IgniteComponent fromUrl(URL url) {
-        IgniteComponent answer = new IgniteComponent();
-        answer.setConfigurationResource(url);
-        return answer;
-    }
-
-    public static IgniteComponent fromLocation(String location) {
-        IgniteComponent answer = new IgniteComponent();
-        answer.setConfigurationResource(location);
-        return answer;
-    }
-
-    @Override
-    protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
-        ObjectHelper.notNull(getCamelContext(), "Camel Context");
-
-        AbstractIgniteEndpoint answer = null;
-        URI remainingUri = new URI(URISupport.normalizeUri(remaining));
-        String scheme = remainingUri.getScheme();
-
-        LOG.warn("The scheme syntax 'ignite:{}' has been deprecated. Use 'ignite-{}' instead.", scheme, scheme);
-
-        switch (scheme) {
-        case "cache":
-            answer = new IgniteCacheEndpoint(uri, remainingUri, parameters, this);
-            break;
-        case "compute":
-            answer = new IgniteComputeEndpoint(uri, remainingUri, parameters, this);
-            break;
-        case "messaging":
-            answer = new IgniteMessagingEndpoint(uri, remainingUri, parameters, this);
-            break;
-        case "events":
-            answer = new IgniteEventsEndpoint(uri, remainingUri, parameters, this);
-            break;
-        case "set":
-            answer = new IgniteSetEndpoint(uri, remainingUri, parameters, this);
-            break;
-        case "idgen":
-            answer = new IgniteIdGenEndpoint(uri, remainingUri, parameters, this);
-            break;
-        case "queue":
-            answer = new IgniteQueueEndpoint(uri, remainingUri, parameters, this);
-            break;
-            
-        default:
-            throw new MalformedURLException("An invalid Ignite endpoint URI was provided. Please check that "
-                    + "it starts with:" + " ignite:[cache/compute/messaging/...]:...");
-        }
-
-        setProperties(answer, parameters);
-
-        return answer;
-    }
-
-}
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/cache/IgniteCacheComponent.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/cache/IgniteCacheComponent.java
index 2fc12fa..e1a2fad 100644
--- a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/cache/IgniteCacheComponent.java
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/cache/IgniteCacheComponent.java
@@ -22,6 +22,7 @@ import java.util.Map;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.ignite.AbstractIgniteComponent;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.configuration.IgniteConfiguration;
@@ -29,6 +30,7 @@ import org.apache.ignite.configuration.IgniteConfiguration;
 /**
  * The Ignite Cache Component.
  */
+@Component("ignite-cache")
 public class IgniteCacheComponent extends AbstractIgniteComponent {
 
     public static IgniteCacheComponent fromIgnite(Ignite ignite) {
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/compute/IgniteComputeComponent.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/compute/IgniteComputeComponent.java
index ae442eb..97d564f 100644
--- a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/compute/IgniteComputeComponent.java
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/compute/IgniteComputeComponent.java
@@ -22,6 +22,7 @@ import java.util.Map;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.ignite.AbstractIgniteComponent;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.configuration.IgniteConfiguration;
@@ -29,6 +30,7 @@ import org.apache.ignite.configuration.IgniteConfiguration;
 /**
  * The Ignite Compute Component.
  */
+@Component("ignite-compute")
 public class IgniteComputeComponent extends AbstractIgniteComponent {
 
     public static IgniteComputeComponent fromIgnite(Ignite ignite) {
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/events/IgniteEventsComponent.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/events/IgniteEventsComponent.java
index 6b0c30e..bdcf847 100644
--- a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/events/IgniteEventsComponent.java
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/events/IgniteEventsComponent.java
@@ -22,6 +22,7 @@ import java.util.Map;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.ignite.AbstractIgniteComponent;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.configuration.IgniteConfiguration;
@@ -29,6 +30,7 @@ import org.apache.ignite.configuration.IgniteConfiguration;
 /**
  * The Ignite Events Component.
  */
+@Component("ignite-events")
 public class IgniteEventsComponent extends AbstractIgniteComponent {
 
     public static IgniteEventsComponent fromIgnite(Ignite ignite) {
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/idgen/IgniteIdGenComponent.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/idgen/IgniteIdGenComponent.java
index cf61479..964ed3b 100644
--- a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/idgen/IgniteIdGenComponent.java
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/idgen/IgniteIdGenComponent.java
@@ -22,6 +22,7 @@ import java.util.Map;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.ignite.AbstractIgniteComponent;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.configuration.IgniteConfiguration;
@@ -29,6 +30,7 @@ import org.apache.ignite.configuration.IgniteConfiguration;
 /**
  * The Ignite ID Generator Component.
  */
+@Component("ignite-idgen")
 public class IgniteIdGenComponent extends AbstractIgniteComponent {
 
     public static IgniteIdGenComponent fromIgnite(Ignite ignite) {
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/messaging/IgniteMessagingComponent.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/messaging/IgniteMessagingComponent.java
index 95409e5..51ffb2a 100644
--- a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/messaging/IgniteMessagingComponent.java
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/messaging/IgniteMessagingComponent.java
@@ -22,6 +22,7 @@ import java.util.Map;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.ignite.AbstractIgniteComponent;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.configuration.IgniteConfiguration;
@@ -29,6 +30,7 @@ import org.apache.ignite.configuration.IgniteConfiguration;
 /**
  * The Ignite Messaging Component.
  */
+@Component("ignite-messaging")
 public class IgniteMessagingComponent extends AbstractIgniteComponent {
 
     public static IgniteMessagingComponent fromIgnite(Ignite ignite) {
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/queue/IgniteQueueComponent.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/queue/IgniteQueueComponent.java
index fb59524..671310e 100644
--- a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/queue/IgniteQueueComponent.java
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/queue/IgniteQueueComponent.java
@@ -22,6 +22,7 @@ import java.util.Map;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.ignite.AbstractIgniteComponent;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.configuration.IgniteConfiguration;
@@ -29,6 +30,7 @@ import org.apache.ignite.configuration.IgniteConfiguration;
 /**
  * The Ignite Queue Component.
  */
+@Component("ignite-queue")
 public class IgniteQueueComponent extends AbstractIgniteComponent {
 
     public static IgniteQueueComponent fromIgnite(Ignite ignite) {
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/set/IgniteSetComponent.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/set/IgniteSetComponent.java
index d38b128..5d247ef 100644
--- a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/set/IgniteSetComponent.java
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/set/IgniteSetComponent.java
@@ -22,6 +22,7 @@ import java.util.Map;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.ignite.AbstractIgniteComponent;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.configuration.IgniteConfiguration;
@@ -29,6 +30,7 @@ import org.apache.ignite.configuration.IgniteConfiguration;
 /**
  * The Ignite Set Component.
  */
+@Component("ignite-set")
 public class IgniteSetComponent extends AbstractIgniteComponent {
 
     public static IgniteSetComponent fromIgnite(Ignite ignite) {
diff --git a/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite b/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite
deleted file mode 100644
index fca42c6..0000000
--- a/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.ignite.IgniteComponent
diff --git a/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-cache b/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-cache
deleted file mode 100644
index 495652e..0000000
--- a/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-cache
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.ignite.cache.IgniteCacheComponent
diff --git a/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-compute b/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-compute
deleted file mode 100644
index aa87994..0000000
--- a/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-compute
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.ignite.compute.IgniteComputeComponent
diff --git a/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-events b/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-events
deleted file mode 100644
index 299d7ba..0000000
--- a/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-events
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.ignite.events.IgniteEventsComponent
diff --git a/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-idgen b/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-idgen
deleted file mode 100644
index c13c027..0000000
--- a/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-idgen
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.ignite.idgen.IgniteIdGenComponent
diff --git a/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-messaging b/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-messaging
deleted file mode 100644
index 28dbd84..0000000
--- a/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-messaging
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.ignite.messaging.IgniteMessagingComponent
diff --git a/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-queue b/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-queue
deleted file mode 100644
index ec3a5e8..0000000
--- a/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-queue
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.ignite.queue.IgniteQueueComponent
diff --git a/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-set b/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-set
deleted file mode 100644
index 4cef5c3..0000000
--- a/components/camel-ignite/src/main/resources/META-INF/services/org/apache/camel/component/ignite-set
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.ignite.set.IgniteSetComponent
diff --git a/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanComponent.java b/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanComponent.java
index afd45db..50d5f3c 100644
--- a/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanComponent.java
+++ b/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanComponent.java
@@ -20,10 +20,12 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.spi.Metadata;
 import org.infinispan.commons.api.BasicCacheContainer;
 
+@Component("infinispan")
 public class InfinispanComponent extends DefaultComponent {
     @Metadata(description = "Default configuration")
     private InfinispanConfiguration configuration;
diff --git a/components/camel-infinispan/src/main/resources/META-INF/services/org/apache/camel/component/infinispan b/components/camel-infinispan/src/main/resources/META-INF/services/org/apache/camel/component/infinispan
deleted file mode 100644
index 6d25b96..0000000
--- a/components/camel-infinispan/src/main/resources/META-INF/services/org/apache/camel/component/infinispan
+++ /dev/null
@@ -1,17 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.infinispan.InfinispanComponent
diff --git a/components/camel-influxdb/src/main/java/org/apache/camel/component/influxdb/InfluxDbComponent.java b/components/camel-influxdb/src/main/java/org/apache/camel/component/influxdb/InfluxDbComponent.java
index 8beb7b6..59848ac 100644
--- a/components/camel-influxdb/src/main/java/org/apache/camel/component/influxdb/InfluxDbComponent.java
+++ b/components/camel-influxdb/src/main/java/org/apache/camel/component/influxdb/InfluxDbComponent.java
@@ -19,8 +19,10 @@ package org.apache.camel.component.influxdb;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
+@Component("influxdb")
 public class InfluxDbComponent extends DefaultComponent {
 
     public InfluxDbComponent() {
diff --git a/components/camel-influxdb/src/main/resources/META-INF/services/org/apache/camel/component/influxdb b/components/camel-influxdb/src/main/resources/META-INF/services/org/apache/camel/component/influxdb
deleted file mode 100644
index cdb708d..0000000
--- a/components/camel-influxdb/src/main/resources/META-INF/services/org/apache/camel/component/influxdb
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-class=org.apache.camel.component.influxdb.InfluxDbComponent
diff --git a/components/camel-iota/src/main/java/org/apache/camel/component/iota/IOTAComponent.java b/components/camel-iota/src/main/java/org/apache/camel/component/iota/IOTAComponent.java
index 89d12a4..131b9a3 100644
--- a/components/camel-iota/src/main/java/org/apache/camel/component/iota/IOTAComponent.java
+++ b/components/camel-iota/src/main/java/org/apache/camel/component/iota/IOTAComponent.java
@@ -20,11 +20,13 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
 /**
  * Represents the component that manages {@link IOTAEndpoint}.
  */
+@Component("iota")
 public class IOTAComponent extends DefaultComponent {
 
     public IOTAComponent() {
diff --git a/components/camel-iota/src/main/resources/META-INF/services/org/apache/camel/component/iota b/components/camel-iota/src/main/resources/META-INF/services/org/apache/camel/component/iota
deleted file mode 100644
index 6469445..0000000
--- a/components/camel-iota/src/main/resources/META-INF/services/org/apache/camel/component/iota
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.iota.IOTAComponent
diff --git a/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSComponent.java b/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSComponent.java
index fb645fe..50a0ea9 100644
--- a/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSComponent.java
+++ b/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSComponent.java
@@ -24,8 +24,9 @@ import io.nessus.ipfs.impl.DefaultIPFSClient;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.support.DefaultComponent;
+import org.apache.camel.spi.annotations.Component;
 
-
+@Component("ipfs")
 public class IPFSComponent extends DefaultComponent {
 
     private IPFSClient client;
diff --git a/components/camel-ipfs/src/main/resources/META-INF/services/org/apache/camel/component/ipfs b/components/camel-ipfs/src/main/resources/META-INF/services/org/apache/camel/component/ipfs
deleted file mode 100644
index 179ce43..0000000
--- a/components/camel-ipfs/src/main/resources/META-INF/services/org/apache/camel/component/ipfs
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.ipfs.IPFSComponent
diff --git a/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcComponent.java b/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcComponent.java
index c78cc27..d08a7dd 100644
--- a/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcComponent.java
+++ b/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcComponent.java
@@ -21,6 +21,8 @@ import java.util.Map;
 
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.SSLContextParametersAware;
+
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.support.jsse.SSLContextParameters;
@@ -31,6 +33,7 @@ import org.schwering.irc.lib.ssl.SSLIRCConnection;
 /**
  * Defines the <a href="http://camel.apache.org/irc.html">IRC Component</a>
  */
+@Component("irc,ircs")
 public class IrcComponent extends DefaultComponent implements SSLContextParametersAware {
 
     private final transient Map<String, IRCConnection> connectionCache = new HashMap<>();
diff --git a/components/camel-irc/src/main/resources/META-INF/services/org/apache/camel/component/irc b/components/camel-irc/src/main/resources/META-INF/services/org/apache/camel/component/irc
deleted file mode 100644
index c03d54e..0000000
--- a/components/camel-irc/src/main/resources/META-INF/services/org/apache/camel/component/irc
+++ /dev/null
@@ -1,17 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.irc.IrcComponent
diff --git a/components/camel-irc/src/main/resources/META-INF/services/org/apache/camel/component/ircs b/components/camel-irc/src/main/resources/META-INF/services/org/apache/camel/component/ircs
deleted file mode 100644
index c03d54e..0000000
--- a/components/camel-irc/src/main/resources/META-INF/services/org/apache/camel/component/ircs
+++ /dev/null
@@ -1,17 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.irc.IrcComponent
diff --git a/components/camel-ironmq/src/main/java/org/apache/camel/component/ironmq/IronMQComponent.java b/components/camel-ironmq/src/main/java/org/apache/camel/component/ironmq/IronMQComponent.java
index aa3209b..37318f5 100644
--- a/components/camel-ironmq/src/main/java/org/apache/camel/component/ironmq/IronMQComponent.java
+++ b/components/camel-ironmq/src/main/java/org/apache/camel/component/ironmq/IronMQComponent.java
@@ -20,12 +20,14 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.ScheduledPollEndpoint;
 import org.apache.camel.support.DefaultComponent;
 
 /**
  * Represents the component that manages {@link IronMQEndpoint}.
  */
+@Component("ironmq")
 public class IronMQComponent extends DefaultComponent {
 
     public IronMQComponent(CamelContext context) {
diff --git a/components/camel-ironmq/src/main/resources/META-INF/services/org/apache/camel/component/ironmq b/components/camel-ironmq/src/main/resources/META-INF/services/org/apache/camel/component/ironmq
deleted file mode 100644
index 8f703b2..0000000
--- a/components/camel-ironmq/src/main/resources/META-INF/services/org/apache/camel/component/ironmq
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.ironmq.IronMQComponent
diff --git a/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/JacksonDataFormat.java b/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/JacksonDataFormat.java
index 6dee7dd..14a0fca 100644
--- a/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/JacksonDataFormat.java
+++ b/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/JacksonDataFormat.java
@@ -40,6 +40,7 @@ import org.apache.camel.CamelContextAware;
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataFormatName;
+import org.apache.camel.spi.annotations.Dataformat;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.ObjectHelper;
@@ -49,6 +50,7 @@ import org.apache.camel.support.ObjectHelper;
  * ({@link DataFormat}) using <a href="http://jackson.codehaus.org/">Jackson</a>
  * to marshal to and from JSON.
  */
+@Dataformat("json-jackson")
 public class JacksonDataFormat extends ServiceSupport implements DataFormat, DataFormatName, CamelContextAware {
 
     private CamelContext camelContext;
diff --git a/components/camel-jackson/src/main/resources/META-INF/services/org/apache/camel/dataformat/json-jackson b/components/camel-jackson/src/main/resources/META-INF/services/org/apache/camel/dataformat/json-jackson
deleted file mode 100644
index 85ad9c9..0000000
--- a/components/camel-jackson/src/main/resources/META-INF/services/org/apache/camel/dataformat/json-jackson
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.jackson.JacksonDataFormat
diff --git a/components/camel-jacksonxml/src/main/java/org/apache/camel/component/jacksonxml/JacksonXMLDataFormat.java b/components/camel-jacksonxml/src/main/java/org/apache/camel/component/jacksonxml/JacksonXMLDataFormat.java
index 6ee4b61..e2dad46 100644
--- a/components/camel-jacksonxml/src/main/java/org/apache/camel/component/jacksonxml/JacksonXMLDataFormat.java
+++ b/components/camel-jacksonxml/src/main/java/org/apache/camel/component/jacksonxml/JacksonXMLDataFormat.java
@@ -40,6 +40,7 @@ import org.apache.camel.CamelContextAware;
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataFormatName;
+import org.apache.camel.spi.annotations.Dataformat;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.ObjectHelper;
@@ -49,6 +50,7 @@ import org.apache.camel.support.ObjectHelper;
  * ({@link DataFormat}) using <a href="http://jackson.codehaus.org/">Jackson</a>
  * to marshal to and from XML.
  */
+@Dataformat("jacksonxml")
 public class JacksonXMLDataFormat extends ServiceSupport implements DataFormat, DataFormatName, CamelContextAware {
 
     private CamelContext camelContext;
diff --git a/components/camel-jacksonxml/src/main/resources/META-INF/services/org/apache/camel/dataformat/jacksonxml b/components/camel-jacksonxml/src/main/resources/META-INF/services/org/apache/camel/dataformat/jacksonxml
deleted file mode 100644
index 08249cd..0000000
--- a/components/camel-jacksonxml/src/main/resources/META-INF/services/org/apache/camel/dataformat/jacksonxml
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.jacksonxml.JacksonXMLDataFormat
diff --git a/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbDataFormat.java b/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbDataFormat.java
index 83d5f0e..8e686ce 100644
--- a/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbDataFormat.java
+++ b/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbDataFormat.java
@@ -56,6 +56,7 @@ import org.apache.camel.InvalidPayloadException;
 import org.apache.camel.TypeConverter;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataFormatName;
+import org.apache.camel.spi.annotations.Dataformat;
 import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.support.CamelContextHelper;
@@ -68,6 +69,7 @@ import org.apache.camel.support.ResourceHelper;
  * A <a href="http://camel.apache.org/data-format.html">data format</a> ({@link DataFormat})
  * using JAXB2 to marshal to and from XML
  */
+@Dataformat("jaxb")
 public class JaxbDataFormat extends ServiceSupport implements DataFormat, DataFormatName, CamelContextAware {
 
     private static final BlockingQueue<SchemaFactory> SCHEMA_FACTORY_POOL = new LinkedBlockingQueue<>();
diff --git a/components/camel-jaxb/src/main/resources/META-INF/services/org/apache/camel/dataformat/jaxb b/components/camel-jaxb/src/main/resources/META-INF/services/org/apache/camel/dataformat/jaxb
deleted file mode 100644
index b1636e6..0000000
--- a/components/camel-jaxb/src/main/resources/META-INF/services/org/apache/camel/dataformat/jaxb
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.converter.jaxb.JaxbDataFormat
diff --git a/components/camel-jbpm/src/main/java/org/apache/camel/component/jbpm/JBPMComponent.java b/components/camel-jbpm/src/main/java/org/apache/camel/component/jbpm/JBPMComponent.java
index 2db6797..3308d71 100644
--- a/components/camel-jbpm/src/main/java/org/apache/camel/component/jbpm/JBPMComponent.java
+++ b/components/camel-jbpm/src/main/java/org/apache/camel/component/jbpm/JBPMComponent.java
@@ -20,8 +20,10 @@ import java.net.URL;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
+@Component("jbpm")
 public class JBPMComponent extends DefaultComponent {
 
     protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
diff --git a/components/camel-jbpm/src/main/resources/META-INF/services/org/apache/camel/component/jbpm b/components/camel-jbpm/src/main/resources/META-INF/services/org/apache/camel/component/jbpm
deleted file mode 100644
index a574bbf..0000000
--- a/components/camel-jbpm/src/main/resources/META-INF/services/org/apache/camel/component/jbpm
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.jbpm.JBPMComponent
diff --git a/components/camel-jcache/src/main/java/org/apache/camel/component/jcache/JCacheComponent.java b/components/camel-jcache/src/main/java/org/apache/camel/component/jcache/JCacheComponent.java
index 0632554..6fa95ae 100644
--- a/components/camel-jcache/src/main/java/org/apache/camel/component/jcache/JCacheComponent.java
+++ b/components/camel-jcache/src/main/java/org/apache/camel/component/jcache/JCacheComponent.java
@@ -25,11 +25,13 @@ import javax.cache.configuration.Configuration;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
 /**
  * Represents the component that manages {@link JCacheEndpoint}.
  */
+@Component("jcache")
 public class JCacheComponent extends DefaultComponent {
 
     private String cachingProvider;
diff --git a/components/camel-jcache/src/main/resources/META-INF/services/org/apache/camel/component/jcache b/components/camel-jcache/src/main/resources/META-INF/services/org/apache/camel/component/jcache
deleted file mode 100644
index 4ebc5df..0000000
--- a/components/camel-jcache/src/main/resources/META-INF/services/org/apache/camel/component/jcache
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.jcache.JCacheComponent
diff --git a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsComponent.java b/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsComponent.java
index 03d24ee..691941d 100644
--- a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsComponent.java
+++ b/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsComponent.java
@@ -20,6 +20,7 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.jclouds.Context;
 import org.jclouds.blobstore.BlobStore;
@@ -28,6 +29,7 @@ import org.jclouds.compute.ComputeService;
 /**
  * Represents the component that manages {@link JcloudsEndpoint}.
  */
+@Component("jclouds")
 public class JcloudsComponent extends DefaultComponent {
 
     private List<BlobStore> blobStores;
diff --git a/components/camel-jclouds/src/main/resources/META-INF/services/org/apache/camel/component/jclouds b/components/camel-jclouds/src/main/resources/META-INF/services/org/apache/camel/component/jclouds
deleted file mode 100644
index 88096d8..0000000
--- a/components/camel-jclouds/src/main/resources/META-INF/services/org/apache/camel/component/jclouds
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.jclouds.JcloudsComponent
diff --git a/components/camel-jcr/src/main/java/org/apache/camel/component/jcr/JcrComponent.java b/components/camel-jcr/src/main/java/org/apache/camel/component/jcr/JcrComponent.java
index 870c188..d043eae 100644
--- a/components/camel-jcr/src/main/java/org/apache/camel/component/jcr/JcrComponent.java
+++ b/components/camel-jcr/src/main/java/org/apache/camel/component/jcr/JcrComponent.java
@@ -20,11 +20,13 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 
 /**
  * A component for integrating with JSR-170 (JCR) compliant content repositories
  */
+@Component("jcr")
 public class JcrComponent extends DefaultComponent {
 
     public JcrComponent() {
diff --git a/components/camel-jcr/src/main/resources/META-INF/services/org/apache/camel/component/jcr b/components/camel-jcr/src/main/resources/META-INF/services/org/apache/camel/component/jcr
deleted file mode 100644
index 8433269..0000000
--- a/components/camel-jcr/src/main/resources/META-INF/services/org/apache/camel/component/jcr
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.jcr.JcrComponent
\ No newline at end of file
diff --git a/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcComponent.java b/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcComponent.java
index 927d47a..001c40b 100644
--- a/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcComponent.java
+++ b/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcComponent.java
@@ -22,10 +22,12 @@ import javax.sql.DataSource;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.NoSuchBeanException;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.IntrospectionSupport;
 
+@Component("jdbc")
 public class JdbcComponent extends DefaultComponent {
 
     private DataSource dataSource;
diff --git a/components/camel-jdbc/src/main/resources/META-INF/services/org/apache/camel/component/jdbc b/components/camel-jdbc/src/main/resources/META-INF/services/org/apache/camel/component/jdbc
deleted file mode 100755
index b98866c..0000000
--- a/components/camel-jdbc/src/main/resources/META-INF/services/org/apache/camel/component/jdbc
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.component.jdbc.JdbcComponent
diff --git a/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/JettyHttpComponent9.java b/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/JettyHttpComponent9.java
index 0e6ada2..b5c2f7f 100644
--- a/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/JettyHttpComponent9.java
+++ b/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/JettyHttpComponent9.java
@@ -26,6 +26,7 @@ import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.component.jetty.CamelHttpClient;
 import org.apache.camel.component.jetty.JettyHttpComponent;
 import org.apache.camel.component.jetty.JettyHttpEndpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.IntrospectionSupport;
 import org.eclipse.jetty.client.HttpClientTransport;
 import org.eclipse.jetty.server.AbstractConnector;
@@ -39,6 +40,7 @@ import org.eclipse.jetty.util.ssl.SslContextFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@Component("jetty")
 public class JettyHttpComponent9 extends JettyHttpComponent {
 
     private static final Logger LOG = LoggerFactory.getLogger(JettyHttpComponent9.class);
diff --git a/components/camel-jetty9/src/main/resources/META-INF/services/org/apache/camel/component/jetty b/components/camel-jetty9/src/main/resources/META-INF/services/org/apache/camel/component/jetty
deleted file mode 100644
index ee67054..0000000
--- a/components/camel-jetty9/src/main/resources/META-INF/services/org/apache/camel/component/jetty
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-class=org.apache.camel.component.jetty9.JettyHttpComponent9
diff --git a/components/camel-jgroups-raft/src/main/java/org/apache/camel/component/jgroups/raft/JGroupsRaftComponent.java b/components/camel-jgroups-raft/src/main/java/org/apache/camel/component/jgroups/raft/JGroupsRaftComponent.java
index da4619d..698c800 100644
--- a/components/camel-jgroups-raft/src/main/java/org/apache/camel/component/jgroups/raft/JGroupsRaftComponent.java
+++ b/components/camel-jgroups-raft/src/main/java/org/apache/camel/component/jgroups/raft/JGroupsRaftComponent.java
@@ -23,6 +23,7 @@ import org.apache.camel.component.jgroups.raft.utils.NopStateMachine;
 
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriParam;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.jgroups.protocols.raft.StateMachine;
 import org.jgroups.raft.RaftHandle;
@@ -32,6 +33,7 @@ import org.slf4j.LoggerFactory;
 /**
  * Component providing support for JGroups-raft leader election and shared state machine implementation ({@code org.jgroups.raft.RaftHandle}).
  */
+@Component("jgroups-raft")
 public class JGroupsRaftComponent extends DefaultComponent {
     private static final Logger LOG = LoggerFactory.getLogger(JGroupsRaftComponent.class);
 
diff --git a/components/camel-jgroups-raft/src/main/resources/META-INF/services/org/apache/camel/component/jgroups-raft b/components/camel-jgroups-raft/src/main/resources/META-INF/services/org/apache/camel/component/jgroups-raft
deleted file mode 100644
index 14ba9e2..0000000
--- a/components/camel-jgroups-raft/src/main/resources/META-INF/services/org/apache/camel/component/jgroups-raft
+++ /dev/null
@@ -1,18 +0,0 @@
-## ------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You 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.
-## ------------------------------------------------------------------------
-
-class=org.apache.camel.component.jgroups.raft.JGroupsRaftComponent
\ No newline at end of file
diff --git a/components/camel-jgroups/src/main/java/org/apache/camel/component/jgroups/JGroupsComponent.java b/components/camel-jgroups/src/main/java/org/apache/camel/component/jgroups/JGroupsComponent.java
index d7c6b5c..e8c1e3f 100644
--- a/components/camel-jgroups/src/main/java/org/apache/camel/component/jgroups/JGroupsComponent.java
+++ b/components/camel-jgroups/src/main/java/org/apache/camel/component/jgroups/JGroupsComponent.java
@@ -19,6 +19,7 @@ package org.apache.camel.component.jgroups;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.spi.Metadata;
 import org.jgroups.JChannel;
@@ -26,6 +27,7 @@ import org.jgroups.JChannel;
 /**
  * Component providing support for messages multicasted from- or to JGroups channels ({@code org.jgroups.Channel}).
  */
+@Component("jgroups")
 public class JGroupsComponent extends DefaultComponent {
 
     private JChannel channel;
diff --git a/components/camel-lumberjack/src/main/resources/LICENSE.txt b/components/camel-jgroups/src/main/resources/META-INF/LICENSE.txt
similarity index 100%
rename from components/camel-lumberjack/src/main/resources/LICENSE.txt
rename to components/camel-jgroups/src/main/resources/META-INF/LICENSE.txt
diff --git a/components/camel-lumberjack/src/main/resources/NOTICE.txt b/components/camel-jgroups/src/main/resources/META-INF/NOTICE.txt
similarity index 100%
rename from components/camel-lumberjack/src/main/resources/NOTICE.txt
rename to components/camel-jgroups/src/main/resources/META-INF/NOTICE.txt
diff --git a/components/camel-jgroups/src/main/resources/META-INF/services/org/apache/camel/component/jgroups b/components/camel-jgroups/src/main/resources/META-INF/services/org/apache/camel/component/jgroups
deleted file mode 100644
index 38e8cfb..0000000
--- a/components/camel-jgroups/src/main/resources/META-INF/services/org/apache/camel/component/jgroups
+++ /dev/null
@@ -1,18 +0,0 @@
-## ------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You 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.
-## ------------------------------------------------------------------------
-
-class=org.apache.camel.component.jgroups.JGroupsComponent
\ No newline at end of file
diff --git a/components/camel-jibx/src/main/java/org/apache/camel/dataformat/jibx/JibxDataFormat.java b/components/camel-jibx/src/main/java/org/apache/camel/dataformat/jibx/JibxDataFormat.java
index 9628c59..454103f 100644
--- a/components/camel-jibx/src/main/java/org/apache/camel/dataformat/jibx/JibxDataFormat.java
+++ b/components/camel-jibx/src/main/java/org/apache/camel/dataformat/jibx/JibxDataFormat.java
@@ -22,6 +22,7 @@ import java.io.OutputStream;
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataFormatName;
+import org.apache.camel.spi.annotations.Dataformat;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.ObjectHelper;
 import org.jibx.runtime.BindingDirectory;
@@ -30,6 +31,7 @@ import org.jibx.runtime.IMarshallingContext;
 import org.jibx.runtime.IUnmarshallingContext;
 import org.jibx.runtime.JiBXException;
 
+@Dataformat("jibx")
 public class JibxDataFormat extends ServiceSupport implements DataFormat, DataFormatName {
     public static final String UNMARSHALL_CLASS = "CamelJibxUnmarshallClass";
 
diff --git a/components/camel-jibx/src/main/resources/META-INF/services/org/apache/camel/dataformat/jibx b/components/camel-jibx/src/main/resources/META-INF/services/org/apache/camel/dataformat/jibx
deleted file mode 100644
index 4f96404..0000000
--- a/components/camel-jibx/src/main/resources/META-INF/services/org/apache/camel/dataformat/jibx
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-class=org.apache.camel.dataformat.jibx.JibxDataFormat
diff --git a/components/camel-jing/src/main/java/org/apache/camel/component/validator/jing/JingComponent.java b/components/camel-jing/src/main/java/org/apache/camel/component/validator/jing/JingComponent.java
index 388ca3b..d3db8bb 100644
... 6977 lines suppressed ...