use of io.quarkus.runtime.RuntimeValue in project camel-quarkus by apache.
the class CamelDozerRecorder method createDozerBeanMapperConfiguration.
public RuntimeValue<DozerBeanMapperConfiguration> createDozerBeanMapperConfiguration(List<String> mappingFiles) {
DozerBeanMapperConfiguration dozerBeanMapperConfiguration = new DozerBeanMapperConfiguration();
dozerBeanMapperConfiguration.setMappingFiles(mappingFiles);
return new RuntimeValue<>(dozerBeanMapperConfiguration);
}
use of io.quarkus.runtime.RuntimeValue in project camel-quarkus by apache.
the class FhirContextRecorder method createDstu2FhirContext.
public RuntimeValue<FhirContext> createDstu2FhirContext(Collection<String> resourceDefinitions) {
FhirContext fhirContext = FhirContext.forDstu2();
initContext(resourceDefinitions, fhirContext);
return new RuntimeValue<>(fhirContext);
}
use of io.quarkus.runtime.RuntimeValue in project camel-quarkus by apache.
the class CamelProcessor method typeConverterRegistry.
/*
* Discover {@link TypeConverterLoader}.
*/
@SuppressWarnings("unchecked")
@Record(ExecutionTime.STATIC_INIT)
@BuildStep
CamelTypeConverterRegistryBuildItem typeConverterRegistry(CamelRecorder recorder, ApplicationArchivesBuildItem applicationArchives, List<CamelTypeConverterLoaderBuildItem> additionalLoaders, CombinedIndexBuildItem combinedIndex, BuildProducer<ReflectiveClassBuildItem> reflectiveClasses) {
IndexView index = combinedIndex.getIndex();
RuntimeValue<TypeConverterRegistry> typeConverterRegistry = recorder.createTypeConverterRegistry();
//
// This should be simplified by searching for classes implementing TypeConverterLoader but that
// would lead to have org.apache.camel.impl.converter.AnnotationTypeConverterLoader taken into
// account even if it should not.
//
final ClassLoader TCCL = Thread.currentThread().getContextClassLoader();
for (ApplicationArchive archive : applicationArchives.getAllApplicationArchives()) {
for (Path root : archive.getRootDirs()) {
Path path = root.resolve(BaseTypeConverterRegistry.META_INF_SERVICES_TYPE_CONVERTER_LOADER);
if (!Files.isRegularFile(path)) {
continue;
}
try {
Files.readAllLines(path, StandardCharsets.UTF_8).stream().map(String::trim).filter(l -> !l.isEmpty()).filter(l -> !l.startsWith("#")).map(l -> (Class<? extends TypeConverterLoader>) CamelSupport.loadClass(l, TCCL)).forEach(loader -> recorder.addTypeConverterLoader(typeConverterRegistry, loader));
} catch (IOException e) {
throw new RuntimeException("Error discovering TypeConverterLoader", e);
}
}
}
Set<String> internalConverters = new HashSet<>();
// ignore all @converters from org.apache.camel:camel-* dependencies
for (ApplicationArchive archive : applicationArchives.getAllApplicationArchives()) {
ArtifactKey artifactKey = archive.getKey();
if (artifactKey != null && "org.apache.camel".equals(artifactKey.getGroupId()) && artifactKey.getArtifactId().startsWith("camel-")) {
internalConverters.addAll(archive.getIndex().getAnnotations(DotName.createSimple(Converter.class.getName())).stream().filter(a -> a.target().kind() == AnnotationTarget.Kind.CLASS).map(a -> a.target().asClass().name().toString()).collect(Collectors.toSet()));
}
}
Set<Class> convertersClasses = index.getAnnotations(DotName.createSimple(Converter.class.getName())).stream().filter(a -> a.target().kind() == AnnotationTarget.Kind.CLASS && (a.value("generateBulkLoader") == null || !a.value("generateBulkLoader").asBoolean()) && (a.value("generateLoader") == null || !a.value("generateLoader").asBoolean())).map(a -> a.target().asClass().name().toString()).filter(s -> !internalConverters.contains(s)).map(s -> CamelSupport.loadClass(s, TCCL)).collect(Collectors.toSet());
recorder.loadAnnotatedConverters(typeConverterRegistry, convertersClasses);
//
for (CamelTypeConverterLoaderBuildItem item : additionalLoaders) {
recorder.addTypeConverterLoader(typeConverterRegistry, item.getValue());
}
return new CamelTypeConverterRegistryBuildItem(typeConverterRegistry);
}
use of io.quarkus.runtime.RuntimeValue in project camel-quarkus by apache.
the class ConsumeRecorder method getEndpointUri.
public RuntimeValue<Object> getEndpointUri(RuntimeValue<CamelContext> camelContext, String beanName, String endpointMethodName) {
/* Possible improvement: Instead of using reflection, we could generate this method at build time
* to call the bean method directly */
Object bean = camelContext.getValue().getRegistry().lookupByName(beanName);
Method method = null;
try {
Class<?> cl = bean.getClass();
do {
method = Stream.of(cl.getDeclaredMethods()).filter(m -> m.getName().equals(endpointMethodName) && m.getParameterCount() == 0).findFirst().orElse(null);
cl = cl.getSuperclass();
} while (method == null && cl != Object.class);
Object result = method.invoke(bean);
return new RuntimeValue<>(result);
} catch (SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
throw new RuntimeException(e);
}
}
use of io.quarkus.runtime.RuntimeValue in project camel-quarkus by apache.
the class CamelMainRecorder method createRuntime.
public RuntimeValue<CamelRuntime> createRuntime(BeanContainer beanContainer, RuntimeValue<CamelMain> main, long shutdownTimeoutMs) {
final CamelRuntime runtime = new CamelMainRuntime(main.getValue(), shutdownTimeoutMs);
// register to the container
beanContainer.instance(CamelProducers.class).setRuntime(runtime);
return new RuntimeValue<>(runtime);
}
Aggregations