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 2018/10/12 11:26:34 UTC
[camel] 30/44: Extract camel-util and camel-api modules from
camel-core
This is an automated email from the ASF dual-hosted git repository.
gnodet pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 9a9f6233c5f6a5550d56531456ec8afa6c051bd9
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Wed Oct 3 16:38:35 2018 +0200
Extract camel-util and camel-api modules from camel-core
---
bom/camel-bom/pom.xml | 10 +
camel-api/pom.xml | 327 +++++
.../apache/camel/AfterPropertiesConfigured.java | 0
.../org/apache/camel/AlreadyStoppedException.java | 0
.../main/java/org/apache/camel/AsyncCallback.java | 0
.../main/java/org/apache/camel/AsyncEndpoint.java | 0
.../main/java/org/apache/camel/AsyncProcessor.java | 0
.../main/java/org/apache/camel/AsyncProducer.java | 0
.../src/main/java/org/apache/camel/Attachment.java | 0
.../java/org/apache/camel/AttachmentObjects.java | 0
.../main/java/org/apache/camel/Attachments.java | 0
.../main/java/org/apache/camel/BatchConsumer.java | 0
.../src/main/java/org/apache/camel/BeanInject.java | 0
.../java/org/apache/camel/BinaryPredicate.java | 0
.../src/main/java/org/apache/camel/Body.java | 0
.../src/main/java/org/apache/camel/Builder.java | 0
.../main/java/org/apache/camel/BytesSource.java | 0
.../apache/camel/CamelAuthorizationException.java | 0
.../main/java/org/apache/camel/CamelContext.java | 0
.../java/org/apache/camel/CamelContextAware.java | 0
.../main/java/org/apache/camel/CamelException.java | 0
.../org/apache/camel/CamelExchangeException.java | 0
.../org/apache/camel/CamelExecutionException.java | 0
.../org/apache/camel/CamelUnitOfWorkException.java | 0
.../src/main/java/org/apache/camel/Channel.java | 0
.../src/main/java/org/apache/camel/Component.java | 0
.../main/java/org/apache/camel/ComponentAware.java | 0
.../src/main/java/org/apache/camel/Consume.java | 0
.../src/main/java/org/apache/camel/Consumer.java | 0
.../java/org/apache/camel/ConsumerTemplate.java | 0
.../src/main/java/org/apache/camel/Converter.java | 0
.../java/org/apache/camel/DelegateEndpoint.java | 0
.../java/org/apache/camel/DelegateProcessor.java | 0
.../main/java/org/apache/camel/DynamicRouter.java | 0
.../src/main/java/org/apache/camel/Endpoint.java | 0
.../main/java/org/apache/camel/EndpointAware.java | 0
.../main/java/org/apache/camel/EndpointInject.java | 0
.../java/org/apache/camel/ErrorHandlerFactory.java | 0
.../src/main/java/org/apache/camel/Exchange.java | 0
.../java/org/apache/camel/ExchangeException.java | 0
.../java/org/apache/camel/ExchangePattern.java | 0
.../java/org/apache/camel/ExchangeProperties.java | 0
.../java/org/apache/camel/ExchangeProperty.java | 0
.../apache/camel/ExchangeTimedOutException.java | 0
.../org/apache/camel/ExecutorServiceAware.java | 0
.../apache/camel/ExpectedBodyTypeException.java | 0
.../main/java/org/apache/camel/Experimental.java | 0
.../src/main/java/org/apache/camel/Expression.java | 0
.../camel/ExpressionEvaluationException.java | 0
.../camel/ExpressionIllegalSyntaxException.java | 0
.../org/apache/camel/ExtendedStartupListener.java | 0
.../camel/FailedToCreateConsumerException.java | 0
.../camel/FailedToCreateProducerException.java | 0
.../apache/camel/FailedToCreateRouteException.java | 0
.../apache/camel/FailedToStartRouteException.java | 0
.../java/org/apache/camel/FallbackConverter.java | 0
.../org/apache/camel/FluentProducerTemplate.java | 0
.../src/main/java/org/apache/camel/Handler.java | 0
.../src/main/java/org/apache/camel/Header.java | 0
.../src/main/java/org/apache/camel/Headers.java | 0
.../src/main/java/org/apache/camel/InOnly.java | 0
.../src/main/java/org/apache/camel/InOut.java | 0
.../org/apache/camel/InvalidPayloadException.java | 0
.../camel/InvalidPayloadRuntimeException.java | 0
.../org/apache/camel/InvalidPropertyException.java | 0
.../main/java/org/apache/camel/InvokeOnHeader.java | 0
.../java/org/apache/camel/InvokeOnHeaders.java | 0
.../main/java/org/apache/camel/IsSingleton.java | 0
.../org/apache/camel/LoadPropertiesException.java | 0
.../main/java/org/apache/camel/LoggingLevel.java | 0
.../apache/camel/ManagementStatisticsLevel.java | 0
.../src/main/java/org/apache/camel/Message.java | 0
.../main/java/org/apache/camel/MessageHistory.java | 0
.../org/apache/camel/MultipleConsumersSupport.java | 0
.../src/main/java/org/apache/camel/NamedNode.java | 0
.../src/main/java/org/apache/camel/Navigate.java | 0
.../apache/camel/NoFactoryAvailableException.java | 0
.../java/org/apache/camel/NoSuchBeanException.java | 0
.../org/apache/camel/NoSuchEndpointException.java | 0
.../org/apache/camel/NoSuchHeaderException.java | 0
.../org/apache/camel/NoSuchLanguageException.java | 0
.../org/apache/camel/NoSuchPropertyException.java | 0
.../camel/NoTypeConversionAvailableException.java | 0
.../java/org/apache/camel/NonManagedService.java | 0
.../src/main/java/org/apache/camel/Ordered.java | 0
.../src/main/java/org/apache/camel/OutHeaders.java | 0
.../src/main/java/org/apache/camel/Pattern.java | 0
.../java/org/apache/camel/PollingConsumer.java | 0
.../camel/PollingConsumerPollingStrategy.java | 0
.../src/main/java/org/apache/camel/Predicate.java | 0
.../src/main/java/org/apache/camel/Processor.java | 0
.../src/main/java/org/apache/camel/Produce.java | 0
.../src/main/java/org/apache/camel/Producer.java | 0
.../java/org/apache/camel/ProducerTemplate.java | 0
.../main/java/org/apache/camel/PropertyInject.java | 0
.../apache/camel/ProxyInstantiationException.java | 0
.../main/java/org/apache/camel/RecipientList.java | 0
.../camel/ResolveEndpointFailedException.java | 0
.../apache/camel/RollbackExchangeException.java | 0
.../src/main/java/org/apache/camel/Route.java | 0
.../src/main/java/org/apache/camel/RouteAware.java | 0
.../main/java/org/apache/camel/RoutesBuilder.java | 0
.../main/java/org/apache/camel/RoutingSlip.java | 0
.../org/apache/camel/RuntimeCamelException.java | 0
.../org/apache/camel/RuntimeConfiguration.java | 0
.../org/apache/camel/RuntimeExchangeException.java | 0
.../apache/camel/RuntimeExpressionException.java | 0
.../apache/camel/RuntimeTransformException.java | 0
.../apache/camel/SSLContextParametersAware.java | 0
.../src/main/java/org/apache/camel/Service.java | 0
.../main/java/org/apache/camel/ServiceStatus.java | 0
.../main/java/org/apache/camel/ShutdownRoute.java | 0
.../java/org/apache/camel/ShutdownRunningTask.java | 0
.../java/org/apache/camel/ShutdownableService.java | 0
.../java/org/apache/camel/StartupListener.java | 0
.../java/org/apache/camel/StatefulService.java | 0
.../main/java/org/apache/camel/StaticService.java | 0
.../main/java/org/apache/camel/StreamCache.java | 0
.../main/java/org/apache/camel/StringSource.java | 0
.../main/java/org/apache/camel/Suspendable.java | 0
.../java/org/apache/camel/SuspendableService.java | 0
.../src/main/java/org/apache/camel/TimeoutMap.java | 0
.../main/java/org/apache/camel/TimerListener.java | 0
.../src/main/java/org/apache/camel/Traceable.java | 0
.../org/apache/camel/TypeConversionException.java | 0
.../main/java/org/apache/camel/TypeConverter.java | 0
.../java/org/apache/camel/TypeConverterExists.java | 0
.../apache/camel/TypeConverterExistsException.java | 0
.../apache/camel/TypeConverterLoaderException.java | 0
.../main/java/org/apache/camel/TypeConverters.java | 0
.../java/org/apache/camel/ValidationException.java | 0
.../main/java/org/apache/camel/ValueHolder.java | 0
.../camel/VetoCamelContextStartException.java | 0
.../org/apache/camel/WaitForTaskToComplete.java | 0
.../main/java/org/apache/camel/WrappedFile.java | 0
.../camel/cluster/CamelClusterEventListener.java | 0
.../apache/camel/cluster/CamelClusterMember.java | 0
.../apache/camel/cluster/CamelClusterService.java | 0
.../org/apache/camel/cluster/CamelClusterView.java | 0
.../java/org/apache/camel/cluster/package.html | 0
.../component/extension/ComponentExtension.java | 0
.../extension/ComponentVerifierExtension.java | 0
.../ComponentVerifierExtensionHelper.java | 0
.../component/extension/MetaDataExtension.java | 0
.../apache/camel/component/extension/package.html | 0
.../java/org/apache/camel/health/HealthCheck.java | 0
.../camel/health/HealthCheckConfiguration.java | 0
.../org/apache/camel/health/HealthCheckFilter.java | 0
.../org/apache/camel/health/HealthCheckHelper.java | 0
.../apache/camel/health/HealthCheckRegistry.java | 0
.../apache/camel/health/HealthCheckRepository.java | 0
.../camel/health/HealthCheckResultBuilder.java | 0
.../apache/camel/health/HealthCheckService.java | 0
.../main/java/org/apache/camel/health/package.html | 0
.../main/java/org/apache/camel/package-info.java | 0
.../runtimecatalog/EndpointValidationResult.java | 6 +-
.../camel/runtimecatalog/JSonSchemaResolver.java | 0
.../runtimecatalog/LanguageValidationResult.java | 0
.../camel/runtimecatalog/RuntimeCamelCatalog.java | 0
.../org/apache/camel/runtimecatalog/package.html | 0
.../apache/camel/spi/AggregationRepository.java | 0
.../camel/spi/AsyncProcessorAwaitManager.java | 0
.../org/apache/camel/spi/AuthorizationPolicy.java | 0
.../main/java/org/apache/camel/spi/Breakpoint.java | 0
.../org/apache/camel/spi/BrowsableEndpoint.java | 0
.../apache/camel/spi/CamelContextNameStrategy.java | 0
.../org/apache/camel/spi/CamelContextTracker.java | 0
.../java/org/apache/camel/spi}/CamelLogger.java | 2 +-
.../org/apache/camel/spi/ClaimCheckRepository.java | 0
.../java/org/apache/camel/spi/ClassResolver.java | 0
.../org/apache/camel/spi/ComponentCustomizer.java | 0
.../org/apache/camel/spi/ComponentResolver.java | 0
.../main/java/org/apache/camel/spi/Condition.java | 0
.../main/java/org/apache/camel/spi/Contract.java | 0
.../main/java/org/apache/camel/spi/DataFormat.java | 0
.../org/apache/camel/spi/DataFormatCustomizer.java | 0
.../org/apache/camel/spi/DataFormatFactory.java | 0
.../java/org/apache/camel/spi/DataFormatName.java | 0
.../org/apache/camel/spi/DataFormatResolver.java | 0
.../main/java/org/apache/camel/spi/DataType.java | 0
.../java/org/apache/camel/spi/DataTypeAware.java | 0
.../main/java/org/apache/camel/spi/Debugger.java | 0
.../org/apache/camel/spi/EndpointRegistry.java | 3 +-
.../org/apache/camel/spi/EndpointStrategy.java | 0
.../camel/spi/EndpointUtilizationStatistics.java | 0
.../java/org/apache/camel/spi/EventFactory.java | 0
.../java/org/apache/camel/spi/EventNotifier.java | 0
.../org/apache/camel/spi/ExceptionHandler.java | 0
.../org/apache/camel/spi/ExchangeFormatter.java | 0
.../camel/spi/ExchangeIdempotentRepository.java | 0
.../apache/camel/spi/ExecutorServiceManager.java | 0
.../java/org/apache/camel/spi/FactoryFinder.java | 0
.../apache/camel/spi/FactoryFinderResolver.java | 0
.../main/java/org/apache/camel/spi/GroupAware.java | 0
.../java/org/apache/camel/spi/HasCamelContext.java | 0
.../main/java/org/apache/camel/spi/HasGroup.java | 0
.../src/main/java/org/apache/camel/spi/HasId.java | 0
.../org/apache/camel/spi/HeaderFilterStrategy.java | 0
.../camel/spi/HeaderFilterStrategyAware.java | 0
.../org/apache/camel/spi/HeadersMapFactory.java | 0
.../main/java/org/apache/camel/spi/IdAware.java | 0
.../org/apache/camel/spi/IdempotentRepository.java | 0
.../org/apache/camel/spi/InflightRepository.java | 0
.../main/java/org/apache/camel/spi/Injector.java | 0
.../org/apache/camel/spi/InterceptStrategy.java | 0
.../main/java/org/apache/camel/spi/Language.java | 0
.../org/apache/camel/spi/LanguageCustomizer.java | 0
.../org/apache/camel/spi/LanguageResolver.java | 0
.../org/apache/camel/spi/LifecycleStrategy.java | 0
.../java/org/apache/camel/spi/LogListener.java | 1 -
.../java/org/apache/camel/spi/ManagementAgent.java | 0
.../apache/camel/spi/ManagementMBeanAssembler.java | 0
.../apache/camel/spi/ManagementNameStrategy.java | 0
.../apache/camel/spi/ManagementNamingStrategy.java | 0
.../apache/camel/spi/ManagementObjectStrategy.java | 0
.../org/apache/camel/spi/ManagementStrategy.java | 0
.../org/apache/camel/spi/MaskingFormatter.java | 0
.../apache/camel/spi/MessageHistoryFactory.java | 0
.../apache/camel/spi/ModelJAXBContextFactory.java | 0
.../java/org/apache/camel/spi/NamespaceAware.java | 0
.../java/org/apache/camel/spi/NodeIdFactory.java | 0
.../OptimisticLockingAggregationRepository.java | 0
.../apache/camel/spi/PackageScanClassResolver.java | 0
.../org/apache/camel/spi/PackageScanFilter.java | 0
.../src/main/java/org/apache/camel/spi/Policy.java | 0
.../camel/spi/PollingConsumerPollStrategy.java | 0
.../org/apache/camel/spi/ProcessorFactory.java | 0
.../spi/RecoverableAggregationRepository.java | 0
.../main/java/org/apache/camel/spi/Registry.java | 0
.../java/org/apache/camel/spi/ReloadStrategy.java | 0
.../apache/camel/spi/RestApiConsumerFactory.java | 0
.../apache/camel/spi/RestApiProcessorFactory.java | 0
.../org/apache/camel/spi/RestConfiguration.java | 4 +-
.../org/apache/camel/spi/RestConsumerFactory.java | 0
.../org/apache/camel/spi/RestProducerFactory.java | 0
.../java/org/apache/camel/spi/RestRegistry.java | 0
.../java/org/apache/camel/spi/RouteContext.java | 0
.../java/org/apache/camel/spi/RouteController.java | 0
.../main/java/org/apache/camel/spi/RouteError.java | 0
.../java/org/apache/camel/spi/RoutePolicy.java | 0
.../org/apache/camel/spi/RoutePolicyFactory.java | 0
.../org/apache/camel/spi/RouteStartupOrder.java | 0
.../apache/camel/spi/RuntimeEndpointRegistry.java | 0
.../camel/spi/ScheduledPollConsumerScheduler.java | 6 +-
.../org/apache/camel/spi/SendDynamicAware.java | 0
.../java/org/apache/camel/spi/ShutdownAware.java | 0
.../org/apache/camel/spi/ShutdownPrepared.java | 0
.../org/apache/camel/spi/ShutdownStrategy.java | 0
.../java/org/apache/camel/spi/StateRepository.java | 0
.../apache/camel/spi/StreamCachingStrategy.java | 0
.../java/org/apache/camel/spi/SubUnitOfWork.java | 0
.../apache/camel/spi/SubUnitOfWorkCallback.java | 0
.../java/org/apache/camel/spi/Synchronization.java | 0
.../camel/spi/SynchronizationRouteAware.java | 0
.../apache/camel/spi/SynchronizationVetoable.java | 0
.../org/apache/camel/spi/ThreadPoolFactory.java | 0
.../org/apache/camel/spi/ThreadPoolProfile.java | 0
.../org/apache/camel/spi/TransactedPolicy.java | 0
.../java/org/apache/camel/spi/Transformer.java | 0
.../org/apache/camel/spi/TransformerRegistry.java | 3 +-
.../org/apache/camel/spi/TypeConverterAware.java | 0
.../org/apache/camel/spi/TypeConverterLoader.java | 0
.../apache/camel/spi/TypeConverterRegistry.java | 0
.../main/java/org/apache/camel/spi/UnitOfWork.java | 0
.../org/apache/camel/spi/UnitOfWorkFactory.java | 0
.../java/org/apache/camel/spi/UuidGenerator.java | 0
.../main/java/org/apache/camel/spi/Validator.java | 0
.../org/apache/camel/spi/ValidatorRegistry.java | 3 +-
.../main/java/org/apache/camel/spi/package.html | 0
.../org/apache/camel/support/ServiceHelper.java | 0
.../org/apache/camel/support/ServiceSupport.java | 0
.../jsse/AliasedX509ExtendedKeyManager.java | 0
.../support/jsse/BaseSSLContextParameters.java | 0
.../camel/support/jsse/CipherSuitesParameters.java | 0
.../camel/support/jsse/ClientAuthentication.java | 0
.../camel/support/jsse/FilterParameters.java | 0
.../jsse/GlobalSSLContextParametersSupplier.java | 0
.../apache/camel/support/jsse/JsseParameters.java | 0
.../camel/support/jsse/KeyManagersParameters.java | 0
.../camel/support/jsse/KeyStoreParameters.java | 0
.../support/jsse/SSLContextClientParameters.java | 0
.../camel/support/jsse/SSLContextParameters.java | 0
.../support/jsse/SSLContextServerParameters.java | 0
.../camel/support/jsse/SecureRandomParameters.java | 0
.../jsse/SecureSocketProtocolsParameters.java | 0
.../support/jsse/TrustManagersParameters.java | 0
.../org/apache/camel/support/jsse/package.html | 0
camel-core/pom.xml | 16 +
.../camel/builder/DeadLetterChannelBuilder.java | 2 +-
.../camel/builder/DefaultErrorHandlerBuilder.java | 2 +-
.../component/controlbus/ControlBusEndpoint.java | 2 +-
.../component/controlbus/ControlBusProducer.java | 2 +-
.../camel/component/dataset/DataSetConsumer.java | 2 +-
.../camel/component/dataset/DataSetEndpoint.java | 2 +-
.../FileChangedExclusiveReadLockStrategy.java | 2 +-
...dempotentChangedRepositoryReadLockStrategy.java | 2 +-
...IdempotentRenameRepositoryReadLockStrategy.java | 2 +-
.../FileIdempotentRepositoryReadLockStrategy.java | 2 +-
.../FileLockExclusiveReadLockStrategy.java | 2 +-
...GenericFileRenameExclusiveReadLockStrategy.java | 2 +-
.../apache/camel/component/log/LogComponent.java | 2 +-
.../apache/camel/component/log/LogEndpoint.java | 2 +-
.../apache/camel/component/mock/MockComponent.java | 2 +-
.../rest/RestComponentVerifierExtension.java | 2 +-
.../apache/camel/component/rest/RestEndpoint.java | 2 +-
.../org/apache/camel/impl/DefaultCamelContext.java | 2 +-
.../camel/impl/ThrottlingInflightRoutePolicy.java | 2 +-
.../impl/converter/BaseTypeConverterRegistry.java | 2 +-
.../java/org/apache/camel/model/LogDefinition.java | 2 +-
.../apache/camel/processor/CamelLogProcessor.java | 2 +-
.../apache/camel/processor/DeadLetterChannel.java | 2 +-
.../camel/processor/DefaultErrorHandler.java | 2 +-
.../org/apache/camel/processor/LogProcessor.java | 2 +-
.../camel/processor/RedeliveryErrorHandler.java | 2 +-
.../apache/camel/processor/ThroughputLogger.java | 2 +-
.../processor/interceptor/BacklogDebugger.java | 2 +-
.../camel/runtimecatalog/AbstractCamelCatalog.java | 1284 --------------------
.../apache/camel/runtimecatalog/CatalogHelper.java | 179 ---
.../runtimecatalog/CollectionStringBuffer.java | 57 -
.../camel/runtimecatalog/JSonSchemaHelper.java | 428 -------
.../camel/runtimecatalog/TimePatternConverter.java | 120 --
.../runtimecatalog/impl}/AbstractCamelCatalog.java | 72 +-
.../{ => impl}/CamelContextJSonSchemaResolver.java | 3 +-
.../camel/runtimecatalog/impl}/CatalogHelper.java | 2 +-
.../{ => impl}/DefaultRuntimeCamelCatalog.java | 3 +-
.../runtimecatalog/impl}/JSonSchemaHelper.java | 12 +-
.../{ => impl}/SuggestionStrategy.java | 2 +-
.../runtimecatalog/impl}/TimePatternConverter.java | 2 +-
.../runtimecatalog/{ => impl}/URISupport.java | 2 +-
.../{ => impl}/UnsafeUriCharactersEncoder.java | 2 +-
.../camel/support/LoggingExceptionHandler.java | 1 +
.../RestProducerFactoryHelper.java | 5 +-
.../dump}/CamelContextStatDump.java | 2 +-
.../{util => support/dump}/ProcessorStatDump.java | 2 +-
.../{util => support/dump}/RouteStatDump.java | 2 +-
.../src/main/resources/org/apache/camel/jaxb.index | 1 -
.../apache/camel/{util => support/dump}/jaxb.index | 0
.../apache/camel/util/{ => concurrent}/jaxb.index | 4 +-
.../camel/{util => component/mock}/TimeTest.java | 3 +-
.../camel/processor/ThroughPutLoggerTest.java | 2 +-
.../{ => impl}/AbstractCamelCatalogTest.java | 4 +-
.../{ => impl}/JSonSchemaHelperTest.java | 3 +-
.../{ => impl}/RuntimeCamelCatalogTest.java | 5 +-
camel-util/pom.xml | 361 ++++++
.../java/org/apache/camel/util/AntPathMatcher.java | 0
.../org/apache/camel/util/CamelVersionHelper.java | 0
.../org/apache/camel/util/CaseInsensitiveMap.java | 0
.../main/java/org/apache/camel/util/CastUtils.java | 0
.../org/apache/camel/util/CollectionHelper.java | 0
.../apache/camel/util/CollectionStringBuffer.java | 0
.../org/apache/camel/util/FilePathResolver.java | 0
.../main/java/org/apache/camel/util/FileUtil.java | 0
.../main/java/org/apache/camel/util/HostUtils.java | 0
.../main/java/org/apache/camel/util/IOHelper.java | 0
.../org/apache/camel/util/InetAddressUtil.java | 0
.../org/apache/camel/util/JsonSchemaHelper.java | 0
.../java/org/apache/camel/util/KeyValueHolder.java | 0
.../java/org/apache/camel/util/ObjectHelper.java | 0
.../java/org/apache/camel/util/OgnlHelper.java | 0
.../java/org/apache/camel/util/PackageHelper.java | 0
.../java/org/apache/camel/util/ReferenceCount.java | 0
.../org/apache/camel/util/ReflectionHelper.java | 0
.../main/java/org/apache/camel/util/Scanner.java | 0
.../java/org/apache/camel/util/SedaConstants.java | 0
.../java/org/apache/camel/util/SkipIterator.java | 0
.../main/java/org/apache/camel/util/StopWatch.java | 0
.../java/org/apache/camel/util/StreamUtils.java | 0
.../java/org/apache/camel/util/StringHelper.java | 0
.../org/apache/camel/util/StringQuoteHelper.java | 0
.../main/java/org/apache/camel/util/TimeUtils.java | 0
.../java/org/apache/camel/util/URISupport.java | 0
.../main/java/org/apache/camel/util/UnitUtils.java | 0
.../camel/util/UnsafeUriCharactersEncoder.java | 0
.../org/apache/camel/util/XmlLineNumberParser.java | 0
.../org/apache/camel/util/backoff/BackOff.java | 0
.../apache/camel/util/backoff/BackOffTimer.java | 0
.../camel/util/backoff/BackOffTimerTask.java | 0
.../org/apache/camel/util/backoff/package.html | 0
.../camel/util/concurrent/CamelThreadFactory.java | 0
.../apache/camel/util/concurrent/LockHelper.java | 0
.../apache/camel/util/concurrent/Rejectable.java | 0
.../util/concurrent/RejectableFutureTask.java | 0
.../RejectableScheduledThreadPoolExecutor.java | 0
.../concurrent/RejectableThreadPoolExecutor.java | 0
.../concurrent/SizedScheduledExecutorService.java | 0
.../concurrent/SubmitOrderedCompletionService.java | 0
.../concurrent/SynchronousExecutorService.java | 0
.../apache/camel/util/concurrent/ThreadHelper.java | 0
.../util/concurrent/ThreadPoolRejectedPolicy.java | 0
.../org/apache/camel/util/concurrent/package.html | 0
.../org/apache/camel/util/function/Bindings.java | 0
.../org/apache/camel/util/function/Predicates.java | 0
.../org/apache/camel/util/function/Suppliers.java | 0
.../camel/util/function/ThrowingBiConsumer.java | 0
.../camel/util/function/ThrowingBiFunction.java | 0
.../camel/util/function/ThrowingConsumer.java | 0
.../camel/util/function/ThrowingFunction.java | 0
.../apache/camel/util/function/ThrowingHelper.java | 0
.../camel/util/function/ThrowingRunnable.java | 0
.../camel/util/function/ThrowingSupplier.java | 0
.../util/function/ThrowingToLongFunction.java | 0
.../camel/util/function/ThrowingTriConsumer.java | 0
.../apache/camel/util/function/TriConsumer.java | 0
.../org/apache/camel/util/function/package.html | 0
.../main/java/org/apache/camel/util/package.html | 0
.../org/apache/camel/util/AntPathMatcherTest.java | 0
.../apache/camel/util/CamelVersionHelperTest.java | 0
.../apache/camel/util/CollectionHelperTest.java | 0
.../camel/util/CollectionStringBufferTest.java | 0
.../java/org/apache/camel/util/UnitUtilsTest.java | 0
.../org/apache/camel/util/backoff/BackOffTest.java | 0
.../camel/util/backoff/BackOffTimerTest.java | 0
.../SizedScheduledExecutorServiceTest.java | 0
.../SubmitOrderedCompletionServiceTest.java | 0
.../concurrent/SynchronousExecutorServiceTest.java | 0
.../apache/camel/util/function/PredicatesTest.java | 0
.../transaction/JtaTransactionErrorHandler.java | 2 +-
.../JtaTransactionErrorHandlerBuilder.java | 2 +-
.../remote/DefaultFtpClientActivityListener.java | 2 +-
.../FtpChangedExclusiveReadLockStrategy.java | 2 +-
.../SftpChangedExclusiveReadLockStrategy.java | 2 +-
.../camel/component/http4/HttpComponent.java | 9 +-
.../camel/component/jetty/JettyHttpComponent.java | 2 +-
.../camel/component/mina2/Mina2Producer.java | 2 +-
.../component/netty4/http/NettyHttpComponent.java | 6 +-
.../http/handlers/HttpServerChannelHandler.java | 3 +-
.../netty4/NettyConsumerExceptionHandler.java | 2 +-
.../camel/component/netty4/NettyProducer.java | 6 +-
.../netty4/TimeoutCorrelationManagerSupport.java | 4 +-
.../netty4/handlers/ServerChannelHandler.java | 2 +-
.../camel/opentracing/OpenTracingTracer.java | 6 +-
.../camel/component/restlet/RestletComponent.java | 8 +-
.../spring/boot/LogListenerDiscoveryTest.java | 2 +-
.../camel/spring/spi/TransactionErrorHandler.java | 2 +-
.../spring/spi/TransactionErrorHandlerBuilder.java | 2 +-
.../component/undertow/UndertowComponent.java | 10 +-
parent/pom.xml | 10 +
.../maven/DefaultMavenArtifactProvider.java | 15 +-
.../nexus/ConnectorCatalogNexusRepository.java | 15 +-
platforms/camel-catalog/pom.xml | 55 +-
.../camel/catalog/CamelCatalogMBeanExporter.java | 86 --
.../camel/catalog/CollectionStringBuffer.java | 57 -
.../camel/catalog/EndpointValidationResult.java | 488 --------
.../apache/camel/catalog/JSonSchemaResolver.java | 64 -
.../camel/catalog/LanguageValidationResult.java | 65 -
.../apache/camel/catalog/SuggestionStrategy.java | 34 -
.../java/org/apache/camel/catalog/URISupport.java | 392 ------
.../camel/catalog/UnsafeUriCharactersEncoder.java | 206 ----
.../apache/camel/commands/ContextInfoCommand.java | 2 +-
.../apache/camel/commands/RouteInfoCommand.java | 2 +-
.../apache/camel/commands/RouteProfileCommand.java | 4 +-
.../camel-spring-boot-dependencies/pom.xml | 10 +
pom.xml | 2 +
453 files changed, 933 insertions(+), 3650 deletions(-)
diff --git a/bom/camel-bom/pom.xml b/bom/camel-bom/pom.xml
index 254b4a6..612af60 100644
--- a/bom/camel-bom/pom.xml
+++ b/bom/camel-bom/pom.xml
@@ -68,6 +68,11 @@
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
+ <artifactId>camel-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
<artifactId>camel-apns</artifactId>
<version>${project.version}</version>
</dependency>
@@ -2680,6 +2685,11 @@
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
+ <artifactId>camel-util</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
<artifactId>camel-velocity</artifactId>
<version>${project.version}</version>
</dependency>
diff --git a/camel-api/pom.xml b/camel-api/pom.xml
new file mode 100644
index 0000000..87d6aa0
--- /dev/null
+++ b/camel-api/pom.xml
@@ -0,0 +1,327 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ 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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-parent</artifactId>
+ <version>3.0.0-SNAPSHOT</version>
+ <relativePath>../parent</relativePath>
+ </parent>
+
+ <artifactId>camel-api</artifactId>
+ <packaging>jar</packaging>
+ <name>Camel :: API</name>
+ <description>The Camel API</description>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>spi-annotations</artifactId>
+ <version>${project.version}</version>
+ <optional>true</optional>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-util</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>json-simple-ordered</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+
+ </dependencies>
+
+ <reporting>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <configuration>
+ <links>
+ <link>http://download.oracle.com/javase/7/docs/api/</link>
+ <link>http://download.oracle.com/javaee/7/api/</link>
+ </links>
+ <linksource>true</linksource>
+ <maxmemory>256m</maxmemory>
+ <groups>
+ <group>
+ <title>Camel API</title>
+ <packages>org.apache.camel</packages>
+ </group>
+ <group>
+ <title>Fluent API (DSL) for building EIP rules</title>
+ <packages>org.apache.camel.builder:org.apache.camel.builder.*</packages>
+ </group>
+ <group>
+ <title>EIP model</title>
+ <packages>org.apache.camel.model:org.apache.camel.model.*</packages>
+ </group>
+ <group>
+ <title>Camel Components</title>
+ <packages>org.apache.camel.component:org.apache.camel.component.*</packages>
+ </group>
+ <group>
+ <title>Language APIs and plugins for Expressions and Predicates</title>
+ <packages>org.apache.camel.language:org.apache.camel.language.*</packages>
+ </group>
+ <group>
+ <title>Processors to implement the Enterprise Integration Patterns</title>
+ <packages>org.apache.camel.processor:org.apache.camel.processor.*</packages>
+ </group>
+ <group>
+ <title>Strategy APIs for implementors extending Camel</title>
+ <packages>org.apache.camel.spi</packages>
+ </group>
+ <group>
+ <title>Support APIs for implementors</title>
+ <packages>org.apache.camel.support:org.apache.camel.support.*</packages>
+ </group>
+ <group>
+ <title>Management (JMX) API</title>
+ <packages>org.apache.camel.management:org.apache.camel.management.*:org.apache.camel.api.management.mbean</packages>
+ </group>
+ <group>
+ <title>Camel Runtime</title>
+ <packages>org.apache.camel.impl:org.apache.camel.impl.*</packages>
+ </group>
+ <group>
+ <title>Camel Main to run Camel standalone</title>
+ <packages>org.apache.camel.main</packages>
+ </group>
+ <group>
+ <title>Type conversion helper classes</title>
+ <packages>org.apache.camel.converter:org.apache.camel.converter.*</packages>
+ </group>
+ <group>
+ <title>Utility classes</title>
+ <packages>org.apache.camel.util:org.apache.camel.util.*</packages>
+ </group>
+ </groups>
+ </configuration>
+ </plugin>
+ </plugins>
+ </reporting>
+
+ <profiles>
+ <profile>
+ <id>release</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>package</id>
+ <phase>package</phase>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <links>
+ <link>http://download.oracle.com/javase/7/docs/api/</link>
+ <link>http://download.oracle.com/javaee/7/api/</link>
+ </links>
+ <linksource>true</linksource>
+ <maxmemory>256m</maxmemory>
+ <groups>
+ <group>
+ <title>Camel API</title>
+ <packages>org.apache.camel</packages>
+ </group>
+ <group>
+ <title>Fluent API (DSL) for building EIP rules</title>
+ <packages>org.apache.camel.builder:org.apache.camel.builder.*</packages>
+ </group>
+ <group>
+ <title>EIP model</title>
+ <packages>org.apache.camel.model:org.apache.camel.model.*</packages>
+ </group>
+ <group>
+ <title>Camel Components</title>
+ <packages>org.apache.camel.component:org.apache.camel.component.*</packages>
+ </group>
+ <group>
+ <title>Language APIs and plugins for Expressions and Predicates</title>
+ <packages>org.apache.camel.language:org.apache.camel.language.*</packages>
+ </group>
+ <group>
+ <title>Processors to implement the Enterprise Integration Patterns</title>
+ <packages>org.apache.camel.processor:org.apache.camel.processor.*</packages>
+ </group>
+ <group>
+ <title>Strategy APIs for implementors extending Camel</title>
+ <packages>org.apache.camel.spi</packages>
+ </group>
+ <group>
+ <title>Support APIs for implementors</title>
+ <packages>org.apache.camel.support:org.apache.camel.support.*</packages>
+ </group>
+ <group>
+ <title>Management (JMX) API</title>
+ <packages>org.apache.camel.management:org.apache.camel.management.*:org.apache.camel.api.management.mbean</packages>
+ </group>
+ <group>
+ <title>Camel Runtime</title>
+ <packages>org.apache.camel.impl:org.apache.camel.impl.*</packages>
+ </group>
+ <group>
+ <title>Camel Main to run Camel standalone</title>
+ <packages>org.apache.camel.main</packages>
+ </group>
+ <group>
+ <title>Type conversion helper classes</title>
+ <packages>org.apache.camel.converter:org.apache.camel.converter.*</packages>
+ </group>
+ <group>
+ <title>Utility classes</title>
+ <packages>org.apache.camel.util:org.apache.camel.util.*</packages>
+ </group>
+ </groups>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+
+ <!-- skip management tests on AIX as it hangs CI servers -->
+ <profile>
+ <id>aix</id>
+ <activation>
+ <os>
+ <name>aix</name>
+ </os>
+ </activation>
+ <properties>
+ <platform.skip.tests>org/apache/camel/management/**/*.java</platform.skip.tests>
+ </properties>
+ </profile>
+ <profile>
+ <id>xalan</id>
+ <dependencies>
+ <!-- enable the Xalan processor -->
+ <dependency>
+ <groupId>xalan</groupId>
+ <artifactId>xalan</artifactId>
+ <version>${xalan-version}</version>
+ </dependency>
+ </dependencies>
+ </profile>
+ <profile>
+ <id>xerces</id>
+ <dependencies>
+ <!-- enable the xerces processor -->
+ <dependency>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ <version>${xerces-version}</version>
+ </dependency>
+ </dependencies>
+ </profile>
+ <profile>
+ <id>woodstox</id>
+ <activation>
+ <activeByDefault>true</activeByDefault>
+ </activation>
+ <dependencies>
+ <!-- xmltokenizer using woodstox -->
+ <dependency>
+ <groupId>org.codehaus.woodstox</groupId>
+ <artifactId>woodstox-core-asl</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ </profile>
+
+ <profile>
+ <id>jdk9+-build</id>
+ <activation>
+ <jdk>[9,)</jdk>
+ </activation>
+ <dependencies>
+
+ <!-- enable the APT processor -->
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>apt</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <!-- xmltokenizer using woodstox -->
+ <dependency>
+ <groupId>org.codehaus.woodstox</groupId>
+ <artifactId>woodstox-core-asl</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <!-- skip file stress tests as they are intended to run manually -->
+ <excludes>
+ <exclude>org/apache/camel/component/file/stress/**.java</exclude>
+ <exclude>**/DistributedCompletionIntervalTest.java</exclude>
+ <exclude>**/DistributedConcurrentPerCorrelationKeyTest.java</exclude>
+ <exclude>${platform.skip.tests}</exclude>
+ </excludes>
+ <forkedProcessTimeoutInSeconds>3000</forkedProcessTimeoutInSeconds>
+ <!-- needed for testing the properties component -->
+ <environmentVariables>
+ <FOO_SERVICE_HOST>myserver</FOO_SERVICE_HOST>
+ <FOO_SERVICE_PORT>8081</FOO_SERVICE_PORT>
+ </environmentVariables>
+ <argLine>--add-modules java.xml.bind,java.xml.ws --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED</argLine>
+ </configuration>
+ <dependencies>
+ <dependency>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-core</artifactId>
+ <version>${jaxb-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-impl</artifactId>
+ <version>${jaxb-version}</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
+</project>
diff --git a/camel-core/src/main/java/org/apache/camel/AfterPropertiesConfigured.java b/camel-api/src/main/java/org/apache/camel/AfterPropertiesConfigured.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/AfterPropertiesConfigured.java
rename to camel-api/src/main/java/org/apache/camel/AfterPropertiesConfigured.java
diff --git a/camel-core/src/main/java/org/apache/camel/AlreadyStoppedException.java b/camel-api/src/main/java/org/apache/camel/AlreadyStoppedException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/AlreadyStoppedException.java
rename to camel-api/src/main/java/org/apache/camel/AlreadyStoppedException.java
diff --git a/camel-core/src/main/java/org/apache/camel/AsyncCallback.java b/camel-api/src/main/java/org/apache/camel/AsyncCallback.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/AsyncCallback.java
rename to camel-api/src/main/java/org/apache/camel/AsyncCallback.java
diff --git a/camel-core/src/main/java/org/apache/camel/AsyncEndpoint.java b/camel-api/src/main/java/org/apache/camel/AsyncEndpoint.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/AsyncEndpoint.java
rename to camel-api/src/main/java/org/apache/camel/AsyncEndpoint.java
diff --git a/camel-core/src/main/java/org/apache/camel/AsyncProcessor.java b/camel-api/src/main/java/org/apache/camel/AsyncProcessor.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/AsyncProcessor.java
rename to camel-api/src/main/java/org/apache/camel/AsyncProcessor.java
diff --git a/camel-core/src/main/java/org/apache/camel/AsyncProducer.java b/camel-api/src/main/java/org/apache/camel/AsyncProducer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/AsyncProducer.java
rename to camel-api/src/main/java/org/apache/camel/AsyncProducer.java
diff --git a/camel-core/src/main/java/org/apache/camel/Attachment.java b/camel-api/src/main/java/org/apache/camel/Attachment.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Attachment.java
rename to camel-api/src/main/java/org/apache/camel/Attachment.java
diff --git a/camel-core/src/main/java/org/apache/camel/AttachmentObjects.java b/camel-api/src/main/java/org/apache/camel/AttachmentObjects.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/AttachmentObjects.java
rename to camel-api/src/main/java/org/apache/camel/AttachmentObjects.java
diff --git a/camel-core/src/main/java/org/apache/camel/Attachments.java b/camel-api/src/main/java/org/apache/camel/Attachments.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Attachments.java
rename to camel-api/src/main/java/org/apache/camel/Attachments.java
diff --git a/camel-core/src/main/java/org/apache/camel/BatchConsumer.java b/camel-api/src/main/java/org/apache/camel/BatchConsumer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/BatchConsumer.java
rename to camel-api/src/main/java/org/apache/camel/BatchConsumer.java
diff --git a/camel-core/src/main/java/org/apache/camel/BeanInject.java b/camel-api/src/main/java/org/apache/camel/BeanInject.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/BeanInject.java
rename to camel-api/src/main/java/org/apache/camel/BeanInject.java
diff --git a/camel-core/src/main/java/org/apache/camel/BinaryPredicate.java b/camel-api/src/main/java/org/apache/camel/BinaryPredicate.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/BinaryPredicate.java
rename to camel-api/src/main/java/org/apache/camel/BinaryPredicate.java
diff --git a/camel-core/src/main/java/org/apache/camel/Body.java b/camel-api/src/main/java/org/apache/camel/Body.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Body.java
rename to camel-api/src/main/java/org/apache/camel/Body.java
diff --git a/camel-core/src/main/java/org/apache/camel/Builder.java b/camel-api/src/main/java/org/apache/camel/Builder.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Builder.java
rename to camel-api/src/main/java/org/apache/camel/Builder.java
diff --git a/camel-core/src/main/java/org/apache/camel/BytesSource.java b/camel-api/src/main/java/org/apache/camel/BytesSource.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/BytesSource.java
rename to camel-api/src/main/java/org/apache/camel/BytesSource.java
diff --git a/camel-core/src/main/java/org/apache/camel/CamelAuthorizationException.java b/camel-api/src/main/java/org/apache/camel/CamelAuthorizationException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/CamelAuthorizationException.java
rename to camel-api/src/main/java/org/apache/camel/CamelAuthorizationException.java
diff --git a/camel-core/src/main/java/org/apache/camel/CamelContext.java b/camel-api/src/main/java/org/apache/camel/CamelContext.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/CamelContext.java
rename to camel-api/src/main/java/org/apache/camel/CamelContext.java
diff --git a/camel-core/src/main/java/org/apache/camel/CamelContextAware.java b/camel-api/src/main/java/org/apache/camel/CamelContextAware.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/CamelContextAware.java
rename to camel-api/src/main/java/org/apache/camel/CamelContextAware.java
diff --git a/camel-core/src/main/java/org/apache/camel/CamelException.java b/camel-api/src/main/java/org/apache/camel/CamelException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/CamelException.java
rename to camel-api/src/main/java/org/apache/camel/CamelException.java
diff --git a/camel-core/src/main/java/org/apache/camel/CamelExchangeException.java b/camel-api/src/main/java/org/apache/camel/CamelExchangeException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/CamelExchangeException.java
rename to camel-api/src/main/java/org/apache/camel/CamelExchangeException.java
diff --git a/camel-core/src/main/java/org/apache/camel/CamelExecutionException.java b/camel-api/src/main/java/org/apache/camel/CamelExecutionException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/CamelExecutionException.java
rename to camel-api/src/main/java/org/apache/camel/CamelExecutionException.java
diff --git a/camel-core/src/main/java/org/apache/camel/CamelUnitOfWorkException.java b/camel-api/src/main/java/org/apache/camel/CamelUnitOfWorkException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/CamelUnitOfWorkException.java
rename to camel-api/src/main/java/org/apache/camel/CamelUnitOfWorkException.java
diff --git a/camel-core/src/main/java/org/apache/camel/Channel.java b/camel-api/src/main/java/org/apache/camel/Channel.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Channel.java
rename to camel-api/src/main/java/org/apache/camel/Channel.java
diff --git a/camel-core/src/main/java/org/apache/camel/Component.java b/camel-api/src/main/java/org/apache/camel/Component.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Component.java
rename to camel-api/src/main/java/org/apache/camel/Component.java
diff --git a/camel-core/src/main/java/org/apache/camel/ComponentAware.java b/camel-api/src/main/java/org/apache/camel/ComponentAware.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ComponentAware.java
rename to camel-api/src/main/java/org/apache/camel/ComponentAware.java
diff --git a/camel-core/src/main/java/org/apache/camel/Consume.java b/camel-api/src/main/java/org/apache/camel/Consume.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Consume.java
rename to camel-api/src/main/java/org/apache/camel/Consume.java
diff --git a/camel-core/src/main/java/org/apache/camel/Consumer.java b/camel-api/src/main/java/org/apache/camel/Consumer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Consumer.java
rename to camel-api/src/main/java/org/apache/camel/Consumer.java
diff --git a/camel-core/src/main/java/org/apache/camel/ConsumerTemplate.java b/camel-api/src/main/java/org/apache/camel/ConsumerTemplate.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ConsumerTemplate.java
rename to camel-api/src/main/java/org/apache/camel/ConsumerTemplate.java
diff --git a/camel-core/src/main/java/org/apache/camel/Converter.java b/camel-api/src/main/java/org/apache/camel/Converter.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Converter.java
rename to camel-api/src/main/java/org/apache/camel/Converter.java
diff --git a/camel-core/src/main/java/org/apache/camel/DelegateEndpoint.java b/camel-api/src/main/java/org/apache/camel/DelegateEndpoint.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/DelegateEndpoint.java
rename to camel-api/src/main/java/org/apache/camel/DelegateEndpoint.java
diff --git a/camel-core/src/main/java/org/apache/camel/DelegateProcessor.java b/camel-api/src/main/java/org/apache/camel/DelegateProcessor.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/DelegateProcessor.java
rename to camel-api/src/main/java/org/apache/camel/DelegateProcessor.java
diff --git a/camel-core/src/main/java/org/apache/camel/DynamicRouter.java b/camel-api/src/main/java/org/apache/camel/DynamicRouter.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/DynamicRouter.java
rename to camel-api/src/main/java/org/apache/camel/DynamicRouter.java
diff --git a/camel-core/src/main/java/org/apache/camel/Endpoint.java b/camel-api/src/main/java/org/apache/camel/Endpoint.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Endpoint.java
rename to camel-api/src/main/java/org/apache/camel/Endpoint.java
diff --git a/camel-core/src/main/java/org/apache/camel/EndpointAware.java b/camel-api/src/main/java/org/apache/camel/EndpointAware.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/EndpointAware.java
rename to camel-api/src/main/java/org/apache/camel/EndpointAware.java
diff --git a/camel-core/src/main/java/org/apache/camel/EndpointInject.java b/camel-api/src/main/java/org/apache/camel/EndpointInject.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/EndpointInject.java
rename to camel-api/src/main/java/org/apache/camel/EndpointInject.java
diff --git a/camel-core/src/main/java/org/apache/camel/ErrorHandlerFactory.java b/camel-api/src/main/java/org/apache/camel/ErrorHandlerFactory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ErrorHandlerFactory.java
rename to camel-api/src/main/java/org/apache/camel/ErrorHandlerFactory.java
diff --git a/camel-core/src/main/java/org/apache/camel/Exchange.java b/camel-api/src/main/java/org/apache/camel/Exchange.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Exchange.java
rename to camel-api/src/main/java/org/apache/camel/Exchange.java
diff --git a/camel-core/src/main/java/org/apache/camel/ExchangeException.java b/camel-api/src/main/java/org/apache/camel/ExchangeException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ExchangeException.java
rename to camel-api/src/main/java/org/apache/camel/ExchangeException.java
diff --git a/camel-core/src/main/java/org/apache/camel/ExchangePattern.java b/camel-api/src/main/java/org/apache/camel/ExchangePattern.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ExchangePattern.java
rename to camel-api/src/main/java/org/apache/camel/ExchangePattern.java
diff --git a/camel-core/src/main/java/org/apache/camel/ExchangeProperties.java b/camel-api/src/main/java/org/apache/camel/ExchangeProperties.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ExchangeProperties.java
rename to camel-api/src/main/java/org/apache/camel/ExchangeProperties.java
diff --git a/camel-core/src/main/java/org/apache/camel/ExchangeProperty.java b/camel-api/src/main/java/org/apache/camel/ExchangeProperty.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ExchangeProperty.java
rename to camel-api/src/main/java/org/apache/camel/ExchangeProperty.java
diff --git a/camel-core/src/main/java/org/apache/camel/ExchangeTimedOutException.java b/camel-api/src/main/java/org/apache/camel/ExchangeTimedOutException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ExchangeTimedOutException.java
rename to camel-api/src/main/java/org/apache/camel/ExchangeTimedOutException.java
diff --git a/camel-core/src/main/java/org/apache/camel/ExecutorServiceAware.java b/camel-api/src/main/java/org/apache/camel/ExecutorServiceAware.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ExecutorServiceAware.java
rename to camel-api/src/main/java/org/apache/camel/ExecutorServiceAware.java
diff --git a/camel-core/src/main/java/org/apache/camel/ExpectedBodyTypeException.java b/camel-api/src/main/java/org/apache/camel/ExpectedBodyTypeException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ExpectedBodyTypeException.java
rename to camel-api/src/main/java/org/apache/camel/ExpectedBodyTypeException.java
diff --git a/camel-core/src/main/java/org/apache/camel/Experimental.java b/camel-api/src/main/java/org/apache/camel/Experimental.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Experimental.java
rename to camel-api/src/main/java/org/apache/camel/Experimental.java
diff --git a/camel-core/src/main/java/org/apache/camel/Expression.java b/camel-api/src/main/java/org/apache/camel/Expression.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Expression.java
rename to camel-api/src/main/java/org/apache/camel/Expression.java
diff --git a/camel-core/src/main/java/org/apache/camel/ExpressionEvaluationException.java b/camel-api/src/main/java/org/apache/camel/ExpressionEvaluationException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ExpressionEvaluationException.java
rename to camel-api/src/main/java/org/apache/camel/ExpressionEvaluationException.java
diff --git a/camel-core/src/main/java/org/apache/camel/ExpressionIllegalSyntaxException.java b/camel-api/src/main/java/org/apache/camel/ExpressionIllegalSyntaxException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ExpressionIllegalSyntaxException.java
rename to camel-api/src/main/java/org/apache/camel/ExpressionIllegalSyntaxException.java
diff --git a/camel-core/src/main/java/org/apache/camel/ExtendedStartupListener.java b/camel-api/src/main/java/org/apache/camel/ExtendedStartupListener.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ExtendedStartupListener.java
rename to camel-api/src/main/java/org/apache/camel/ExtendedStartupListener.java
diff --git a/camel-core/src/main/java/org/apache/camel/FailedToCreateConsumerException.java b/camel-api/src/main/java/org/apache/camel/FailedToCreateConsumerException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/FailedToCreateConsumerException.java
rename to camel-api/src/main/java/org/apache/camel/FailedToCreateConsumerException.java
diff --git a/camel-core/src/main/java/org/apache/camel/FailedToCreateProducerException.java b/camel-api/src/main/java/org/apache/camel/FailedToCreateProducerException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/FailedToCreateProducerException.java
rename to camel-api/src/main/java/org/apache/camel/FailedToCreateProducerException.java
diff --git a/camel-core/src/main/java/org/apache/camel/FailedToCreateRouteException.java b/camel-api/src/main/java/org/apache/camel/FailedToCreateRouteException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/FailedToCreateRouteException.java
rename to camel-api/src/main/java/org/apache/camel/FailedToCreateRouteException.java
diff --git a/camel-core/src/main/java/org/apache/camel/FailedToStartRouteException.java b/camel-api/src/main/java/org/apache/camel/FailedToStartRouteException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/FailedToStartRouteException.java
rename to camel-api/src/main/java/org/apache/camel/FailedToStartRouteException.java
diff --git a/camel-core/src/main/java/org/apache/camel/FallbackConverter.java b/camel-api/src/main/java/org/apache/camel/FallbackConverter.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/FallbackConverter.java
rename to camel-api/src/main/java/org/apache/camel/FallbackConverter.java
diff --git a/camel-core/src/main/java/org/apache/camel/FluentProducerTemplate.java b/camel-api/src/main/java/org/apache/camel/FluentProducerTemplate.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/FluentProducerTemplate.java
rename to camel-api/src/main/java/org/apache/camel/FluentProducerTemplate.java
diff --git a/camel-core/src/main/java/org/apache/camel/Handler.java b/camel-api/src/main/java/org/apache/camel/Handler.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Handler.java
rename to camel-api/src/main/java/org/apache/camel/Handler.java
diff --git a/camel-core/src/main/java/org/apache/camel/Header.java b/camel-api/src/main/java/org/apache/camel/Header.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Header.java
rename to camel-api/src/main/java/org/apache/camel/Header.java
diff --git a/camel-core/src/main/java/org/apache/camel/Headers.java b/camel-api/src/main/java/org/apache/camel/Headers.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Headers.java
rename to camel-api/src/main/java/org/apache/camel/Headers.java
diff --git a/camel-core/src/main/java/org/apache/camel/InOnly.java b/camel-api/src/main/java/org/apache/camel/InOnly.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/InOnly.java
rename to camel-api/src/main/java/org/apache/camel/InOnly.java
diff --git a/camel-core/src/main/java/org/apache/camel/InOut.java b/camel-api/src/main/java/org/apache/camel/InOut.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/InOut.java
rename to camel-api/src/main/java/org/apache/camel/InOut.java
diff --git a/camel-core/src/main/java/org/apache/camel/InvalidPayloadException.java b/camel-api/src/main/java/org/apache/camel/InvalidPayloadException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/InvalidPayloadException.java
rename to camel-api/src/main/java/org/apache/camel/InvalidPayloadException.java
diff --git a/camel-core/src/main/java/org/apache/camel/InvalidPayloadRuntimeException.java b/camel-api/src/main/java/org/apache/camel/InvalidPayloadRuntimeException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/InvalidPayloadRuntimeException.java
rename to camel-api/src/main/java/org/apache/camel/InvalidPayloadRuntimeException.java
diff --git a/camel-core/src/main/java/org/apache/camel/InvalidPropertyException.java b/camel-api/src/main/java/org/apache/camel/InvalidPropertyException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/InvalidPropertyException.java
rename to camel-api/src/main/java/org/apache/camel/InvalidPropertyException.java
diff --git a/camel-core/src/main/java/org/apache/camel/InvokeOnHeader.java b/camel-api/src/main/java/org/apache/camel/InvokeOnHeader.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/InvokeOnHeader.java
rename to camel-api/src/main/java/org/apache/camel/InvokeOnHeader.java
diff --git a/camel-core/src/main/java/org/apache/camel/InvokeOnHeaders.java b/camel-api/src/main/java/org/apache/camel/InvokeOnHeaders.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/InvokeOnHeaders.java
rename to camel-api/src/main/java/org/apache/camel/InvokeOnHeaders.java
diff --git a/camel-core/src/main/java/org/apache/camel/IsSingleton.java b/camel-api/src/main/java/org/apache/camel/IsSingleton.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/IsSingleton.java
rename to camel-api/src/main/java/org/apache/camel/IsSingleton.java
diff --git a/camel-core/src/main/java/org/apache/camel/LoadPropertiesException.java b/camel-api/src/main/java/org/apache/camel/LoadPropertiesException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/LoadPropertiesException.java
rename to camel-api/src/main/java/org/apache/camel/LoadPropertiesException.java
diff --git a/camel-core/src/main/java/org/apache/camel/LoggingLevel.java b/camel-api/src/main/java/org/apache/camel/LoggingLevel.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/LoggingLevel.java
rename to camel-api/src/main/java/org/apache/camel/LoggingLevel.java
diff --git a/camel-core/src/main/java/org/apache/camel/ManagementStatisticsLevel.java b/camel-api/src/main/java/org/apache/camel/ManagementStatisticsLevel.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ManagementStatisticsLevel.java
rename to camel-api/src/main/java/org/apache/camel/ManagementStatisticsLevel.java
diff --git a/camel-core/src/main/java/org/apache/camel/Message.java b/camel-api/src/main/java/org/apache/camel/Message.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Message.java
rename to camel-api/src/main/java/org/apache/camel/Message.java
diff --git a/camel-core/src/main/java/org/apache/camel/MessageHistory.java b/camel-api/src/main/java/org/apache/camel/MessageHistory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/MessageHistory.java
rename to camel-api/src/main/java/org/apache/camel/MessageHistory.java
diff --git a/camel-core/src/main/java/org/apache/camel/MultipleConsumersSupport.java b/camel-api/src/main/java/org/apache/camel/MultipleConsumersSupport.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/MultipleConsumersSupport.java
rename to camel-api/src/main/java/org/apache/camel/MultipleConsumersSupport.java
diff --git a/camel-core/src/main/java/org/apache/camel/NamedNode.java b/camel-api/src/main/java/org/apache/camel/NamedNode.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/NamedNode.java
rename to camel-api/src/main/java/org/apache/camel/NamedNode.java
diff --git a/camel-core/src/main/java/org/apache/camel/Navigate.java b/camel-api/src/main/java/org/apache/camel/Navigate.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Navigate.java
rename to camel-api/src/main/java/org/apache/camel/Navigate.java
diff --git a/camel-core/src/main/java/org/apache/camel/NoFactoryAvailableException.java b/camel-api/src/main/java/org/apache/camel/NoFactoryAvailableException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/NoFactoryAvailableException.java
rename to camel-api/src/main/java/org/apache/camel/NoFactoryAvailableException.java
diff --git a/camel-core/src/main/java/org/apache/camel/NoSuchBeanException.java b/camel-api/src/main/java/org/apache/camel/NoSuchBeanException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/NoSuchBeanException.java
rename to camel-api/src/main/java/org/apache/camel/NoSuchBeanException.java
diff --git a/camel-core/src/main/java/org/apache/camel/NoSuchEndpointException.java b/camel-api/src/main/java/org/apache/camel/NoSuchEndpointException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/NoSuchEndpointException.java
rename to camel-api/src/main/java/org/apache/camel/NoSuchEndpointException.java
diff --git a/camel-core/src/main/java/org/apache/camel/NoSuchHeaderException.java b/camel-api/src/main/java/org/apache/camel/NoSuchHeaderException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/NoSuchHeaderException.java
rename to camel-api/src/main/java/org/apache/camel/NoSuchHeaderException.java
diff --git a/camel-core/src/main/java/org/apache/camel/NoSuchLanguageException.java b/camel-api/src/main/java/org/apache/camel/NoSuchLanguageException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/NoSuchLanguageException.java
rename to camel-api/src/main/java/org/apache/camel/NoSuchLanguageException.java
diff --git a/camel-core/src/main/java/org/apache/camel/NoSuchPropertyException.java b/camel-api/src/main/java/org/apache/camel/NoSuchPropertyException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/NoSuchPropertyException.java
rename to camel-api/src/main/java/org/apache/camel/NoSuchPropertyException.java
diff --git a/camel-core/src/main/java/org/apache/camel/NoTypeConversionAvailableException.java b/camel-api/src/main/java/org/apache/camel/NoTypeConversionAvailableException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/NoTypeConversionAvailableException.java
rename to camel-api/src/main/java/org/apache/camel/NoTypeConversionAvailableException.java
diff --git a/camel-core/src/main/java/org/apache/camel/NonManagedService.java b/camel-api/src/main/java/org/apache/camel/NonManagedService.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/NonManagedService.java
rename to camel-api/src/main/java/org/apache/camel/NonManagedService.java
diff --git a/camel-core/src/main/java/org/apache/camel/Ordered.java b/camel-api/src/main/java/org/apache/camel/Ordered.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Ordered.java
rename to camel-api/src/main/java/org/apache/camel/Ordered.java
diff --git a/camel-core/src/main/java/org/apache/camel/OutHeaders.java b/camel-api/src/main/java/org/apache/camel/OutHeaders.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/OutHeaders.java
rename to camel-api/src/main/java/org/apache/camel/OutHeaders.java
diff --git a/camel-core/src/main/java/org/apache/camel/Pattern.java b/camel-api/src/main/java/org/apache/camel/Pattern.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Pattern.java
rename to camel-api/src/main/java/org/apache/camel/Pattern.java
diff --git a/camel-core/src/main/java/org/apache/camel/PollingConsumer.java b/camel-api/src/main/java/org/apache/camel/PollingConsumer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/PollingConsumer.java
rename to camel-api/src/main/java/org/apache/camel/PollingConsumer.java
diff --git a/camel-core/src/main/java/org/apache/camel/PollingConsumerPollingStrategy.java b/camel-api/src/main/java/org/apache/camel/PollingConsumerPollingStrategy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/PollingConsumerPollingStrategy.java
rename to camel-api/src/main/java/org/apache/camel/PollingConsumerPollingStrategy.java
diff --git a/camel-core/src/main/java/org/apache/camel/Predicate.java b/camel-api/src/main/java/org/apache/camel/Predicate.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Predicate.java
rename to camel-api/src/main/java/org/apache/camel/Predicate.java
diff --git a/camel-core/src/main/java/org/apache/camel/Processor.java b/camel-api/src/main/java/org/apache/camel/Processor.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Processor.java
rename to camel-api/src/main/java/org/apache/camel/Processor.java
diff --git a/camel-core/src/main/java/org/apache/camel/Produce.java b/camel-api/src/main/java/org/apache/camel/Produce.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Produce.java
rename to camel-api/src/main/java/org/apache/camel/Produce.java
diff --git a/camel-core/src/main/java/org/apache/camel/Producer.java b/camel-api/src/main/java/org/apache/camel/Producer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Producer.java
rename to camel-api/src/main/java/org/apache/camel/Producer.java
diff --git a/camel-core/src/main/java/org/apache/camel/ProducerTemplate.java b/camel-api/src/main/java/org/apache/camel/ProducerTemplate.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ProducerTemplate.java
rename to camel-api/src/main/java/org/apache/camel/ProducerTemplate.java
diff --git a/camel-core/src/main/java/org/apache/camel/PropertyInject.java b/camel-api/src/main/java/org/apache/camel/PropertyInject.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/PropertyInject.java
rename to camel-api/src/main/java/org/apache/camel/PropertyInject.java
diff --git a/camel-core/src/main/java/org/apache/camel/ProxyInstantiationException.java b/camel-api/src/main/java/org/apache/camel/ProxyInstantiationException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ProxyInstantiationException.java
rename to camel-api/src/main/java/org/apache/camel/ProxyInstantiationException.java
diff --git a/camel-core/src/main/java/org/apache/camel/RecipientList.java b/camel-api/src/main/java/org/apache/camel/RecipientList.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/RecipientList.java
rename to camel-api/src/main/java/org/apache/camel/RecipientList.java
diff --git a/camel-core/src/main/java/org/apache/camel/ResolveEndpointFailedException.java b/camel-api/src/main/java/org/apache/camel/ResolveEndpointFailedException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ResolveEndpointFailedException.java
rename to camel-api/src/main/java/org/apache/camel/ResolveEndpointFailedException.java
diff --git a/camel-core/src/main/java/org/apache/camel/RollbackExchangeException.java b/camel-api/src/main/java/org/apache/camel/RollbackExchangeException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/RollbackExchangeException.java
rename to camel-api/src/main/java/org/apache/camel/RollbackExchangeException.java
diff --git a/camel-core/src/main/java/org/apache/camel/Route.java b/camel-api/src/main/java/org/apache/camel/Route.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Route.java
rename to camel-api/src/main/java/org/apache/camel/Route.java
diff --git a/camel-core/src/main/java/org/apache/camel/RouteAware.java b/camel-api/src/main/java/org/apache/camel/RouteAware.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/RouteAware.java
rename to camel-api/src/main/java/org/apache/camel/RouteAware.java
diff --git a/camel-core/src/main/java/org/apache/camel/RoutesBuilder.java b/camel-api/src/main/java/org/apache/camel/RoutesBuilder.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/RoutesBuilder.java
rename to camel-api/src/main/java/org/apache/camel/RoutesBuilder.java
diff --git a/camel-core/src/main/java/org/apache/camel/RoutingSlip.java b/camel-api/src/main/java/org/apache/camel/RoutingSlip.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/RoutingSlip.java
rename to camel-api/src/main/java/org/apache/camel/RoutingSlip.java
diff --git a/camel-core/src/main/java/org/apache/camel/RuntimeCamelException.java b/camel-api/src/main/java/org/apache/camel/RuntimeCamelException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/RuntimeCamelException.java
rename to camel-api/src/main/java/org/apache/camel/RuntimeCamelException.java
diff --git a/camel-core/src/main/java/org/apache/camel/RuntimeConfiguration.java b/camel-api/src/main/java/org/apache/camel/RuntimeConfiguration.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/RuntimeConfiguration.java
rename to camel-api/src/main/java/org/apache/camel/RuntimeConfiguration.java
diff --git a/camel-core/src/main/java/org/apache/camel/RuntimeExchangeException.java b/camel-api/src/main/java/org/apache/camel/RuntimeExchangeException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/RuntimeExchangeException.java
rename to camel-api/src/main/java/org/apache/camel/RuntimeExchangeException.java
diff --git a/camel-core/src/main/java/org/apache/camel/RuntimeExpressionException.java b/camel-api/src/main/java/org/apache/camel/RuntimeExpressionException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/RuntimeExpressionException.java
rename to camel-api/src/main/java/org/apache/camel/RuntimeExpressionException.java
diff --git a/camel-core/src/main/java/org/apache/camel/RuntimeTransformException.java b/camel-api/src/main/java/org/apache/camel/RuntimeTransformException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/RuntimeTransformException.java
rename to camel-api/src/main/java/org/apache/camel/RuntimeTransformException.java
diff --git a/camel-core/src/main/java/org/apache/camel/SSLContextParametersAware.java b/camel-api/src/main/java/org/apache/camel/SSLContextParametersAware.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/SSLContextParametersAware.java
rename to camel-api/src/main/java/org/apache/camel/SSLContextParametersAware.java
diff --git a/camel-core/src/main/java/org/apache/camel/Service.java b/camel-api/src/main/java/org/apache/camel/Service.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Service.java
rename to camel-api/src/main/java/org/apache/camel/Service.java
diff --git a/camel-core/src/main/java/org/apache/camel/ServiceStatus.java b/camel-api/src/main/java/org/apache/camel/ServiceStatus.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ServiceStatus.java
rename to camel-api/src/main/java/org/apache/camel/ServiceStatus.java
diff --git a/camel-core/src/main/java/org/apache/camel/ShutdownRoute.java b/camel-api/src/main/java/org/apache/camel/ShutdownRoute.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ShutdownRoute.java
rename to camel-api/src/main/java/org/apache/camel/ShutdownRoute.java
diff --git a/camel-core/src/main/java/org/apache/camel/ShutdownRunningTask.java b/camel-api/src/main/java/org/apache/camel/ShutdownRunningTask.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ShutdownRunningTask.java
rename to camel-api/src/main/java/org/apache/camel/ShutdownRunningTask.java
diff --git a/camel-core/src/main/java/org/apache/camel/ShutdownableService.java b/camel-api/src/main/java/org/apache/camel/ShutdownableService.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ShutdownableService.java
rename to camel-api/src/main/java/org/apache/camel/ShutdownableService.java
diff --git a/camel-core/src/main/java/org/apache/camel/StartupListener.java b/camel-api/src/main/java/org/apache/camel/StartupListener.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/StartupListener.java
rename to camel-api/src/main/java/org/apache/camel/StartupListener.java
diff --git a/camel-core/src/main/java/org/apache/camel/StatefulService.java b/camel-api/src/main/java/org/apache/camel/StatefulService.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/StatefulService.java
rename to camel-api/src/main/java/org/apache/camel/StatefulService.java
diff --git a/camel-core/src/main/java/org/apache/camel/StaticService.java b/camel-api/src/main/java/org/apache/camel/StaticService.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/StaticService.java
rename to camel-api/src/main/java/org/apache/camel/StaticService.java
diff --git a/camel-core/src/main/java/org/apache/camel/StreamCache.java b/camel-api/src/main/java/org/apache/camel/StreamCache.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/StreamCache.java
rename to camel-api/src/main/java/org/apache/camel/StreamCache.java
diff --git a/camel-core/src/main/java/org/apache/camel/StringSource.java b/camel-api/src/main/java/org/apache/camel/StringSource.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/StringSource.java
rename to camel-api/src/main/java/org/apache/camel/StringSource.java
diff --git a/camel-core/src/main/java/org/apache/camel/Suspendable.java b/camel-api/src/main/java/org/apache/camel/Suspendable.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Suspendable.java
rename to camel-api/src/main/java/org/apache/camel/Suspendable.java
diff --git a/camel-core/src/main/java/org/apache/camel/SuspendableService.java b/camel-api/src/main/java/org/apache/camel/SuspendableService.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/SuspendableService.java
rename to camel-api/src/main/java/org/apache/camel/SuspendableService.java
diff --git a/camel-core/src/main/java/org/apache/camel/TimeoutMap.java b/camel-api/src/main/java/org/apache/camel/TimeoutMap.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/TimeoutMap.java
rename to camel-api/src/main/java/org/apache/camel/TimeoutMap.java
diff --git a/camel-core/src/main/java/org/apache/camel/TimerListener.java b/camel-api/src/main/java/org/apache/camel/TimerListener.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/TimerListener.java
rename to camel-api/src/main/java/org/apache/camel/TimerListener.java
diff --git a/camel-core/src/main/java/org/apache/camel/Traceable.java b/camel-api/src/main/java/org/apache/camel/Traceable.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/Traceable.java
rename to camel-api/src/main/java/org/apache/camel/Traceable.java
diff --git a/camel-core/src/main/java/org/apache/camel/TypeConversionException.java b/camel-api/src/main/java/org/apache/camel/TypeConversionException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/TypeConversionException.java
rename to camel-api/src/main/java/org/apache/camel/TypeConversionException.java
diff --git a/camel-core/src/main/java/org/apache/camel/TypeConverter.java b/camel-api/src/main/java/org/apache/camel/TypeConverter.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/TypeConverter.java
rename to camel-api/src/main/java/org/apache/camel/TypeConverter.java
diff --git a/camel-core/src/main/java/org/apache/camel/TypeConverterExists.java b/camel-api/src/main/java/org/apache/camel/TypeConverterExists.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/TypeConverterExists.java
rename to camel-api/src/main/java/org/apache/camel/TypeConverterExists.java
diff --git a/camel-core/src/main/java/org/apache/camel/TypeConverterExistsException.java b/camel-api/src/main/java/org/apache/camel/TypeConverterExistsException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/TypeConverterExistsException.java
rename to camel-api/src/main/java/org/apache/camel/TypeConverterExistsException.java
diff --git a/camel-core/src/main/java/org/apache/camel/TypeConverterLoaderException.java b/camel-api/src/main/java/org/apache/camel/TypeConverterLoaderException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/TypeConverterLoaderException.java
rename to camel-api/src/main/java/org/apache/camel/TypeConverterLoaderException.java
diff --git a/camel-core/src/main/java/org/apache/camel/TypeConverters.java b/camel-api/src/main/java/org/apache/camel/TypeConverters.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/TypeConverters.java
rename to camel-api/src/main/java/org/apache/camel/TypeConverters.java
diff --git a/camel-core/src/main/java/org/apache/camel/ValidationException.java b/camel-api/src/main/java/org/apache/camel/ValidationException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ValidationException.java
rename to camel-api/src/main/java/org/apache/camel/ValidationException.java
diff --git a/camel-core/src/main/java/org/apache/camel/ValueHolder.java b/camel-api/src/main/java/org/apache/camel/ValueHolder.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/ValueHolder.java
rename to camel-api/src/main/java/org/apache/camel/ValueHolder.java
diff --git a/camel-core/src/main/java/org/apache/camel/VetoCamelContextStartException.java b/camel-api/src/main/java/org/apache/camel/VetoCamelContextStartException.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/VetoCamelContextStartException.java
rename to camel-api/src/main/java/org/apache/camel/VetoCamelContextStartException.java
diff --git a/camel-core/src/main/java/org/apache/camel/WaitForTaskToComplete.java b/camel-api/src/main/java/org/apache/camel/WaitForTaskToComplete.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/WaitForTaskToComplete.java
rename to camel-api/src/main/java/org/apache/camel/WaitForTaskToComplete.java
diff --git a/camel-core/src/main/java/org/apache/camel/WrappedFile.java b/camel-api/src/main/java/org/apache/camel/WrappedFile.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/WrappedFile.java
rename to camel-api/src/main/java/org/apache/camel/WrappedFile.java
diff --git a/camel-core/src/main/java/org/apache/camel/cluster/CamelClusterEventListener.java b/camel-api/src/main/java/org/apache/camel/cluster/CamelClusterEventListener.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/cluster/CamelClusterEventListener.java
rename to camel-api/src/main/java/org/apache/camel/cluster/CamelClusterEventListener.java
diff --git a/camel-core/src/main/java/org/apache/camel/cluster/CamelClusterMember.java b/camel-api/src/main/java/org/apache/camel/cluster/CamelClusterMember.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/cluster/CamelClusterMember.java
rename to camel-api/src/main/java/org/apache/camel/cluster/CamelClusterMember.java
diff --git a/camel-core/src/main/java/org/apache/camel/cluster/CamelClusterService.java b/camel-api/src/main/java/org/apache/camel/cluster/CamelClusterService.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/cluster/CamelClusterService.java
rename to camel-api/src/main/java/org/apache/camel/cluster/CamelClusterService.java
diff --git a/camel-core/src/main/java/org/apache/camel/cluster/CamelClusterView.java b/camel-api/src/main/java/org/apache/camel/cluster/CamelClusterView.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/cluster/CamelClusterView.java
rename to camel-api/src/main/java/org/apache/camel/cluster/CamelClusterView.java
diff --git a/camel-core/src/main/java/org/apache/camel/cluster/package.html b/camel-api/src/main/java/org/apache/camel/cluster/package.html
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/cluster/package.html
rename to camel-api/src/main/java/org/apache/camel/cluster/package.html
diff --git a/camel-core/src/main/java/org/apache/camel/component/extension/ComponentExtension.java b/camel-api/src/main/java/org/apache/camel/component/extension/ComponentExtension.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/component/extension/ComponentExtension.java
rename to camel-api/src/main/java/org/apache/camel/component/extension/ComponentExtension.java
diff --git a/camel-core/src/main/java/org/apache/camel/component/extension/ComponentVerifierExtension.java b/camel-api/src/main/java/org/apache/camel/component/extension/ComponentVerifierExtension.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/component/extension/ComponentVerifierExtension.java
rename to camel-api/src/main/java/org/apache/camel/component/extension/ComponentVerifierExtension.java
diff --git a/camel-core/src/main/java/org/apache/camel/component/extension/ComponentVerifierExtensionHelper.java b/camel-api/src/main/java/org/apache/camel/component/extension/ComponentVerifierExtensionHelper.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/component/extension/ComponentVerifierExtensionHelper.java
rename to camel-api/src/main/java/org/apache/camel/component/extension/ComponentVerifierExtensionHelper.java
diff --git a/camel-core/src/main/java/org/apache/camel/component/extension/MetaDataExtension.java b/camel-api/src/main/java/org/apache/camel/component/extension/MetaDataExtension.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/component/extension/MetaDataExtension.java
rename to camel-api/src/main/java/org/apache/camel/component/extension/MetaDataExtension.java
diff --git a/camel-core/src/main/java/org/apache/camel/component/extension/package.html b/camel-api/src/main/java/org/apache/camel/component/extension/package.html
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/component/extension/package.html
rename to camel-api/src/main/java/org/apache/camel/component/extension/package.html
diff --git a/camel-core/src/main/java/org/apache/camel/health/HealthCheck.java b/camel-api/src/main/java/org/apache/camel/health/HealthCheck.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/health/HealthCheck.java
rename to camel-api/src/main/java/org/apache/camel/health/HealthCheck.java
diff --git a/camel-core/src/main/java/org/apache/camel/health/HealthCheckConfiguration.java b/camel-api/src/main/java/org/apache/camel/health/HealthCheckConfiguration.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/health/HealthCheckConfiguration.java
rename to camel-api/src/main/java/org/apache/camel/health/HealthCheckConfiguration.java
diff --git a/camel-core/src/main/java/org/apache/camel/health/HealthCheckFilter.java b/camel-api/src/main/java/org/apache/camel/health/HealthCheckFilter.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/health/HealthCheckFilter.java
rename to camel-api/src/main/java/org/apache/camel/health/HealthCheckFilter.java
diff --git a/camel-core/src/main/java/org/apache/camel/health/HealthCheckHelper.java b/camel-api/src/main/java/org/apache/camel/health/HealthCheckHelper.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/health/HealthCheckHelper.java
rename to camel-api/src/main/java/org/apache/camel/health/HealthCheckHelper.java
diff --git a/camel-core/src/main/java/org/apache/camel/health/HealthCheckRegistry.java b/camel-api/src/main/java/org/apache/camel/health/HealthCheckRegistry.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/health/HealthCheckRegistry.java
rename to camel-api/src/main/java/org/apache/camel/health/HealthCheckRegistry.java
diff --git a/camel-core/src/main/java/org/apache/camel/health/HealthCheckRepository.java b/camel-api/src/main/java/org/apache/camel/health/HealthCheckRepository.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/health/HealthCheckRepository.java
rename to camel-api/src/main/java/org/apache/camel/health/HealthCheckRepository.java
diff --git a/camel-core/src/main/java/org/apache/camel/health/HealthCheckResultBuilder.java b/camel-api/src/main/java/org/apache/camel/health/HealthCheckResultBuilder.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/health/HealthCheckResultBuilder.java
rename to camel-api/src/main/java/org/apache/camel/health/HealthCheckResultBuilder.java
diff --git a/camel-core/src/main/java/org/apache/camel/health/HealthCheckService.java b/camel-api/src/main/java/org/apache/camel/health/HealthCheckService.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/health/HealthCheckService.java
rename to camel-api/src/main/java/org/apache/camel/health/HealthCheckService.java
diff --git a/camel-core/src/main/java/org/apache/camel/health/package.html b/camel-api/src/main/java/org/apache/camel/health/package.html
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/health/package.html
rename to camel-api/src/main/java/org/apache/camel/health/package.html
diff --git a/camel-core/src/main/java/org/apache/camel/package-info.java b/camel-api/src/main/java/org/apache/camel/package-info.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/package-info.java
rename to camel-api/src/main/java/org/apache/camel/package-info.java
diff --git a/camel-core/src/main/java/org/apache/camel/runtimecatalog/EndpointValidationResult.java b/camel-api/src/main/java/org/apache/camel/runtimecatalog/EndpointValidationResult.java
similarity index 99%
rename from camel-core/src/main/java/org/apache/camel/runtimecatalog/EndpointValidationResult.java
rename to camel-api/src/main/java/org/apache/camel/runtimecatalog/EndpointValidationResult.java
index 891c3cf..d2dce49 100644
--- a/camel-core/src/main/java/org/apache/camel/runtimecatalog/EndpointValidationResult.java
+++ b/camel-api/src/main/java/org/apache/camel/runtimecatalog/EndpointValidationResult.java
@@ -25,8 +25,6 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
-import static org.apache.camel.runtimecatalog.URISupport.isEmpty;
-
/**
* Details result of validating endpoint uri.
*/
@@ -485,4 +483,8 @@ public class EndpointValidationResult implements Serializable {
return sb.toString();
}
+
+ private static boolean isEmpty(String value) {
+ return value == null || value.isEmpty() || value.trim().isEmpty();
+ }
}
diff --git a/camel-core/src/main/java/org/apache/camel/runtimecatalog/JSonSchemaResolver.java b/camel-api/src/main/java/org/apache/camel/runtimecatalog/JSonSchemaResolver.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/runtimecatalog/JSonSchemaResolver.java
rename to camel-api/src/main/java/org/apache/camel/runtimecatalog/JSonSchemaResolver.java
diff --git a/camel-core/src/main/java/org/apache/camel/runtimecatalog/LanguageValidationResult.java b/camel-api/src/main/java/org/apache/camel/runtimecatalog/LanguageValidationResult.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/runtimecatalog/LanguageValidationResult.java
rename to camel-api/src/main/java/org/apache/camel/runtimecatalog/LanguageValidationResult.java
diff --git a/camel-core/src/main/java/org/apache/camel/runtimecatalog/RuntimeCamelCatalog.java b/camel-api/src/main/java/org/apache/camel/runtimecatalog/RuntimeCamelCatalog.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/runtimecatalog/RuntimeCamelCatalog.java
rename to camel-api/src/main/java/org/apache/camel/runtimecatalog/RuntimeCamelCatalog.java
diff --git a/camel-core/src/main/java/org/apache/camel/runtimecatalog/package.html b/camel-api/src/main/java/org/apache/camel/runtimecatalog/package.html
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/runtimecatalog/package.html
rename to camel-api/src/main/java/org/apache/camel/runtimecatalog/package.html
diff --git a/camel-core/src/main/java/org/apache/camel/spi/AggregationRepository.java b/camel-api/src/main/java/org/apache/camel/spi/AggregationRepository.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/AggregationRepository.java
rename to camel-api/src/main/java/org/apache/camel/spi/AggregationRepository.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/AsyncProcessorAwaitManager.java b/camel-api/src/main/java/org/apache/camel/spi/AsyncProcessorAwaitManager.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/AsyncProcessorAwaitManager.java
rename to camel-api/src/main/java/org/apache/camel/spi/AsyncProcessorAwaitManager.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/AuthorizationPolicy.java b/camel-api/src/main/java/org/apache/camel/spi/AuthorizationPolicy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/AuthorizationPolicy.java
rename to camel-api/src/main/java/org/apache/camel/spi/AuthorizationPolicy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/Breakpoint.java b/camel-api/src/main/java/org/apache/camel/spi/Breakpoint.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/Breakpoint.java
rename to camel-api/src/main/java/org/apache/camel/spi/Breakpoint.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/BrowsableEndpoint.java b/camel-api/src/main/java/org/apache/camel/spi/BrowsableEndpoint.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/BrowsableEndpoint.java
rename to camel-api/src/main/java/org/apache/camel/spi/BrowsableEndpoint.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/CamelContextNameStrategy.java b/camel-api/src/main/java/org/apache/camel/spi/CamelContextNameStrategy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/CamelContextNameStrategy.java
rename to camel-api/src/main/java/org/apache/camel/spi/CamelContextNameStrategy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/CamelContextTracker.java b/camel-api/src/main/java/org/apache/camel/spi/CamelContextTracker.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/CamelContextTracker.java
rename to camel-api/src/main/java/org/apache/camel/spi/CamelContextTracker.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/CamelLogger.java b/camel-api/src/main/java/org/apache/camel/spi/CamelLogger.java
similarity index 99%
rename from camel-core/src/main/java/org/apache/camel/support/CamelLogger.java
rename to camel-api/src/main/java/org/apache/camel/spi/CamelLogger.java
index 6994eab..0b9214a 100644
--- a/camel-core/src/main/java/org/apache/camel/support/CamelLogger.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/CamelLogger.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.support;
+package org.apache.camel.spi;
import org.apache.camel.LoggingLevel;
import org.apache.camel.util.ObjectHelper;
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ClaimCheckRepository.java b/camel-api/src/main/java/org/apache/camel/spi/ClaimCheckRepository.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ClaimCheckRepository.java
rename to camel-api/src/main/java/org/apache/camel/spi/ClaimCheckRepository.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ClassResolver.java b/camel-api/src/main/java/org/apache/camel/spi/ClassResolver.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ClassResolver.java
rename to camel-api/src/main/java/org/apache/camel/spi/ClassResolver.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ComponentCustomizer.java b/camel-api/src/main/java/org/apache/camel/spi/ComponentCustomizer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ComponentCustomizer.java
rename to camel-api/src/main/java/org/apache/camel/spi/ComponentCustomizer.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ComponentResolver.java b/camel-api/src/main/java/org/apache/camel/spi/ComponentResolver.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ComponentResolver.java
rename to camel-api/src/main/java/org/apache/camel/spi/ComponentResolver.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/Condition.java b/camel-api/src/main/java/org/apache/camel/spi/Condition.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/Condition.java
rename to camel-api/src/main/java/org/apache/camel/spi/Condition.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/Contract.java b/camel-api/src/main/java/org/apache/camel/spi/Contract.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/Contract.java
rename to camel-api/src/main/java/org/apache/camel/spi/Contract.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/DataFormat.java b/camel-api/src/main/java/org/apache/camel/spi/DataFormat.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/DataFormat.java
rename to camel-api/src/main/java/org/apache/camel/spi/DataFormat.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/DataFormatCustomizer.java b/camel-api/src/main/java/org/apache/camel/spi/DataFormatCustomizer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/DataFormatCustomizer.java
rename to camel-api/src/main/java/org/apache/camel/spi/DataFormatCustomizer.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/DataFormatFactory.java b/camel-api/src/main/java/org/apache/camel/spi/DataFormatFactory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/DataFormatFactory.java
rename to camel-api/src/main/java/org/apache/camel/spi/DataFormatFactory.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/DataFormatName.java b/camel-api/src/main/java/org/apache/camel/spi/DataFormatName.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/DataFormatName.java
rename to camel-api/src/main/java/org/apache/camel/spi/DataFormatName.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/DataFormatResolver.java b/camel-api/src/main/java/org/apache/camel/spi/DataFormatResolver.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/DataFormatResolver.java
rename to camel-api/src/main/java/org/apache/camel/spi/DataFormatResolver.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/DataType.java b/camel-api/src/main/java/org/apache/camel/spi/DataType.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/DataType.java
rename to camel-api/src/main/java/org/apache/camel/spi/DataType.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/DataTypeAware.java b/camel-api/src/main/java/org/apache/camel/spi/DataTypeAware.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/DataTypeAware.java
rename to camel-api/src/main/java/org/apache/camel/spi/DataTypeAware.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/Debugger.java b/camel-api/src/main/java/org/apache/camel/spi/Debugger.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/Debugger.java
rename to camel-api/src/main/java/org/apache/camel/spi/Debugger.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/EndpointRegistry.java b/camel-api/src/main/java/org/apache/camel/spi/EndpointRegistry.java
similarity index 93%
rename from camel-core/src/main/java/org/apache/camel/spi/EndpointRegistry.java
rename to camel-api/src/main/java/org/apache/camel/spi/EndpointRegistry.java
index f56d241..14f906c 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/EndpointRegistry.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/EndpointRegistry.java
@@ -20,7 +20,6 @@ import java.util.Map;
import org.apache.camel.Endpoint;
import org.apache.camel.StaticService;
-import org.apache.camel.support.LRUCache;
/**
* Registry to cache endpoints in memory.
@@ -28,7 +27,7 @@ import org.apache.camel.support.LRUCache;
* The registry contains two caches:
* <ul>
* <li>static - which keeps all the endpoints in the cache for the entire lifecycle</li>
- * <li>dynamic - which keeps the endpoints in a {@link LRUCache} and may evict endpoints which hasn't been requested recently</li>
+ * <li>dynamic - which keeps the endpoints in a {@link org.apache.camel.support.LRUCache} and may evict endpoints which hasn't been requested recently</li>
* </ul>
* The static cache stores all the endpoints that are created as part of setting up and starting routes.
* The static cache has no upper limit.
diff --git a/camel-core/src/main/java/org/apache/camel/spi/EndpointStrategy.java b/camel-api/src/main/java/org/apache/camel/spi/EndpointStrategy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/EndpointStrategy.java
rename to camel-api/src/main/java/org/apache/camel/spi/EndpointStrategy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/EndpointUtilizationStatistics.java b/camel-api/src/main/java/org/apache/camel/spi/EndpointUtilizationStatistics.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/EndpointUtilizationStatistics.java
rename to camel-api/src/main/java/org/apache/camel/spi/EndpointUtilizationStatistics.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/EventFactory.java b/camel-api/src/main/java/org/apache/camel/spi/EventFactory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/EventFactory.java
rename to camel-api/src/main/java/org/apache/camel/spi/EventFactory.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/EventNotifier.java b/camel-api/src/main/java/org/apache/camel/spi/EventNotifier.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/EventNotifier.java
rename to camel-api/src/main/java/org/apache/camel/spi/EventNotifier.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ExceptionHandler.java b/camel-api/src/main/java/org/apache/camel/spi/ExceptionHandler.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ExceptionHandler.java
rename to camel-api/src/main/java/org/apache/camel/spi/ExceptionHandler.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ExchangeFormatter.java b/camel-api/src/main/java/org/apache/camel/spi/ExchangeFormatter.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ExchangeFormatter.java
rename to camel-api/src/main/java/org/apache/camel/spi/ExchangeFormatter.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ExchangeIdempotentRepository.java b/camel-api/src/main/java/org/apache/camel/spi/ExchangeIdempotentRepository.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ExchangeIdempotentRepository.java
rename to camel-api/src/main/java/org/apache/camel/spi/ExchangeIdempotentRepository.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ExecutorServiceManager.java b/camel-api/src/main/java/org/apache/camel/spi/ExecutorServiceManager.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ExecutorServiceManager.java
rename to camel-api/src/main/java/org/apache/camel/spi/ExecutorServiceManager.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/FactoryFinder.java b/camel-api/src/main/java/org/apache/camel/spi/FactoryFinder.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/FactoryFinder.java
rename to camel-api/src/main/java/org/apache/camel/spi/FactoryFinder.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/FactoryFinderResolver.java b/camel-api/src/main/java/org/apache/camel/spi/FactoryFinderResolver.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/FactoryFinderResolver.java
rename to camel-api/src/main/java/org/apache/camel/spi/FactoryFinderResolver.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/GroupAware.java b/camel-api/src/main/java/org/apache/camel/spi/GroupAware.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/GroupAware.java
rename to camel-api/src/main/java/org/apache/camel/spi/GroupAware.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/HasCamelContext.java b/camel-api/src/main/java/org/apache/camel/spi/HasCamelContext.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/HasCamelContext.java
rename to camel-api/src/main/java/org/apache/camel/spi/HasCamelContext.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/HasGroup.java b/camel-api/src/main/java/org/apache/camel/spi/HasGroup.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/HasGroup.java
rename to camel-api/src/main/java/org/apache/camel/spi/HasGroup.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/HasId.java b/camel-api/src/main/java/org/apache/camel/spi/HasId.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/HasId.java
rename to camel-api/src/main/java/org/apache/camel/spi/HasId.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/HeaderFilterStrategy.java b/camel-api/src/main/java/org/apache/camel/spi/HeaderFilterStrategy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/HeaderFilterStrategy.java
rename to camel-api/src/main/java/org/apache/camel/spi/HeaderFilterStrategy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/HeaderFilterStrategyAware.java b/camel-api/src/main/java/org/apache/camel/spi/HeaderFilterStrategyAware.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/HeaderFilterStrategyAware.java
rename to camel-api/src/main/java/org/apache/camel/spi/HeaderFilterStrategyAware.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/HeadersMapFactory.java b/camel-api/src/main/java/org/apache/camel/spi/HeadersMapFactory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/HeadersMapFactory.java
rename to camel-api/src/main/java/org/apache/camel/spi/HeadersMapFactory.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/IdAware.java b/camel-api/src/main/java/org/apache/camel/spi/IdAware.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/IdAware.java
rename to camel-api/src/main/java/org/apache/camel/spi/IdAware.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/IdempotentRepository.java b/camel-api/src/main/java/org/apache/camel/spi/IdempotentRepository.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/IdempotentRepository.java
rename to camel-api/src/main/java/org/apache/camel/spi/IdempotentRepository.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/InflightRepository.java b/camel-api/src/main/java/org/apache/camel/spi/InflightRepository.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/InflightRepository.java
rename to camel-api/src/main/java/org/apache/camel/spi/InflightRepository.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/Injector.java b/camel-api/src/main/java/org/apache/camel/spi/Injector.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/Injector.java
rename to camel-api/src/main/java/org/apache/camel/spi/Injector.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/InterceptStrategy.java b/camel-api/src/main/java/org/apache/camel/spi/InterceptStrategy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/InterceptStrategy.java
rename to camel-api/src/main/java/org/apache/camel/spi/InterceptStrategy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/Language.java b/camel-api/src/main/java/org/apache/camel/spi/Language.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/Language.java
rename to camel-api/src/main/java/org/apache/camel/spi/Language.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/LanguageCustomizer.java b/camel-api/src/main/java/org/apache/camel/spi/LanguageCustomizer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/LanguageCustomizer.java
rename to camel-api/src/main/java/org/apache/camel/spi/LanguageCustomizer.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/LanguageResolver.java b/camel-api/src/main/java/org/apache/camel/spi/LanguageResolver.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/LanguageResolver.java
rename to camel-api/src/main/java/org/apache/camel/spi/LanguageResolver.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/LifecycleStrategy.java b/camel-api/src/main/java/org/apache/camel/spi/LifecycleStrategy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/LifecycleStrategy.java
rename to camel-api/src/main/java/org/apache/camel/spi/LifecycleStrategy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/LogListener.java b/camel-api/src/main/java/org/apache/camel/spi/LogListener.java
similarity index 97%
rename from camel-core/src/main/java/org/apache/camel/spi/LogListener.java
rename to camel-api/src/main/java/org/apache/camel/spi/LogListener.java
index 03536e4..7c0bfb2 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/LogListener.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/LogListener.java
@@ -18,7 +18,6 @@ package org.apache.camel.spi;
import org.apache.camel.Exchange;
import org.apache.camel.LoggingLevel;
-import org.apache.camel.support.CamelLogger;
/**
* An event listener SPI for logging. Listeners are registered into {@link org.apache.camel.processor.LogProcessor} and
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ManagementAgent.java b/camel-api/src/main/java/org/apache/camel/spi/ManagementAgent.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ManagementAgent.java
rename to camel-api/src/main/java/org/apache/camel/spi/ManagementAgent.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ManagementMBeanAssembler.java b/camel-api/src/main/java/org/apache/camel/spi/ManagementMBeanAssembler.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ManagementMBeanAssembler.java
rename to camel-api/src/main/java/org/apache/camel/spi/ManagementMBeanAssembler.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ManagementNameStrategy.java b/camel-api/src/main/java/org/apache/camel/spi/ManagementNameStrategy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ManagementNameStrategy.java
rename to camel-api/src/main/java/org/apache/camel/spi/ManagementNameStrategy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java b/camel-api/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java
rename to camel-api/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ManagementObjectStrategy.java b/camel-api/src/main/java/org/apache/camel/spi/ManagementObjectStrategy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ManagementObjectStrategy.java
rename to camel-api/src/main/java/org/apache/camel/spi/ManagementObjectStrategy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ManagementStrategy.java b/camel-api/src/main/java/org/apache/camel/spi/ManagementStrategy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ManagementStrategy.java
rename to camel-api/src/main/java/org/apache/camel/spi/ManagementStrategy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/MaskingFormatter.java b/camel-api/src/main/java/org/apache/camel/spi/MaskingFormatter.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/MaskingFormatter.java
rename to camel-api/src/main/java/org/apache/camel/spi/MaskingFormatter.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/MessageHistoryFactory.java b/camel-api/src/main/java/org/apache/camel/spi/MessageHistoryFactory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/MessageHistoryFactory.java
rename to camel-api/src/main/java/org/apache/camel/spi/MessageHistoryFactory.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ModelJAXBContextFactory.java b/camel-api/src/main/java/org/apache/camel/spi/ModelJAXBContextFactory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ModelJAXBContextFactory.java
rename to camel-api/src/main/java/org/apache/camel/spi/ModelJAXBContextFactory.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/NamespaceAware.java b/camel-api/src/main/java/org/apache/camel/spi/NamespaceAware.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/NamespaceAware.java
rename to camel-api/src/main/java/org/apache/camel/spi/NamespaceAware.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/NodeIdFactory.java b/camel-api/src/main/java/org/apache/camel/spi/NodeIdFactory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/NodeIdFactory.java
rename to camel-api/src/main/java/org/apache/camel/spi/NodeIdFactory.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/OptimisticLockingAggregationRepository.java b/camel-api/src/main/java/org/apache/camel/spi/OptimisticLockingAggregationRepository.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/OptimisticLockingAggregationRepository.java
rename to camel-api/src/main/java/org/apache/camel/spi/OptimisticLockingAggregationRepository.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/PackageScanClassResolver.java b/camel-api/src/main/java/org/apache/camel/spi/PackageScanClassResolver.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/PackageScanClassResolver.java
rename to camel-api/src/main/java/org/apache/camel/spi/PackageScanClassResolver.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/PackageScanFilter.java b/camel-api/src/main/java/org/apache/camel/spi/PackageScanFilter.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/PackageScanFilter.java
rename to camel-api/src/main/java/org/apache/camel/spi/PackageScanFilter.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/Policy.java b/camel-api/src/main/java/org/apache/camel/spi/Policy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/Policy.java
rename to camel-api/src/main/java/org/apache/camel/spi/Policy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/PollingConsumerPollStrategy.java b/camel-api/src/main/java/org/apache/camel/spi/PollingConsumerPollStrategy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/PollingConsumerPollStrategy.java
rename to camel-api/src/main/java/org/apache/camel/spi/PollingConsumerPollStrategy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ProcessorFactory.java b/camel-api/src/main/java/org/apache/camel/spi/ProcessorFactory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ProcessorFactory.java
rename to camel-api/src/main/java/org/apache/camel/spi/ProcessorFactory.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RecoverableAggregationRepository.java b/camel-api/src/main/java/org/apache/camel/spi/RecoverableAggregationRepository.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/RecoverableAggregationRepository.java
rename to camel-api/src/main/java/org/apache/camel/spi/RecoverableAggregationRepository.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/Registry.java b/camel-api/src/main/java/org/apache/camel/spi/Registry.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/Registry.java
rename to camel-api/src/main/java/org/apache/camel/spi/Registry.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ReloadStrategy.java b/camel-api/src/main/java/org/apache/camel/spi/ReloadStrategy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ReloadStrategy.java
rename to camel-api/src/main/java/org/apache/camel/spi/ReloadStrategy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RestApiConsumerFactory.java b/camel-api/src/main/java/org/apache/camel/spi/RestApiConsumerFactory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/RestApiConsumerFactory.java
rename to camel-api/src/main/java/org/apache/camel/spi/RestApiConsumerFactory.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RestApiProcessorFactory.java b/camel-api/src/main/java/org/apache/camel/spi/RestApiProcessorFactory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/RestApiProcessorFactory.java
rename to camel-api/src/main/java/org/apache/camel/spi/RestApiProcessorFactory.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RestConfiguration.java b/camel-api/src/main/java/org/apache/camel/spi/RestConfiguration.java
similarity index 99%
rename from camel-core/src/main/java/org/apache/camel/spi/RestConfiguration.java
rename to camel-api/src/main/java/org/apache/camel/spi/RestConfiguration.java
index c4cec57..7a7c600 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/RestConfiguration.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/RestConfiguration.java
@@ -18,8 +18,6 @@ package org.apache.camel.spi;
import java.util.Map;
-import org.apache.camel.support.EndpointHelper;
-
/**
* Configuration use by {@link org.apache.camel.spi.RestConsumerFactory} and {@link org.apache.camel.spi.RestApiConsumerFactory}
* for Camel components to support the Camel {@link org.apache.camel.model.rest.RestDefinition rest} DSL.
@@ -270,7 +268,7 @@ public class RestConfiguration {
* Optional CamelContext id pattern to only allow Rest APIs from rest services within CamelContext's which name matches the pattern.
* <p/>
* The pattern <tt>#name#</tt> refers to the CamelContext name, to match on the current CamelContext only.
- * For any other value, the pattern uses the rules from {@link EndpointHelper#matchPattern(String, String)}
+ * For any other value, the pattern uses the rules from {@link org.apache.camel.support.EndpointHelper#matchPattern(String, String)}
*
* @param apiContextIdPattern the pattern
*/
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RestConsumerFactory.java b/camel-api/src/main/java/org/apache/camel/spi/RestConsumerFactory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/RestConsumerFactory.java
rename to camel-api/src/main/java/org/apache/camel/spi/RestConsumerFactory.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RestProducerFactory.java b/camel-api/src/main/java/org/apache/camel/spi/RestProducerFactory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/RestProducerFactory.java
rename to camel-api/src/main/java/org/apache/camel/spi/RestProducerFactory.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RestRegistry.java b/camel-api/src/main/java/org/apache/camel/spi/RestRegistry.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/RestRegistry.java
rename to camel-api/src/main/java/org/apache/camel/spi/RestRegistry.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RouteContext.java b/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/RouteContext.java
rename to camel-api/src/main/java/org/apache/camel/spi/RouteContext.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RouteController.java b/camel-api/src/main/java/org/apache/camel/spi/RouteController.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/RouteController.java
rename to camel-api/src/main/java/org/apache/camel/spi/RouteController.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RouteError.java b/camel-api/src/main/java/org/apache/camel/spi/RouteError.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/RouteError.java
rename to camel-api/src/main/java/org/apache/camel/spi/RouteError.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RoutePolicy.java b/camel-api/src/main/java/org/apache/camel/spi/RoutePolicy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/RoutePolicy.java
rename to camel-api/src/main/java/org/apache/camel/spi/RoutePolicy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RoutePolicyFactory.java b/camel-api/src/main/java/org/apache/camel/spi/RoutePolicyFactory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/RoutePolicyFactory.java
rename to camel-api/src/main/java/org/apache/camel/spi/RoutePolicyFactory.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RouteStartupOrder.java b/camel-api/src/main/java/org/apache/camel/spi/RouteStartupOrder.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/RouteStartupOrder.java
rename to camel-api/src/main/java/org/apache/camel/spi/RouteStartupOrder.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RuntimeEndpointRegistry.java b/camel-api/src/main/java/org/apache/camel/spi/RuntimeEndpointRegistry.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/RuntimeEndpointRegistry.java
rename to camel-api/src/main/java/org/apache/camel/spi/RuntimeEndpointRegistry.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ScheduledPollConsumerScheduler.java b/camel-api/src/main/java/org/apache/camel/spi/ScheduledPollConsumerScheduler.java
similarity index 88%
rename from camel-core/src/main/java/org/apache/camel/spi/ScheduledPollConsumerScheduler.java
rename to camel-api/src/main/java/org/apache/camel/spi/ScheduledPollConsumerScheduler.java
index db7b5c7..709544c 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/ScheduledPollConsumerScheduler.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/ScheduledPollConsumerScheduler.java
@@ -19,13 +19,11 @@ package org.apache.camel.spi;
import org.apache.camel.CamelContextAware;
import org.apache.camel.Consumer;
import org.apache.camel.ShutdownableService;
-import org.apache.camel.support.DefaultScheduledPollConsumerScheduler;
-import org.apache.camel.support.ScheduledPollConsumer;
/**
- * A pluggable scheduler for {@link ScheduledPollConsumer} consumers.
+ * A pluggable scheduler for {@link org.apache.camel.support.ScheduledPollConsumer} consumers.
* <p/>
- * The default implementation {@link DefaultScheduledPollConsumerScheduler} is
+ * The default implementation {@link org.apache.camel.support.DefaultScheduledPollConsumerScheduler} is
* using the {@link java.util.concurrent.ScheduledExecutorService} from the JDK to schedule and run the poll task.
* <p/>
* An alternative implementation is in <tt>camel-quartz2</tt> component that allows to use CRON expression
diff --git a/camel-core/src/main/java/org/apache/camel/spi/SendDynamicAware.java b/camel-api/src/main/java/org/apache/camel/spi/SendDynamicAware.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/SendDynamicAware.java
rename to camel-api/src/main/java/org/apache/camel/spi/SendDynamicAware.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ShutdownAware.java b/camel-api/src/main/java/org/apache/camel/spi/ShutdownAware.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ShutdownAware.java
rename to camel-api/src/main/java/org/apache/camel/spi/ShutdownAware.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ShutdownPrepared.java b/camel-api/src/main/java/org/apache/camel/spi/ShutdownPrepared.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ShutdownPrepared.java
rename to camel-api/src/main/java/org/apache/camel/spi/ShutdownPrepared.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ShutdownStrategy.java b/camel-api/src/main/java/org/apache/camel/spi/ShutdownStrategy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ShutdownStrategy.java
rename to camel-api/src/main/java/org/apache/camel/spi/ShutdownStrategy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/StateRepository.java b/camel-api/src/main/java/org/apache/camel/spi/StateRepository.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/StateRepository.java
rename to camel-api/src/main/java/org/apache/camel/spi/StateRepository.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/StreamCachingStrategy.java b/camel-api/src/main/java/org/apache/camel/spi/StreamCachingStrategy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/StreamCachingStrategy.java
rename to camel-api/src/main/java/org/apache/camel/spi/StreamCachingStrategy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/SubUnitOfWork.java b/camel-api/src/main/java/org/apache/camel/spi/SubUnitOfWork.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/SubUnitOfWork.java
rename to camel-api/src/main/java/org/apache/camel/spi/SubUnitOfWork.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/SubUnitOfWorkCallback.java b/camel-api/src/main/java/org/apache/camel/spi/SubUnitOfWorkCallback.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/SubUnitOfWorkCallback.java
rename to camel-api/src/main/java/org/apache/camel/spi/SubUnitOfWorkCallback.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/Synchronization.java b/camel-api/src/main/java/org/apache/camel/spi/Synchronization.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/Synchronization.java
rename to camel-api/src/main/java/org/apache/camel/spi/Synchronization.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/SynchronizationRouteAware.java b/camel-api/src/main/java/org/apache/camel/spi/SynchronizationRouteAware.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/SynchronizationRouteAware.java
rename to camel-api/src/main/java/org/apache/camel/spi/SynchronizationRouteAware.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/SynchronizationVetoable.java b/camel-api/src/main/java/org/apache/camel/spi/SynchronizationVetoable.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/SynchronizationVetoable.java
rename to camel-api/src/main/java/org/apache/camel/spi/SynchronizationVetoable.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ThreadPoolFactory.java b/camel-api/src/main/java/org/apache/camel/spi/ThreadPoolFactory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ThreadPoolFactory.java
rename to camel-api/src/main/java/org/apache/camel/spi/ThreadPoolFactory.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ThreadPoolProfile.java b/camel-api/src/main/java/org/apache/camel/spi/ThreadPoolProfile.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/ThreadPoolProfile.java
rename to camel-api/src/main/java/org/apache/camel/spi/ThreadPoolProfile.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/TransactedPolicy.java b/camel-api/src/main/java/org/apache/camel/spi/TransactedPolicy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/TransactedPolicy.java
rename to camel-api/src/main/java/org/apache/camel/spi/TransactedPolicy.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/Transformer.java b/camel-api/src/main/java/org/apache/camel/spi/Transformer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/Transformer.java
rename to camel-api/src/main/java/org/apache/camel/spi/Transformer.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/TransformerRegistry.java b/camel-api/src/main/java/org/apache/camel/spi/TransformerRegistry.java
similarity index 95%
rename from camel-core/src/main/java/org/apache/camel/spi/TransformerRegistry.java
rename to camel-api/src/main/java/org/apache/camel/spi/TransformerRegistry.java
index d65d221..48536a2 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/TransformerRegistry.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/TransformerRegistry.java
@@ -19,7 +19,6 @@ package org.apache.camel.spi;
import java.util.Map;
import org.apache.camel.StaticService;
-import org.apache.camel.support.LRUCache;
/**
* Registry to cache transformers in memory.
@@ -27,7 +26,7 @@ import org.apache.camel.support.LRUCache;
* The registry contains two caches:
* <ul>
* <li>static - which keeps all the transformers in the cache for the entire lifecycle</li>
- * <li>dynamic - which keeps the transformers in a {@link LRUCache} and may evict transformers which hasn't been requested recently</li>
+ * <li>dynamic - which keeps the transformers in a {@link org.apache.camel.support.LRUCache} and may evict transformers which hasn't been requested recently</li>
* </ul>
* The static cache stores all the transformers that are created as part of setting up and starting routes.
* The static cache has no upper limit.
diff --git a/camel-core/src/main/java/org/apache/camel/spi/TypeConverterAware.java b/camel-api/src/main/java/org/apache/camel/spi/TypeConverterAware.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/TypeConverterAware.java
rename to camel-api/src/main/java/org/apache/camel/spi/TypeConverterAware.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/TypeConverterLoader.java b/camel-api/src/main/java/org/apache/camel/spi/TypeConverterLoader.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/TypeConverterLoader.java
rename to camel-api/src/main/java/org/apache/camel/spi/TypeConverterLoader.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/TypeConverterRegistry.java b/camel-api/src/main/java/org/apache/camel/spi/TypeConverterRegistry.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/TypeConverterRegistry.java
rename to camel-api/src/main/java/org/apache/camel/spi/TypeConverterRegistry.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/UnitOfWork.java b/camel-api/src/main/java/org/apache/camel/spi/UnitOfWork.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/UnitOfWork.java
rename to camel-api/src/main/java/org/apache/camel/spi/UnitOfWork.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/UnitOfWorkFactory.java b/camel-api/src/main/java/org/apache/camel/spi/UnitOfWorkFactory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/UnitOfWorkFactory.java
rename to camel-api/src/main/java/org/apache/camel/spi/UnitOfWorkFactory.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/UuidGenerator.java b/camel-api/src/main/java/org/apache/camel/spi/UuidGenerator.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/UuidGenerator.java
rename to camel-api/src/main/java/org/apache/camel/spi/UuidGenerator.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/Validator.java b/camel-api/src/main/java/org/apache/camel/spi/Validator.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/Validator.java
rename to camel-api/src/main/java/org/apache/camel/spi/Validator.java
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ValidatorRegistry.java b/camel-api/src/main/java/org/apache/camel/spi/ValidatorRegistry.java
similarity index 94%
rename from camel-core/src/main/java/org/apache/camel/spi/ValidatorRegistry.java
rename to camel-api/src/main/java/org/apache/camel/spi/ValidatorRegistry.java
index 8153886..acecc0b 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/ValidatorRegistry.java
+++ b/camel-api/src/main/java/org/apache/camel/spi/ValidatorRegistry.java
@@ -19,7 +19,6 @@ package org.apache.camel.spi;
import java.util.Map;
import org.apache.camel.StaticService;
-import org.apache.camel.support.LRUCache;
/**
* Registry to cache validators in memory.
@@ -27,7 +26,7 @@ import org.apache.camel.support.LRUCache;
* The registry contains two caches:
* <ul>
* <li>static - which keeps all the validators in the cache for the entire lifecycle</li>
- * <li>dynamic - which keeps the validators in a {@link LRUCache} and may evict validators which hasn't been requested recently</li>
+ * <li>dynamic - which keeps the validators in a {@link org.apache.camel.support.LRUCache} and may evict validators which hasn't been requested recently</li>
* </ul>
* The static cache stores all the validators that are created as part of setting up and starting routes.
* The static cache has no upper limit.
diff --git a/camel-core/src/main/java/org/apache/camel/spi/package.html b/camel-api/src/main/java/org/apache/camel/spi/package.html
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/spi/package.html
rename to camel-api/src/main/java/org/apache/camel/spi/package.html
diff --git a/camel-core/src/main/java/org/apache/camel/support/ServiceHelper.java b/camel-api/src/main/java/org/apache/camel/support/ServiceHelper.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/ServiceHelper.java
rename to camel-api/src/main/java/org/apache/camel/support/ServiceHelper.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/ServiceSupport.java b/camel-api/src/main/java/org/apache/camel/support/ServiceSupport.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/ServiceSupport.java
rename to camel-api/src/main/java/org/apache/camel/support/ServiceSupport.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/jsse/AliasedX509ExtendedKeyManager.java b/camel-api/src/main/java/org/apache/camel/support/jsse/AliasedX509ExtendedKeyManager.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/jsse/AliasedX509ExtendedKeyManager.java
rename to camel-api/src/main/java/org/apache/camel/support/jsse/AliasedX509ExtendedKeyManager.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/jsse/BaseSSLContextParameters.java b/camel-api/src/main/java/org/apache/camel/support/jsse/BaseSSLContextParameters.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/jsse/BaseSSLContextParameters.java
rename to camel-api/src/main/java/org/apache/camel/support/jsse/BaseSSLContextParameters.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/jsse/CipherSuitesParameters.java b/camel-api/src/main/java/org/apache/camel/support/jsse/CipherSuitesParameters.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/jsse/CipherSuitesParameters.java
rename to camel-api/src/main/java/org/apache/camel/support/jsse/CipherSuitesParameters.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/jsse/ClientAuthentication.java b/camel-api/src/main/java/org/apache/camel/support/jsse/ClientAuthentication.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/jsse/ClientAuthentication.java
rename to camel-api/src/main/java/org/apache/camel/support/jsse/ClientAuthentication.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/jsse/FilterParameters.java b/camel-api/src/main/java/org/apache/camel/support/jsse/FilterParameters.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/jsse/FilterParameters.java
rename to camel-api/src/main/java/org/apache/camel/support/jsse/FilterParameters.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/jsse/GlobalSSLContextParametersSupplier.java b/camel-api/src/main/java/org/apache/camel/support/jsse/GlobalSSLContextParametersSupplier.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/jsse/GlobalSSLContextParametersSupplier.java
rename to camel-api/src/main/java/org/apache/camel/support/jsse/GlobalSSLContextParametersSupplier.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/jsse/JsseParameters.java b/camel-api/src/main/java/org/apache/camel/support/jsse/JsseParameters.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/jsse/JsseParameters.java
rename to camel-api/src/main/java/org/apache/camel/support/jsse/JsseParameters.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/jsse/KeyManagersParameters.java b/camel-api/src/main/java/org/apache/camel/support/jsse/KeyManagersParameters.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/jsse/KeyManagersParameters.java
rename to camel-api/src/main/java/org/apache/camel/support/jsse/KeyManagersParameters.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/jsse/KeyStoreParameters.java b/camel-api/src/main/java/org/apache/camel/support/jsse/KeyStoreParameters.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/jsse/KeyStoreParameters.java
rename to camel-api/src/main/java/org/apache/camel/support/jsse/KeyStoreParameters.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/jsse/SSLContextClientParameters.java b/camel-api/src/main/java/org/apache/camel/support/jsse/SSLContextClientParameters.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/jsse/SSLContextClientParameters.java
rename to camel-api/src/main/java/org/apache/camel/support/jsse/SSLContextClientParameters.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/jsse/SSLContextParameters.java b/camel-api/src/main/java/org/apache/camel/support/jsse/SSLContextParameters.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/jsse/SSLContextParameters.java
rename to camel-api/src/main/java/org/apache/camel/support/jsse/SSLContextParameters.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/jsse/SSLContextServerParameters.java b/camel-api/src/main/java/org/apache/camel/support/jsse/SSLContextServerParameters.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/jsse/SSLContextServerParameters.java
rename to camel-api/src/main/java/org/apache/camel/support/jsse/SSLContextServerParameters.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/jsse/SecureRandomParameters.java b/camel-api/src/main/java/org/apache/camel/support/jsse/SecureRandomParameters.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/jsse/SecureRandomParameters.java
rename to camel-api/src/main/java/org/apache/camel/support/jsse/SecureRandomParameters.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/jsse/SecureSocketProtocolsParameters.java b/camel-api/src/main/java/org/apache/camel/support/jsse/SecureSocketProtocolsParameters.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/jsse/SecureSocketProtocolsParameters.java
rename to camel-api/src/main/java/org/apache/camel/support/jsse/SecureSocketProtocolsParameters.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/jsse/TrustManagersParameters.java b/camel-api/src/main/java/org/apache/camel/support/jsse/TrustManagersParameters.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/jsse/TrustManagersParameters.java
rename to camel-api/src/main/java/org/apache/camel/support/jsse/TrustManagersParameters.java
diff --git a/camel-core/src/main/java/org/apache/camel/support/jsse/package.html b/camel-api/src/main/java/org/apache/camel/support/jsse/package.html
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/support/jsse/package.html
rename to camel-api/src/main/java/org/apache/camel/support/jsse/package.html
diff --git a/camel-core/pom.xml b/camel-core/pom.xml
index 0d11356..936dd22 100644
--- a/camel-core/pom.xml
+++ b/camel-core/pom.xml
@@ -131,6 +131,22 @@
</dependency>
<!-- required dependencies by camel-core -->
+ <!-- it will be shade into camel-core by bnd plugin -->
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-util</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <!-- required dependencies by camel-core -->
+ <!-- it will be shade into camel-core by bnd plugin -->
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <!-- required dependencies by camel-core -->
<!-- which we shade into camel-core so its available for everybody out of the box -->
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
diff --git a/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
index 583d6cb..b64b3dc 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
@@ -25,7 +25,7 @@ import org.apache.camel.processor.DeadLetterChannel;
import org.apache.camel.processor.FatalFallbackErrorHandler;
import org.apache.camel.processor.SendProcessor;
import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.util.StringHelper;
import org.slf4j.LoggerFactory;
diff --git a/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
index ea8ea1a..dceef02 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
@@ -30,7 +30,7 @@ import org.apache.camel.spi.ExecutorServiceManager;
import org.apache.camel.spi.Language;
import org.apache.camel.spi.RouteContext;
import org.apache.camel.spi.ThreadPoolProfile;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.support.ExpressionToPredicateAdapter;
import org.slf4j.LoggerFactory;
diff --git a/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusEndpoint.java
index 78c81f4..b3b9d28 100644
--- a/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusEndpoint.java
@@ -27,7 +27,7 @@ import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.UriEndpoint;
import org.apache.camel.spi.UriParam;
import org.apache.camel.spi.UriPath;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.support.DefaultEndpoint;
/**
diff --git a/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusProducer.java b/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusProducer.java
index 326c6af..127af96 100644
--- a/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/controlbus/ControlBusProducer.java
@@ -28,7 +28,7 @@ import org.apache.camel.Route;
import org.apache.camel.ServiceStatus;
import org.apache.camel.builder.ExpressionBuilder;
import org.apache.camel.spi.Language;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.support.DefaultAsyncProducer;
import org.apache.camel.support.ExchangeHelper;
import org.apache.camel.util.ObjectHelper;
diff --git a/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetConsumer.java b/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetConsumer.java
index 81e341f..d66dde5 100644
--- a/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetConsumer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetConsumer.java
@@ -22,7 +22,7 @@ import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.processor.ThroughputLogger;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.support.DefaultConsumer;
import org.apache.camel.util.URISupport;
diff --git a/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetEndpoint.java
index ecdae8f..95ac1b3 100644
--- a/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetEndpoint.java
@@ -31,7 +31,7 @@ import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.UriEndpoint;
import org.apache.camel.spi.UriParam;
import org.apache.camel.spi.UriPath;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.support.ExchangeHelper;
import org.apache.camel.util.ObjectHelper;
import org.apache.camel.util.URISupport;
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileChangedExclusiveReadLockStrategy.java b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileChangedExclusiveReadLockStrategy.java
index 7b10782..ab2f552 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileChangedExclusiveReadLockStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileChangedExclusiveReadLockStrategy.java
@@ -23,7 +23,7 @@ import org.apache.camel.Exchange;
import org.apache.camel.LoggingLevel;
import org.apache.camel.component.file.GenericFile;
import org.apache.camel.component.file.GenericFileOperations;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.util.StopWatch;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentChangedRepositoryReadLockStrategy.java b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentChangedRepositoryReadLockStrategy.java
index 5ad7fec..a541c47 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentChangedRepositoryReadLockStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentChangedRepositoryReadLockStrategy.java
@@ -29,7 +29,7 @@ import org.apache.camel.component.file.GenericFileEndpoint;
import org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy;
import org.apache.camel.component.file.GenericFileOperations;
import org.apache.camel.spi.IdempotentRepository;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.support.ServiceSupport;
import org.apache.camel.util.ObjectHelper;
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentRenameRepositoryReadLockStrategy.java b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentRenameRepositoryReadLockStrategy.java
index 6df72ee..50fa191 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentRenameRepositoryReadLockStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentRenameRepositoryReadLockStrategy.java
@@ -27,7 +27,7 @@ import org.apache.camel.component.file.GenericFileEndpoint;
import org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy;
import org.apache.camel.component.file.GenericFileOperations;
import org.apache.camel.spi.IdempotentRepository;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.support.ServiceSupport;
import org.apache.camel.util.ObjectHelper;
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentRepositoryReadLockStrategy.java b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentRepositoryReadLockStrategy.java
index 2619505..59e5785 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentRepositoryReadLockStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileIdempotentRepositoryReadLockStrategy.java
@@ -29,7 +29,7 @@ import org.apache.camel.component.file.GenericFileEndpoint;
import org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy;
import org.apache.camel.component.file.GenericFileOperations;
import org.apache.camel.spi.IdempotentRepository;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.support.ServiceSupport;
import org.apache.camel.util.ObjectHelper;
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileLockExclusiveReadLockStrategy.java b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileLockExclusiveReadLockStrategy.java
index 64ac1b0..fbc5dd9 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileLockExclusiveReadLockStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileLockExclusiveReadLockStrategy.java
@@ -28,7 +28,7 @@ import org.apache.camel.LoggingLevel;
import org.apache.camel.component.file.GenericFile;
import org.apache.camel.component.file.GenericFileEndpoint;
import org.apache.camel.component.file.GenericFileOperations;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.util.IOHelper;
import org.apache.camel.util.StopWatch;
import org.slf4j.Logger;
diff --git a/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileRenameExclusiveReadLockStrategy.java b/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileRenameExclusiveReadLockStrategy.java
index 2bba3ff..ff43d5f 100644
--- a/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileRenameExclusiveReadLockStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileRenameExclusiveReadLockStrategy.java
@@ -25,7 +25,7 @@ import org.apache.camel.component.file.GenericFileEndpoint;
import org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy;
import org.apache.camel.component.file.GenericFileOperationFailedException;
import org.apache.camel.component.file.GenericFileOperations;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.util.StopWatch;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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 1dc443a..ad25661 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
@@ -24,7 +24,7 @@ import org.apache.camel.LoggingLevel;
import org.apache.camel.processor.DefaultExchangeFormatter;
import org.apache.camel.spi.ExchangeFormatter;
import org.apache.camel.spi.Metadata;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.support.DefaultComponent;
import org.slf4j.Logger;
diff --git a/camel-core/src/main/java/org/apache/camel/component/log/LogEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/log/LogEndpoint.java
index 728b9b4..1a3c823 100644
--- a/camel-core/src/main/java/org/apache/camel/component/log/LogEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/log/LogEndpoint.java
@@ -31,7 +31,7 @@ import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.UriEndpoint;
import org.apache.camel.spi.UriParam;
import org.apache.camel.spi.UriPath;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.support.ProcessorEndpoint;
import org.apache.camel.support.ServiceHelper;
import org.slf4j.Logger;
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 99d294a..aa146e1 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
@@ -22,7 +22,7 @@ import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
import org.apache.camel.Processor;
import org.apache.camel.processor.ThroughputLogger;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.support.DefaultComponent;
/**
diff --git a/camel-core/src/main/java/org/apache/camel/component/rest/RestComponentVerifierExtension.java b/camel-core/src/main/java/org/apache/camel/component/rest/RestComponentVerifierExtension.java
index 280e83e..649692d 100644
--- a/camel-core/src/main/java/org/apache/camel/component/rest/RestComponentVerifierExtension.java
+++ b/camel-core/src/main/java/org/apache/camel/component/rest/RestComponentVerifierExtension.java
@@ -26,7 +26,7 @@ import org.apache.camel.component.extension.verifier.CatalogVerifierCustomizer;
import org.apache.camel.component.extension.verifier.DefaultComponentVerifierExtension;
import org.apache.camel.component.extension.verifier.ResultBuilder;
import org.apache.camel.component.extension.verifier.ResultErrorBuilder;
-import org.apache.camel.runtimecatalog.JSonSchemaHelper;
+import org.apache.camel.runtimecatalog.impl.JSonSchemaHelper;
import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
import org.apache.camel.spi.RestConsumerFactory;
import org.apache.camel.spi.RestProducerFactory;
diff --git a/camel-core/src/main/java/org/apache/camel/component/rest/RestEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/rest/RestEndpoint.java
index 8d3bfd4..078e14c 100644
--- a/camel-core/src/main/java/org/apache/camel/component/rest/RestEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/rest/RestEndpoint.java
@@ -39,7 +39,7 @@ import org.apache.camel.support.DefaultEndpoint;
import org.apache.camel.util.HostUtils;
import org.apache.camel.util.ObjectHelper;
-import static org.apache.camel.spi.RestProducerFactoryHelper.setupComponent;
+import static org.apache.camel.support.RestProducerFactoryHelper.setupComponent;
/**
* The rest component is used for either hosting REST services (consumer) or calling external REST services (producer).
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index 3662b62..5b8774e 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -120,7 +120,7 @@ import org.apache.camel.processor.interceptor.BacklogDebugger;
import org.apache.camel.processor.interceptor.BacklogTracer;
import org.apache.camel.processor.interceptor.Debug;
import org.apache.camel.processor.interceptor.HandleFault;
-import org.apache.camel.runtimecatalog.DefaultRuntimeCamelCatalog;
+import org.apache.camel.runtimecatalog.impl.DefaultRuntimeCamelCatalog;
import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
import org.apache.camel.spi.AsyncProcessorAwaitManager;
import org.apache.camel.spi.CamelContextNameStrategy;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/ThrottlingInflightRoutePolicy.java b/camel-core/src/main/java/org/apache/camel/impl/ThrottlingInflightRoutePolicy.java
index e1c2a4b..4947c47 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/ThrottlingInflightRoutePolicy.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/ThrottlingInflightRoutePolicy.java
@@ -29,7 +29,7 @@ import org.apache.camel.Exchange;
import org.apache.camel.LoggingLevel;
import org.apache.camel.Route;
import org.apache.camel.management.event.ExchangeCompletedEvent;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.support.EventNotifierSupport;
import org.apache.camel.support.RoutePolicySupport;
import org.apache.camel.support.ServiceHelper;
diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java b/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
index b26d898..27d90dc 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
@@ -49,7 +49,7 @@ import org.apache.camel.spi.PackageScanClassResolver;
import org.apache.camel.spi.TypeConverterAware;
import org.apache.camel.spi.TypeConverterLoader;
import org.apache.camel.spi.TypeConverterRegistry;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.support.LRUCacheFactory;
import org.apache.camel.support.MessageHelper;
import org.apache.camel.support.ServiceSupport;
diff --git a/camel-core/src/main/java/org/apache/camel/model/LogDefinition.java b/camel-core/src/main/java/org/apache/camel/model/LogDefinition.java
index 24ffd94..e6b28d5 100644
--- a/camel-core/src/main/java/org/apache/camel/model/LogDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/LogDefinition.java
@@ -34,7 +34,7 @@ import org.apache.camel.spi.MaskingFormatter;
import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.RouteContext;
import org.apache.camel.support.CamelContextHelper;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.util.ObjectHelper;
import org.apache.camel.util.StringHelper;
import org.slf4j.Logger;
diff --git a/camel-core/src/main/java/org/apache/camel/processor/CamelLogProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/CamelLogProcessor.java
index 7422391..d2e1549 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/CamelLogProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/CamelLogProcessor.java
@@ -28,7 +28,7 @@ import org.apache.camel.spi.IdAware;
import org.apache.camel.spi.LogListener;
import org.apache.camel.spi.MaskingFormatter;
import org.apache.camel.support.AsyncProcessorHelper;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java b/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java
index 2aa15aa..1068c38 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java
@@ -22,7 +22,7 @@ import org.apache.camel.CamelContext;
import org.apache.camel.Predicate;
import org.apache.camel.Processor;
import org.apache.camel.processor.exceptionpolicy.ExceptionPolicyStrategy;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
/**
* Implements a <a
diff --git a/camel-core/src/main/java/org/apache/camel/processor/DefaultErrorHandler.java b/camel-core/src/main/java/org/apache/camel/processor/DefaultErrorHandler.java
index 2471094..3140183 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/DefaultErrorHandler.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/DefaultErrorHandler.java
@@ -22,7 +22,7 @@ import org.apache.camel.CamelContext;
import org.apache.camel.Predicate;
import org.apache.camel.Processor;
import org.apache.camel.processor.exceptionpolicy.ExceptionPolicyStrategy;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
/**
* Default error handler
diff --git a/camel-core/src/main/java/org/apache/camel/processor/LogProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/LogProcessor.java
index aec68d1..fc0fa99 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/LogProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/LogProcessor.java
@@ -27,7 +27,7 @@ import org.apache.camel.spi.IdAware;
import org.apache.camel.spi.LogListener;
import org.apache.camel.spi.MaskingFormatter;
import org.apache.camel.support.AsyncProcessorHelper;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.support.ServiceSupport;
/**
diff --git a/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java b/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java
index 766d2b2..963fa5a 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java
@@ -44,7 +44,7 @@ import org.apache.camel.spi.SubUnitOfWorkCallback;
import org.apache.camel.spi.UnitOfWork;
import org.apache.camel.support.AsyncProcessorConverterHelper;
import org.apache.camel.support.CamelContextHelper;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.support.EventHelper;
import org.apache.camel.support.ExchangeHelper;
import org.apache.camel.support.MessageHelper;
diff --git a/camel-core/src/main/java/org/apache/camel/processor/ThroughputLogger.java b/camel-core/src/main/java/org/apache/camel/processor/ThroughputLogger.java
index dc7beba..37dd7ee 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/ThroughputLogger.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/ThroughputLogger.java
@@ -27,7 +27,7 @@ import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
import org.apache.camel.spi.IdAware;
import org.apache.camel.support.AsyncProcessorHelper;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.support.ServiceSupport;
import org.apache.camel.util.ObjectHelper;
diff --git a/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogDebugger.java b/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogDebugger.java
index 92cc156..0e72013 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogDebugger.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogDebugger.java
@@ -45,7 +45,7 @@ import org.apache.camel.model.ProcessorDefinitionHelper;
import org.apache.camel.spi.Condition;
import org.apache.camel.spi.Debugger;
import org.apache.camel.spi.InterceptStrategy;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.support.MessageHelper;
import org.apache.camel.support.ServiceHelper;
import org.apache.camel.support.ServiceSupport;
diff --git a/camel-core/src/main/java/org/apache/camel/runtimecatalog/AbstractCamelCatalog.java b/camel-core/src/main/java/org/apache/camel/runtimecatalog/AbstractCamelCatalog.java
deleted file mode 100644
index 5ce0e34..0000000
--- a/camel-core/src/main/java/org/apache/camel/runtimecatalog/AbstractCamelCatalog.java
+++ /dev/null
@@ -1,1284 +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.runtimecatalog;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
-import java.util.TreeMap;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import static org.apache.camel.runtimecatalog.CatalogHelper.after;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.getNames;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.getPropertyDefaultValue;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.getPropertyEnum;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.getPropertyKind;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.getPropertyNameFromNameWithPrefix;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.getPropertyPrefix;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.getRow;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.isComponentConsumerOnly;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.isComponentLenientProperties;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.isComponentProducerOnly;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.isPropertyBoolean;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.isPropertyConsumerOnly;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.isPropertyDeprecated;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.isPropertyInteger;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.isPropertyMultiValue;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.isPropertyNumber;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.isPropertyObject;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.isPropertyProducerOnly;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.isPropertyRequired;
-import static org.apache.camel.runtimecatalog.JSonSchemaHelper.stripOptionalPrefixFromName;
-import static org.apache.camel.runtimecatalog.URISupport.createQueryString;
-import static org.apache.camel.runtimecatalog.URISupport.isEmpty;
-import static org.apache.camel.runtimecatalog.URISupport.normalizeUri;
-import static org.apache.camel.runtimecatalog.URISupport.stripQuery;
-
-/**
- * Base class for both the runtime RuntimeCamelCatalog from camel-core and the complete CamelCatalog from camel-catalog.
- */
-public abstract class AbstractCamelCatalog {
-
- // CHECKSTYLE:OFF
-
- private static final Pattern SYNTAX_PATTERN = Pattern.compile("([\\w.]+)");
- private static final Pattern COMPONENT_SYNTAX_PARSER = Pattern.compile("([^\\w-]*)([\\w-]+)");
-
- private SuggestionStrategy suggestionStrategy;
- private JSonSchemaResolver jsonSchemaResolver;
-
- public SuggestionStrategy getSuggestionStrategy() {
- return suggestionStrategy;
- }
-
- public void setSuggestionStrategy(SuggestionStrategy suggestionStrategy) {
- this.suggestionStrategy = suggestionStrategy;
- }
-
- public JSonSchemaResolver getJSonSchemaResolver() {
- return jsonSchemaResolver;
- }
-
- public void setJSonSchemaResolver(JSonSchemaResolver resolver) {
- this.jsonSchemaResolver = resolver;
- }
-
- public boolean validateTimePattern(String pattern) {
- return validateInteger(pattern);
- }
-
- public EndpointValidationResult validateEndpointProperties(String uri) {
- return validateEndpointProperties(uri, false, false, false);
- }
-
- public EndpointValidationResult validateEndpointProperties(String uri, boolean ignoreLenientProperties) {
- return validateEndpointProperties(uri, ignoreLenientProperties, false, false);
- }
-
- public EndpointValidationResult validateProperties(String scheme, Map<String, String> properties) {
- EndpointValidationResult result = new EndpointValidationResult(scheme);
-
- String json = jsonSchemaResolver.getComponentJSonSchema(scheme);
- List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("properties", json, true);
- List<Map<String, String>> componentProps = JSonSchemaHelper.parseJsonSchema("componentProperties", json, true);
-
- // endpoint options have higher priority so remove those from component
- // that may clash
- componentProps.stream()
- .filter(c -> rows.stream().noneMatch(e -> Objects.equals(e.get("name"), c.get("name"))))
- .forEach(rows::add);
-
- boolean lenient = Boolean.getBoolean(properties.getOrDefault("lenient", "false"));
-
- // the dataformat component refers to a data format so lets add the properties for the selected
- // data format to the list of rows
- if ("dataformat".equals(scheme)) {
- String dfName = properties.get("name");
- if (dfName != null) {
- String dfJson = jsonSchemaResolver.getDataFormatJSonSchema(dfName);
- List<Map<String, String>> dfRows = JSonSchemaHelper.parseJsonSchema("properties", dfJson, true);
- if (dfRows != null && !dfRows.isEmpty()) {
- rows.addAll(dfRows);
- }
- }
- }
-
- for (Map.Entry<String, String> property : properties.entrySet()) {
- String value = property.getValue();
- String originalName = property.getKey();
- String name = property.getKey();
- // the name may be using an optional prefix, so lets strip that because the options
- // in the schema are listed without the prefix
- name = stripOptionalPrefixFromName(rows, name);
- // the name may be using a prefix, so lets see if we can find the real property name
- String propertyName = getPropertyNameFromNameWithPrefix(rows, name);
- if (propertyName != null) {
- name = propertyName;
- }
-
- String prefix = getPropertyPrefix(rows, name);
- String kind = getPropertyKind(rows, name);
- boolean namePlaceholder = name.startsWith("{{") && name.endsWith("}}");
- boolean valuePlaceholder = value.startsWith("{{") || value.startsWith("${") || value.startsWith("$simple{");
- boolean lookup = value.startsWith("#") && value.length() > 1;
- // we cannot evaluate multi values as strict as the others, as we don't know their expected types
- boolean multiValue = prefix != null && originalName.startsWith(prefix) && isPropertyMultiValue(rows, name);
-
- Map<String, String> row = getRow(rows, name);
- if (row == null) {
- // unknown option
-
- // only add as error if the component is not lenient properties, or not stub component
- // and the name is not a property placeholder for one or more values
- if (!namePlaceholder && !"stub".equals(scheme)) {
- if (lenient) {
- // as if we are lenient then the option is a dynamic extra option which we cannot validate
- result.addLenient(name);
- } else {
- // its unknown
- result.addUnknown(name);
- if (suggestionStrategy != null) {
- String[] suggestions = suggestionStrategy.suggestEndpointOptions(getNames(rows), name);
- if (suggestions != null) {
- result.addUnknownSuggestions(name, suggestions);
- }
- }
- }
- }
- } else {
- /* TODO: we may need to add something in the properties to know if they are related to a producer or consumer
- if ("parameter".equals(kind)) {
- // consumer only or producer only mode for parameters
- if (consumerOnly) {
- boolean producer = isPropertyProducerOnly(rows, name);
- if (producer) {
- // the option is only for producer so you cannot use it in consumer mode
- result.addNotConsumerOnly(name);
- }
- } else if (producerOnly) {
- boolean consumer = isPropertyConsumerOnly(rows, name);
- if (consumer) {
- // the option is only for consumer so you cannot use it in producer mode
- result.addNotProducerOnly(name);
- }
- }
- }
- */
-
- // default value
- String defaultValue = getPropertyDefaultValue(rows, name);
- if (defaultValue != null) {
- result.addDefaultValue(name, defaultValue);
- }
-
- // is required but the value is empty
- boolean required = isPropertyRequired(rows, name);
- if (required && isEmpty(value)) {
- result.addRequired(name);
- }
-
- // is the option deprecated
- boolean deprecated = isPropertyDeprecated(rows, name);
- if (deprecated) {
- result.addDeprecated(name);
- }
-
- // is enum but the value is not within the enum range
- // but we can only check if the value is not a placeholder
- String enums = getPropertyEnum(rows, name);
- if (!multiValue && !valuePlaceholder && !lookup && enums != null) {
- String[] choices = enums.split(",");
- boolean found = false;
- for (String s : choices) {
- if (value.equalsIgnoreCase(s)) {
- found = true;
- break;
- }
- }
- if (!found) {
- result.addInvalidEnum(name, value);
- result.addInvalidEnumChoices(name, choices);
- if (suggestionStrategy != null) {
- Set<String> names = new LinkedHashSet<>();
- names.addAll(Arrays.asList(choices));
- String[] suggestions = suggestionStrategy.suggestEndpointOptions(names, value);
- if (suggestions != null) {
- result.addInvalidEnumSuggestions(name, suggestions);
- }
- }
-
- }
- }
-
- // is reference lookup of bean (not applicable for @UriPath, enums, or multi-valued)
- if (!multiValue && enums == null && !"path".equals(kind) && isPropertyObject(rows, name)) {
- // must start with # and be at least 2 characters
- if (!value.startsWith("#") || value.length() <= 1) {
- result.addInvalidReference(name, value);
- }
- }
-
- // is boolean
- if (!multiValue && !valuePlaceholder && !lookup && isPropertyBoolean(rows, name)) {
- // value must be a boolean
- boolean bool = "true".equalsIgnoreCase(value) || "false".equalsIgnoreCase(value);
- if (!bool) {
- result.addInvalidBoolean(name, value);
- }
- }
-
- // is integer
- if (!multiValue && !valuePlaceholder && !lookup && isPropertyInteger(rows, name)) {
- // value must be an integer
- boolean valid = validateInteger(value);
- if (!valid) {
- result.addInvalidInteger(name, value);
- }
- }
-
- // is number
- if (!multiValue && !valuePlaceholder && !lookup && isPropertyNumber(rows, name)) {
- // value must be an number
- boolean valid = false;
- try {
- valid = !Double.valueOf(value).isNaN() || !Float.valueOf(value).isNaN();
- } catch (Exception e) {
- // ignore
- }
- if (!valid) {
- result.addInvalidNumber(name, value);
- }
- }
- }
- }
-
- // now check if all required values are there, and that a default value does not exists
- for (Map<String, String> row : rows) {
- String name = row.get("name");
- boolean required = isPropertyRequired(rows, name);
- if (required) {
- String value = properties.get(name);
- if (isEmpty(value)) {
- value = getPropertyDefaultValue(rows, name);
- }
- if (isEmpty(value)) {
- result.addRequired(name);
- }
- }
- }
-
- return result;
- }
-
- public EndpointValidationResult validateEndpointProperties(String uri, boolean ignoreLenientProperties, boolean consumerOnly, boolean producerOnly) {
- EndpointValidationResult result = new EndpointValidationResult(uri);
-
- Map<String, String> properties;
- List<Map<String, String>> rows;
- boolean lenientProperties;
- String scheme;
-
- try {
- String json = null;
-
- // parse the uri
- URI u = normalizeUri(uri);
- scheme = u.getScheme();
-
- if (scheme != null) {
- json = jsonSchemaResolver.getComponentJSonSchema(scheme);
- }
- if (json == null) {
- // if the uri starts with a placeholder then we are also incapable of parsing it as we wasn't able to resolve the component name
- if (uri.startsWith("{{")) {
- result.addIncapable(uri);
- } else if (scheme != null) {
- result.addUnknownComponent(scheme);
- } else {
- result.addUnknownComponent(uri);
- }
- return result;
- }
-
- rows = JSonSchemaHelper.parseJsonSchema("component", json, false);
-
- // is the component capable of both consumer and producer?
- boolean canConsumeAndProduce = false;
- if (!isComponentConsumerOnly(rows) && !isComponentProducerOnly(rows)) {
- canConsumeAndProduce = true;
- }
-
- if (canConsumeAndProduce && consumerOnly) {
- // lenient properties is not support in consumer only mode if the component can do both of them
- lenientProperties = false;
- } else {
- // only enable lenient properties if we should not ignore
- lenientProperties = !ignoreLenientProperties && isComponentLenientProperties(rows);
- }
- rows = JSonSchemaHelper.parseJsonSchema("properties", json, true);
- properties = endpointProperties(uri);
- } catch (URISyntaxException e) {
- if (uri.startsWith("{{")) {
- // if the uri starts with a placeholder then we are also incapable of parsing it as we wasn't able to resolve the component name
- result.addIncapable(uri);
- } else {
- result.addSyntaxError(e.getMessage());
- }
-
- return result;
- }
-
- // the dataformat component refers to a data format so lets add the properties for the selected
- // data format to the list of rows
- if ("dataformat".equals(scheme)) {
- String dfName = properties.get("name");
- if (dfName != null) {
- String dfJson = jsonSchemaResolver.getDataFormatJSonSchema(dfName);
- List<Map<String, String>> dfRows = JSonSchemaHelper.parseJsonSchema("properties", dfJson, true);
- if (dfRows != null && !dfRows.isEmpty()) {
- rows.addAll(dfRows);
- }
- }
- }
-
- for (Map.Entry<String, String> property : properties.entrySet()) {
- String value = property.getValue();
- String originalName = property.getKey();
- String name = property.getKey();
- // the name may be using an optional prefix, so lets strip that because the options
- // in the schema are listed without the prefix
- name = stripOptionalPrefixFromName(rows, name);
- // the name may be using a prefix, so lets see if we can find the real property name
- String propertyName = getPropertyNameFromNameWithPrefix(rows, name);
- if (propertyName != null) {
- name = propertyName;
- }
-
- String prefix = getPropertyPrefix(rows, name);
- String kind = getPropertyKind(rows, name);
- boolean namePlaceholder = name.startsWith("{{") && name.endsWith("}}");
- boolean valuePlaceholder = value.startsWith("{{") || value.startsWith("${") || value.startsWith("$simple{");
- boolean lookup = value.startsWith("#") && value.length() > 1;
- // we cannot evaluate multi values as strict as the others, as we don't know their expected types
- boolean mulitValue = prefix != null && originalName.startsWith(prefix) && isPropertyMultiValue(rows, name);
-
- Map<String, String> row = getRow(rows, name);
- if (row == null) {
- // unknown option
-
- // only add as error if the component is not lenient properties, or not stub component
- // and the name is not a property placeholder for one or more values
- if (!namePlaceholder && !"stub".equals(scheme)) {
- if (lenientProperties) {
- // as if we are lenient then the option is a dynamic extra option which we cannot validate
- result.addLenient(name);
- } else {
- // its unknown
- result.addUnknown(name);
- if (suggestionStrategy != null) {
- String[] suggestions = suggestionStrategy.suggestEndpointOptions(getNames(rows), name);
- if (suggestions != null) {
- result.addUnknownSuggestions(name, suggestions);
- }
- }
- }
- }
- } else {
- if ("parameter".equals(kind)) {
- // consumer only or producer only mode for parameters
- if (consumerOnly) {
- boolean producer = isPropertyProducerOnly(rows, name);
- if (producer) {
- // the option is only for producer so you cannot use it in consumer mode
- result.addNotConsumerOnly(name);
- }
- } else if (producerOnly) {
- boolean consumer = isPropertyConsumerOnly(rows, name);
- if (consumer) {
- // the option is only for consumer so you cannot use it in producer mode
- result.addNotProducerOnly(name);
- }
- }
- }
-
- // default value
- String defaultValue = getPropertyDefaultValue(rows, name);
- if (defaultValue != null) {
- result.addDefaultValue(name, defaultValue);
- }
-
- // is required but the value is empty
- boolean required = isPropertyRequired(rows, name);
- if (required && isEmpty(value)) {
- result.addRequired(name);
- }
-
- // is the option deprecated
- boolean deprecated = isPropertyDeprecated(rows, name);
- if (deprecated) {
- result.addDeprecated(name);
- }
-
- // is enum but the value is not within the enum range
- // but we can only check if the value is not a placeholder
- String enums = getPropertyEnum(rows, name);
- if (!mulitValue && !valuePlaceholder && !lookup && enums != null) {
- String[] choices = enums.split(",");
- boolean found = false;
- for (String s : choices) {
- if (value.equalsIgnoreCase(s)) {
- found = true;
- break;
- }
- }
- if (!found) {
- result.addInvalidEnum(name, value);
- result.addInvalidEnumChoices(name, choices);
- if (suggestionStrategy != null) {
- Set<String> names = new LinkedHashSet<>();
- names.addAll(Arrays.asList(choices));
- String[] suggestions = suggestionStrategy.suggestEndpointOptions(names, value);
- if (suggestions != null) {
- result.addInvalidEnumSuggestions(name, suggestions);
- }
- }
-
- }
- }
-
- // is reference lookup of bean (not applicable for @UriPath, enums, or multi-valued)
- if (!mulitValue && enums == null && !"path".equals(kind) && isPropertyObject(rows, name)) {
- // must start with # and be at least 2 characters
- if (!value.startsWith("#") || value.length() <= 1) {
- result.addInvalidReference(name, value);
- }
- }
-
- // is boolean
- if (!mulitValue && !valuePlaceholder && !lookup && isPropertyBoolean(rows, name)) {
- // value must be a boolean
- boolean bool = "true".equalsIgnoreCase(value) || "false".equalsIgnoreCase(value);
- if (!bool) {
- result.addInvalidBoolean(name, value);
- }
- }
-
- // is integer
- if (!mulitValue && !valuePlaceholder && !lookup && isPropertyInteger(rows, name)) {
- // value must be an integer
- boolean valid = validateInteger(value);
- if (!valid) {
- result.addInvalidInteger(name, value);
- }
- }
-
- // is number
- if (!mulitValue && !valuePlaceholder && !lookup && isPropertyNumber(rows, name)) {
- // value must be an number
- boolean valid = false;
- try {
- valid = !Double.valueOf(value).isNaN() || !Float.valueOf(value).isNaN();
- } catch (Exception e) {
- // ignore
- }
- if (!valid) {
- result.addInvalidNumber(name, value);
- }
- }
- }
- }
-
- // now check if all required values are there, and that a default value does not exists
- for (Map<String, String> row : rows) {
- String name = row.get("name");
- boolean required = isPropertyRequired(rows, name);
- if (required) {
- String value = properties.get(name);
- if (isEmpty(value)) {
- value = getPropertyDefaultValue(rows, name);
- }
- if (isEmpty(value)) {
- result.addRequired(name);
- }
- }
- }
-
- return result;
- }
-
- public Map<String, String> endpointProperties(String uri) throws URISyntaxException {
- // need to normalize uri first
- URI u = normalizeUri(uri);
- String scheme = u.getScheme();
-
- String json = jsonSchemaResolver.getComponentJSonSchema(scheme);
- if (json == null) {
- throw new IllegalArgumentException("Cannot find endpoint with scheme " + scheme);
- }
-
- // grab the syntax
- String syntax = null;
- String alternativeSyntax = null;
- List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("component", json, false);
- for (Map<String, String> row : rows) {
- if (row.containsKey("syntax")) {
- syntax = row.get("syntax");
- }
- if (row.containsKey("alternativeSyntax")) {
- alternativeSyntax = row.get("alternativeSyntax");
- }
- }
- if (syntax == null) {
- throw new IllegalArgumentException("Endpoint with scheme " + scheme + " has no syntax defined in the json schema");
- }
-
- // only if we support alternative syntax, and the uri contains the username and password in the authority
- // part of the uri, then we would need some special logic to capture that information and strip those
- // details from the uri, so we can continue parsing the uri using the normal syntax
- Map<String, String> userInfoOptions = new LinkedHashMap<>();
- if (alternativeSyntax != null && alternativeSyntax.contains("@")) {
- // clip the scheme from the syntax
- alternativeSyntax = after(alternativeSyntax, ":");
- // trim so only userinfo
- int idx = alternativeSyntax.indexOf("@");
- String fields = alternativeSyntax.substring(0, idx);
- String[] names = fields.split(":");
-
- // grab authority part and grab username and/or password
- String authority = u.getAuthority();
- if (authority != null && authority.contains("@")) {
- String username = null;
- String password = null;
-
- // grab unserinfo part before @
- String userInfo = authority.substring(0, authority.indexOf("@"));
- String[] parts = userInfo.split(":");
- if (parts.length == 2) {
- username = parts[0];
- password = parts[1];
- } else {
- // only username
- username = userInfo;
- }
-
- // remember the username and/or password which we add later to the options
- if (names.length == 2) {
- userInfoOptions.put(names[0], username);
- if (password != null) {
- // password is optional
- userInfoOptions.put(names[1], password);
- }
- }
- }
- }
-
- // clip the scheme from the syntax
- syntax = after(syntax, ":");
- // clip the scheme from the uri
- uri = after(uri, ":");
- String uriPath = stripQuery(uri);
-
- // strip user info from uri path
- if (!userInfoOptions.isEmpty()) {
- int idx = uriPath.indexOf('@');
- if (idx > -1) {
- uriPath = uriPath.substring(idx + 1);
- }
- }
-
- // strip double slash in the start
- if (uriPath != null && uriPath.startsWith("//")) {
- uriPath = uriPath.substring(2);
- }
-
- // parse the syntax and find the names of each option
- Matcher matcher = SYNTAX_PATTERN.matcher(syntax);
- List<String> word = new ArrayList<>();
- while (matcher.find()) {
- String s = matcher.group(1);
- if (!scheme.equals(s)) {
- word.add(s);
- }
- }
- // parse the syntax and find each token between each option
- String[] tokens = SYNTAX_PATTERN.split(syntax);
-
- // find the position where each option start/end
- List<String> word2 = new ArrayList<>();
- int prev = 0;
- int prevPath = 0;
-
- // special for activemq/jms where the enum for destinationType causes a token issue as it includes a colon
- // for 'temp:queue' and 'temp:topic' values
- if ("activemq".equals(scheme) || "jms".equals(scheme)) {
- if (uriPath.startsWith("temp:")) {
- prevPath = 5;
- }
- }
-
- for (String token : tokens) {
- if (token.isEmpty()) {
- continue;
- }
-
- // special for some tokens where :// can be used also, eg http://foo
- int idx = -1;
- int len = 0;
- if (":".equals(token)) {
- idx = uriPath.indexOf("://", prevPath);
- len = 3;
- }
- if (idx == -1) {
- idx = uriPath.indexOf(token, prevPath);
- len = token.length();
- }
-
- if (idx > 0) {
- String option = uriPath.substring(prev, idx);
- word2.add(option);
- prev = idx + len;
- prevPath = prev;
- }
- }
- // special for last or if we did not add anyone
- if (prev > 0 || word2.isEmpty()) {
- String option = uriPath.substring(prev);
- word2.add(option);
- }
-
- rows = JSonSchemaHelper.parseJsonSchema("properties", json, true);
-
- boolean defaultValueAdded = false;
-
- // now parse the uri to know which part isw what
- Map<String, String> options = new LinkedHashMap<>();
-
- // include the username and password from the userinfo section
- if (!userInfoOptions.isEmpty()) {
- options.putAll(userInfoOptions);
- }
-
- // word contains the syntax path elements
- Iterator<String> it = word2.iterator();
- for (int i = 0; i < word.size(); i++) {
- String key = word.get(i);
-
- boolean allOptions = word.size() == word2.size();
- boolean required = isPropertyRequired(rows, key);
- String defaultValue = getPropertyDefaultValue(rows, key);
-
- // we have all options so no problem
- if (allOptions) {
- String value = it.next();
- options.put(key, value);
- } else {
- // we have a little problem as we do not not have all options
- if (!required) {
- String value = null;
-
- boolean last = i == word.size() - 1;
- if (last) {
- // if its the last value then use it instead of the default value
- value = it.hasNext() ? it.next() : null;
- if (value != null) {
- options.put(key, value);
- } else {
- value = defaultValue;
- }
- }
- if (value != null) {
- options.put(key, value);
- defaultValueAdded = true;
- }
- } else {
- String value = it.hasNext() ? it.next() : null;
- if (value != null) {
- options.put(key, value);
- }
- }
- }
- }
-
- Map<String, String> answer = new LinkedHashMap<>();
-
- // remove all options which are using default values and are not required
- for (Map.Entry<String, String> entry : options.entrySet()) {
- String key = entry.getKey();
- String value = entry.getValue();
-
- if (defaultValueAdded) {
- boolean required = isPropertyRequired(rows, key);
- String defaultValue = getPropertyDefaultValue(rows, key);
-
- if (!required && defaultValue != null) {
- if (defaultValue.equals(value)) {
- continue;
- }
- }
- }
-
- // we should keep this in the answer
- answer.put(key, value);
- }
-
- // now parse the uri parameters
- Map<String, Object> parameters = URISupport.parseParameters(u);
-
- // and covert the values to String so its JMX friendly
- while (!parameters.isEmpty()) {
- Map.Entry<String, Object> entry = parameters.entrySet().iterator().next();
- String key = entry.getKey();
- String value = entry.getValue() != null ? entry.getValue().toString() : "";
-
- boolean multiValued = isPropertyMultiValue(rows, key);
- if (multiValued) {
- String prefix = getPropertyPrefix(rows, key);
- // extra all the multi valued options
- Map<String, Object> values = URISupport.extractProperties(parameters, prefix);
- // build a string with the extra multi valued options with the prefix and & as separator
- CollectionStringBuffer csb = new CollectionStringBuffer("&");
- for (Map.Entry<String, Object> multi : values.entrySet()) {
- String line = prefix + multi.getKey() + "=" + (multi.getValue() != null ? multi.getValue().toString() : "");
- csb.append(line);
- }
- // append the extra multi-values to the existing (which contains the first multi value)
- if (!csb.isEmpty()) {
- value = value + "&" + csb.toString();
- }
- }
-
- answer.put(key, value);
- // remove the parameter as we run in a while loop until no more parameters
- parameters.remove(key);
- }
-
- return answer;
- }
-
- public Map<String, String> endpointLenientProperties(String uri) throws URISyntaxException {
- // need to normalize uri first
-
- // parse the uri
- URI u = normalizeUri(uri);
- String scheme = u.getScheme();
-
- String json = jsonSchemaResolver.getComponentJSonSchema(scheme);
- if (json == null) {
- throw new IllegalArgumentException("Cannot find endpoint with scheme " + scheme);
- }
-
- List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("properties", json, true);
-
- // now parse the uri parameters
- Map<String, Object> parameters = URISupport.parseParameters(u);
-
- // all the known options
- Set<String> names = getNames(rows);
-
- Map<String, String> answer = new LinkedHashMap<>();
-
- // and covert the values to String so its JMX friendly
- parameters.forEach((k, v) -> {
- String key = k;
- String value = v != null ? v.toString() : "";
-
- // is the key a prefix property
- int dot = key.indexOf('.');
- if (dot != -1) {
- String prefix = key.substring(0, dot + 1); // include dot in prefix
- String option = getPropertyNameFromNameWithPrefix(rows, prefix);
- if (option == null || !isPropertyMultiValue(rows, option)) {
- answer.put(key, value);
- }
- } else if (!names.contains(key)) {
- answer.put(key, value);
- }
- });
-
- return answer;
- }
-
- public String endpointComponentName(String uri) {
- if (uri != null) {
- int idx = uri.indexOf(":");
- if (idx > 0) {
- return uri.substring(0, idx);
- }
- }
- return null;
- }
-
- public String asEndpointUri(String scheme, String json, boolean encode) throws URISyntaxException {
- return doAsEndpointUri(scheme, json, "&", encode);
- }
-
- public String asEndpointUriXml(String scheme, String json, boolean encode) throws URISyntaxException {
- return doAsEndpointUri(scheme, json, "&", encode);
- }
-
- private String doAsEndpointUri(String scheme, String json, String ampersand, boolean encode) throws URISyntaxException {
- List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("properties", json, true);
-
- Map<String, String> copy = new HashMap<>();
- for (Map<String, String> row : rows) {
- String name = row.get("name");
- String required = row.get("required");
- String value = row.get("value");
- String defaultValue = row.get("defaultValue");
-
- // only add if either required, or the value is != default value
- String valueToAdd = null;
- if ("true".equals(required)) {
- valueToAdd = value != null ? value : defaultValue;
- if (valueToAdd == null) {
- valueToAdd = "";
- }
- } else {
- // if we have a value and no default then add it
- if (value != null && defaultValue == null) {
- valueToAdd = value;
- }
- // otherwise only add if the value is != default value
- if (value != null && defaultValue != null && !value.equals(defaultValue)) {
- valueToAdd = value;
- }
- }
-
- if (valueToAdd != null) {
- copy.put(name, valueToAdd);
- }
- }
-
- return doAsEndpointUri(scheme, copy, ampersand, encode);
- }
-
- public String asEndpointUri(String scheme, Map<String, String> properties, boolean encode) throws URISyntaxException {
- return doAsEndpointUri(scheme, properties, "&", encode);
- }
-
- public String asEndpointUriXml(String scheme, Map<String, String> properties, boolean encode) throws URISyntaxException {
- return doAsEndpointUri(scheme, properties, "&", encode);
- }
-
- String doAsEndpointUri(String scheme, Map<String, String> properties, String ampersand, boolean encode) throws URISyntaxException {
- String json = jsonSchemaResolver.getComponentJSonSchema(scheme);
- if (json == null) {
- throw new IllegalArgumentException("Cannot find endpoint with scheme " + scheme);
- }
-
- // grab the syntax
- String originalSyntax = null;
- List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("component", json, false);
- for (Map<String, String> row : rows) {
- if (row.containsKey("syntax")) {
- originalSyntax = row.get("syntax");
- break;
- }
- }
- if (originalSyntax == null) {
- throw new IllegalArgumentException("Endpoint with scheme " + scheme + " has no syntax defined in the json schema");
- }
-
- // do any properties filtering which can be needed for some special components
- properties = filterProperties(scheme, properties);
-
- rows = JSonSchemaHelper.parseJsonSchema("properties", json, true);
-
- // clip the scheme from the syntax
- String syntax = "";
- if (originalSyntax.contains(":")) {
- originalSyntax = after(originalSyntax, ":");
- }
-
- // build at first according to syntax (use a tree map as we want the uri options sorted)
- Map<String, String> copy = new TreeMap<>(properties);
- Matcher syntaxMatcher = COMPONENT_SYNTAX_PARSER.matcher(originalSyntax);
- while (syntaxMatcher.find()) {
- syntax += syntaxMatcher.group(1);
- String propertyName = syntaxMatcher.group(2);
- String propertyValue = copy.remove(propertyName);
- syntax += propertyValue != null ? propertyValue : propertyName;
- }
-
- // do we have all the options the original syntax needs (easy way)
- String[] keys = syntaxKeys(originalSyntax);
- boolean hasAllKeys = properties.keySet().containsAll(Arrays.asList(keys));
-
- // build endpoint uri
- StringBuilder sb = new StringBuilder();
- // add scheme later as we need to take care if there is any context-path or query parameters which
- // affect how the URI should be constructed
-
- if (hasAllKeys) {
- // we have all the keys for the syntax so we can build the uri the easy way
- sb.append(syntax);
-
- if (!copy.isEmpty()) {
- boolean hasQuestionmark = sb.toString().contains("?");
- // the last option may already contain a ? char, if so we should use & instead of ?
- sb.append(hasQuestionmark ? ampersand : '?');
- String query = createQueryString(copy, ampersand, encode);
- sb.append(query);
- }
- } else {
- // TODO: revisit this and see if we can do this in another way
- // oh darn some options is missing, so we need a complex way of building the uri
-
- // the tokens between the options in the path
- String[] tokens = syntax.split("[\\w.]+");
-
- // parse the syntax into each options
- Matcher matcher = SYNTAX_PATTERN.matcher(originalSyntax);
- List<String> options = new ArrayList<>();
- while (matcher.find()) {
- String s = matcher.group(1);
- options.add(s);
- }
-
- // need to preserve {{ and }} from the syntax
- // (we need to use words only as its provisional placeholders)
- syntax = syntax.replaceAll("\\{\\{", "BEGINCAMELPLACEHOLDER");
- syntax = syntax.replaceAll("\\}\\}", "ENDCAMELPLACEHOLDER");
-
- // parse the syntax into each options
- Matcher matcher2 = SYNTAX_PATTERN.matcher(syntax);
- List<String> options2 = new ArrayList<>();
- while (matcher2.find()) {
- String s = matcher2.group(1);
- s = s.replaceAll("BEGINCAMELPLACEHOLDER", "\\{\\{");
- s = s.replaceAll("ENDCAMELPLACEHOLDER", "\\}\\}");
- options2.add(s);
- }
-
- // build the endpoint
- int range = 0;
- boolean first = true;
- boolean hasQuestionmark = false;
- for (int i = 0; i < options.size(); i++) {
- String key = options.get(i);
- String key2 = options2.get(i);
- String token = null;
- if (tokens.length > i) {
- token = tokens[i];
- }
-
- boolean contains = properties.containsKey(key);
- if (!contains) {
- // if the key are similar we have no explicit value and can try to find a default value if the option is required
- if (isPropertyRequired(rows, key)) {
- String value = getPropertyDefaultValue(rows, key);
- if (value != null) {
- properties.put(key, value);
- key2 = value;
- }
- }
- }
-
- // was the option provided?
- if (properties.containsKey(key)) {
- if (!first && token != null) {
- sb.append(token);
- }
- hasQuestionmark |= key.contains("?") || (token != null && token.contains("?"));
- sb.append(key2);
- first = false;
- }
- range++;
- }
- // append any extra options that was in surplus for the last
- while (range < options2.size()) {
- String token = null;
- if (tokens.length > range) {
- token = tokens[range];
- }
- String key2 = options2.get(range);
- sb.append(token);
- sb.append(key2);
- hasQuestionmark |= key2.contains("?") || (token != null && token.contains("?"));
- range++;
- }
-
-
- if (!copy.isEmpty()) {
- // the last option may already contain a ? char, if so we should use & instead of ?
- sb.append(hasQuestionmark ? ampersand : '?');
- String query = createQueryString(copy, ampersand, encode);
- sb.append(query);
- }
- }
-
- String remainder = sb.toString();
- boolean queryOnly = remainder.startsWith("?");
- if (queryOnly) {
- // it has only query parameters
- return scheme + remainder;
- } else if (!remainder.isEmpty()) {
- // it has context path and possible query parameters
- return scheme + ":" + remainder;
- } else {
- // its empty without anything
- return scheme;
- }
- }
-
- private static String[] syntaxKeys(String syntax) {
- // build tokens between the separators
- List<String> tokens = new ArrayList<>();
-
- if (syntax != null) {
- String current = "";
- for (int i = 0; i < syntax.length(); i++) {
- char ch = syntax.charAt(i);
- if (Character.isLetterOrDigit(ch)) {
- current += ch;
- } else {
- // reset for new current tokens
- if (current.length() > 0) {
- tokens.add(current);
- current = "";
- }
- }
- }
- // anything left over?
- if (current.length() > 0) {
- tokens.add(current);
- }
- }
-
- return tokens.toArray(new String[tokens.size()]);
- }
-
- private LanguageValidationResult doValidateSimple(ClassLoader classLoader, String simple, boolean predicate) {
- if (classLoader == null) {
- classLoader = getClass().getClassLoader();
- }
-
- // if there are {{ }}} property placeholders then we need to resolve them to something else
- // as the simple parse cannot resolve them before parsing as we dont run the actual Camel application
- // with property placeholders setup so we need to dummy this by replace the {{ }} to something else
- // therefore we use an more unlikely character: {{XXX}} to ~^XXX^~
- String resolved = simple.replaceAll("\\{\\{(.+)\\}\\}", "~^$1^~");
-
- LanguageValidationResult answer = new LanguageValidationResult(simple);
-
- Object instance = null;
- Class<?> clazz = null;
- try {
- clazz = classLoader.loadClass("org.apache.camel.language.simple.SimpleLanguage");
- instance = clazz.newInstance();
- } catch (Exception e) {
- // ignore
- }
-
- if (clazz != null && instance != null) {
- Throwable cause = null;
- try {
- if (predicate) {
- instance.getClass().getMethod("createPredicate", String.class).invoke(instance, resolved);
- } else {
- instance.getClass().getMethod("createExpression", String.class).invoke(instance, resolved);
- }
- } catch (InvocationTargetException e) {
- cause = e.getTargetException();
- } catch (Exception e) {
- cause = e;
- }
-
- if (cause != null) {
-
- // reverse ~^XXX^~ back to {{XXX}}
- String errMsg = cause.getMessage();
- errMsg = errMsg.replaceAll("\\~\\^(.+)\\^\\~", "{{$1}}");
-
- answer.setError(errMsg);
-
- // is it simple parser exception then we can grab the index where the problem is
- if (cause.getClass().getName().equals("org.apache.camel.language.simple.types.SimpleIllegalSyntaxException")
- || cause.getClass().getName().equals("org.apache.camel.language.simple.types.SimpleParserException")) {
- try {
- // we need to grab the index field from those simple parser exceptions
- Method method = cause.getClass().getMethod("getIndex");
- Object result = method.invoke(cause);
- if (result != null) {
- int index = (int) result;
- answer.setIndex(index);
- }
- } catch (Throwable i) {
- // ignore
- }
- }
-
- // we need to grab the short message field from this simple syntax exception
- if (cause.getClass().getName().equals("org.apache.camel.language.simple.types.SimpleIllegalSyntaxException")) {
- try {
- Method method = cause.getClass().getMethod("getShortMessage");
- Object result = method.invoke(cause);
- if (result != null) {
- String msg = (String) result;
- answer.setShortError(msg);
- }
- } catch (Throwable i) {
- // ignore
- }
-
- if (answer.getShortError() == null) {
- // fallback and try to make existing message short instead
- String msg = answer.getError();
- // grab everything before " at location " which would be regarded as the short message
- int idx = msg.indexOf(" at location ");
- if (idx > 0) {
- msg = msg.substring(0, idx);
- answer.setShortError(msg);
- }
- }
- }
- }
- }
-
- return answer;
- }
-
- public LanguageValidationResult validateLanguagePredicate(ClassLoader classLoader, String language, String text) {
- if ("simple".equals(language)) {
- return doValidateSimple(classLoader, text, true);
- } else {
- return doValidateLanguage(classLoader, language, text, true);
- }
- }
-
- public LanguageValidationResult validateLanguageExpression(ClassLoader classLoader, String language, String text) {
- if ("simple".equals(language)) {
- return doValidateSimple(classLoader, text, false);
- } else {
- return doValidateLanguage(classLoader, language, text, false);
- }
- }
-
- private LanguageValidationResult doValidateLanguage(ClassLoader classLoader, String language, String text, boolean predicate) {
- if (classLoader == null) {
- classLoader = getClass().getClassLoader();
- }
-
- LanguageValidationResult answer = new LanguageValidationResult(text);
-
- String json = jsonSchemaResolver.getLanguageJSonSchema(language);
- if (json == null) {
- answer.setError("Unknown language " + language);
- return answer;
- }
-
- List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("language", json, false);
- String className = null;
- for (Map<String, String> row : rows) {
- if (row.containsKey("javaType")) {
- className = row.get("javaType");
- }
- }
-
- if (className == null) {
- answer.setError("Cannot find javaType for language " + language);
- return answer;
- }
-
- Object instance = null;
- Class clazz = null;
- try {
- clazz = classLoader.loadClass(className);
- instance = clazz.newInstance();
- } catch (Exception e) {
- // ignore
- }
-
- if (clazz != null && instance != null) {
- Throwable cause = null;
- try {
- if (predicate) {
- instance.getClass().getMethod("createPredicate", String.class).invoke(instance, text);
- } else {
- instance.getClass().getMethod("createExpression", String.class).invoke(instance, text);
- }
- } catch (InvocationTargetException e) {
- cause = e.getTargetException();
- } catch (Exception e) {
- cause = e;
- }
-
- if (cause != null) {
- answer.setError(cause.getMessage());
- }
- }
-
- return answer;
- }
-
- /**
- * Special logic for log endpoints to deal when showAll=true
- */
- private Map<String, String> filterProperties(String scheme, Map<String, String> options) {
- if ("log".equals(scheme)) {
- String showAll = options.get("showAll");
- if ("true".equals(showAll)) {
- Map<String, String> filtered = new LinkedHashMap<>();
- // remove all the other showXXX options when showAll=true
- for (Map.Entry<String, String> entry : options.entrySet()) {
- String key = entry.getKey();
- boolean skip = key.startsWith("show") && !key.equals("showAll");
- if (!skip) {
- filtered.put(key, entry.getValue());
- }
- }
- return filtered;
- }
- }
- // use as-is
- return options;
- }
-
- private static boolean validateInteger(String value) {
- boolean valid = false;
- try {
- valid = Integer.valueOf(value) != null;
- } catch (Exception e) {
- // ignore
- }
- if (!valid) {
- // it may be a time pattern, such as 5s for 5 seconds = 5000
- try {
- TimePatternConverter.toMilliSeconds(value);
- valid = true;
- } catch (Exception e) {
- // ignore
- }
- }
- return valid;
- }
-
- // CHECKSTYLE:ON
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/runtimecatalog/CatalogHelper.java b/camel-core/src/main/java/org/apache/camel/runtimecatalog/CatalogHelper.java
deleted file mode 100644
index 1b224df..0000000
--- a/camel-core/src/main/java/org/apache/camel/runtimecatalog/CatalogHelper.java
+++ /dev/null
@@ -1,179 +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.runtimecatalog;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.LineNumberReader;
-import java.util.List;
-
-public final class CatalogHelper {
-
- private CatalogHelper() {
- }
-
- /**
- * Loads the entire stream into memory as a String and returns it.
- * <p/>
- * <b>Notice:</b> This implementation appends a <tt>\n</tt> as line
- * terminator at the of the text.
- * <p/>
- * Warning, don't use for crazy big streams :)
- */
- public static void loadLines(InputStream in, List<String> lines) throws IOException {
- try (final InputStreamReader isr = new InputStreamReader(in);
- final BufferedReader reader = new LineNumberReader(isr)) {
- String line;
- while ((line = reader.readLine()) != null) {
- lines.add(line);
- }
- }
- }
-
- /**
- * Loads the entire stream into memory as a String and returns it.
- * <p/>
- * <b>Notice:</b> This implementation appends a <tt>\n</tt> as line
- * terminator at the of the text.
- * <p/>
- * Warning, don't use for crazy big streams :)
- */
- public static String loadText(InputStream in) throws IOException {
- StringBuilder builder = new StringBuilder();
- try (final InputStreamReader isr = new InputStreamReader(in);
- final BufferedReader reader = new LineNumberReader(isr)) {
- String line;
- while ((line = reader.readLine()) != null) {
- builder.append(line);
- builder.append("\n");
- }
- return builder.toString();
- }
- }
-
- /**
- * Matches the name with the pattern.
- *
- * @param name the name
- * @param pattern the pattern
- * @return <tt>true</tt> if matched, or <tt>false</tt> if not
- */
- public static boolean matchWildcard(String name, String pattern) {
- // we have wildcard support in that hence you can match with: file* to match any file endpoints
- if (pattern.endsWith("*") && name.startsWith(pattern.substring(0, pattern.length() - 1))) {
- return true;
- }
- return false;
- }
-
- /**
- * Returns the string after the given token
- *
- * @param text the text
- * @param after the token
- * @return the text after the token, or <tt>null</tt> if text does not contain the token
- */
- public static String after(String text, String after) {
- if (!text.contains(after)) {
- return null;
- }
- return text.substring(text.indexOf(after) + after.length());
- }
-
- /**
- * Returns the string before the given token
- *
- * @param text the text
- * @param before the token
- * @return the text before the token, or <tt>null</tt> if text does not contain the token
- */
- public static String before(String text, String before) {
- if (!text.contains(before)) {
- return null;
- }
- return text.substring(0, text.indexOf(before));
- }
-
- /**
- * Returns the string between the given tokens
- *
- * @param text the text
- * @param after the before token
- * @param before the after token
- * @return the text between the tokens, or <tt>null</tt> if text does not contain the tokens
- */
- public static String between(String text, String after, String before) {
- text = after(text, after);
- if (text == null) {
- return null;
- }
- return before(text, before);
- }
-
- /**
- * Tests whether the value is <tt>null</tt> or an empty string.
- *
- * @param value the value, if its a String it will be tested for text length as well
- * @return true if empty
- */
- public static boolean isEmpty(Object value) {
- return !isNotEmpty(value);
- }
-
- /**
- * Tests whether the value is <b>not</b> <tt>null</tt> or an empty string.
- *
- * @param value the value, if its a String it will be tested for text length as well
- * @return true if <b>not</b> empty
- */
- public static boolean isNotEmpty(Object value) {
- if (value == null) {
- return false;
- } else if (value instanceof String) {
- String text = (String) value;
- return text.trim().length() > 0;
- } else {
- return true;
- }
- }
-
- /**
- * Removes all leading and ending quotes (single and double) from the string
- *
- * @param s the string
- * @return the string without leading and ending quotes (single and double)
- */
- public static String removeLeadingAndEndingQuotes(String s) {
- if (isEmpty(s)) {
- return s;
- }
-
- String copy = s.trim();
- if (copy.startsWith("'") && copy.endsWith("'")) {
- return copy.substring(1, copy.length() - 1);
- }
- if (copy.startsWith("\"") && copy.endsWith("\"")) {
- return copy.substring(1, copy.length() - 1);
- }
-
- // no quotes, so return as-is
- return s;
- }
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/runtimecatalog/CollectionStringBuffer.java b/camel-core/src/main/java/org/apache/camel/runtimecatalog/CollectionStringBuffer.java
deleted file mode 100644
index f6484b8..0000000
--- a/camel-core/src/main/java/org/apache/camel/runtimecatalog/CollectionStringBuffer.java
+++ /dev/null
@@ -1,57 +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.runtimecatalog;
-
-public class CollectionStringBuffer {
- private final StringBuilder buffer = new StringBuilder();
- private String separator;
- private boolean first = true;
-
- public CollectionStringBuffer() {
- this(", ");
- }
-
- public CollectionStringBuffer(String separator) {
- this.separator = separator;
- }
-
- @Override
- public String toString() {
- return buffer.toString();
- }
-
- public void append(Object value) {
- if (first) {
- first = false;
- } else {
- buffer.append(separator);
- }
- buffer.append(value);
- }
-
- public String getSeparator() {
- return separator;
- }
-
- public void setSeparator(String separator) {
- this.separator = separator;
- }
-
- public boolean isEmpty() {
- return first;
- }
-}
diff --git a/camel-core/src/main/java/org/apache/camel/runtimecatalog/JSonSchemaHelper.java b/camel-core/src/main/java/org/apache/camel/runtimecatalog/JSonSchemaHelper.java
deleted file mode 100644
index 1becdf9..0000000
--- a/camel-core/src/main/java/org/apache/camel/runtimecatalog/JSonSchemaHelper.java
+++ /dev/null
@@ -1,428 +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.runtimecatalog;
-
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.json.simple.JsonObject;
-import org.json.simple.Jsoner;
-
-public final class JSonSchemaHelper {
-
- private JSonSchemaHelper() {
- }
-
- /**
- * Parses the json schema to split it into a list or rows, where each row contains key value pairs with the metadata
- *
- * @param group the group to parse from such as <tt>component</tt>, <tt>componentProperties</tt>, or <tt>properties</tt>.
- * @param json the json
- * @return a list of all the rows, where each row is a set of key value pairs with metadata
- * @throws RuntimeException is thrown if error parsing the json data
- */
- @SuppressWarnings("unchecked")
- public static List<Map<String, String>> parseJsonSchema(String group, String json, boolean parseProperties) {
- List<Map<String, String>> answer = new ArrayList<>();
- if (json == null) {
- return answer;
- }
-
- // convert into a List<Map<String, String>> structure which is expected as output from this parser
- try {
- JsonObject output = (JsonObject) Jsoner.deserialize(json);
- for (String key : output.keySet()) {
- Map row = output.getMap(key);
- if (key.equals(group)) {
- if (parseProperties) {
- // flattern each entry in the row with name as they key, and its value as the content (its a map also)
- for (Object obj : row.entrySet()) {
- Map.Entry entry = (Map.Entry) obj;
- Map<String, String> newRow = new LinkedHashMap();
- newRow.put("name", entry.getKey().toString());
-
- Map newData = transformMap((Map) entry.getValue());
- newRow.putAll(newData);
- answer.add(newRow);
- }
- } else {
- // flattern each entry in the row as a list of single Map<key, value> elements
- Map newData = transformMap(row);
- for (Object obj : newData.entrySet()) {
- Map.Entry entry = (Map.Entry) obj;
- Map<String, String> newRow = new LinkedHashMap<>();
- newRow.put(entry.getKey().toString(), entry.getValue().toString());
- answer.add(newRow);
- }
- }
- }
- }
- } catch (Exception e) {
- // wrap parsing exceptions as runtime
- throw new RuntimeException("Cannot parse json", e);
- }
-
- return answer;
- }
-
- private static Map<String, String> transformMap(Map jsonMap) {
- Map<String, String> answer = new LinkedHashMap<>();
-
- for (Object rowObj : jsonMap.entrySet()) {
- Map.Entry rowEntry = (Map.Entry) rowObj;
- // if its a list type then its an enum, and we need to parse it as a single line separated with comma
- // to be backwards compatible
- Object newValue = rowEntry.getValue();
- if (newValue instanceof List) {
- List list = (List) newValue;
- CollectionStringBuffer csb = new CollectionStringBuffer(",");
- for (Object line : list) {
- csb.append(line);
- }
- newValue = csb.toString();
- }
- // ensure value is escaped
- String value = escapeJson(newValue.toString());
- answer.put(rowEntry.getKey().toString(), value);
- }
-
- return answer;
- }
-
- private static String escapeJson(String value) {
- // need to safe encode \r as \\r so its escaped
- // need to safe encode \n as \\n so its escaped
- // need to safe encode \t as \\t so its escaped
- return value
- .replaceAll("\\\\r", "\\\\\\r")
- .replaceAll("\\\\n", "\\\\\\n")
- .replaceAll("\\\\t", "\\\\\\t");
- }
-
- public static boolean isComponentLenientProperties(List<Map<String, String>> rows) {
- for (Map<String, String> row : rows) {
- if (row.containsKey("lenientProperties")) {
- return "true".equals(row.get("lenientProperties"));
- }
- }
- return false;
- }
-
- public static boolean isComponentConsumerOnly(List<Map<String, String>> rows) {
- for (Map<String, String> row : rows) {
- if (row.containsKey("consumerOnly")) {
- return "true".equals(row.get("consumerOnly"));
- }
- }
- return false;
- }
-
- public static boolean isComponentProducerOnly(List<Map<String, String>> rows) {
- for (Map<String, String> row : rows) {
- if (row.containsKey("producerOnly")) {
- return "true".equals(row.get("producerOnly"));
- }
- }
- return false;
- }
-
- public static boolean isPropertyConsumerOnly(List<Map<String, String>> rows, String name) {
- for (Map<String, String> row : rows) {
- String labels = null;
- boolean found = false;
- if (row.containsKey("name")) {
- found = name.equals(row.get("name"));
- }
- if (row.containsKey("label")) {
- labels = row.get("label");
- }
- if (found) {
- return labels != null && labels.contains("consumer");
- }
- }
- return false;
- }
-
- public static boolean isPropertyProducerOnly(List<Map<String, String>> rows, String name) {
- for (Map<String, String> row : rows) {
- String labels = null;
- boolean found = false;
- if (row.containsKey("name")) {
- found = name.equals(row.get("name"));
- }
- if (row.containsKey("label")) {
- labels = row.get("label");
- }
- if (found) {
- return labels != null && labels.contains("producer");
- }
- }
- return false;
- }
-
- public static boolean isPropertyRequired(List<Map<String, String>> rows, String name) {
- for (Map<String, String> row : rows) {
- boolean required = false;
- boolean found = false;
- if (row.containsKey("name")) {
- found = name.equals(row.get("name"));
- }
- if (row.containsKey("required")) {
- required = "true".equals(row.get("required"));
- }
- if (found) {
- return required;
- }
- }
- return false;
- }
-
- public static boolean isPropertyDeprecated(List<Map<String, String>> rows, String name) {
- for (Map<String, String> row : rows) {
- boolean deprecated = false;
- boolean found = false;
- if (row.containsKey("name")) {
- found = name.equals(row.get("name"));
- }
- if (row.containsKey("deprecated")) {
- deprecated = "true".equals(row.get("deprecated"));
- }
- if (found) {
- return deprecated;
- }
- }
- return false;
- }
-
- public static String getPropertyKind(List<Map<String, String>> rows, String name) {
- for (Map<String, String> row : rows) {
- String kind = null;
- boolean found = false;
- if (row.containsKey("name")) {
- found = name.equals(row.get("name"));
- }
- if (row.containsKey("kind")) {
- kind = row.get("kind");
- }
- if (found) {
- return kind;
- }
- }
- return null;
- }
-
- public static boolean isPropertyBoolean(List<Map<String, String>> rows, String name) {
- for (Map<String, String> row : rows) {
- String type = null;
- boolean found = false;
- if (row.containsKey("name")) {
- found = name.equals(row.get("name"));
- }
- if (row.containsKey("type")) {
- type = row.get("type");
- }
- if (found) {
- return "boolean".equals(type);
- }
- }
- return false;
- }
-
- public static boolean isPropertyInteger(List<Map<String, String>> rows, String name) {
- for (Map<String, String> row : rows) {
- String type = null;
- boolean found = false;
- if (row.containsKey("name")) {
- found = name.equals(row.get("name"));
- }
- if (row.containsKey("type")) {
- type = row.get("type");
- }
- if (found) {
- return "integer".equals(type);
- }
- }
- return false;
- }
-
- public static boolean isPropertyNumber(List<Map<String, String>> rows, String name) {
- for (Map<String, String> row : rows) {
- String type = null;
- boolean found = false;
- if (row.containsKey("name")) {
- found = name.equals(row.get("name"));
- }
- if (row.containsKey("type")) {
- type = row.get("type");
- }
- if (found) {
- return "number".equals(type);
- }
- }
- return false;
- }
-
- public static boolean isPropertyObject(List<Map<String, String>> rows, String name) {
- for (Map<String, String> row : rows) {
- String type = null;
- boolean found = false;
- if (row.containsKey("name")) {
- found = name.equals(row.get("name"));
- }
- if (row.containsKey("type")) {
- type = row.get("type");
- }
- if (found) {
- return "object".equals(type);
- }
- }
- return false;
- }
-
- public static String getPropertyDefaultValue(List<Map<String, String>> rows, String name) {
- for (Map<String, String> row : rows) {
- String defaultValue = null;
- boolean found = false;
- if (row.containsKey("name")) {
- found = name.equals(row.get("name"));
- }
- if (row.containsKey("defaultValue")) {
- defaultValue = row.get("defaultValue");
- }
- if (found) {
- return defaultValue;
- }
- }
- return null;
- }
-
- public static String stripOptionalPrefixFromName(List<Map<String, String>> rows, String name) {
- for (Map<String, String> row : rows) {
- String optionalPrefix = null;
- boolean found = false;
- if (row.containsKey("optionalPrefix")) {
- optionalPrefix = row.get("optionalPrefix");
- }
- if (row.containsKey("name")) {
- if (optionalPrefix != null && name.startsWith(optionalPrefix)) {
- name = name.substring(optionalPrefix.length());
- // try again
- return stripOptionalPrefixFromName(rows, name);
- } else {
- found = name.equals(row.get("name"));
- }
- }
- if (found) {
- return name;
- }
- }
- return name;
- }
-
- public static String getPropertyEnum(List<Map<String, String>> rows, String name) {
- for (Map<String, String> row : rows) {
- String enums = null;
- boolean found = false;
- if (row.containsKey("name")) {
- found = name.equals(row.get("name"));
- }
- if (row.containsKey("enum")) {
- enums = row.get("enum");
- }
- if (found) {
- return enums;
- }
- }
- return null;
- }
-
- public static String getPropertyPrefix(List<Map<String, String>> rows, String name) {
- for (Map<String, String> row : rows) {
- String prefix = null;
- boolean found = false;
- if (row.containsKey("name")) {
- found = name.equals(row.get("name"));
- }
- if (row.containsKey("prefix")) {
- prefix = row.get("prefix");
- }
- if (found) {
- return prefix;
- }
- }
- return null;
- }
-
- public static boolean isPropertyMultiValue(List<Map<String, String>> rows, String name) {
- for (Map<String, String> row : rows) {
- boolean multiValue = false;
- boolean found = false;
- if (row.containsKey("name")) {
- found = name.equals(row.get("name"));
- }
- if (row.containsKey("multiValue")) {
- multiValue = "true".equals(row.get("multiValue"));
- }
- if (found) {
- return multiValue;
- }
- }
- return false;
- }
-
- public static String getPropertyNameFromNameWithPrefix(List<Map<String, String>> rows, String name) {
- for (Map<String, String> row : rows) {
- String propertyName = null;
- boolean found = false;
- if (row.containsKey("name")) {
- propertyName = row.get("name");
- }
- if (row.containsKey("prefix")) {
- String preifx = row.get("prefix");
- found = name.startsWith(preifx);
- }
- if (found) {
- return propertyName;
- }
- }
- return null;
- }
-
- public static Map<String, String> getRow(List<Map<String, String>> rows, String key) {
- for (Map<String, String> row : rows) {
- if (key.equals(row.get("name"))) {
- return row;
- }
- }
- return null;
- }
-
- public static Set<String> getNames(List<Map<String, String>> rows) {
- Set<String> answer = new LinkedHashSet<>();
- for (Map<String, String> row : rows) {
- if (row.containsKey("name")) {
- answer.add(row.get("name"));
- }
- }
- return answer;
- }
-
-}
diff --git a/camel-core/src/main/java/org/apache/camel/runtimecatalog/TimePatternConverter.java b/camel-core/src/main/java/org/apache/camel/runtimecatalog/TimePatternConverter.java
deleted file mode 100644
index ed5585c..0000000
--- a/camel-core/src/main/java/org/apache/camel/runtimecatalog/TimePatternConverter.java
+++ /dev/null
@@ -1,120 +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.runtimecatalog;
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * This class is a copy from camel-core so we can use it independent to validate uris with time patterns
- */
-public final class TimePatternConverter {
- private static final Pattern NUMBERS_ONLY_STRING_PATTERN = Pattern.compile("^[-]?(\\d)+$", Pattern.CASE_INSENSITIVE);
- private static final Pattern HOUR_REGEX_PATTERN = Pattern.compile("((\\d)*(\\d))h(our(s)?)?", Pattern.CASE_INSENSITIVE);
- private static final Pattern MINUTES_REGEX_PATTERN = Pattern.compile("((\\d)*(\\d))m(in(ute(s)?)?)?", Pattern.CASE_INSENSITIVE);
- private static final Pattern SECONDS_REGEX_PATTERN = Pattern.compile("((\\d)*(\\d))s(ec(ond)?(s)?)?", Pattern.CASE_INSENSITIVE);
-
- /**
- * Utility classes should not have a public constructor.
- */
- private TimePatternConverter() {
- }
-
- public static long toMilliSeconds(String source) throws IllegalArgumentException {
- long milliseconds = 0;
- boolean foundFlag = false;
-
- checkCorrectnessOfPattern(source);
- Matcher matcher;
-
- matcher = createMatcher(NUMBERS_ONLY_STRING_PATTERN, source);
- if (matcher.find()) {
- // Note: This will also be used for regular numeric strings.
- // This String -> long converter will be used for all strings.
- milliseconds = Long.valueOf(source);
- } else {
- matcher = createMatcher(HOUR_REGEX_PATTERN, source);
- if (matcher.find()) {
- milliseconds = milliseconds + (3600000 * Long.valueOf(matcher.group(1)));
- foundFlag = true;
- }
-
- matcher = createMatcher(MINUTES_REGEX_PATTERN, source);
- if (matcher.find()) {
- long minutes = Long.valueOf(matcher.group(1));
- if ((minutes > 59) && foundFlag) {
- throw new IllegalArgumentException("Minutes should contain a valid value between 0 and 59: " + source);
- }
- foundFlag = true;
- milliseconds = milliseconds + (60000 * minutes);
- }
-
- matcher = createMatcher(SECONDS_REGEX_PATTERN, source);
- if (matcher.find()) {
- long seconds = Long.valueOf(matcher.group(1));
- if ((seconds > 59) && foundFlag) {
- throw new IllegalArgumentException("Seconds should contain a valid value between 0 and 59: " + source);
- }
- foundFlag = true;
- milliseconds = milliseconds + (1000 * seconds);
- }
-
- // No pattern matched... initiating fallback check and conversion (if required).
- // The source at this point may contain illegal values or special characters
- if (!foundFlag) {
- milliseconds = Long.valueOf(source);
- }
- }
-
- return milliseconds;
- }
-
- private static void checkCorrectnessOfPattern(String source) {
- //replace only numbers once
- Matcher matcher = createMatcher(NUMBERS_ONLY_STRING_PATTERN, source);
- String replaceSource = matcher.replaceFirst("");
-
- //replace hour string once
- matcher = createMatcher(HOUR_REGEX_PATTERN, replaceSource);
- if (matcher.find() && matcher.find()) {
- throw new IllegalArgumentException("Hours should not be specified more then once: " + source);
- }
- replaceSource = matcher.replaceFirst("");
-
- //replace minutes once
- matcher = createMatcher(MINUTES_REGEX_PATTERN, replaceSource);
- if (matcher.find() && matcher.find()) {
- throw new IllegalArgumentException("Minutes should not be specified more then once: " + source);
- }
- replaceSource = matcher.replaceFirst("");
-
- //replace seconds once
- matcher = createMatcher(SECONDS_REGEX_PATTERN, replaceSource);
- if (matcher.find() && matcher.find()) {
- throw new IllegalArgumentException("Seconds should not be specified more then once: " + source);
- }
- replaceSource = matcher.replaceFirst("");
-
- if (replaceSource.length() > 0) {
- throw new IllegalArgumentException("Illegal characters: " + source);
- }
- }
-
- private static Matcher createMatcher(Pattern pattern, String source) {
- return pattern.matcher(source);
- }
-}
diff --git a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/AbstractCamelCatalog.java b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/AbstractCamelCatalog.java
similarity index 95%
rename from platforms/camel-catalog/src/main/java/org/apache/camel/catalog/AbstractCamelCatalog.java
rename to camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/AbstractCamelCatalog.java
index 8426ac6..db829ca 100644
--- a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/AbstractCamelCatalog.java
+++ b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/AbstractCamelCatalog.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.catalog;
+package org.apache.camel.runtimecatalog.impl;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@@ -33,32 +33,37 @@ import java.util.Set;
import java.util.TreeMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-
-import static org.apache.camel.catalog.CatalogHelper.after;
-import static org.apache.camel.catalog.JSonSchemaHelper.getNames;
-import static org.apache.camel.catalog.JSonSchemaHelper.getPropertyDefaultValue;
-import static org.apache.camel.catalog.JSonSchemaHelper.getPropertyEnum;
-import static org.apache.camel.catalog.JSonSchemaHelper.getPropertyKind;
-import static org.apache.camel.catalog.JSonSchemaHelper.getPropertyNameFromNameWithPrefix;
-import static org.apache.camel.catalog.JSonSchemaHelper.getPropertyPrefix;
-import static org.apache.camel.catalog.JSonSchemaHelper.getRow;
-import static org.apache.camel.catalog.JSonSchemaHelper.isComponentConsumerOnly;
-import static org.apache.camel.catalog.JSonSchemaHelper.isComponentLenientProperties;
-import static org.apache.camel.catalog.JSonSchemaHelper.isComponentProducerOnly;
-import static org.apache.camel.catalog.JSonSchemaHelper.isPropertyBoolean;
-import static org.apache.camel.catalog.JSonSchemaHelper.isPropertyConsumerOnly;
-import static org.apache.camel.catalog.JSonSchemaHelper.isPropertyDeprecated;
-import static org.apache.camel.catalog.JSonSchemaHelper.isPropertyInteger;
-import static org.apache.camel.catalog.JSonSchemaHelper.isPropertyMultiValue;
-import static org.apache.camel.catalog.JSonSchemaHelper.isPropertyNumber;
-import static org.apache.camel.catalog.JSonSchemaHelper.isPropertyObject;
-import static org.apache.camel.catalog.JSonSchemaHelper.isPropertyProducerOnly;
-import static org.apache.camel.catalog.JSonSchemaHelper.isPropertyRequired;
-import static org.apache.camel.catalog.JSonSchemaHelper.stripOptionalPrefixFromName;
-import static org.apache.camel.catalog.URISupport.createQueryString;
-import static org.apache.camel.catalog.URISupport.isEmpty;
-import static org.apache.camel.catalog.URISupport.normalizeUri;
-import static org.apache.camel.catalog.URISupport.stripQuery;
+import java.util.stream.Collectors;
+
+import org.apache.camel.runtimecatalog.EndpointValidationResult;
+import org.apache.camel.runtimecatalog.JSonSchemaResolver;
+import org.apache.camel.runtimecatalog.LanguageValidationResult;
+
+import static org.apache.camel.runtimecatalog.impl.CatalogHelper.after;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.getNames;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.getPropertyDefaultValue;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.getPropertyEnum;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.getPropertyKind;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.getPropertyNameFromNameWithPrefix;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.getPropertyPrefix;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.getRow;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.isComponentConsumerOnly;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.isComponentLenientProperties;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.isComponentProducerOnly;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.isPropertyBoolean;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.isPropertyConsumerOnly;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.isPropertyDeprecated;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.isPropertyInteger;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.isPropertyMultiValue;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.isPropertyNumber;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.isPropertyObject;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.isPropertyProducerOnly;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.isPropertyRequired;
+import static org.apache.camel.runtimecatalog.impl.JSonSchemaHelper.stripOptionalPrefixFromName;
+import static org.apache.camel.runtimecatalog.impl.URISupport.createQueryString;
+import static org.apache.camel.runtimecatalog.impl.URISupport.isEmpty;
+import static org.apache.camel.runtimecatalog.impl.URISupport.normalizeUri;
+import static org.apache.camel.runtimecatalog.impl.URISupport.stripQuery;
/**
* Base class for both the runtime RuntimeCamelCatalog from camel-core and the complete CamelCatalog from camel-catalog.
@@ -762,14 +767,12 @@ public abstract class AbstractCamelCatalog {
// extra all the multi valued options
Map<String, Object> values = URISupport.extractProperties(parameters, prefix);
// build a string with the extra multi valued options with the prefix and & as separator
- CollectionStringBuffer csb = new CollectionStringBuffer("&");
- for (Map.Entry<String, Object> multi : values.entrySet()) {
- String line = prefix + multi.getKey() + "=" + (multi.getValue() != null ? multi.getValue().toString() : "");
- csb.append(line);
- }
+ String csb = values.entrySet().stream()
+ .map(multi -> prefix + multi.getKey() + "=" + (multi.getValue() != null ? multi.getValue().toString() : ""))
+ .collect(Collectors.joining("&"));
// append the extra multi-values to the existing (which contains the first multi value)
if (!csb.isEmpty()) {
- value = value + "&" + csb.toString();
+ value = value + "&" + csb;
}
}
@@ -1074,7 +1077,6 @@ public abstract class AbstractCamelCatalog {
return tokens.toArray(new String[tokens.size()]);
}
-<<<<<<< HEAD
private LanguageValidationResult doValidateSimple(ClassLoader classLoader, String simple, boolean predicate) {
if (classLoader == null) {
classLoader = getClass().getClassLoader();
@@ -1165,8 +1167,6 @@ public abstract class AbstractCamelCatalog {
return answer;
}
-=======
->>>>>>> 79866dfb308... [CAMEL-12818] Remove deprecated stuff
public LanguageValidationResult validateLanguagePredicate(ClassLoader classLoader, String language, String text) {
if ("simple".equals(language)) {
return doValidateSimple(classLoader, text, true);
diff --git a/camel-core/src/main/java/org/apache/camel/runtimecatalog/CamelContextJSonSchemaResolver.java b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/CamelContextJSonSchemaResolver.java
similarity index 95%
rename from camel-core/src/main/java/org/apache/camel/runtimecatalog/CamelContextJSonSchemaResolver.java
rename to camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/CamelContextJSonSchemaResolver.java
index d3a448c..65aa34d 100644
--- a/camel-core/src/main/java/org/apache/camel/runtimecatalog/CamelContextJSonSchemaResolver.java
+++ b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/CamelContextJSonSchemaResolver.java
@@ -14,11 +14,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.runtimecatalog;
+package org.apache.camel.runtimecatalog.impl;
import java.io.IOException;
import org.apache.camel.CamelContext;
+import org.apache.camel.runtimecatalog.JSonSchemaResolver;
/**
* Uses runtime {@link CamelContext} to resolve the JSon schema files.
diff --git a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/CatalogHelper.java b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/CatalogHelper.java
similarity index 99%
rename from platforms/camel-catalog/src/main/java/org/apache/camel/catalog/CatalogHelper.java
rename to camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/CatalogHelper.java
index caba4a3..eaf70d9 100644
--- a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/CatalogHelper.java
+++ b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/CatalogHelper.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.catalog;
+package org.apache.camel.runtimecatalog.impl;
import java.io.BufferedReader;
import java.io.IOException;
diff --git a/camel-core/src/main/java/org/apache/camel/runtimecatalog/DefaultRuntimeCamelCatalog.java b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/DefaultRuntimeCamelCatalog.java
similarity index 97%
rename from camel-core/src/main/java/org/apache/camel/runtimecatalog/DefaultRuntimeCamelCatalog.java
rename to camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/DefaultRuntimeCamelCatalog.java
index 041eeb0..439b00c 100644
--- a/camel-core/src/main/java/org/apache/camel/runtimecatalog/DefaultRuntimeCamelCatalog.java
+++ b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/DefaultRuntimeCamelCatalog.java
@@ -14,12 +14,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.runtimecatalog;
+package org.apache.camel.runtimecatalog.impl;
import java.util.HashMap;
import java.util.Map;
import org.apache.camel.CamelContext;
+import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
/**
* Default {@link RuntimeCamelCatalog}.
diff --git a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/JSonSchemaHelper.java b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/JSonSchemaHelper.java
similarity index 98%
rename from platforms/camel-catalog/src/main/java/org/apache/camel/catalog/JSonSchemaHelper.java
rename to camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/JSonSchemaHelper.java
index f8ce950..d923579 100644
--- a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/JSonSchemaHelper.java
+++ b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/JSonSchemaHelper.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.catalog;
+package org.apache.camel.runtimecatalog.impl;
import java.util.ArrayList;
import java.util.LinkedHashMap;
@@ -22,6 +22,7 @@ import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.stream.Collectors;
import org.json.simple.JsonObject;
import org.json.simple.Jsoner;
@@ -92,12 +93,9 @@ public final class JSonSchemaHelper {
// to be backwards compatible
Object newValue = rowEntry.getValue();
if (newValue instanceof List) {
- List list = (List) newValue;
- CollectionStringBuffer csb = new CollectionStringBuffer(",");
- for (Object line : list) {
- csb.append(line);
- }
- newValue = csb.toString();
+ List<?> list = (List) newValue;
+ newValue = list.stream().map(Object::toString)
+ .collect(Collectors.joining(","));
}
// ensure value is escaped
String value = escapeJson(newValue.toString());
diff --git a/camel-core/src/main/java/org/apache/camel/runtimecatalog/SuggestionStrategy.java b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/SuggestionStrategy.java
similarity index 96%
rename from camel-core/src/main/java/org/apache/camel/runtimecatalog/SuggestionStrategy.java
rename to camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/SuggestionStrategy.java
index e29afc6..95875dd 100644
--- a/camel-core/src/main/java/org/apache/camel/runtimecatalog/SuggestionStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/SuggestionStrategy.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.runtimecatalog;
+package org.apache.camel.runtimecatalog.impl;
import java.util.Set;
diff --git a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/TimePatternConverter.java b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/TimePatternConverter.java
similarity index 99%
rename from platforms/camel-catalog/src/main/java/org/apache/camel/catalog/TimePatternConverter.java
rename to camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/TimePatternConverter.java
index 4ed843a..bb269ee 100644
--- a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/TimePatternConverter.java
+++ b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/TimePatternConverter.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.catalog;
+package org.apache.camel.runtimecatalog.impl;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
diff --git a/camel-core/src/main/java/org/apache/camel/runtimecatalog/URISupport.java b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/URISupport.java
similarity index 99%
rename from camel-core/src/main/java/org/apache/camel/runtimecatalog/URISupport.java
rename to camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/URISupport.java
index 8bd0814..73f05a2 100644
--- a/camel-core/src/main/java/org/apache/camel/runtimecatalog/URISupport.java
+++ b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/URISupport.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.runtimecatalog;
+package org.apache.camel.runtimecatalog.impl;
import java.io.UnsupportedEncodingException;
import java.net.URI;
diff --git a/camel-core/src/main/java/org/apache/camel/runtimecatalog/UnsafeUriCharactersEncoder.java b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/UnsafeUriCharactersEncoder.java
similarity index 99%
rename from camel-core/src/main/java/org/apache/camel/runtimecatalog/UnsafeUriCharactersEncoder.java
rename to camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/UnsafeUriCharactersEncoder.java
index 2aee59f..9dbe30c 100644
--- a/camel-core/src/main/java/org/apache/camel/runtimecatalog/UnsafeUriCharactersEncoder.java
+++ b/camel-core/src/main/java/org/apache/camel/runtimecatalog/impl/UnsafeUriCharactersEncoder.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.runtimecatalog;
+package org.apache.camel.runtimecatalog.impl;
import java.util.ArrayList;
import java.util.BitSet;
diff --git a/camel-core/src/main/java/org/apache/camel/support/LoggingExceptionHandler.java b/camel-core/src/main/java/org/apache/camel/support/LoggingExceptionHandler.java
index 53bb87b..474c2f7 100644
--- a/camel-core/src/main/java/org/apache/camel/support/LoggingExceptionHandler.java
+++ b/camel-core/src/main/java/org/apache/camel/support/LoggingExceptionHandler.java
@@ -21,6 +21,7 @@ import org.apache.camel.CamelExchangeException;
import org.apache.camel.Exchange;
import org.apache.camel.LoggingLevel;
import org.apache.camel.RollbackExchangeException;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.spi.ExceptionHandler;
import org.slf4j.LoggerFactory;
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RestProducerFactoryHelper.java b/camel-core/src/main/java/org/apache/camel/support/RestProducerFactoryHelper.java
similarity index 96%
rename from camel-core/src/main/java/org/apache/camel/spi/RestProducerFactoryHelper.java
rename to camel-core/src/main/java/org/apache/camel/support/RestProducerFactoryHelper.java
index 743d7f4..bac6032 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/RestProducerFactoryHelper.java
+++ b/camel-core/src/main/java/org/apache/camel/support/RestProducerFactoryHelper.java
@@ -14,15 +14,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.spi;
+package org.apache.camel.support;
import java.util.HashMap;
import java.util.Map;
import org.apache.camel.CamelContext;
import org.apache.camel.Component;
-import org.apache.camel.support.IntrospectionSupport;
-import org.apache.camel.support.ServiceHelper;
+import org.apache.camel.spi.RestProducerFactory;
import org.apache.camel.util.StringHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/camel-core/src/main/java/org/apache/camel/util/CamelContextStatDump.java b/camel-core/src/main/java/org/apache/camel/support/dump/CamelContextStatDump.java
similarity index 99%
rename from camel-core/src/main/java/org/apache/camel/util/CamelContextStatDump.java
rename to camel-core/src/main/java/org/apache/camel/support/dump/CamelContextStatDump.java
index c054835..59ba6aa 100644
--- a/camel-core/src/main/java/org/apache/camel/util/CamelContextStatDump.java
+++ b/camel-core/src/main/java/org/apache/camel/support/dump/CamelContextStatDump.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.util;
+package org.apache.camel.support.dump;
import java.util.List;
diff --git a/camel-core/src/main/java/org/apache/camel/util/ProcessorStatDump.java b/camel-core/src/main/java/org/apache/camel/support/dump/ProcessorStatDump.java
similarity index 99%
rename from camel-core/src/main/java/org/apache/camel/util/ProcessorStatDump.java
rename to camel-core/src/main/java/org/apache/camel/support/dump/ProcessorStatDump.java
index 396f4f0..56ab22e 100644
--- a/camel-core/src/main/java/org/apache/camel/util/ProcessorStatDump.java
+++ b/camel-core/src/main/java/org/apache/camel/support/dump/ProcessorStatDump.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.util;
+package org.apache.camel.support.dump;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
diff --git a/camel-core/src/main/java/org/apache/camel/util/RouteStatDump.java b/camel-core/src/main/java/org/apache/camel/support/dump/RouteStatDump.java
similarity index 99%
rename from camel-core/src/main/java/org/apache/camel/util/RouteStatDump.java
rename to camel-core/src/main/java/org/apache/camel/support/dump/RouteStatDump.java
index 63afc60..9b385e6 100644
--- a/camel-core/src/main/java/org/apache/camel/util/RouteStatDump.java
+++ b/camel-core/src/main/java/org/apache/camel/support/dump/RouteStatDump.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.util;
+package org.apache.camel.support.dump;
import java.util.List;
diff --git a/camel-core/src/main/resources/org/apache/camel/jaxb.index b/camel-core/src/main/resources/org/apache/camel/jaxb.index
index c4c326b..a589449 100644
--- a/camel-core/src/main/resources/org/apache/camel/jaxb.index
+++ b/camel-core/src/main/resources/org/apache/camel/jaxb.index
@@ -17,7 +17,6 @@
ExchangePattern
LoggingLevel
ManagementStatisticsLevel
-ThreadPoolRejectedPolicy
TypeConverterExists
ShutdownRoute
ShutdownRunningTask
\ No newline at end of file
diff --git a/camel-core/src/main/resources/org/apache/camel/util/jaxb.index b/camel-core/src/main/resources/org/apache/camel/support/dump/jaxb.index
similarity index 100%
copy from camel-core/src/main/resources/org/apache/camel/util/jaxb.index
copy to camel-core/src/main/resources/org/apache/camel/support/dump/jaxb.index
diff --git a/camel-core/src/main/resources/org/apache/camel/util/jaxb.index b/camel-core/src/main/resources/org/apache/camel/util/concurrent/jaxb.index
similarity index 95%
rename from camel-core/src/main/resources/org/apache/camel/util/jaxb.index
rename to camel-core/src/main/resources/org/apache/camel/util/concurrent/jaxb.index
index 5738681..341b476 100644
--- a/camel-core/src/main/resources/org/apache/camel/util/jaxb.index
+++ b/camel-core/src/main/resources/org/apache/camel/util/concurrent/jaxb.index
@@ -14,6 +14,4 @@
## See the License for the specific language governing permissions and
## limitations under the License.
## ------------------------------------------------------------------------
-MessageDump
-ProcessorStatDump
-RouteStatDump
+ThreadPoolRejectedPolicy
diff --git a/camel-core/src/test/java/org/apache/camel/util/TimeTest.java b/camel-core/src/test/java/org/apache/camel/component/mock/TimeTest.java
similarity index 96%
rename from camel-core/src/test/java/org/apache/camel/util/TimeTest.java
rename to camel-core/src/test/java/org/apache/camel/component/mock/TimeTest.java
index 891254e..2bae95b 100644
--- a/camel-core/src/test/java/org/apache/camel/util/TimeTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/mock/TimeTest.java
@@ -14,11 +14,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.util;
+package org.apache.camel.component.mock;
import java.util.concurrent.TimeUnit;
-import org.apache.camel.component.mock.Time;
import org.junit.Assert;
import org.junit.Test;
diff --git a/camel-core/src/test/java/org/apache/camel/processor/ThroughPutLoggerTest.java b/camel-core/src/test/java/org/apache/camel/processor/ThroughPutLoggerTest.java
index b5de97f..37f796f 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/ThroughPutLoggerTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/ThroughPutLoggerTest.java
@@ -18,7 +18,7 @@ package org.apache.camel.processor;
import org.apache.camel.CamelContext;
import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.support.DefaultExchange;
import org.junit.Assert;
import org.junit.Test;
diff --git a/camel-core/src/test/java/org/apache/camel/runtimecatalog/AbstractCamelCatalogTest.java b/camel-core/src/test/java/org/apache/camel/runtimecatalog/impl/AbstractCamelCatalogTest.java
similarity index 96%
rename from camel-core/src/test/java/org/apache/camel/runtimecatalog/AbstractCamelCatalogTest.java
rename to camel-core/src/test/java/org/apache/camel/runtimecatalog/impl/AbstractCamelCatalogTest.java
index cdd9cf7..5fc47c5 100644
--- a/camel-core/src/test/java/org/apache/camel/runtimecatalog/AbstractCamelCatalogTest.java
+++ b/camel-core/src/test/java/org/apache/camel/runtimecatalog/impl/AbstractCamelCatalogTest.java
@@ -14,12 +14,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.runtimecatalog;
+package org.apache.camel.runtimecatalog.impl;
import java.net.URISyntaxException;
import java.util.HashMap;
import java.util.Map;
+import org.apache.camel.runtimecatalog.JSonSchemaResolver;
+import org.apache.camel.runtimecatalog.impl.AbstractCamelCatalog;
import org.junit.Before;
import org.junit.Test;
diff --git a/camel-core/src/test/java/org/apache/camel/runtimecatalog/JSonSchemaHelperTest.java b/camel-core/src/test/java/org/apache/camel/runtimecatalog/impl/JSonSchemaHelperTest.java
similarity index 96%
rename from camel-core/src/test/java/org/apache/camel/runtimecatalog/JSonSchemaHelperTest.java
rename to camel-core/src/test/java/org/apache/camel/runtimecatalog/impl/JSonSchemaHelperTest.java
index 7be832c..4e42f02 100644
--- a/camel-core/src/test/java/org/apache/camel/runtimecatalog/JSonSchemaHelperTest.java
+++ b/camel-core/src/test/java/org/apache/camel/runtimecatalog/impl/JSonSchemaHelperTest.java
@@ -14,12 +14,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.runtimecatalog;
+package org.apache.camel.runtimecatalog.impl;
import java.util.List;
import java.util.Map;
import org.apache.camel.ContextTestSupport;
+import org.apache.camel.runtimecatalog.impl.JSonSchemaHelper;
import org.junit.Test;
public class JSonSchemaHelperTest extends ContextTestSupport {
diff --git a/camel-core/src/test/java/org/apache/camel/runtimecatalog/RuntimeCamelCatalogTest.java b/camel-core/src/test/java/org/apache/camel/runtimecatalog/impl/RuntimeCamelCatalogTest.java
similarity index 98%
rename from camel-core/src/test/java/org/apache/camel/runtimecatalog/RuntimeCamelCatalogTest.java
rename to camel-core/src/test/java/org/apache/camel/runtimecatalog/impl/RuntimeCamelCatalogTest.java
index 49a39f1..8444a7c 100644
--- a/camel-core/src/test/java/org/apache/camel/runtimecatalog/RuntimeCamelCatalogTest.java
+++ b/camel-core/src/test/java/org/apache/camel/runtimecatalog/impl/RuntimeCamelCatalogTest.java
@@ -14,12 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.runtimecatalog;
+package org.apache.camel.runtimecatalog.impl;
import java.util.HashMap;
import java.util.Map;
import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.runtimecatalog.EndpointValidationResult;
+import org.apache.camel.runtimecatalog.LanguageValidationResult;
+import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
import org.junit.BeforeClass;
import org.junit.Test;
import org.slf4j.Logger;
diff --git a/camel-util/pom.xml b/camel-util/pom.xml
new file mode 100644
index 0000000..a05e56e
--- /dev/null
+++ b/camel-util/pom.xml
@@ -0,0 +1,361 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ 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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-parent</artifactId>
+ <version>3.0.0-SNAPSHOT</version>
+ <relativePath>../parent</relativePath>
+ </parent>
+
+ <artifactId>camel-util</artifactId>
+ <packaging>jar</packaging>
+ <name>Camel :: Util</name>
+ <description>The Camel Utilities</description>
+
+ <dependencies>
+
+ <!-- required dependencies by camel-core -->
+ <!-- it will be shade into camel-core by bnd plugin -->
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>spi-annotations</artifactId>
+ <version>${project.version}</version>
+ <optional>true</optional>
+ </dependency>
+
+ <!-- we shade our patched ordered json-simple parser -->
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>json-simple-ordered</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <!-- required dependencies by camel-core -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+
+ <!-- testing -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <artifactId>hamcrest-core</artifactId>
+ <groupId>org.hamcrest</groupId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.hamcrest</groupId>
+ <artifactId>java-hamcrest</artifactId>
+ <version>${hamcrest-version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.awaitility</groupId>
+ <artifactId>awaitility</artifactId>
+ <scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <artifactId>hamcrest-core</artifactId>
+ <groupId>org.hamcrest</groupId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.assertj</groupId>
+ <artifactId>assertj-core</artifactId>
+ <version>${assertj-version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <reporting>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <configuration>
+ <links>
+ <link>http://download.oracle.com/javase/7/docs/api/</link>
+ <link>http://download.oracle.com/javaee/7/api/</link>
+ </links>
+ <linksource>true</linksource>
+ <maxmemory>256m</maxmemory>
+ <groups>
+ <group>
+ <title>Camel API</title>
+ <packages>org.apache.camel</packages>
+ </group>
+ <group>
+ <title>Fluent API (DSL) for building EIP rules</title>
+ <packages>org.apache.camel.builder:org.apache.camel.builder.*</packages>
+ </group>
+ <group>
+ <title>EIP model</title>
+ <packages>org.apache.camel.model:org.apache.camel.model.*</packages>
+ </group>
+ <group>
+ <title>Camel Components</title>
+ <packages>org.apache.camel.component:org.apache.camel.component.*</packages>
+ </group>
+ <group>
+ <title>Language APIs and plugins for Expressions and Predicates</title>
+ <packages>org.apache.camel.language:org.apache.camel.language.*</packages>
+ </group>
+ <group>
+ <title>Processors to implement the Enterprise Integration Patterns</title>
+ <packages>org.apache.camel.processor:org.apache.camel.processor.*</packages>
+ </group>
+ <group>
+ <title>Strategy APIs for implementors extending Camel</title>
+ <packages>org.apache.camel.spi</packages>
+ </group>
+ <group>
+ <title>Support APIs for implementors</title>
+ <packages>org.apache.camel.support:org.apache.camel.support.*</packages>
+ </group>
+ <group>
+ <title>Management (JMX) API</title>
+ <packages>org.apache.camel.management:org.apache.camel.management.*:org.apache.camel.api.management.mbean</packages>
+ </group>
+ <group>
+ <title>Camel Runtime</title>
+ <packages>org.apache.camel.impl:org.apache.camel.impl.*</packages>
+ </group>
+ <group>
+ <title>Camel Main to run Camel standalone</title>
+ <packages>org.apache.camel.main</packages>
+ </group>
+ <group>
+ <title>Type conversion helper classes</title>
+ <packages>org.apache.camel.converter:org.apache.camel.converter.*</packages>
+ </group>
+ <group>
+ <title>Utility classes</title>
+ <packages>org.apache.camel.util:org.apache.camel.util.*</packages>
+ </group>
+ </groups>
+ </configuration>
+ </plugin>
+ </plugins>
+ </reporting>
+
+ <profiles>
+ <profile>
+ <id>release</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>package</id>
+ <phase>package</phase>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <links>
+ <link>http://download.oracle.com/javase/7/docs/api/</link>
+ <link>http://download.oracle.com/javaee/7/api/</link>
+ </links>
+ <linksource>true</linksource>
+ <maxmemory>256m</maxmemory>
+ <groups>
+ <group>
+ <title>Camel API</title>
+ <packages>org.apache.camel</packages>
+ </group>
+ <group>
+ <title>Fluent API (DSL) for building EIP rules</title>
+ <packages>org.apache.camel.builder:org.apache.camel.builder.*</packages>
+ </group>
+ <group>
+ <title>EIP model</title>
+ <packages>org.apache.camel.model:org.apache.camel.model.*</packages>
+ </group>
+ <group>
+ <title>Camel Components</title>
+ <packages>org.apache.camel.component:org.apache.camel.component.*</packages>
+ </group>
+ <group>
+ <title>Language APIs and plugins for Expressions and Predicates</title>
+ <packages>org.apache.camel.language:org.apache.camel.language.*</packages>
+ </group>
+ <group>
+ <title>Processors to implement the Enterprise Integration Patterns</title>
+ <packages>org.apache.camel.processor:org.apache.camel.processor.*</packages>
+ </group>
+ <group>
+ <title>Strategy APIs for implementors extending Camel</title>
+ <packages>org.apache.camel.spi</packages>
+ </group>
+ <group>
+ <title>Support APIs for implementors</title>
+ <packages>org.apache.camel.support:org.apache.camel.support.*</packages>
+ </group>
+ <group>
+ <title>Management (JMX) API</title>
+ <packages>org.apache.camel.management:org.apache.camel.management.*:org.apache.camel.api.management.mbean</packages>
+ </group>
+ <group>
+ <title>Camel Runtime</title>
+ <packages>org.apache.camel.impl:org.apache.camel.impl.*</packages>
+ </group>
+ <group>
+ <title>Camel Main to run Camel standalone</title>
+ <packages>org.apache.camel.main</packages>
+ </group>
+ <group>
+ <title>Type conversion helper classes</title>
+ <packages>org.apache.camel.converter:org.apache.camel.converter.*</packages>
+ </group>
+ <group>
+ <title>Utility classes</title>
+ <packages>org.apache.camel.util:org.apache.camel.util.*</packages>
+ </group>
+ </groups>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+
+ <!-- skip management tests on AIX as it hangs CI servers -->
+ <profile>
+ <id>aix</id>
+ <activation>
+ <os>
+ <name>aix</name>
+ </os>
+ </activation>
+ <properties>
+ <platform.skip.tests>org/apache/camel/management/**/*.java</platform.skip.tests>
+ </properties>
+ </profile>
+ <profile>
+ <id>xalan</id>
+ <dependencies>
+ <!-- enable the Xalan processor -->
+ <dependency>
+ <groupId>xalan</groupId>
+ <artifactId>xalan</artifactId>
+ <version>${xalan-version}</version>
+ </dependency>
+ </dependencies>
+ </profile>
+ <profile>
+ <id>xerces</id>
+ <dependencies>
+ <!-- enable the xerces processor -->
+ <dependency>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ <version>${xerces-version}</version>
+ </dependency>
+ </dependencies>
+ </profile>
+ <profile>
+ <id>woodstox</id>
+ <activation>
+ <activeByDefault>true</activeByDefault>
+ </activation>
+ <dependencies>
+ <!-- xmltokenizer using woodstox -->
+ <dependency>
+ <groupId>org.codehaus.woodstox</groupId>
+ <artifactId>woodstox-core-asl</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ </profile>
+
+ <profile>
+ <id>jdk9+-build</id>
+ <activation>
+ <jdk>[9,)</jdk>
+ </activation>
+ <dependencies>
+
+ <!-- enable the APT processor -->
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>apt</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <!-- xmltokenizer using woodstox -->
+ <dependency>
+ <groupId>org.codehaus.woodstox</groupId>
+ <artifactId>woodstox-core-asl</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <!-- skip file stress tests as they are intended to run manually -->
+ <excludes>
+ <exclude>org/apache/camel/component/file/stress/**.java</exclude>
+ <exclude>**/DistributedCompletionIntervalTest.java</exclude>
+ <exclude>**/DistributedConcurrentPerCorrelationKeyTest.java</exclude>
+ <exclude>${platform.skip.tests}</exclude>
+ </excludes>
+ <forkedProcessTimeoutInSeconds>3000</forkedProcessTimeoutInSeconds>
+ <!-- needed for testing the properties component -->
+ <environmentVariables>
+ <FOO_SERVICE_HOST>myserver</FOO_SERVICE_HOST>
+ <FOO_SERVICE_PORT>8081</FOO_SERVICE_PORT>
+ </environmentVariables>
+ <argLine>--add-modules java.xml.bind,java.xml.ws --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED</argLine>
+ </configuration>
+ <dependencies>
+ <dependency>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-core</artifactId>
+ <version>${jaxb-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-impl</artifactId>
+ <version>${jaxb-version}</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
+</project>
diff --git a/camel-core/src/main/java/org/apache/camel/util/AntPathMatcher.java b/camel-util/src/main/java/org/apache/camel/util/AntPathMatcher.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/AntPathMatcher.java
rename to camel-util/src/main/java/org/apache/camel/util/AntPathMatcher.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/CamelVersionHelper.java b/camel-util/src/main/java/org/apache/camel/util/CamelVersionHelper.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/CamelVersionHelper.java
rename to camel-util/src/main/java/org/apache/camel/util/CamelVersionHelper.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/CaseInsensitiveMap.java b/camel-util/src/main/java/org/apache/camel/util/CaseInsensitiveMap.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/CaseInsensitiveMap.java
rename to camel-util/src/main/java/org/apache/camel/util/CaseInsensitiveMap.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/CastUtils.java b/camel-util/src/main/java/org/apache/camel/util/CastUtils.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/CastUtils.java
rename to camel-util/src/main/java/org/apache/camel/util/CastUtils.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/CollectionHelper.java b/camel-util/src/main/java/org/apache/camel/util/CollectionHelper.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/CollectionHelper.java
rename to camel-util/src/main/java/org/apache/camel/util/CollectionHelper.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/CollectionStringBuffer.java b/camel-util/src/main/java/org/apache/camel/util/CollectionStringBuffer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/CollectionStringBuffer.java
rename to camel-util/src/main/java/org/apache/camel/util/CollectionStringBuffer.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/FilePathResolver.java b/camel-util/src/main/java/org/apache/camel/util/FilePathResolver.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/FilePathResolver.java
rename to camel-util/src/main/java/org/apache/camel/util/FilePathResolver.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/FileUtil.java b/camel-util/src/main/java/org/apache/camel/util/FileUtil.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/FileUtil.java
rename to camel-util/src/main/java/org/apache/camel/util/FileUtil.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/HostUtils.java b/camel-util/src/main/java/org/apache/camel/util/HostUtils.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/HostUtils.java
rename to camel-util/src/main/java/org/apache/camel/util/HostUtils.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/IOHelper.java b/camel-util/src/main/java/org/apache/camel/util/IOHelper.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/IOHelper.java
rename to camel-util/src/main/java/org/apache/camel/util/IOHelper.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/InetAddressUtil.java b/camel-util/src/main/java/org/apache/camel/util/InetAddressUtil.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/InetAddressUtil.java
rename to camel-util/src/main/java/org/apache/camel/util/InetAddressUtil.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/JsonSchemaHelper.java b/camel-util/src/main/java/org/apache/camel/util/JsonSchemaHelper.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/JsonSchemaHelper.java
rename to camel-util/src/main/java/org/apache/camel/util/JsonSchemaHelper.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/KeyValueHolder.java b/camel-util/src/main/java/org/apache/camel/util/KeyValueHolder.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/KeyValueHolder.java
rename to camel-util/src/main/java/org/apache/camel/util/KeyValueHolder.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java b/camel-util/src/main/java/org/apache/camel/util/ObjectHelper.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java
rename to camel-util/src/main/java/org/apache/camel/util/ObjectHelper.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/OgnlHelper.java b/camel-util/src/main/java/org/apache/camel/util/OgnlHelper.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/OgnlHelper.java
rename to camel-util/src/main/java/org/apache/camel/util/OgnlHelper.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/PackageHelper.java b/camel-util/src/main/java/org/apache/camel/util/PackageHelper.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/PackageHelper.java
rename to camel-util/src/main/java/org/apache/camel/util/PackageHelper.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/ReferenceCount.java b/camel-util/src/main/java/org/apache/camel/util/ReferenceCount.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/ReferenceCount.java
rename to camel-util/src/main/java/org/apache/camel/util/ReferenceCount.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/ReflectionHelper.java b/camel-util/src/main/java/org/apache/camel/util/ReflectionHelper.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/ReflectionHelper.java
rename to camel-util/src/main/java/org/apache/camel/util/ReflectionHelper.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/Scanner.java b/camel-util/src/main/java/org/apache/camel/util/Scanner.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/Scanner.java
rename to camel-util/src/main/java/org/apache/camel/util/Scanner.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/SedaConstants.java b/camel-util/src/main/java/org/apache/camel/util/SedaConstants.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/SedaConstants.java
rename to camel-util/src/main/java/org/apache/camel/util/SedaConstants.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/SkipIterator.java b/camel-util/src/main/java/org/apache/camel/util/SkipIterator.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/SkipIterator.java
rename to camel-util/src/main/java/org/apache/camel/util/SkipIterator.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/StopWatch.java b/camel-util/src/main/java/org/apache/camel/util/StopWatch.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/StopWatch.java
rename to camel-util/src/main/java/org/apache/camel/util/StopWatch.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/StreamUtils.java b/camel-util/src/main/java/org/apache/camel/util/StreamUtils.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/StreamUtils.java
rename to camel-util/src/main/java/org/apache/camel/util/StreamUtils.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/StringHelper.java b/camel-util/src/main/java/org/apache/camel/util/StringHelper.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/StringHelper.java
rename to camel-util/src/main/java/org/apache/camel/util/StringHelper.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/StringQuoteHelper.java b/camel-util/src/main/java/org/apache/camel/util/StringQuoteHelper.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/StringQuoteHelper.java
rename to camel-util/src/main/java/org/apache/camel/util/StringQuoteHelper.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/TimeUtils.java b/camel-util/src/main/java/org/apache/camel/util/TimeUtils.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/TimeUtils.java
rename to camel-util/src/main/java/org/apache/camel/util/TimeUtils.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/URISupport.java b/camel-util/src/main/java/org/apache/camel/util/URISupport.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/URISupport.java
rename to camel-util/src/main/java/org/apache/camel/util/URISupport.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/UnitUtils.java b/camel-util/src/main/java/org/apache/camel/util/UnitUtils.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/UnitUtils.java
rename to camel-util/src/main/java/org/apache/camel/util/UnitUtils.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/UnsafeUriCharactersEncoder.java b/camel-util/src/main/java/org/apache/camel/util/UnsafeUriCharactersEncoder.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/UnsafeUriCharactersEncoder.java
rename to camel-util/src/main/java/org/apache/camel/util/UnsafeUriCharactersEncoder.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/XmlLineNumberParser.java b/camel-util/src/main/java/org/apache/camel/util/XmlLineNumberParser.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/XmlLineNumberParser.java
rename to camel-util/src/main/java/org/apache/camel/util/XmlLineNumberParser.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/backoff/BackOff.java b/camel-util/src/main/java/org/apache/camel/util/backoff/BackOff.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/backoff/BackOff.java
rename to camel-util/src/main/java/org/apache/camel/util/backoff/BackOff.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/backoff/BackOffTimer.java b/camel-util/src/main/java/org/apache/camel/util/backoff/BackOffTimer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/backoff/BackOffTimer.java
rename to camel-util/src/main/java/org/apache/camel/util/backoff/BackOffTimer.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/backoff/BackOffTimerTask.java b/camel-util/src/main/java/org/apache/camel/util/backoff/BackOffTimerTask.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/backoff/BackOffTimerTask.java
rename to camel-util/src/main/java/org/apache/camel/util/backoff/BackOffTimerTask.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/backoff/package.html b/camel-util/src/main/java/org/apache/camel/util/backoff/package.html
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/backoff/package.html
rename to camel-util/src/main/java/org/apache/camel/util/backoff/package.html
diff --git a/camel-core/src/main/java/org/apache/camel/util/concurrent/CamelThreadFactory.java b/camel-util/src/main/java/org/apache/camel/util/concurrent/CamelThreadFactory.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/concurrent/CamelThreadFactory.java
rename to camel-util/src/main/java/org/apache/camel/util/concurrent/CamelThreadFactory.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/concurrent/LockHelper.java b/camel-util/src/main/java/org/apache/camel/util/concurrent/LockHelper.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/concurrent/LockHelper.java
rename to camel-util/src/main/java/org/apache/camel/util/concurrent/LockHelper.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/concurrent/Rejectable.java b/camel-util/src/main/java/org/apache/camel/util/concurrent/Rejectable.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/concurrent/Rejectable.java
rename to camel-util/src/main/java/org/apache/camel/util/concurrent/Rejectable.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/concurrent/RejectableFutureTask.java b/camel-util/src/main/java/org/apache/camel/util/concurrent/RejectableFutureTask.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/concurrent/RejectableFutureTask.java
rename to camel-util/src/main/java/org/apache/camel/util/concurrent/RejectableFutureTask.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/concurrent/RejectableScheduledThreadPoolExecutor.java b/camel-util/src/main/java/org/apache/camel/util/concurrent/RejectableScheduledThreadPoolExecutor.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/concurrent/RejectableScheduledThreadPoolExecutor.java
rename to camel-util/src/main/java/org/apache/camel/util/concurrent/RejectableScheduledThreadPoolExecutor.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/concurrent/RejectableThreadPoolExecutor.java b/camel-util/src/main/java/org/apache/camel/util/concurrent/RejectableThreadPoolExecutor.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/concurrent/RejectableThreadPoolExecutor.java
rename to camel-util/src/main/java/org/apache/camel/util/concurrent/RejectableThreadPoolExecutor.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/concurrent/SizedScheduledExecutorService.java b/camel-util/src/main/java/org/apache/camel/util/concurrent/SizedScheduledExecutorService.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/concurrent/SizedScheduledExecutorService.java
rename to camel-util/src/main/java/org/apache/camel/util/concurrent/SizedScheduledExecutorService.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/concurrent/SubmitOrderedCompletionService.java b/camel-util/src/main/java/org/apache/camel/util/concurrent/SubmitOrderedCompletionService.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/concurrent/SubmitOrderedCompletionService.java
rename to camel-util/src/main/java/org/apache/camel/util/concurrent/SubmitOrderedCompletionService.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/concurrent/SynchronousExecutorService.java b/camel-util/src/main/java/org/apache/camel/util/concurrent/SynchronousExecutorService.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/concurrent/SynchronousExecutorService.java
rename to camel-util/src/main/java/org/apache/camel/util/concurrent/SynchronousExecutorService.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/concurrent/ThreadHelper.java b/camel-util/src/main/java/org/apache/camel/util/concurrent/ThreadHelper.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/concurrent/ThreadHelper.java
rename to camel-util/src/main/java/org/apache/camel/util/concurrent/ThreadHelper.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/concurrent/ThreadPoolRejectedPolicy.java b/camel-util/src/main/java/org/apache/camel/util/concurrent/ThreadPoolRejectedPolicy.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/concurrent/ThreadPoolRejectedPolicy.java
rename to camel-util/src/main/java/org/apache/camel/util/concurrent/ThreadPoolRejectedPolicy.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/concurrent/package.html b/camel-util/src/main/java/org/apache/camel/util/concurrent/package.html
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/concurrent/package.html
rename to camel-util/src/main/java/org/apache/camel/util/concurrent/package.html
diff --git a/camel-core/src/main/java/org/apache/camel/util/function/Bindings.java b/camel-util/src/main/java/org/apache/camel/util/function/Bindings.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/function/Bindings.java
rename to camel-util/src/main/java/org/apache/camel/util/function/Bindings.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/function/Predicates.java b/camel-util/src/main/java/org/apache/camel/util/function/Predicates.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/function/Predicates.java
rename to camel-util/src/main/java/org/apache/camel/util/function/Predicates.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/function/Suppliers.java b/camel-util/src/main/java/org/apache/camel/util/function/Suppliers.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/function/Suppliers.java
rename to camel-util/src/main/java/org/apache/camel/util/function/Suppliers.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/function/ThrowingBiConsumer.java b/camel-util/src/main/java/org/apache/camel/util/function/ThrowingBiConsumer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/function/ThrowingBiConsumer.java
rename to camel-util/src/main/java/org/apache/camel/util/function/ThrowingBiConsumer.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/function/ThrowingBiFunction.java b/camel-util/src/main/java/org/apache/camel/util/function/ThrowingBiFunction.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/function/ThrowingBiFunction.java
rename to camel-util/src/main/java/org/apache/camel/util/function/ThrowingBiFunction.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/function/ThrowingConsumer.java b/camel-util/src/main/java/org/apache/camel/util/function/ThrowingConsumer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/function/ThrowingConsumer.java
rename to camel-util/src/main/java/org/apache/camel/util/function/ThrowingConsumer.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/function/ThrowingFunction.java b/camel-util/src/main/java/org/apache/camel/util/function/ThrowingFunction.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/function/ThrowingFunction.java
rename to camel-util/src/main/java/org/apache/camel/util/function/ThrowingFunction.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/function/ThrowingHelper.java b/camel-util/src/main/java/org/apache/camel/util/function/ThrowingHelper.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/function/ThrowingHelper.java
rename to camel-util/src/main/java/org/apache/camel/util/function/ThrowingHelper.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/function/ThrowingRunnable.java b/camel-util/src/main/java/org/apache/camel/util/function/ThrowingRunnable.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/function/ThrowingRunnable.java
rename to camel-util/src/main/java/org/apache/camel/util/function/ThrowingRunnable.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/function/ThrowingSupplier.java b/camel-util/src/main/java/org/apache/camel/util/function/ThrowingSupplier.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/function/ThrowingSupplier.java
rename to camel-util/src/main/java/org/apache/camel/util/function/ThrowingSupplier.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/function/ThrowingToLongFunction.java b/camel-util/src/main/java/org/apache/camel/util/function/ThrowingToLongFunction.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/function/ThrowingToLongFunction.java
rename to camel-util/src/main/java/org/apache/camel/util/function/ThrowingToLongFunction.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/function/ThrowingTriConsumer.java b/camel-util/src/main/java/org/apache/camel/util/function/ThrowingTriConsumer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/function/ThrowingTriConsumer.java
rename to camel-util/src/main/java/org/apache/camel/util/function/ThrowingTriConsumer.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/function/TriConsumer.java b/camel-util/src/main/java/org/apache/camel/util/function/TriConsumer.java
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/function/TriConsumer.java
rename to camel-util/src/main/java/org/apache/camel/util/function/TriConsumer.java
diff --git a/camel-core/src/main/java/org/apache/camel/util/function/package.html b/camel-util/src/main/java/org/apache/camel/util/function/package.html
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/function/package.html
rename to camel-util/src/main/java/org/apache/camel/util/function/package.html
diff --git a/camel-core/src/main/java/org/apache/camel/util/package.html b/camel-util/src/main/java/org/apache/camel/util/package.html
similarity index 100%
rename from camel-core/src/main/java/org/apache/camel/util/package.html
rename to camel-util/src/main/java/org/apache/camel/util/package.html
diff --git a/camel-core/src/test/java/org/apache/camel/util/AntPathMatcherTest.java b/camel-util/src/test/java/org/apache/camel/util/AntPathMatcherTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/util/AntPathMatcherTest.java
rename to camel-util/src/test/java/org/apache/camel/util/AntPathMatcherTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/util/CamelVersionHelperTest.java b/camel-util/src/test/java/org/apache/camel/util/CamelVersionHelperTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/util/CamelVersionHelperTest.java
rename to camel-util/src/test/java/org/apache/camel/util/CamelVersionHelperTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/util/CollectionHelperTest.java b/camel-util/src/test/java/org/apache/camel/util/CollectionHelperTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/util/CollectionHelperTest.java
rename to camel-util/src/test/java/org/apache/camel/util/CollectionHelperTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/util/CollectionStringBufferTest.java b/camel-util/src/test/java/org/apache/camel/util/CollectionStringBufferTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/util/CollectionStringBufferTest.java
rename to camel-util/src/test/java/org/apache/camel/util/CollectionStringBufferTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/util/UnitUtilsTest.java b/camel-util/src/test/java/org/apache/camel/util/UnitUtilsTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/util/UnitUtilsTest.java
rename to camel-util/src/test/java/org/apache/camel/util/UnitUtilsTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/util/backoff/BackOffTest.java b/camel-util/src/test/java/org/apache/camel/util/backoff/BackOffTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/util/backoff/BackOffTest.java
rename to camel-util/src/test/java/org/apache/camel/util/backoff/BackOffTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/util/backoff/BackOffTimerTest.java b/camel-util/src/test/java/org/apache/camel/util/backoff/BackOffTimerTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/util/backoff/BackOffTimerTest.java
rename to camel-util/src/test/java/org/apache/camel/util/backoff/BackOffTimerTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/util/concurrent/SizedScheduledExecutorServiceTest.java b/camel-util/src/test/java/org/apache/camel/util/concurrent/SizedScheduledExecutorServiceTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/util/concurrent/SizedScheduledExecutorServiceTest.java
rename to camel-util/src/test/java/org/apache/camel/util/concurrent/SizedScheduledExecutorServiceTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/util/concurrent/SubmitOrderedCompletionServiceTest.java b/camel-util/src/test/java/org/apache/camel/util/concurrent/SubmitOrderedCompletionServiceTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/util/concurrent/SubmitOrderedCompletionServiceTest.java
rename to camel-util/src/test/java/org/apache/camel/util/concurrent/SubmitOrderedCompletionServiceTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/util/concurrent/SynchronousExecutorServiceTest.java b/camel-util/src/test/java/org/apache/camel/util/concurrent/SynchronousExecutorServiceTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/util/concurrent/SynchronousExecutorServiceTest.java
rename to camel-util/src/test/java/org/apache/camel/util/concurrent/SynchronousExecutorServiceTest.java
diff --git a/camel-core/src/test/java/org/apache/camel/util/function/PredicatesTest.java b/camel-util/src/test/java/org/apache/camel/util/function/PredicatesTest.java
similarity index 100%
rename from camel-core/src/test/java/org/apache/camel/util/function/PredicatesTest.java
rename to camel-util/src/test/java/org/apache/camel/util/function/PredicatesTest.java
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandler.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandler.java
index 328ab7a..8eb12d5 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandler.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandler.java
@@ -25,7 +25,7 @@ import org.apache.camel.Processor;
import org.apache.camel.processor.RedeliveryErrorHandler;
import org.apache.camel.processor.RedeliveryPolicy;
import org.apache.camel.processor.exceptionpolicy.ExceptionPolicyStrategy;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
/**
* This error handler does redelivering. If the transaction fails it can be
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandlerBuilder.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandlerBuilder.java
index 0ef1cdd..4aa81a8 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandlerBuilder.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandlerBuilder.java
@@ -24,10 +24,10 @@ import org.apache.camel.Processor;
import org.apache.camel.RuntimeCamelException;
import org.apache.camel.builder.DefaultErrorHandlerBuilder;
import org.apache.camel.builder.ErrorHandlerBuilder;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.spi.Policy;
import org.apache.camel.spi.RouteContext;
import org.apache.camel.spi.TransactedPolicy;
-import org.apache.camel.support.CamelLogger;
import org.apache.camel.util.ObjectHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/DefaultFtpClientActivityListener.java b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/DefaultFtpClientActivityListener.java
index 7ff0fb1..4422f60 100644
--- a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/DefaultFtpClientActivityListener.java
+++ b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/DefaultFtpClientActivityListener.java
@@ -16,7 +16,7 @@
*/
package org.apache.camel.component.file.remote;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.util.ObjectHelper;
import org.apache.camel.util.StopWatch;
import org.apache.camel.util.StringHelper;
diff --git a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/strategy/FtpChangedExclusiveReadLockStrategy.java b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/strategy/FtpChangedExclusiveReadLockStrategy.java
index bc3f651..c71abab 100644
--- a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/strategy/FtpChangedExclusiveReadLockStrategy.java
+++ b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/strategy/FtpChangedExclusiveReadLockStrategy.java
@@ -25,7 +25,7 @@ import org.apache.camel.component.file.GenericFile;
import org.apache.camel.component.file.GenericFileEndpoint;
import org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy;
import org.apache.camel.component.file.GenericFileOperations;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.util.StopWatch;
import org.apache.commons.net.ftp.FTPFile;
import org.slf4j.Logger;
diff --git a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/strategy/SftpChangedExclusiveReadLockStrategy.java b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/strategy/SftpChangedExclusiveReadLockStrategy.java
index 1c00f4a..847cf6c 100644
--- a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/strategy/SftpChangedExclusiveReadLockStrategy.java
+++ b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/strategy/SftpChangedExclusiveReadLockStrategy.java
@@ -27,7 +27,7 @@ import org.apache.camel.component.file.GenericFileEndpoint;
import org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy;
import org.apache.camel.component.file.GenericFileOperations;
import org.apache.camel.component.file.remote.SftpRemoteFile;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.util.StopWatch;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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 2c0ab5c..964b0c5 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
@@ -23,6 +23,7 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.TimeUnit;
+
import javax.net.ssl.HostnameVerifier;
import org.apache.camel.CamelContext;
@@ -40,15 +41,15 @@ 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.RestProducerFactoryHelper;
-import org.apache.camel.util.FileUtil;
import org.apache.camel.support.IntrospectionSupport;
-import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.support.RestProducerFactoryHelper;
import org.apache.camel.support.ServiceHelper;
+import org.apache.camel.support.jsse.SSLContextParameters;
+import org.apache.camel.util.FileUtil;
+import org.apache.camel.util.ObjectHelper;
import org.apache.camel.util.StringHelper;
import org.apache.camel.util.URISupport;
import org.apache.camel.util.UnsafeUriCharactersEncoder;
-import org.apache.camel.support.jsse.SSLContextParameters;
import org.apache.http.client.CookieStore;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.config.Registry;
diff --git a/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java b/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
index fb2775f..ccfac03 100644
--- a/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
+++ b/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
@@ -60,10 +60,10 @@ import org.apache.camel.spi.RestApiConsumerFactory;
import org.apache.camel.spi.RestConfiguration;
import org.apache.camel.spi.RestConsumerFactory;
import org.apache.camel.spi.RestProducerFactory;
-import org.apache.camel.spi.RestProducerFactoryHelper;
import org.apache.camel.util.FileUtil;
import org.apache.camel.util.HostUtils;
import org.apache.camel.support.IntrospectionSupport;
+import org.apache.camel.support.RestProducerFactoryHelper;
import org.apache.camel.util.ObjectHelper;
import org.apache.camel.support.ServiceHelper;
import org.apache.camel.util.StringHelper;
diff --git a/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Producer.java b/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Producer.java
index 291be82..8e00d27 100644
--- a/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Producer.java
+++ b/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Producer.java
@@ -28,8 +28,8 @@ import java.util.concurrent.TimeUnit;
import org.apache.camel.CamelExchangeException;
import org.apache.camel.Exchange;
import org.apache.camel.ExchangeTimedOutException;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.support.DefaultProducer;
-import org.apache.camel.support.CamelLogger;
import org.apache.camel.support.ExchangeHelper;
import org.apache.camel.util.IOHelper;
import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
diff --git a/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/NettyHttpComponent.java b/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/NettyHttpComponent.java
index b302907..777849d 100644
--- a/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/NettyHttpComponent.java
+++ b/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/NettyHttpComponent.java
@@ -38,12 +38,12 @@ import org.apache.camel.spi.RestApiConsumerFactory;
import org.apache.camel.spi.RestConfiguration;
import org.apache.camel.spi.RestConsumerFactory;
import org.apache.camel.spi.RestProducerFactory;
-import org.apache.camel.spi.RestProducerFactoryHelper;
+import org.apache.camel.support.IntrospectionSupport;
+import org.apache.camel.support.RestProducerFactoryHelper;
+import org.apache.camel.support.ServiceHelper;
import org.apache.camel.util.FileUtil;
import org.apache.camel.util.HostUtils;
-import org.apache.camel.support.IntrospectionSupport;
import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.support.ServiceHelper;
import org.apache.camel.util.URISupport;
import org.apache.camel.util.UnsafeUriCharactersEncoder;
diff --git a/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/handlers/HttpServerChannelHandler.java b/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/handlers/HttpServerChannelHandler.java
index f2acb4d..1c19749 100644
--- a/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/handlers/HttpServerChannelHandler.java
+++ b/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/handlers/HttpServerChannelHandler.java
@@ -19,7 +19,6 @@ package org.apache.camel.component.netty4.http.handlers;
import java.net.URI;
import java.nio.channels.ClosedChannelException;
import java.nio.charset.Charset;
-import java.util.Iterator;
import java.util.Locale;
import javax.security.auth.Subject;
@@ -43,7 +42,7 @@ import org.apache.camel.component.netty4.http.HttpPrincipal;
import org.apache.camel.component.netty4.http.NettyHttpConsumer;
import org.apache.camel.component.netty4.http.NettyHttpSecurityConfiguration;
import org.apache.camel.component.netty4.http.SecurityAuthenticator;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.support.ObjectHelper;
import org.apache.camel.util.StringHelper;
import org.slf4j.Logger;
diff --git a/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyConsumerExceptionHandler.java b/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyConsumerExceptionHandler.java
index 5805a96..c70ab01 100644
--- a/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyConsumerExceptionHandler.java
+++ b/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyConsumerExceptionHandler.java
@@ -21,8 +21,8 @@ import java.nio.channels.ClosedChannelException;
import org.apache.camel.CamelExchangeException;
import org.apache.camel.Exchange;
import org.apache.camel.LoggingLevel;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.spi.ExceptionHandler;
-import org.apache.camel.support.CamelLogger;
import org.apache.camel.util.ObjectHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyProducer.java b/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyProducer.java
index e1f3425..96ccdd4 100644
--- a/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyProducer.java
+++ b/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyProducer.java
@@ -43,12 +43,12 @@ import org.apache.camel.CamelContext;
import org.apache.camel.CamelContextAware;
import org.apache.camel.CamelExchangeException;
import org.apache.camel.Exchange;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.support.DefaultAsyncProducer;
-import org.apache.camel.support.SynchronizationAdapter;
-import org.apache.camel.support.CamelLogger;
import org.apache.camel.support.ExchangeHelper;
-import org.apache.camel.util.IOHelper;
import org.apache.camel.support.ServiceHelper;
+import org.apache.camel.support.SynchronizationAdapter;
+import org.apache.camel.util.IOHelper;
import org.apache.commons.pool.ObjectPool;
import org.apache.commons.pool.PoolableObjectFactory;
import org.apache.commons.pool.impl.GenericObjectPool;
diff --git a/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/TimeoutCorrelationManagerSupport.java b/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/TimeoutCorrelationManagerSupport.java
index b1a683f..30d1b52 100644
--- a/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/TimeoutCorrelationManagerSupport.java
+++ b/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/TimeoutCorrelationManagerSupport.java
@@ -28,11 +28,11 @@ import org.apache.camel.Exchange;
import org.apache.camel.ExchangeTimedOutException;
import org.apache.camel.LoggingLevel;
import org.apache.camel.TimeoutMap;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.support.DefaultTimeoutMap;
+import org.apache.camel.support.ServiceHelper;
import org.apache.camel.support.ServiceSupport;
-import org.apache.camel.support.CamelLogger;
import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.support.ServiceHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/handlers/ServerChannelHandler.java b/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/handlers/ServerChannelHandler.java
index 7922130..5363bd8 100644
--- a/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/handlers/ServerChannelHandler.java
+++ b/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/handlers/ServerChannelHandler.java
@@ -28,7 +28,7 @@ import org.apache.camel.component.netty4.NettyConstants;
import org.apache.camel.component.netty4.NettyConsumer;
import org.apache.camel.component.netty4.NettyHelper;
import org.apache.camel.component.netty4.NettyPayloadHelper;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.util.IOHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java
index 08aaaea..9b6f00d 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java
@@ -41,16 +41,16 @@ import org.apache.camel.StaticService;
import org.apache.camel.api.management.ManagedResource;
import org.apache.camel.management.event.ExchangeSendingEvent;
import org.apache.camel.management.event.ExchangeSentEvent;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.spi.LogListener;
import org.apache.camel.spi.RoutePolicy;
import org.apache.camel.spi.RoutePolicyFactory;
+import org.apache.camel.support.EndpointHelper;
import org.apache.camel.support.EventNotifierSupport;
import org.apache.camel.support.RoutePolicySupport;
+import org.apache.camel.support.ServiceHelper;
import org.apache.camel.support.ServiceSupport;
-import org.apache.camel.support.CamelLogger;
-import org.apache.camel.support.EndpointHelper;
import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.support.ServiceHelper;
import org.apache.camel.util.StringHelper;
/**
diff --git a/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletComponent.java b/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletComponent.java
index 4c4b1e5..b15a59b 100644
--- a/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletComponent.java
+++ b/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletComponent.java
@@ -32,7 +32,6 @@ import org.apache.camel.Processor;
import org.apache.camel.Producer;
import org.apache.camel.SSLContextParametersAware;
import org.apache.camel.component.restlet.converter.RestletConverter;
-import org.apache.camel.support.DefaultComponent;
import org.apache.camel.spi.HeaderFilterStrategy;
import org.apache.camel.spi.HeaderFilterStrategyAware;
import org.apache.camel.spi.Metadata;
@@ -40,13 +39,14 @@ import org.apache.camel.spi.RestApiConsumerFactory;
import org.apache.camel.spi.RestConfiguration;
import org.apache.camel.spi.RestConsumerFactory;
import org.apache.camel.spi.RestProducerFactory;
-import org.apache.camel.spi.RestProducerFactoryHelper;
+import org.apache.camel.support.DefaultComponent;
+import org.apache.camel.support.RestProducerFactoryHelper;
+import org.apache.camel.support.ServiceHelper;
+import org.apache.camel.support.jsse.SSLContextParameters;
import org.apache.camel.util.FileUtil;
import org.apache.camel.util.HostUtils;
import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.support.ServiceHelper;
import org.apache.camel.util.URISupport;
-import org.apache.camel.support.jsse.SSLContextParameters;
import org.restlet.Component;
import org.restlet.Restlet;
import org.restlet.data.ChallengeScheme;
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/LogListenerDiscoveryTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/LogListenerDiscoveryTest.java
index 3c09812..5a56a33 100644
--- a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/LogListenerDiscoveryTest.java
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/LogListenerDiscoveryTest.java
@@ -18,8 +18,8 @@ package org.apache.camel.spring.boot;
import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.spi.LogListener;
-import org.apache.camel.support.CamelLogger;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java b/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java
index 430a2f0..f4acca7 100644
--- a/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java
+++ b/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java
@@ -29,7 +29,7 @@ import org.apache.camel.RuntimeCamelException;
import org.apache.camel.processor.RedeliveryErrorHandler;
import org.apache.camel.processor.RedeliveryPolicy;
import org.apache.camel.processor.exceptionpolicy.ExceptionPolicyStrategy;
-import org.apache.camel.support.CamelLogger;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.support.ExchangeHelper;
import org.apache.camel.util.ObjectHelper;
import org.springframework.transaction.TransactionDefinition;
diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java b/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java
index 9e60a53..e4bab18 100644
--- a/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java
+++ b/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java
@@ -21,9 +21,9 @@ import java.util.Map;
import org.apache.camel.LoggingLevel;
import org.apache.camel.Processor;
import org.apache.camel.builder.DefaultErrorHandlerBuilder;
+import org.apache.camel.spi.CamelLogger;
import org.apache.camel.spi.RouteContext;
import org.apache.camel.spi.TransactedPolicy;
-import org.apache.camel.support.CamelLogger;
import org.apache.camel.util.ObjectHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowComponent.java b/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowComponent.java
index 5796e94..ac0d7f6 100644
--- a/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowComponent.java
+++ b/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowComponent.java
@@ -35,21 +35,21 @@ import org.apache.camel.Processor;
import org.apache.camel.Producer;
import org.apache.camel.SSLContextParametersAware;
import org.apache.camel.component.extension.ComponentVerifierExtension;
-import org.apache.camel.support.DefaultComponent;
import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.RestApiConsumerFactory;
import org.apache.camel.spi.RestConfiguration;
import org.apache.camel.spi.RestConsumerFactory;
import org.apache.camel.spi.RestProducerFactory;
-import org.apache.camel.spi.RestProducerFactoryHelper;
+import org.apache.camel.support.DefaultComponent;
+import org.apache.camel.support.IntrospectionSupport;
+import org.apache.camel.support.RestProducerFactoryHelper;
+import org.apache.camel.support.ServiceHelper;
+import org.apache.camel.support.jsse.SSLContextParameters;
import org.apache.camel.util.FileUtil;
import org.apache.camel.util.HostUtils;
-import org.apache.camel.support.IntrospectionSupport;
import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.support.ServiceHelper;
import org.apache.camel.util.URISupport;
import org.apache.camel.util.UnsafeUriCharactersEncoder;
-import org.apache.camel.support.jsse.SSLContextParameters;
/**
* Represents the component that manages {@link UndertowEndpoint}.
diff --git a/parent/pom.xml b/parent/pom.xml
index 3581c92..f231348 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -817,6 +817,16 @@
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
+ <artifactId>camel-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-util</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
<version>${project.version}</version>
</dependency>
diff --git a/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/DefaultMavenArtifactProvider.java b/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/DefaultMavenArtifactProvider.java
index 2cd95a1..8d68a82 100644
--- a/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/DefaultMavenArtifactProvider.java
+++ b/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/DefaultMavenArtifactProvider.java
@@ -17,18 +17,18 @@
package org.apache.camel.catalog.maven;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.StreamSupport;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import groovy.grape.Grape;
import groovy.lang.GroovyClassLoader;
import org.apache.camel.catalog.CamelCatalog;
-import org.apache.camel.catalog.CollectionStringBuffer;
import org.apache.camel.catalog.connector.CamelConnectorCatalog;
import static org.apache.camel.catalog.maven.ComponentArtifactHelper.extractComponentJavaType;
@@ -154,19 +154,16 @@ public class DefaultMavenArtifactProvider implements MavenArtifactProvider {
String scheme = tree.get("scheme").textValue();
String javaType = tree.get("javaType").textValue();
String description = tree.get("description").textValue();
- Iterator<JsonNode> it = tree.withArray("labels").iterator();
- CollectionStringBuffer csb = new CollectionStringBuffer(",");
- while (it.hasNext()) {
- String text = it.next().textValue();
- csb.append(text);
- }
+ String csb = StreamSupport.stream(tree.withArray("labels").spliterator(), false)
+ .map(JsonNode::textValue)
+ .collect(Collectors.joining(","));
if (log) {
System.out.println("Adding connector: " + name + " with scheme: " + scheme);
}
camelConnectorCatalog.addConnector(groupId, artifactId, version,
- name, scheme, javaType, description, csb.toString(), json[0], json[1], json[2]);
+ name, scheme, javaType, description, csb, json[0], json[1], json[2]);
names.add(name);
} catch (Throwable e) {
diff --git a/platforms/camel-catalog-nexus/src/main/java/org/apache/camel/catalog/nexus/ConnectorCatalogNexusRepository.java b/platforms/camel-catalog-nexus/src/main/java/org/apache/camel/catalog/nexus/ConnectorCatalogNexusRepository.java
index 98630d4..4f00641 100644
--- a/platforms/camel-catalog-nexus/src/main/java/org/apache/camel/catalog/nexus/ConnectorCatalogNexusRepository.java
+++ b/platforms/camel-catalog-nexus/src/main/java/org/apache/camel/catalog/nexus/ConnectorCatalogNexusRepository.java
@@ -20,12 +20,12 @@ import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLClassLoader;
-import java.util.Iterator;
import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.StreamSupport;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
-import org.apache.camel.catalog.CollectionStringBuffer;
import org.apache.camel.catalog.connector.CamelConnectorCatalog;
import static org.apache.camel.catalog.CatalogHelper.loadText;
@@ -114,15 +114,12 @@ public class ConnectorCatalogNexusRepository extends BaseNexusRepository {
String scheme = tree.get("scheme").textValue();
String javaType = tree.get("javaType").textValue();
String description = tree.get("description").textValue();
- Iterator<JsonNode> it = tree.withArray("labels").iterator();
- CollectionStringBuffer csb = new CollectionStringBuffer(",");
- while (it.hasNext()) {
- String text = it.next().textValue();
- csb.append(text);
- }
+ String csb = StreamSupport.stream(tree.withArray("labels").spliterator(), false)
+ .map(JsonNode::textValue)
+ .collect(Collectors.joining(","));
- addConnector(dto, name, scheme, javaType, description, csb.toString(), json[0], json[1], json[2]);
+ addConnector(dto, name, scheme, javaType, description, csb, json[0], json[1], json[2]);
}
} catch (IOException e) {
logger.warn("Error scanning JAR for custom Camel connectors", e);
diff --git a/platforms/camel-catalog/pom.xml b/platforms/camel-catalog/pom.xml
index 73c9786..5b4068e 100644
--- a/platforms/camel-catalog/pom.xml
+++ b/platforms/camel-catalog/pom.xml
@@ -118,21 +118,26 @@
<goal>copy-resources</goal>
</goals>
<configuration>
- <outputDirectory>src/main/java/org/apache/camel/catalog</outputDirectory>
+ <outputDirectory>target/generated-sources/java/org/apache/camel/catalog</outputDirectory>
<overwrite>true</overwrite>
<resources>
<resource>
- <directory>../../camel-core/src/main/java/org/apache/camel/runtimecatalog</directory>
+ <directory>../../camel-api/src/main/java/org/apache/camel/runtimecatalog</directory>
<!-- the following files are maintained in camel-core and not here, so they are copied over -->
<includes>
- <include>AbstractCamelCatalog.java</include>
- <include>CatalogHelper.java</include>
- <include>CollectionStringBuffer.java</include>
<include>EndpointValidationResult.java</include>
- <include>JSonSchemaHelper.java</include>
<include>JSonSchemaResolver.java</include>
<include>LanguageValidationResult.java</include>
- <include>SimpleValidationResult.java</include>
+ </includes>
+ </resource>
+ <resource>
+ <directory>../../camel-core/src/main/java/org/apache/camel/runtimecatalog/impl</directory>
+ <!-- the following files are maintained in camel-core and not here, so they are copied over -->
+ <includes>
+ <include>AbstractCamelCatalog.java</include>
+ <include>CamelContextJsonSchemaResolver.java</include>
+ <include>CatalogHelper.java</include>
+ <include>JSonSchemaHelper.java</include>
<include>SuggestionStrategy.java</include>
<include>TimePatternConverter.java</include>
<include>UnsafeUriCharactersEncoder.java</include>
@@ -159,27 +164,39 @@
</executions>
<configuration>
<includes>
- <include>${basedir}/src/main/java/org/apache/camel/catalog/AbstractCamelCatalog.java</include>
- <include>${basedir}/src/main/java/org/apache/camel/catalog/CatalogHelper.java</include>
- <include>${basedir}/src/main/java/org/apache/camel/catalog/CollectionStringBuffer.java</include>
- <include>${basedir}/src/main/java/org/apache/camel/catalog/EndpointValidationResult.java</include>
- <include>${basedir}/src/main/java/org/apache/camel/catalog/JSonSchemaHelper.java</include>
- <include>${basedir}/src/main/java/org/apache/camel/catalog/JSonSchemaResolver.java</include>
- <include>${basedir}/src/main/java/org/apache/camel/catalog/LanguageValidationResult.java</include>
- <include>${basedir}/src/main/java/org/apache/camel/catalog/SimpleValidationResult.java</include>
- <include>${basedir}/src/main/java/org/apache/camel/catalog/SuggestionStrategy.java</include>
- <include>${basedir}/src/main/java/org/apache/camel/catalog/TimePatternConverter.java</include>
- <include>${basedir}/src/main/java/org/apache/camel/catalog/UnsafeUriCharactersEncoder.java</include>
- <include>${basedir}/src/main/java/org/apache/camel/catalog/URISupport.java</include>
+ <include>${basedir}/target/generated-sources/java/org/apache/camel/catalog/**.java</include>
</includes>
<replacements>
<replacement>
+ <token>org.apache.camel.runtimecatalog.impl</token>
+ <value>org.apache.camel.catalog</value>
+ </replacement>
+ <replacement>
<token>org.apache.camel.runtimecatalog</token>
<value>org.apache.camel.catalog</value>
</replacement>
</replacements>
</configuration>
</plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>1.7</version>
+ <executions>
+ <execution>
+ <id>add-source</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>${basedir}/target/generated-sources/java</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
<!-- shade caffeine cache for faster Camel and spi-annotations as needed by everybody -->
<!-- shade json-simple for parsing Camel component JSon schema files -->
diff --git a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalogMBeanExporter.java b/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalogMBeanExporter.java
deleted file mode 100644
index c7a69df..0000000
--- a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalogMBeanExporter.java
+++ /dev/null
@@ -1,86 +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.catalog;
-
-import java.lang.management.ManagementFactory;
-import javax.management.InstanceAlreadyExistsException;
-import javax.management.MBeanServer;
-import javax.management.ObjectInstance;
-import javax.management.ObjectName;
-
-/**
- * MBean exporter to register the {@link CamelCatalog} in JMX.
- */
-@Deprecated
-public class CamelCatalogMBeanExporter {
-
- public static final String MBEAN_NAME = "org.apache.camel.catalog:type=catalog,name=catalog";
-
- private CamelCatalog catalog;
- private ObjectName objectName;
- private MBeanServer mBeanServer;
-
- /**
- * Initializes and exports the {@link CamelCatalog} in JMX using the domain name,
- * which can be obtained using {@link #getObjectName()}.
- *
- * @throws Exception is thrown if error during registration
- */
- public void init() throws Exception {
- catalog = new DefaultCamelCatalog();
-
- if (objectName == null) {
- objectName = getObjectName();
- }
-
- if (mBeanServer == null) {
- mBeanServer = ManagementFactory.getPlatformMBeanServer();
- }
-
- if (mBeanServer != null) {
- try {
- // notice some mbean servers may register using a changed object name
- ObjectInstance oi = mBeanServer.registerMBean(catalog, objectName);
- if (oi != null && oi.getObjectName() != null) {
- objectName = oi.getObjectName();
- }
- } catch (InstanceAlreadyExistsException iaee) {
- // Try to remove and re-register
- mBeanServer.unregisterMBean(objectName);
- mBeanServer.registerMBean(catalog, objectName);
- }
- }
- }
-
- /**
- * Destroys and un-registers the {@link CamelCatalog} from JMX.
- *
- * @throws Exception is thrown if error during un-registration
- */
- public void destroy() throws Exception {
- if (mBeanServer != null) {
- if (objectName != null) {
- mBeanServer.unregisterMBean(objectName);
- }
- }
- }
-
- protected ObjectName getObjectName() throws Exception {
- return new ObjectName(MBEAN_NAME);
- }
-
-}
diff --git a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/CollectionStringBuffer.java b/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/CollectionStringBuffer.java
deleted file mode 100644
index 2844ca9..0000000
--- a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/CollectionStringBuffer.java
+++ /dev/null
@@ -1,57 +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.catalog;
-
-public class CollectionStringBuffer {
- private final StringBuilder buffer = new StringBuilder();
- private String separator;
- private boolean first = true;
-
- public CollectionStringBuffer() {
- this(", ");
- }
-
- public CollectionStringBuffer(String separator) {
- this.separator = separator;
- }
-
- @Override
- public String toString() {
- return buffer.toString();
- }
-
- public void append(Object value) {
- if (first) {
- first = false;
- } else {
- buffer.append(separator);
- }
- buffer.append(value);
- }
-
- public String getSeparator() {
- return separator;
- }
-
- public void setSeparator(String separator) {
- this.separator = separator;
- }
-
- public boolean isEmpty() {
- return first;
- }
-}
diff --git a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/EndpointValidationResult.java b/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/EndpointValidationResult.java
deleted file mode 100644
index 718b9a3..0000000
--- a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/EndpointValidationResult.java
+++ /dev/null
@@ -1,488 +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.catalog;
-
-import java.io.Serializable;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import static org.apache.camel.catalog.URISupport.isEmpty;
-
-/**
- * Details result of validating endpoint uri.
- */
-public class EndpointValidationResult implements Serializable {
-
- private final String uri;
- private int errors;
-
- // general
- private String syntaxError;
- private String unknownComponent;
- private String incapable;
-
- // options
- private Set<String> unknown;
- private Map<String, String[]> unknownSuggestions;
- private Set<String> lenient;
- private Set<String> notConsumerOnly;
- private Set<String> notProducerOnly;
- private Set<String> required;
- private Set<String> deprecated;
- private Map<String, String> invalidEnum;
- private Map<String, String[]> invalidEnumChoices;
- private Map<String, String[]> invalidEnumSuggestions;
- private Map<String, String> invalidReference;
- private Map<String, String> invalidBoolean;
- private Map<String, String> invalidInteger;
- private Map<String, String> invalidNumber;
- private Map<String, String> defaultValues;
-
- public EndpointValidationResult() {
- this(null);
- }
-
- public EndpointValidationResult(String uri) {
- this.uri = uri;
- }
-
- public String getUri() {
- return uri;
- }
-
- public boolean hasErrors() {
- return errors > 0;
- }
-
- public int getNumberOfErrors() {
- return errors;
- }
-
- public boolean isSuccess() {
- boolean ok = syntaxError == null && unknownComponent == null && incapable == null
- && unknown == null && required == null;
- if (ok) {
- ok = notConsumerOnly == null && notProducerOnly == null;
- }
- if (ok) {
- ok = invalidEnum == null && invalidEnumChoices == null && invalidReference == null
- && invalidBoolean == null && invalidInteger == null && invalidNumber == null;
- }
- return ok;
- }
-
- public void addSyntaxError(String syntaxError) {
- this.syntaxError = syntaxError;
- errors++;
- }
-
- public void addIncapable(String uri) {
- this.incapable = uri;
- errors++;
- }
-
- public void addUnknownComponent(String name) {
- this.unknownComponent = name;
- errors++;
- }
-
- public void addUnknown(String name) {
- if (unknown == null) {
- unknown = new LinkedHashSet<>();
- }
- if (!unknown.contains(name)) {
- unknown.add(name);
- errors++;
- }
- }
-
- public void addUnknownSuggestions(String name, String[] suggestions) {
- if (unknownSuggestions == null) {
- unknownSuggestions = new LinkedHashMap<>();
- }
- unknownSuggestions.put(name, suggestions);
- }
-
- public void addLenient(String name) {
- if (lenient == null) {
- lenient = new LinkedHashSet<>();
- }
- if (!lenient.contains(name)) {
- lenient.add(name);
- }
- }
-
- public void addRequired(String name) {
- if (required == null) {
- required = new LinkedHashSet<>();
- }
- if (!required.contains(name)) {
- required.add(name);
- errors++;
- }
- }
-
- public void addDeprecated(String name) {
- if (deprecated == null) {
- deprecated = new LinkedHashSet<>();
- }
- if (!deprecated.contains(name)) {
- deprecated.add(name);
- }
- }
-
- public void addInvalidEnum(String name, String value) {
- if (invalidEnum == null) {
- invalidEnum = new LinkedHashMap<>();
- }
- if (!invalidEnum.containsKey(name)) {
- invalidEnum.put(name, value);
- errors++;
- }
- }
-
- public void addInvalidEnumChoices(String name, String[] choices) {
- if (invalidEnumChoices == null) {
- invalidEnumChoices = new LinkedHashMap<>();
- }
- invalidEnumChoices.put(name, choices);
- }
-
- public void addInvalidEnumSuggestions(String name, String[] suggestions) {
- if (invalidEnumSuggestions == null) {
- invalidEnumSuggestions = new LinkedHashMap<>();
- }
- invalidEnumSuggestions.put(name, suggestions);
- }
-
- public void addInvalidReference(String name, String value) {
- if (invalidReference == null) {
- invalidReference = new LinkedHashMap<>();
- }
- if (!invalidReference.containsKey(name)) {
- invalidReference.put(name, value);
- errors++;
- }
- }
-
- public void addInvalidBoolean(String name, String value) {
- if (invalidBoolean == null) {
- invalidBoolean = new LinkedHashMap<>();
- }
- if (!invalidBoolean.containsKey(name)) {
- invalidBoolean.put(name, value);
- errors++;
- }
- }
-
- public void addInvalidInteger(String name, String value) {
- if (invalidInteger == null) {
- invalidInteger = new LinkedHashMap<>();
- }
- if (!invalidInteger.containsKey(name)) {
- invalidInteger.put(name, value);
- errors++;
- }
- }
-
- public void addInvalidNumber(String name, String value) {
- if (invalidNumber == null) {
- invalidNumber = new LinkedHashMap<>();
- }
- if (!invalidNumber.containsKey(name)) {
- invalidNumber.put(name, value);
- errors++;
- }
- }
-
- public void addDefaultValue(String name, String value) {
- if (defaultValues == null) {
- defaultValues = new LinkedHashMap<>();
- }
- defaultValues.put(name, value);
- }
-
- public void addNotConsumerOnly(String name) {
- if (notConsumerOnly == null) {
- notConsumerOnly = new LinkedHashSet<>();
- }
- if (!notConsumerOnly.contains(name)) {
- notConsumerOnly.add(name);
- errors++;
- }
- }
-
- public void addNotProducerOnly(String name) {
- if (notProducerOnly == null) {
- notProducerOnly = new LinkedHashSet<>();
- }
- if (!notProducerOnly.contains(name)) {
- notProducerOnly.add(name);
- errors++;
- }
- }
-
- public String getSyntaxError() {
- return syntaxError;
- }
-
- public String getIncapable() {
- return incapable;
- }
-
- public Set<String> getUnknown() {
- return unknown;
- }
-
- public Set<String> getLenient() {
- return lenient;
- }
-
- public Map<String, String[]> getUnknownSuggestions() {
- return unknownSuggestions;
- }
-
- public String getUnknownComponent() {
- return unknownComponent;
- }
-
- public Set<String> getRequired() {
- return required;
- }
-
- public Set<String> getDeprecated() {
- return deprecated;
- }
-
- public Map<String, String> getInvalidEnum() {
- return invalidEnum;
- }
-
- public Map<String, String[]> getInvalidEnumChoices() {
- return invalidEnumChoices;
- }
-
- public List<String> getEnumChoices(String optionName) {
- if (invalidEnumChoices != null) {
- String[] enums = invalidEnumChoices.get(optionName);
- if (enums != null) {
- return Arrays.asList(enums);
- }
- }
-
- return Collections.emptyList();
- }
-
- public Map<String, String> getInvalidReference() {
- return invalidReference;
- }
-
- public Map<String, String> getInvalidBoolean() {
- return invalidBoolean;
- }
-
- public Map<String, String> getInvalidInteger() {
- return invalidInteger;
- }
-
- public Map<String, String> getInvalidNumber() {
- return invalidNumber;
- }
-
- public Map<String, String> getDefaultValues() {
- return defaultValues;
- }
-
- public Set<String> getNotConsumerOnly() {
- return notConsumerOnly;
- }
-
- public Set<String> getNotProducerOnly() {
- return notProducerOnly;
- }
-
- /**
- * A human readable summary of the validation errors.
- *
- * @param includeHeader whether to include a header
- * @return the summary, or <tt>null</tt> if no validation errors
- */
- public String summaryErrorMessage(boolean includeHeader) {
- return summaryErrorMessage(includeHeader, true);
- }
-
- /**
- * A human readable summary of the validation errors.
- *
- * @param includeHeader whether to include a header
- * @param ignoreDeprecated whether to ignore deprecated options in use as an error or not
- * @return the summary, or <tt>null</tt> if no validation errors
- */
- public String summaryErrorMessage(boolean includeHeader, boolean ignoreDeprecated) {
- boolean ok = isSuccess();
-
- // special check if we should ignore deprecated options being used
- if (ok && !ignoreDeprecated) {
- ok = deprecated == null;
- }
-
- if (ok) {
- return null;
- }
-
- if (incapable != null) {
- return "\tIncapable of parsing uri: " + incapable;
- } else if (syntaxError != null) {
- return "\tSyntax error: " + syntaxError;
- } else if (unknownComponent != null) {
- return "\tUnknown component: " + unknownComponent;
- }
-
- // for each invalid option build a reason message
- Map<String, String> options = new LinkedHashMap<>();
- if (unknown != null) {
- for (String name : unknown) {
- if (unknownSuggestions != null && unknownSuggestions.containsKey(name)) {
- String[] suggestions = unknownSuggestions.get(name);
- if (suggestions != null && suggestions.length > 0) {
- String str = Arrays.asList(suggestions).toString();
- options.put(name, "Unknown option. Did you mean: " + str);
- } else {
- options.put(name, "Unknown option");
- }
- } else {
- options.put(name, "Unknown option");
- }
- }
- }
- if (notConsumerOnly != null) {
- for (String name : notConsumerOnly) {
- options.put(name, "Option not applicable in consumer only mode");
- }
- }
- if (notProducerOnly != null) {
- for (String name : notProducerOnly) {
- options.put(name, "Option not applicable in producer only mode");
- }
- }
- if (required != null) {
- for (String name : required) {
- options.put(name, "Missing required option");
- }
- }
- if (deprecated != null) {
- for (String name : deprecated) {
- options.put(name, "Deprecated option");
- }
- }
- if (invalidEnum != null) {
- for (Map.Entry<String, String> entry : invalidEnum.entrySet()) {
- String name = entry.getKey();
- String[] choices = invalidEnumChoices.get(name);
- String defaultValue = defaultValues != null ? defaultValues.get(entry.getKey()) : null;
- String str = Arrays.asList(choices).toString();
- String msg = "Invalid enum value: " + entry.getValue() + ". Possible values: " + str;
- if (invalidEnumSuggestions != null) {
- String[] suggestions = invalidEnumSuggestions.get(name);
- if (suggestions != null && suggestions.length > 0) {
- str = Arrays.asList(suggestions).toString();
- msg += ". Did you mean: " + str;
- }
- }
- if (defaultValue != null) {
- msg += ". Default value: " + defaultValue;
- }
-
- options.put(entry.getKey(), msg);
- }
- }
- if (invalidReference != null) {
- for (Map.Entry<String, String> entry : invalidReference.entrySet()) {
- boolean empty = isEmpty(entry.getValue());
- if (empty) {
- options.put(entry.getKey(), "Empty reference value");
- } else if (!entry.getValue().startsWith("#")) {
- options.put(entry.getKey(), "Invalid reference value: " + entry.getValue() + " must start with #");
- } else {
- options.put(entry.getKey(), "Invalid reference value: " + entry.getValue());
- }
- }
- }
- if (invalidBoolean != null) {
- for (Map.Entry<String, String> entry : invalidBoolean.entrySet()) {
- boolean empty = isEmpty(entry.getValue());
- if (empty) {
- options.put(entry.getKey(), "Empty boolean value");
- } else {
- options.put(entry.getKey(), "Invalid boolean value: " + entry.getValue());
- }
- }
- }
- if (invalidInteger != null) {
- for (Map.Entry<String, String> entry : invalidInteger.entrySet()) {
- boolean empty = isEmpty(entry.getValue());
- if (empty) {
- options.put(entry.getKey(), "Empty integer value");
- } else {
- options.put(entry.getKey(), "Invalid integer value: " + entry.getValue());
- }
- }
- }
- if (invalidNumber != null) {
- for (Map.Entry<String, String> entry : invalidNumber.entrySet()) {
- boolean empty = isEmpty(entry.getValue());
- if (empty) {
- options.put(entry.getKey(), "Empty number value");
- } else {
- options.put(entry.getKey(), "Invalid number value: " + entry.getValue());
- }
- }
- }
-
- // build a table with the error summary nicely formatted
- // lets use 24 as min length
- int maxLen = 24;
- for (String key : options.keySet()) {
- maxLen = Math.max(maxLen, key.length());
- }
- String format = "%" + maxLen + "s %s";
-
- // build the human error summary
- StringBuilder sb = new StringBuilder();
- if (includeHeader) {
- sb.append("Endpoint validator error\n");
- sb.append("---------------------------------------------------------------------------------------------------------------------------------------\n");
- sb.append("\n");
- }
- if (uri != null) {
- sb.append("\t").append(uri).append("\n");
- } else {
- sb.append("\n");
- }
- for (Map.Entry<String, String> option : options.entrySet()) {
- String out = String.format(format, option.getKey(), option.getValue());
- sb.append("\n\t").append(out);
- }
-
- return sb.toString();
- }
-}
diff --git a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/JSonSchemaResolver.java b/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/JSonSchemaResolver.java
deleted file mode 100644
index 9bf09cc..0000000
--- a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/JSonSchemaResolver.java
+++ /dev/null
@@ -1,64 +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.catalog;
-
-/**
- * Pluggable resolver to load JSon schema files for components, data formats, languages etc.
- */
-public interface JSonSchemaResolver {
-
- /**
- * Returns the component information as JSon format.
- *
- * @param name the component name
- * @return component details in JSon
- */
- String getComponentJSonSchema(String name);
-
- /**
- * Returns the data format information as JSon format.
- *
- * @param name the data format name
- * @return data format details in JSon
- */
- String getDataFormatJSonSchema(String name);
-
- /**
- * Returns the language information as JSon format.
- *
- * @param name the language name
- * @return language details in JSon
- */
- String getLanguageJSonSchema(String name);
-
- /**
- * Returns the other (miscellaneous) information as JSon format.
- *
- * @param name the other (miscellaneous) name
- * @return other (miscellaneous) details in JSon
- */
- String getOtherJSonSchema(String name);
-
- /**
- * Returns the model information as JSon format.
- *
- * @param name the model name
- * @return model details in JSon
- */
- String getModelJSonSchema(String name);
-
-}
diff --git a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/LanguageValidationResult.java b/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/LanguageValidationResult.java
deleted file mode 100644
index 4a977eb..0000000
--- a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/LanguageValidationResult.java
+++ /dev/null
@@ -1,65 +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.catalog;
-
-import java.io.Serializable;
-
-/**
- * Validation result of parsing a language expression or predicate
- */
-public class LanguageValidationResult implements Serializable {
- private final String text;
- private String error;
- private String shortError;
- private int index;
-
- public LanguageValidationResult(String text) {
- this.text = text;
- }
-
- public String getText() {
- return text;
- }
-
- public boolean isSuccess() {
- return error == null;
- }
-
- public void setError(String error) {
- this.error = error;
- }
-
- public String getError() {
- return error;
- }
-
- public String getShortError() {
- return shortError;
- }
-
- public void setShortError(String shortError) {
- this.shortError = shortError;
- }
-
- public int getIndex() {
- return index;
- }
-
- public void setIndex(int index) {
- this.index = index;
- }
-}
diff --git a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/SuggestionStrategy.java b/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/SuggestionStrategy.java
deleted file mode 100644
index 057d372..0000000
--- a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/SuggestionStrategy.java
+++ /dev/null
@@ -1,34 +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.catalog;
-
-import java.util.Set;
-
-/**
- * Strategy to provide suggestions for unknown endpoint options
- */
-public interface SuggestionStrategy {
-
- /**
- * Provides a list of valid option names for a did you mean function.
- *
- * @param names valid names
- * @param unknownOption unknown option name
- * @return a list of suggested names (did you mean)
- */
- String[] suggestEndpointOptions(Set<String> names, String unknownOption);
-}
diff --git a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/URISupport.java b/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/URISupport.java
deleted file mode 100644
index f2079c1..0000000
--- a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/URISupport.java
+++ /dev/null
@@ -1,392 +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.catalog;
-
-import java.io.UnsupportedEncodingException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.net.URLDecoder;
-import java.net.URLEncoder;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Copied from org.apache.camel.util.URISupport
- */
-public final class URISupport {
-
- public static final String RAW_TOKEN_START = "RAW(";
- public static final String RAW_TOKEN_END = ")";
-
- private static final String CHARSET = "UTF-8";
-
- private URISupport() {
- // Helper class
- }
-
- /**
- * Normalizes the URI so unsafe characters is encoded
- *
- * @param uri the input uri
- * @return as URI instance
- * @throws URISyntaxException is thrown if syntax error in the input uri
- */
- public static URI normalizeUri(String uri) throws URISyntaxException {
- return new URI(UnsafeUriCharactersEncoder.encode(uri, true));
- }
-
- public static Map<String, Object> extractProperties(Map<String, Object> properties, String optionPrefix) {
- Map<String, Object> rc = new LinkedHashMap<>(properties.size());
-
- for (Iterator<Map.Entry<String, Object>> it = properties.entrySet().iterator(); it.hasNext();) {
- Map.Entry<String, Object> entry = it.next();
- String name = entry.getKey();
- if (name.startsWith(optionPrefix)) {
- Object value = properties.get(name);
- name = name.substring(optionPrefix.length());
- rc.put(name, value);
- it.remove();
- }
- }
-
- return rc;
- }
-
- /**
- * Strips the query parameters from the uri
- *
- * @param uri the uri
- * @return the uri without the query parameter
- */
- public static String stripQuery(String uri) {
- int idx = uri.indexOf('?');
- if (idx > -1) {
- uri = uri.substring(0, idx);
- }
- return uri;
- }
-
- /**
- * Parses the query parameters of the uri (eg the query part).
- *
- * @param uri the uri
- * @return the parameters, or an empty map if no parameters (eg never null)
- * @throws URISyntaxException is thrown if uri has invalid syntax.
- */
- public static Map<String, Object> parseParameters(URI uri) throws URISyntaxException {
- String query = uri.getQuery();
- if (query == null) {
- String schemeSpecificPart = uri.getSchemeSpecificPart();
- int idx = schemeSpecificPart.indexOf('?');
- if (idx < 0) {
- // return an empty map
- return new LinkedHashMap<>(0);
- } else {
- query = schemeSpecificPart.substring(idx + 1);
- }
- } else {
- query = stripPrefix(query, "?");
- }
- return parseQuery(query);
- }
-
- /**
- * Strips the prefix from the value.
- * <p/>
- * Returns the value as-is if not starting with the prefix.
- *
- * @param value the value
- * @param prefix the prefix to remove from value
- * @return the value without the prefix
- */
- public static String stripPrefix(String value, String prefix) {
- if (value != null && value.startsWith(prefix)) {
- return value.substring(prefix.length());
- }
- return value;
- }
-
- /**
- * Parses the query part of the uri (eg the parameters).
- * <p/>
- * The URI parameters will by default be URI encoded. However you can define a parameter
- * values with the syntax: <tt>key=RAW(value)</tt> which tells Camel to not encode the value,
- * and use the value as is (eg key=value) and the value has <b>not</b> been encoded.
- *
- * @param uri the uri
- * @return the parameters, or an empty map if no parameters (eg never null)
- * @throws URISyntaxException is thrown if uri has invalid syntax.
- * @see #RAW_TOKEN_START
- * @see #RAW_TOKEN_END
- */
- public static Map<String, Object> parseQuery(String uri) throws URISyntaxException {
- return parseQuery(uri, false);
- }
-
- /**
- * Parses the query part of the uri (eg the parameters).
- * <p/>
- * The URI parameters will by default be URI encoded. However you can define a parameter
- * values with the syntax: <tt>key=RAW(value)</tt> which tells Camel to not encode the value,
- * and use the value as is (eg key=value) and the value has <b>not</b> been encoded.
- *
- * @param uri the uri
- * @param useRaw whether to force using raw values
- * @return the parameters, or an empty map if no parameters (eg never null)
- * @throws URISyntaxException is thrown if uri has invalid syntax.
- * @see #RAW_TOKEN_START
- * @see #RAW_TOKEN_END
- */
- public static Map<String, Object> parseQuery(String uri, boolean useRaw) throws URISyntaxException {
- // must check for trailing & as the uri.split("&") will ignore those
- if (uri != null && uri.endsWith("&")) {
- throw new URISyntaxException(uri, "Invalid uri syntax: Trailing & marker found. "
- + "Check the uri and remove the trailing & marker.");
- }
-
- if (isEmpty(uri)) {
- // return an empty map
- return new LinkedHashMap<>(0);
- }
-
- // need to parse the uri query parameters manually as we cannot rely on splitting by &,
- // as & can be used in a parameter value as well.
-
- try {
- // use a linked map so the parameters is in the same order
- Map<String, Object> rc = new LinkedHashMap<>();
-
- boolean isKey = true;
- boolean isValue = false;
- boolean isRaw = false;
- StringBuilder key = new StringBuilder();
- StringBuilder value = new StringBuilder();
-
- // parse the uri parameters char by char
- for (int i = 0; i < uri.length(); i++) {
- // current char
- char ch = uri.charAt(i);
- // look ahead of the next char
- char next;
- if (i <= uri.length() - 2) {
- next = uri.charAt(i + 1);
- } else {
- next = '\u0000';
- }
-
- // are we a raw value
- isRaw = value.toString().startsWith(RAW_TOKEN_START);
-
- // if we are in raw mode, then we keep adding until we hit the end marker
- if (isRaw) {
- if (isKey) {
- key.append(ch);
- } else if (isValue) {
- value.append(ch);
- }
-
- // we only end the raw marker if its )& or at the end of the value
-
- boolean end = ch == RAW_TOKEN_END.charAt(0) && (next == '&' || next == '\u0000');
- if (end) {
- // raw value end, so add that as a parameter, and reset flags
- addParameter(key.toString(), value.toString(), rc, useRaw || isRaw);
- key.setLength(0);
- value.setLength(0);
- isKey = true;
- isValue = false;
- isRaw = false;
- // skip to next as we are in raw mode and have already added the value
- i++;
- }
- continue;
- }
-
- // if its a key and there is a = sign then the key ends and we are in value mode
- if (isKey && ch == '=') {
- isKey = false;
- isValue = true;
- isRaw = false;
- continue;
- }
-
- // the & denote parameter is ended
- if (ch == '&') {
- // parameter is ended, as we hit & separator
- String aKey = key.toString();
- // the key may be a placeholder of options which we then do not know what is
- boolean validKey = !aKey.startsWith("{{") && !aKey.endsWith("}}");
- if (validKey) {
- addParameter(aKey, value.toString(), rc, useRaw || isRaw);
- }
- key.setLength(0);
- value.setLength(0);
- isKey = true;
- isValue = false;
- isRaw = false;
- continue;
- }
-
- // regular char so add it to the key or value
- if (isKey) {
- key.append(ch);
- } else if (isValue) {
- value.append(ch);
- }
- }
-
- // any left over parameters, then add that
- if (key.length() > 0) {
- String aKey = key.toString();
- // the key may be a placeholder of options which we then do not know what is
- boolean validKey = !aKey.startsWith("{{") && !aKey.endsWith("}}");
- if (validKey) {
- addParameter(aKey, value.toString(), rc, useRaw || isRaw);
- }
- }
-
- return rc;
-
- } catch (UnsupportedEncodingException e) {
- URISyntaxException se = new URISyntaxException(e.toString(), "Invalid encoding");
- se.initCause(e);
- throw se;
- }
- }
-
- @SuppressWarnings("unchecked")
- private static void addParameter(String name, String value, Map<String, Object> map, boolean isRaw) throws UnsupportedEncodingException {
- name = URLDecoder.decode(name, CHARSET);
- if (!isRaw) {
- // need to replace % with %25
- value = URLDecoder.decode(value.replaceAll("%", "%25"), CHARSET);
- }
-
- // does the key already exist?
- if (map.containsKey(name)) {
- // yes it does, so make sure we can support multiple values, but using a list
- // to hold the multiple values
- Object existing = map.get(name);
- List<String> list;
- if (existing instanceof List) {
- list = (List<String>) existing;
- } else {
- // create a new list to hold the multiple values
- list = new ArrayList<>();
- String s = existing != null ? existing.toString() : null;
- if (s != null) {
- list.add(s);
- }
- }
- list.add(value);
- map.put(name, list);
- } else {
- map.put(name, value);
- }
- }
-
- /**
- * Assembles a query from the given map.
- *
- * @param options the map with the options (eg key/value pairs)
- * @param ampersand to use & for Java code, and & for XML
- * @return a query string with <tt>key1=value&key2=value2&...</tt>, or an empty string if there is no options.
- * @throws URISyntaxException is thrown if uri has invalid syntax.
- */
- public static String createQueryString(Map<String, String> options, String ampersand, boolean encode) throws URISyntaxException {
- try {
- if (options.size() > 0) {
- StringBuilder rc = new StringBuilder();
- boolean first = true;
- for (Object o : options.keySet()) {
- if (first) {
- first = false;
- } else {
- rc.append(ampersand);
- }
-
- String key = (String) o;
- Object value = options.get(key);
-
- // use the value as a String
- String s = value != null ? value.toString() : null;
- appendQueryStringParameter(key, s, rc, encode);
- }
- return rc.toString();
- } else {
- return "";
- }
- } catch (UnsupportedEncodingException e) {
- URISyntaxException se = new URISyntaxException(e.toString(), "Invalid encoding");
- se.initCause(e);
- throw se;
- }
- }
-
- private static void appendQueryStringParameter(String key, String value, StringBuilder rc, boolean encode) throws UnsupportedEncodingException {
- if (encode) {
- rc.append(URLEncoder.encode(key, CHARSET));
- } else {
- rc.append(key);
- }
- // only append if value is not null
- if (value != null) {
- rc.append("=");
- if (value.startsWith(RAW_TOKEN_START) && value.endsWith(RAW_TOKEN_END)) {
- // do not encode RAW parameters
- rc.append(value);
- } else {
- if (encode) {
- rc.append(URLEncoder.encode(value, CHARSET));
- } else {
- rc.append(value);
- }
- }
- }
- }
-
- /**
- * Tests whether the value is <tt>null</tt> or an empty string.
- *
- * @param value the value, if its a String it will be tested for text length as well
- * @return true if empty
- */
- public static boolean isEmpty(Object value) {
- return !isNotEmpty(value);
- }
-
- /**
- * Tests whether the value is <b>not</b> <tt>null</tt> or an empty string.
- *
- * @param value the value, if its a String it will be tested for text length as well
- * @return true if <b>not</b> empty
- */
- public static boolean isNotEmpty(Object value) {
- if (value == null) {
- return false;
- } else if (value instanceof String) {
- String text = (String) value;
- return text.trim().length() > 0;
- } else {
- return true;
- }
- }
-
-}
diff --git a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/UnsafeUriCharactersEncoder.java b/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/UnsafeUriCharactersEncoder.java
deleted file mode 100644
index 04d7753..0000000
--- a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/UnsafeUriCharactersEncoder.java
+++ /dev/null
@@ -1,206 +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.catalog;
-
-import java.util.ArrayList;
-import java.util.BitSet;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * Encoder for unsafe URI characters.
- * <p/>
- * A good source for details is <a href="http://en.wikipedia.org/wiki/Url_encode">wikipedia url encode</a> article.
- */
-public final class UnsafeUriCharactersEncoder {
- private static BitSet unsafeCharactersRfc1738;
- private static BitSet unsafeCharactersHttp;
- private static final char[] HEX_DIGITS = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C',
- 'D', 'E', 'F', 'a', 'b', 'c', 'd', 'e', 'f'};
- private static final Pattern RAW_PATTERN = Pattern.compile("RAW\\([^\\)]+\\)");
-
- static {
- unsafeCharactersRfc1738 = new BitSet(256);
- unsafeCharactersRfc1738.set(' ');
- unsafeCharactersRfc1738.set('"');
- unsafeCharactersRfc1738.set('<');
- unsafeCharactersRfc1738.set('>');
- unsafeCharactersRfc1738.set('#');
- unsafeCharactersRfc1738.set('%');
- unsafeCharactersRfc1738.set('{');
- unsafeCharactersRfc1738.set('}');
- unsafeCharactersRfc1738.set('|');
- unsafeCharactersRfc1738.set('\\');
- unsafeCharactersRfc1738.set('^');
- unsafeCharactersRfc1738.set('~');
- unsafeCharactersRfc1738.set('[');
- unsafeCharactersRfc1738.set(']');
- unsafeCharactersRfc1738.set('`');
- }
-
- static {
- unsafeCharactersHttp = new BitSet(256);
- unsafeCharactersHttp.set(' ');
- unsafeCharactersHttp.set('"');
- unsafeCharactersHttp.set('<');
- unsafeCharactersHttp.set('>');
- unsafeCharactersHttp.set('#');
- unsafeCharactersHttp.set('%');
- unsafeCharactersHttp.set('{');
- unsafeCharactersHttp.set('}');
- unsafeCharactersHttp.set('|');
- unsafeCharactersHttp.set('\\');
- unsafeCharactersHttp.set('^');
- unsafeCharactersHttp.set('~');
- unsafeCharactersHttp.set('`');
- }
-
- private UnsafeUriCharactersEncoder() {
- // util class
- }
-
- public static String encode(String s) {
- return encode(s, unsafeCharactersRfc1738);
- }
-
- public static String encodeHttpURI(String s) {
- return encode(s, unsafeCharactersHttp);
- }
-
- public static String encode(String s, BitSet unsafeCharacters) {
- return encode(s, unsafeCharacters, false);
- }
-
- public static String encode(String s, boolean checkRaw) {
- return encode(s, unsafeCharactersRfc1738, checkRaw);
- }
-
- public static String encodeHttpURI(String s, boolean checkRaw) {
- return encode(s, unsafeCharactersHttp, checkRaw);
- }
-
- private static List<Pair> checkRAW(String s) {
- Matcher matcher = RAW_PATTERN.matcher(s);
- List<Pair> answer = new ArrayList<>();
- // Check all occurrences
- while (matcher.find()) {
- answer.add(new Pair(matcher.start(), matcher.end()));
- }
- return answer;
- }
-
- private static boolean isRaw(int index, List<Pair> pairs) {
- for (Pair pair : pairs) {
- if (index < pair.left) {
- return false;
- } else {
- if (index >= pair.left) {
- if (index <= pair.right) {
- return true;
- } else {
- continue;
- }
- }
- }
- }
- return false;
- }
-
- private static class Pair {
- int left;
- int right;
-
- Pair(int left, int right) {
- this.left = left;
- this.right = right;
- }
- }
-
- // Just skip the encode for isRAW part
- public static String encode(String s, BitSet unsafeCharacters, boolean checkRaw) {
- List<Pair> rawPairs;
- if (checkRaw) {
- rawPairs = checkRAW(s);
- } else {
- rawPairs = new ArrayList<>();
- }
-
- int n = s == null ? 0 : s.length();
- if (n == 0) {
- return s;
- }
-
- // First check whether we actually need to encode
- char chars[] = s.toCharArray();
- for (int i = 0;;) {
- // just deal with the ascii character
- if (chars[i] > 0 && chars[i] < 128) {
- if (unsafeCharacters.get(chars[i])) {
- break;
- }
- }
- if (++i >= chars.length) {
- return s;
- }
- }
-
- // okay there are some unsafe characters so we do need to encode
- // see details at: http://en.wikipedia.org/wiki/Url_encode
- StringBuilder sb = new StringBuilder();
- for (int i = 0; i < chars.length; i++) {
- char ch = chars[i];
- if (ch > 0 && ch < 128 && unsafeCharacters.get(ch)) {
- // special for % sign as it may be a decimal encoded value
- if (ch == '%') {
- char next = i + 1 < chars.length ? chars[i + 1] : ' ';
- char next2 = i + 2 < chars.length ? chars[i + 2] : ' ';
-
- if (isHexDigit(next) && isHexDigit(next2) && !isRaw(i, rawPairs)) {
- // its already encoded (decimal encoded) so just append as is
- sb.append(ch);
- } else {
- // must escape then, as its an unsafe character
- appendEscape(sb, (byte) ch);
- }
- } else {
- // must escape then, as its an unsafe character
- appendEscape(sb, (byte) ch);
- }
- } else {
- sb.append(ch);
- }
- }
- return sb.toString();
- }
-
- private static void appendEscape(StringBuilder sb, byte b) {
- sb.append('%');
- sb.append(HEX_DIGITS[(b >> 4) & 0x0f]);
- sb.append(HEX_DIGITS[(b >> 0) & 0x0f]);
- }
-
- private static boolean isHexDigit(char ch) {
- for (char hex : HEX_DIGITS) {
- if (hex == ch) {
- return true;
- }
- }
- return false;
- }
-
-}
diff --git a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/ContextInfoCommand.java b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/ContextInfoCommand.java
index 419bad8..8833557 100644
--- a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/ContextInfoCommand.java
+++ b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/ContextInfoCommand.java
@@ -24,7 +24,7 @@ import java.util.Map;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
-import org.apache.camel.util.CamelContextStatDump;
+import org.apache.camel.support.dump.CamelContextStatDump;
import static org.apache.camel.util.ObjectHelper.isEmpty;
diff --git a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RouteInfoCommand.java b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RouteInfoCommand.java
index 49bc4c1..0a06288 100644
--- a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RouteInfoCommand.java
+++ b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RouteInfoCommand.java
@@ -23,7 +23,7 @@ import java.util.Date;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
-import org.apache.camel.util.RouteStatDump;
+import org.apache.camel.support.dump.RouteStatDump;
import static org.apache.camel.util.ObjectHelper.isEmpty;
diff --git a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RouteProfileCommand.java b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RouteProfileCommand.java
index 6cafc2c..3b388d4 100644
--- a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RouteProfileCommand.java
+++ b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RouteProfileCommand.java
@@ -21,8 +21,8 @@ import java.io.StringReader;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
-import org.apache.camel.util.ProcessorStatDump;
-import org.apache.camel.util.RouteStatDump;
+import org.apache.camel.support.dump.ProcessorStatDump;
+import org.apache.camel.support.dump.RouteStatDump;
/**
* Command to display profile information about a Camel route.
diff --git a/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml b/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
index 91748ec..dadf55a 100644
--- a/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
+++ b/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
@@ -269,6 +269,11 @@
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
+ <artifactId>camel-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
<artifactId>camel-apns</artifactId>
<version>${project.version}</version>
</dependency>
@@ -2881,6 +2886,11 @@
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
+ <artifactId>camel-util</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
<artifactId>camel-velocity</artifactId>
<version>${project.version}</version>
</dependency>
diff --git a/pom.xml b/pom.xml
index ae11fdf..3b6723c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -145,6 +145,8 @@
<module>etc</module>
<module>bom</module>
<module>buildingtools</module>
+ <module>camel-util</module>
+ <module>camel-api</module>
<module>camel-core</module>
<module>components</module>
<module>archetypes</module>