Search in sources :

Example 1 with EipModel

use of org.apache.camel.tooling.model.EipModel 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);
    }
}
Also used : LinkedHashSet(java.util.LinkedHashSet) Arrays(java.util.Arrays) Flavor(org.l2x6.cq.common.CqCatalog.Flavor) GoogleClientSecrets(com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets) Parameter(org.apache.maven.plugins.annotations.Parameter) MavenProject(org.apache.maven.project.MavenProject) Locale(java.util.Locale) Map(java.util.Map) Path(java.nio.file.Path) CqCommonUtils(org.l2x6.cq.common.CqCommonUtils) EnumMap(java.util.EnumMap) JacksonFactory(com.google.api.client.json.jackson2.JacksonFactory) FileDataStoreFactory(com.google.api.client.util.store.FileDataStoreFactory) LocalServerReceiver(com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver) Set(java.util.Set) GoogleNetHttpTransport(com.google.api.client.googleapis.javanet.GoogleNetHttpTransport) Reader(java.io.Reader) SheetsScopes(com.google.api.services.sheets.v4.SheetsScopes) Collectors(java.util.stream.Collectors) FileNotFoundException(java.io.FileNotFoundException) StandardCharsets(java.nio.charset.StandardCharsets) Objects(java.util.Objects) Sheets(com.google.api.services.sheets.v4.Sheets) List(java.util.List) Stream(java.util.stream.Stream) Entry(java.util.Map.Entry) CqCatalog(org.l2x6.cq.common.CqCatalog) Optional(java.util.Optional) GoogleAuthorizationCodeFlow(com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow) AbstractMojo(org.apache.maven.plugin.AbstractMojo) Model(org.apache.maven.model.Model) RepositorySystem(org.eclipse.aether.RepositorySystem) Component(org.apache.maven.plugins.annotations.Component) HashMap(java.util.HashMap) RepositorySystemSession(org.eclipse.aether.RepositorySystemSession) TreeSet(java.util.TreeSet) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) LinkedHashMap(java.util.LinkedHashMap) ValueRange(com.google.api.services.sheets.v4.model.ValueRange) Mojo(org.apache.maven.plugins.annotations.Mojo) Credential(com.google.api.client.auth.oauth2.Credential) ArtifactModel(org.apache.camel.tooling.model.ArtifactModel) LinkedHashSet(java.util.LinkedHashSet) GavCqCatalog(org.l2x6.cq.common.CqCatalog.GavCqCatalog) NetHttpTransport(com.google.api.client.http.javanet.NetHttpTransport) Files(java.nio.file.Files) Kind(org.apache.camel.catalog.Kind) IOException(java.io.IOException) FileInputStream(java.io.FileInputStream) BaseModel(org.apache.camel.tooling.model.BaseModel) MojoExecutionException(org.apache.maven.plugin.MojoExecutionException) Log(org.apache.maven.plugin.logging.Log) InputStreamReader(java.io.InputStreamReader) File(java.io.File) MojoFailureException(org.apache.maven.plugin.MojoFailureException) RemoteRepository(org.eclipse.aether.repository.RemoteRepository) Paths(java.nio.file.Paths) JsonFactory(com.google.api.client.json.JsonFactory) EipModel(org.apache.camel.tooling.model.EipModel) Comparator(java.util.Comparator) AuthorizationCodeInstalledApp(com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp) Collections(java.util.Collections) Record(org.l2x6.cq.maven.prod.SyncExtensionListMojo.Sheet.Record) GavCqCatalog(org.l2x6.cq.common.CqCatalog.GavCqCatalog) Set(java.util.Set) TreeSet(java.util.TreeSet) HashSet(java.util.HashSet) LinkedHashSet(java.util.LinkedHashSet) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) JsonFactory(com.google.api.client.json.JsonFactory) CqCatalog(org.l2x6.cq.common.CqCatalog) GavCqCatalog(org.l2x6.cq.common.CqCatalog.GavCqCatalog) LinkedHashMap(java.util.LinkedHashMap) GoogleNetHttpTransport(com.google.api.client.googleapis.javanet.GoogleNetHttpTransport) NetHttpTransport(com.google.api.client.http.javanet.NetHttpTransport) Kind(org.apache.camel.catalog.Kind) Record(org.l2x6.cq.maven.prod.SyncExtensionListMojo.Sheet.Record) Sheets(com.google.api.services.sheets.v4.Sheets) Path(java.nio.file.Path) FileNotFoundException(java.io.FileNotFoundException) IOException(java.io.IOException) MojoExecutionException(org.apache.maven.plugin.MojoExecutionException) MojoFailureException(org.apache.maven.plugin.MojoFailureException) ArtifactModel(org.apache.camel.tooling.model.ArtifactModel) Map(java.util.Map) EnumMap(java.util.EnumMap) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap)

Example 2 with EipModel

use of org.apache.camel.tooling.model.EipModel in project camel-spring-boot by apache.

the class SpringBootAutoConfigurationMojo method executeModels.

