use of org.apache.camel.catalog.Kind in project camel-quarkus by apache.
the class UpdateExtensionDocPageMojo method camelBits.
void camelBits(Charset charset, Configuration cfg, List<ArtifactModel<?>> models, Path multiModuleProjectDirectoryPath, CamelQuarkusExtension ext, Map<String, Object> model) {
models.stream().filter(CqCatalog::isFirstScheme).forEach(m -> {
final Kind kind = Kind.valueOf(m.getKind());
final HashMap<String, Object> modelClone = new HashMap<>(model);
modelClone.put("camelPartName", m.getName());
modelClone.put("camelPartTitle", m.getTitle());
modelClone.put("camelPartDescription", m.getDescription());
final ArtifactModel<?> camelDocModel = CqCatalog.toCamelDocsModel(m);
final Path docPagePath = multiModuleProjectDirectoryPath.resolve("docs/modules/ROOT/examples/" + CqUtils.kindPlural(kind) + "/" + camelDocModel.getName() + ".yml");
evalTemplate(charset, docPagePath, cfg, modelClone, "extensions-camel-bits.yml", "#");
});
}
use of org.apache.camel.catalog.Kind in project cq-maven-plugin by l2x6.
the class SyncExtensionListMojo method execute.
/**
* Execute goal.
*
* @throws MojoExecutionException execution of the main class or one of the
* threads it generated failed.
* @throws MojoFailureException something bad happened...
*/
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
final Path localRepositoryPath = Paths.get(localRepository);
final String camelVersion = findCamelVersion(localRepositoryPath);
try {
final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
final List<String> SCOPES = Collections.singletonList(SheetsScopes.SPREADSHEETS);
final Comparator<ArtifactModel<?>> comparator = CqCatalog.compareArtifactId().thenComparing(BaseModel.compareTitle());
final Sheets service = new Sheets.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT, JSON_FACTORY, SCOPES)).setApplicationName(APPLICATION_NAME).build();
try (GavCqCatalog camelCatalog = GavCqCatalog.open(localRepositoryPath, Flavor.camel, camelVersion, repositories, repoSystem, repoSession);
GavCqCatalog camelQuarkusCatalog = GavCqCatalog.open(localRepositoryPath, Flavor.camelQuarkus, camelQuarkusVersion, repositories, repoSystem, repoSession)) {
Map<Kind, Map<String, NativeSupport>> nativeSupportsMap = new HashMap<>();
CqCatalog.kinds().forEach(kind -> {
Map<String, NativeSupport> nativeSupports = new HashMap<>();
nativeSupportsMap.put(kind, nativeSupports);
getLog().info("Updating " + CqCommonUtils.humanPlural(kind));
final Set<String> allSchemes = new LinkedHashSet<>();
final Map<String, ArtifactModel<?>> camelModels = new LinkedHashMap<>();
camelCatalog.models(kind).filter(CqCatalog::isFirstScheme).sorted(comparator).forEach(m -> {
camelModels.put(m.getName(), m);
allSchemes.add(m.getName());
});
final Map<String, ArtifactModel<?>> cqModels = new LinkedHashMap<>();
camelQuarkusCatalog.models(kind).filter(CqCatalog::isFirstScheme).sorted(comparator).forEach(m -> {
cqModels.put(m.getName(), m);
allSchemes.add(m.getName());
});
/* Go through extensions available in the spreadsheet and update them */
final Sheet sheet = Sheet.read(service, googleSpreadsheetId, kind, getLog(), Column.artifactModelColumns());
for (String scheme : allSchemes) {
sheet.update(scheme, camelModels.get(scheme), cqModels.get(scheme), nativeSupportsMap);
}
sheet.update(Comparator.comparing(Record::getArtifactIdBase).thenComparing(Record::getScheme));
});
{
final Kind kind = Kind.eip;
getLog().info("Updating " + CqCommonUtils.humanPlural(kind));
final Set<String> allSchemes = new LinkedHashSet<>();
final Map<String, EipModel> camelModels = new LinkedHashMap<>();
camelCatalog.eips().sorted(BaseModel.compareTitle()).forEach(m -> {
camelModels.put(m.getName(), m);
allSchemes.add(m.getName());
});
final Map<String, EipModel> cqModels = new LinkedHashMap<>();
// camelQuarkusCatalog.eips()
// .sorted(BaseModel.compareTitle())
// .forEach(m -> {
// cqModels.put(m.getName(), m);
// allSchemes.add(m.getName());
// });
Map<String, Set<String>> occurrences = findOccurrences(allSchemes, Paths.get("."), getLog());
/* Go through extensions available in the spreadsheet and update them */
final Sheet sheet = Sheet.read(service, googleSpreadsheetId, kind, getLog(), Column.eipColumns());
for (String scheme : allSchemes) {
sheet.updateBase(scheme, camelModels.get(scheme), cqModels.get(scheme), occurrences.get(scheme), nativeSupportsMap);
}
sheet.update(Comparator.comparing(Record::getKind).thenComparing(Record::getScheme));
}
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
use of org.apache.camel.catalog.Kind in project camel-quarkus by apache.
the class CamelQuarkusExtension method read.
public static CamelQuarkusExtension read(Path runtimePomXmlPath) {
try (Reader runtimeReader = Files.newBufferedReader(runtimePomXmlPath, StandardCharsets.UTF_8)) {
final MavenXpp3Reader rxppReader = new MavenXpp3Reader();
final Model runtimePom = rxppReader.read(runtimeReader);
final List<Dependency> deps = runtimePom.getDependencies();
final String aid = runtimePom.getArtifactId();
String camelComponentArtifactId = null;
if (deps != null && !deps.isEmpty()) {
Optional<Dependency> artifact = deps.stream().filter(dep -> "org.apache.camel".equals(dep.getGroupId()) && ("compile".equals(dep.getScope()) || dep.getScope() == null)).findFirst();
if (artifact.isPresent()) {
camelComponentArtifactId = CqCatalog.toCamelComponentArtifactIdBase(artifact.get().getArtifactId());
}
}
final Properties props = runtimePom.getProperties() != null ? runtimePom.getProperties() : new Properties();
String name = props.getProperty("title");
if (name == null) {
name = CqUtils.getNameBase(runtimePom.getName());
}
final String version = CqUtils.getVersion(runtimePom);
final boolean nativeSupported = !runtimePomXmlPath.getParent().getParent().getParent().getFileName().toString().endsWith("-jvm");
final String extensionStatus = props.getProperty("quarkus.metadata.status");
final ExtensionStatus status = extensionStatus == null ? ExtensionStatus.of(nativeSupported) : ExtensionStatus.valueOf(extensionStatus);
final boolean unlisted = !nativeSupported || Boolean.parseBoolean(props.getProperty("quarkus.metadata.unlisted", "false"));
final boolean deprecated = Boolean.parseBoolean(props.getProperty("quarkus.metadata.deprecated", "false"));
final String rawKind = (String) props.get(CAMEL_QUARKUS_KIND);
final Kind kind = rawKind == null ? null : Kind.valueOf(rawKind);
return new CamelQuarkusExtension(runtimePomXmlPath, camelComponentArtifactId, (String) props.get(CAMEL_QUARKUS_JVM_SINCE), (String) props.get(CAMEL_QUARKUS_NATIVE_SINCE), aid, name, runtimePom.getDescription(), props.getProperty("label"), version, nativeSupported, status, unlisted, deprecated, deps == null ? Collections.emptyList() : Collections.unmodifiableList(deps), kind, props.getProperty("cq.quarkus.aws.client.baseName"), props.getProperty("cq.quarkus.aws.client.fqClassName"));
} catch (IOException | XmlPullParserException e) {
throw new RuntimeException("Could not read " + runtimePomXmlPath, e);
}
}
use of org.apache.camel.catalog.Kind in project camel-quarkus by apache.
the class PrepareCatalogQuarkusMojo method execute.
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
final Path catalogPath = catalogBaseDir.toPath().resolve(CqCatalog.CQ_CATALOG_DIR);
final Map<String, Set<String>> schemesByKind = new LinkedHashMap<>();
CqCatalog.kinds().forEach(kind -> schemesByKind.put(kind.name(), new TreeSet<>()));
final CqCatalog catalog = CqCatalog.findFirstFromClassPath();
if (extendClassPathCatalog) {
catalog.store(catalogBaseDir.toPath());
catalog.models().forEach(model -> schemesByKind.get(model.getKind()).add(model.getName()));
}
findExtensions().forEach(ext -> {
final String artifactIdBase = ext.getArtifactIdBase();
final Path schemaFile = ext.getExtensionDir().resolve("component/src/generated/resources/org/apache/camel/component/" + artifactIdBase + "/" + artifactIdBase + ".json").toAbsolutePath().normalize();
if (Files.isRegularFile(schemaFile)) {
try {
final String schema = new String(Files.readAllBytes(schemaFile), StandardCharsets.UTF_8);
final String capBase = artifactIdBase.substring(0, 1).toUpperCase() + artifactIdBase.substring(1);
getLog().debug("Adding an extra component " + artifactIdBase + " " + "org.apache.camel.component." + artifactIdBase + "." + capBase + "Component " + schema);
catalog.addComponent(artifactIdBase, "org.apache.camel.component." + artifactIdBase + "." + capBase + "Component", schema);
} catch (IOException e) {
throw new RuntimeException("Could not read " + schemaFile, e);
}
}
});
findExtensions().forEach(extPath -> {
final String artifactIdBase = extPath.getArtifactIdBase();
final List<ArtifactModel<?>> models = catalog.filterModels(artifactIdBase).collect(Collectors.toList());
final Path runtimePomXmlPath = extPath.getExtensionDir().resolve("runtime/pom.xml").toAbsolutePath().normalize();
final CamelQuarkusExtension ext = CamelQuarkusExtension.read(runtimePomXmlPath);
final boolean nativeSupported = ext.isNativeSupported();
if (models.isEmpty()) {
final ArtifactModel<?> model;
final Kind extKind = ext.getKind();
if (extKind == Kind.component) {
model = new ComponentModel();
} else if (extKind == Kind.language) {
model = new LanguageModel();
} else if (extKind == Kind.dataformat) {
model = new DataFormatModel();
} else {
model = new OtherModel();
}
final String name = ext.getRuntimeArtifactId().replace("camel-quarkus-", "");
model.setName(name);
final String title = ext.getName().orElseThrow(() -> new RuntimeException("name is missing in " + ext.getRuntimePomXmlPath()));
model.setTitle(title);
model.setDescription(ext.getDescription().orElseThrow(() -> new RuntimeException("description is missing in " + ext.getRuntimePomXmlPath())));
model.setDeprecated(CqUtils.isDeprecated(title, models, ext.isDeprecated()));
model.setLabel(ext.getLabel().orElse("quarkus"));
update(model, ext, nativeSupported);
CqCatalog.serialize(catalogPath, model);
schemesByKind.get(model.getKind()).add(model.getName());
} else {
for (ArtifactModel<?> model : models) {
update(model, ext, nativeSupported);
CqCatalog.serialize(catalogPath, model);
schemesByKind.get(model.getKind()).add(model.getName());
}
}
});
CqCatalog.kinds().forEach(kind -> {
final Path newCatalog = catalogPath.resolve(kind.name() + "s.properties");
try {
Files.createDirectories(newCatalog.getParent());
Files.write(newCatalog, schemesByKind.get(kind.name()).stream().collect(Collectors.joining("\n")).getBytes(StandardCharsets.UTF_8));
} catch (IOException e) {
throw new RuntimeException("Could not write to " + newCatalog);
}
});
}
Aggregations