private void executeModels(JarFile componentJar, Map<String, Supplier<String>> files) throws MojoExecutionException, MojoFailureException {
    String json;
    // Hystrix
    json = loadModelJson(files, "hystrixConfiguration");
    if (json != null) {
        EipModel model = JsonMapper.generateEipModel(json);
        int pos = model.getJavaType().lastIndexOf(".");
        String pkg = model.getJavaType().substring(0, pos) + ".springboot";
        // Generate properties, auto-configuration for camel-core-starter
        createEipModelConfigurationSource(pkg, model, "camel.hystrix", true);
    }
    // Resilience4j
    json = loadModelJson(files, "resilience4jConfiguration");
    if (json != null) {
        EipModel model = JsonMapper.generateEipModel(json);
        int pos = model.getJavaType().lastIndexOf(".");
        String pkg = model.getJavaType().substring(0, pos) + ".springboot";
        // Generate properties, auto-configuration for camel-core-starter
        createEipModelConfigurationSource(pkg, model, "camel.resilience4j", true);
    }
    // Consul
    json = loadModelJson(files, "consulServiceDiscovery");
    if (json != null) {
        EipModel model = JsonMapper.generateEipModel(json);
        int pos = model.getJavaType().lastIndexOf(".");
        String pkg = model.getJavaType().substring(0, pos) + ".springboot";
        // Generate properties, auto-configuration for camel-core-starter
        createEipModelConfigurationSource(pkg, model, "camel.cloud.consul.service-discovery", true);
    }
    // DNS
    json = loadModelJson(files, "dnsServiceDiscovery");
    if (json != null) {
        EipModel model = JsonMapper.generateEipModel(json);
        int pos = model.getJavaType().lastIndexOf(".");
        String pkg = model.getJavaType().substring(0, pos) + ".springboot";
        // Generate properties, auto-configuration for camel-core-starter
        createEipModelConfigurationSource(pkg, model, "camel.cloud.dns.service-discovery", true);
    }
    // Etcd
    json = loadModelJson(files, "etcdServiceDiscovery");
    if (json != null) {
        EipModel model = JsonMapper.generateEipModel(json);
        int pos = model.getJavaType().lastIndexOf(".");
        String pkg = model.getJavaType().substring(0, pos) + ".springboot";
        // Generate properties, auto-configuration for camel-core-starter
        createEipModelConfigurationSource(pkg, model, "camel.cloud.etcd.service-discovery", true);
    }
    // Kubernetes
    json = loadModelJson(files, "kubernetesServiceDiscovery");
    if (json != null) {
        EipModel model = JsonMapper.generateEipModel(json);
        int pos = model.getJavaType().lastIndexOf(".");
        String pkg = model.getJavaType().substring(0, pos) + ".springboot";
        // Generate properties, auto-configuration happens in
        // camel-kubernetes-starter
        createEipModelConfigurationSource(pkg, model, "camel.cloud.kubernetes.service-discovery", true);
    }
    // Ribbon
    json = loadModelJson(files, "ribbonLoadBalancer");
    if (json != null) {
        EipModel model = JsonMapper.generateEipModel(json);
        int pos = model.getJavaType().lastIndexOf(".");
        String pkg = model.getJavaType().substring(0, pos) + ".springboot";
        // Generate properties, auto-configuration for camel-core-starter
        createEipModelConfigurationSource(pkg, model, "camel.cloud.ribbon.load-balancer", true);
    }
    // Rest
    json = loadModelJson(files, "restConfiguration");
    if (json != null) {
        EipModel model = JsonMapper.generateEipModel(json);
        int pos = model.getJavaType().lastIndexOf(".");
        String pkg = model.getJavaType().substring(0, pos) + ".springboot";
        // Generate properties, auto-configuration for camel-core-starter
        createRestConfigurationSource(pkg, model, "camel.rest");
        createRestModuleAutoConfigurationSource(pkg, model);
    }
}
Also used : EipModel(org.apache.camel.tooling.model.EipModel)

Aggregations

Credential (com.google.api.client.auth.oauth2.Credential)1 AuthorizationCodeInstalledApp (com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp)1 LocalServerReceiver (com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver)1 GoogleAuthorizationCodeFlow (com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow)1 GoogleClientSecrets (com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets)1 GoogleNetHttpTransport (com.google.api.client.googleapis.javanet.GoogleNetHttpTransport)1 NetHttpTransport (com.google.api.client.http.javanet.NetHttpTransport)1 JsonFactory (com.google.api.client.json.JsonFactory)1 JacksonFactory (com.google.api.client.json.jackson2.JacksonFactory)1 FileDataStoreFactory (com.google.api.client.util.store.FileDataStoreFactory)1 Sheets (com.google.api.services.sheets.v4.Sheets)1 SheetsScopes (com.google.api.services.sheets.v4.SheetsScopes)1 ValueRange (com.google.api.services.sheets.v4.model.ValueRange)1 File (java.io.File)1 FileInputStream (java.io.FileInputStream)1 FileNotFoundException (java.io.FileNotFoundException)1 IOException (java.io.IOException)1 InputStreamReader (java.io.InputStreamReader)1 Reader (java.io.Reader)1 StandardCharsets (java.nio.charset.StandardCharsets)1