You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ma...@apache.org on 2022/10/06 05:26:55 UTC

[camel-karavan] branch main updated (8a1e746 -> b943150)

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

marat pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git


    from 8a1e746  Fix kamelets and component call for public mode
     new 94c7374  Minikube and Openshift manifests
     new 76e9ffb  Upload kamalets and component as batch
     new 3c6b699  Fix #486
     new b943150  Show correct description

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 karavan-app/pom.xml                                |  1 -
 .../camel/karavan/api/ComponentResources.java      | 13 +------
 .../apache/camel/karavan/api/KameletResources.java | 44 ++++++----------------
 karavan-app/src/main/webapp/src/Main.tsx           | 17 ++++++---
 karavan-app/src/main/webapp/src/api/KaravanApi.tsx | 28 ++------------
 .../main/webapp/src/components/ComponentsPage.tsx  | 18 +--------
 .../src/main/webapp/src/kamelets/KameletsPage.tsx  | 31 +++------------
 karavan-cloud/base/karavan-namespace.yaml          |  4 --
 karavan-cloud/base/kustomization.yaml              |  9 -----
 .../karavan-acl-environments.yaml}                 |  0
 karavan-cloud/{base => minikube}/karavan-acl.yaml  |  0
 .../karavan-app-deployment-public.yaml             |  0
 karavan-cloud/{base => minikube}/karavan-pvc.yaml  |  0
 .../karavan-quarkus-pipeline.yaml                  |  0
 .../{base => minikube}/karavan-secret.yaml         |  0
 karavan-cloud/minikube/kustomization.yaml          |  7 ++--
 karavan-cloud/{base => openshift}/karavan-acl.yaml |  0
 .../karavan-act-environments.yaml                  |  0
 .../karavan-app-deployment-basic.yaml              |  0
 .../karavan-app-deployment-oidc.yaml               |  0
 .../karavan-app-deployment-public.yaml             |  0
 .../{base => openshift}/karavan-app-route.yaml     |  0
 .../karavan-app-service-cluster-ip.yaml            |  0
 karavan-cloud/{base => openshift}/karavan-pvc.yaml |  0
 .../karavan-quarkus-pipeline.yaml                  |  0
 .../{base => openshift}/karavan-quarkus-task.yaml  |  0
 .../{base => openshift}/karavan-secret.yaml        |  0
 karavan-cloud/openshift/kustomization.yaml         |  6 +--
 karavan-core/src/core/model/KameletModels.ts       |  4 ++
 karavan-designer/src/designer/karavan.css          | 13 +++++++
 .../src/designer/route/DslProperties.tsx           | 16 ++++++--
 .../src/designer/route/DslSelector.tsx             |  1 -
 karavan-designer/src/designer/utils/CamelUi.tsx    | 30 ++++++++-------
 .../generator/CamelComponentsGenerator.java        |  2 +-
 .../camel/karavan/generator/KameletGenerator.java  | 30 +++++++++------
 karavan-vscode/kamelets/kamelets.yaml              |  1 -
 karavan-vscode/src/utils.ts                        |  3 +-
 37 files changed, 106 insertions(+), 172 deletions(-)
 delete mode 100644 karavan-cloud/base/karavan-namespace.yaml
 delete mode 100644 karavan-cloud/base/kustomization.yaml
 copy karavan-cloud/{base/karavan-act-environments.yaml => minikube/karavan-acl-environments.yaml} (100%)
 copy karavan-cloud/{base => minikube}/karavan-acl.yaml (100%)
 copy karavan-cloud/{base => minikube}/karavan-app-deployment-public.yaml (100%)
 copy karavan-cloud/{base => minikube}/karavan-pvc.yaml (100%)
 copy karavan-cloud/{base => minikube}/karavan-quarkus-pipeline.yaml (100%)
 copy karavan-cloud/{base => minikube}/karavan-secret.yaml (100%)
 rename karavan-cloud/{base => openshift}/karavan-acl.yaml (100%)
 rename karavan-cloud/{base => openshift}/karavan-act-environments.yaml (100%)
 rename karavan-cloud/{base => openshift}/karavan-app-deployment-basic.yaml (100%)
 rename karavan-cloud/{base => openshift}/karavan-app-deployment-oidc.yaml (100%)
 rename karavan-cloud/{base => openshift}/karavan-app-deployment-public.yaml (100%)
 rename karavan-cloud/{base => openshift}/karavan-app-route.yaml (100%)
 rename karavan-cloud/{base => openshift}/karavan-app-service-cluster-ip.yaml (100%)
 rename karavan-cloud/{base => openshift}/karavan-pvc.yaml (100%)
 rename karavan-cloud/{base => openshift}/karavan-quarkus-pipeline.yaml (100%)
 rename karavan-cloud/{base => openshift}/karavan-quarkus-task.yaml (100%)
 rename karavan-cloud/{base => openshift}/karavan-secret.yaml (100%)


[camel-karavan] 04/04: Show correct description

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

marat pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git

commit b943150b4d045884f20eca7a13c05363efbb0755
Author: Marat Gubaidullin <ma...@gmail.com>
AuthorDate: Thu Oct 6 01:26:43 2022 -0400

    Show correct description
---
 karavan-designer/src/designer/karavan.css             | 13 +++++++++++++
 karavan-designer/src/designer/route/DslProperties.tsx | 16 +++++++++++++---
 2 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/karavan-designer/src/designer/karavan.css b/karavan-designer/src/designer/karavan.css
index b4efbaa..a2426eb 100644
--- a/karavan-designer/src/designer/karavan.css
+++ b/karavan-designer/src/designer/karavan.css
@@ -475,6 +475,19 @@
     margin-right: 6px;
 }
 
+.karavan .properties .pf-c-expandable-section__toggle {
+    margin: 0;
+    padding: 0;
+}
+
+.karavan .properties .pf-c-expandable-section__content {
+    margin: 0;
+}
+
+.karavan .properties .pf-c-expandable-section__content p {
+    min-height: 6px;
+}
+
 
 /*Graph*/
 .karavan .dsl-page .graph {
diff --git a/karavan-designer/src/designer/route/DslProperties.tsx b/karavan-designer/src/designer/route/DslProperties.tsx
index 71e15f1..1862e03 100644
--- a/karavan-designer/src/designer/route/DslProperties.tsx
+++ b/karavan-designer/src/designer/route/DslProperties.tsx
@@ -56,6 +56,7 @@ interface State {
     step?: CamelElement,
     selectStatus: Map<string, boolean>
     isShowAdvanced: boolean
+    isDescriptionExpanded?: boolean
 }
 
 export class DslProperties extends React.Component<Props, State> {
@@ -135,8 +136,10 @@ export class DslProperties extends React.Component<Props, State> {
     }
 
     getRouteHeader= (): JSX.Element => {
+        const isDescriptionExpanded = this.state.isDescriptionExpanded;
         const title = this.state.step && CamelUi.getTitle(this.state.step)
         const description =  this.state.step &&  CamelUi.getDescription(this.state.step);
+        const descriptionLines: string [] = description ? description?.split("\n") : [""];
         return (
             <div className="headers">
                 <div className="top">
@@ -148,14 +151,21 @@ export class DslProperties extends React.Component<Props, State> {
                         <Button variant="link" onClick={() => this.pasteClipboardStep()} icon={<PasteIcon/>}/>
                     </Tooltip>
                 </div>
-                <Text component={TextVariants.p}>{description}</Text>
+                <Text component={TextVariants.p}>{descriptionLines.at(0)}</Text>
+                {descriptionLines.length > 1 && <ExpandableSection toggleText={isDescriptionExpanded ? 'Show less' : 'Show more'}
+                                                                   onToggle={isExpanded => this.setState({isDescriptionExpanded: !isDescriptionExpanded})}
+                                                                   isExpanded={isDescriptionExpanded}>
+                    {descriptionLines.filter((value, index) => index > 0)
+                        .map((desc, index, array) => <Text key={index} component={TextVariants.p}>{desc}</Text>)}
+                </ExpandableSection>}
             </div>
         )
     }
 
     getClonableElementHeader = (): JSX.Element => {
-        const title = this.state.step && CamelUi.getTitle(this.state.step)
+        const title = this.state.step && CamelUi.getTitle(this.state.step);
         const description = this.state.step?.dslName ? CamelMetadataApi.getCamelModelMetadataByClassName(this.state.step?.dslName)?.description : title;
+        const descriptionLines: string [] = description ? description?.split("\n") : [""];
         return (
             <div className="headers">
                 <div className="top">
@@ -164,7 +174,7 @@ export class DslProperties extends React.Component<Props, State> {
                         <Button variant="link" onClick={() => this.cloneElement()} icon={<CloneIcon/>}/>
                     </Tooltip>
                 </div>
-                <Text component={TextVariants.p}>{description}</Text>
+                {descriptionLines.map((desc, index, array) => <Text key={index} component={TextVariants.p}>{desc}</Text>)}
             </div>
         )
     }


[camel-karavan] 01/04: Minikube and Openshift manifests

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

marat pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git

commit 94c737436641d8010f7488dddb0122fff341d7d5
Author: Marat Gubaidullin <ma...@gmail.com>
AuthorDate: Wed Oct 5 21:12:20 2022 -0400

    Minikube and Openshift manifests
---
 karavan-cloud/base/karavan-namespace.yaml                        | 4 ----
 karavan-cloud/base/kustomization.yaml                            | 9 ---------
 .../karavan-acl-environments.yaml}                               | 0
 karavan-cloud/{base => minikube}/karavan-acl.yaml                | 0
 .../{base => minikube}/karavan-app-deployment-public.yaml        | 0
 karavan-cloud/{base => minikube}/karavan-pvc.yaml                | 0
 karavan-cloud/{base => minikube}/karavan-quarkus-pipeline.yaml   | 0
 karavan-cloud/{base => minikube}/karavan-secret.yaml             | 0
 karavan-cloud/minikube/kustomization.yaml                        | 7 ++++---
 karavan-cloud/{base => openshift}/karavan-acl.yaml               | 0
 karavan-cloud/{base => openshift}/karavan-act-environments.yaml  | 0
 .../{base => openshift}/karavan-app-deployment-basic.yaml        | 0
 .../{base => openshift}/karavan-app-deployment-oidc.yaml         | 0
 .../{base => openshift}/karavan-app-deployment-public.yaml       | 0
 karavan-cloud/{base => openshift}/karavan-app-route.yaml         | 0
 .../{base => openshift}/karavan-app-service-cluster-ip.yaml      | 0
 karavan-cloud/{base => openshift}/karavan-pvc.yaml               | 0
 karavan-cloud/{base => openshift}/karavan-quarkus-pipeline.yaml  | 0
 karavan-cloud/{base => openshift}/karavan-quarkus-task.yaml      | 0
 karavan-cloud/{base => openshift}/karavan-secret.yaml            | 0
 karavan-cloud/openshift/kustomization.yaml                       | 6 +-----
 21 files changed, 5 insertions(+), 21 deletions(-)

diff --git a/karavan-cloud/base/karavan-namespace.yaml b/karavan-cloud/base/karavan-namespace.yaml
deleted file mode 100644
index 768a8b5..0000000
--- a/karavan-cloud/base/karavan-namespace.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-apiVersion: v1
-kind: Namespace
-metadata:
-  name: karavan
\ No newline at end of file
diff --git a/karavan-cloud/base/kustomization.yaml b/karavan-cloud/base/kustomization.yaml
deleted file mode 100644
index 0afc4b7..0000000
--- a/karavan-cloud/base/kustomization.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-apiVersion: kustomize.config.k8s.io/v1beta1
-kind: Kustomization
-
-resources:
-- karavan-acl.yaml
-- karavan-pvc.yaml
-- karavan-secret.yaml
-- karavan-quarkus-pipeline.yaml
-- karavan-app-deployment-public.yaml
diff --git a/karavan-cloud/base/karavan-act-environments.yaml b/karavan-cloud/minikube/karavan-acl-environments.yaml
similarity index 100%
copy from karavan-cloud/base/karavan-act-environments.yaml
copy to karavan-cloud/minikube/karavan-acl-environments.yaml
diff --git a/karavan-cloud/base/karavan-acl.yaml b/karavan-cloud/minikube/karavan-acl.yaml
similarity index 100%
copy from karavan-cloud/base/karavan-acl.yaml
copy to karavan-cloud/minikube/karavan-acl.yaml
diff --git a/karavan-cloud/base/karavan-app-deployment-public.yaml b/karavan-cloud/minikube/karavan-app-deployment-public.yaml
similarity index 100%
copy from karavan-cloud/base/karavan-app-deployment-public.yaml
copy to karavan-cloud/minikube/karavan-app-deployment-public.yaml
diff --git a/karavan-cloud/base/karavan-pvc.yaml b/karavan-cloud/minikube/karavan-pvc.yaml
similarity index 100%
copy from karavan-cloud/base/karavan-pvc.yaml
copy to karavan-cloud/minikube/karavan-pvc.yaml
diff --git a/karavan-cloud/base/karavan-quarkus-pipeline.yaml b/karavan-cloud/minikube/karavan-quarkus-pipeline.yaml
similarity index 100%
copy from karavan-cloud/base/karavan-quarkus-pipeline.yaml
copy to karavan-cloud/minikube/karavan-quarkus-pipeline.yaml
diff --git a/karavan-cloud/base/karavan-secret.yaml b/karavan-cloud/minikube/karavan-secret.yaml
similarity index 100%
copy from karavan-cloud/base/karavan-secret.yaml
copy to karavan-cloud/minikube/karavan-secret.yaml
diff --git a/karavan-cloud/minikube/kustomization.yaml b/karavan-cloud/minikube/kustomization.yaml
index 4003af7..f27e373 100644
--- a/karavan-cloud/minikube/kustomization.yaml
+++ b/karavan-cloud/minikube/kustomization.yaml
@@ -1,11 +1,12 @@
 apiVersion: kustomize.config.k8s.io/v1beta1
 kind: Kustomization
 
-bases:
-- ../base
-
 resources:
+- karavan-acl.yaml
+- karavan-pvc.yaml
+- karavan-quarkus-pipeline.yaml
 - karavan-quarkus-task-minikube.yaml
+- karavan-app-deployment-public.yaml
 - karavan-app-service-node-port.yaml
 - pipeline-service-account.yaml
 - karavan-app-ingress.yaml
\ No newline at end of file
diff --git a/karavan-cloud/base/karavan-acl.yaml b/karavan-cloud/openshift/karavan-acl.yaml
similarity index 100%
rename from karavan-cloud/base/karavan-acl.yaml
rename to karavan-cloud/openshift/karavan-acl.yaml
diff --git a/karavan-cloud/base/karavan-act-environments.yaml b/karavan-cloud/openshift/karavan-act-environments.yaml
similarity index 100%
rename from karavan-cloud/base/karavan-act-environments.yaml
rename to karavan-cloud/openshift/karavan-act-environments.yaml
diff --git a/karavan-cloud/base/karavan-app-deployment-basic.yaml b/karavan-cloud/openshift/karavan-app-deployment-basic.yaml
similarity index 100%
rename from karavan-cloud/base/karavan-app-deployment-basic.yaml
rename to karavan-cloud/openshift/karavan-app-deployment-basic.yaml
diff --git a/karavan-cloud/base/karavan-app-deployment-oidc.yaml b/karavan-cloud/openshift/karavan-app-deployment-oidc.yaml
similarity index 100%
rename from karavan-cloud/base/karavan-app-deployment-oidc.yaml
rename to karavan-cloud/openshift/karavan-app-deployment-oidc.yaml
diff --git a/karavan-cloud/base/karavan-app-deployment-public.yaml b/karavan-cloud/openshift/karavan-app-deployment-public.yaml
similarity index 100%
rename from karavan-cloud/base/karavan-app-deployment-public.yaml
rename to karavan-cloud/openshift/karavan-app-deployment-public.yaml
diff --git a/karavan-cloud/base/karavan-app-route.yaml b/karavan-cloud/openshift/karavan-app-route.yaml
similarity index 100%
rename from karavan-cloud/base/karavan-app-route.yaml
rename to karavan-cloud/openshift/karavan-app-route.yaml
diff --git a/karavan-cloud/base/karavan-app-service-cluster-ip.yaml b/karavan-cloud/openshift/karavan-app-service-cluster-ip.yaml
similarity index 100%
rename from karavan-cloud/base/karavan-app-service-cluster-ip.yaml
rename to karavan-cloud/openshift/karavan-app-service-cluster-ip.yaml
diff --git a/karavan-cloud/base/karavan-pvc.yaml b/karavan-cloud/openshift/karavan-pvc.yaml
similarity index 100%
rename from karavan-cloud/base/karavan-pvc.yaml
rename to karavan-cloud/openshift/karavan-pvc.yaml
diff --git a/karavan-cloud/base/karavan-quarkus-pipeline.yaml b/karavan-cloud/openshift/karavan-quarkus-pipeline.yaml
similarity index 100%
rename from karavan-cloud/base/karavan-quarkus-pipeline.yaml
rename to karavan-cloud/openshift/karavan-quarkus-pipeline.yaml
diff --git a/karavan-cloud/base/karavan-quarkus-task.yaml b/karavan-cloud/openshift/karavan-quarkus-task.yaml
similarity index 100%
rename from karavan-cloud/base/karavan-quarkus-task.yaml
rename to karavan-cloud/openshift/karavan-quarkus-task.yaml
diff --git a/karavan-cloud/base/karavan-secret.yaml b/karavan-cloud/openshift/karavan-secret.yaml
similarity index 100%
rename from karavan-cloud/base/karavan-secret.yaml
rename to karavan-cloud/openshift/karavan-secret.yaml
diff --git a/karavan-cloud/openshift/kustomization.yaml b/karavan-cloud/openshift/kustomization.yaml
index e0d3452..c9bc2fe 100644
--- a/karavan-cloud/openshift/kustomization.yaml
+++ b/karavan-cloud/openshift/kustomization.yaml
@@ -1,15 +1,11 @@
 apiVersion: kustomize.config.k8s.io/v1beta1
 kind: Kustomization
 
-bases:
-- ../base
-
 resources:
 - karavan-acl.yaml
 - karavan-pvc.yaml
-- karavan-secret.yaml
 - karavan-quarkus-task.yaml
 - karavan-quarkus-pipeline.yaml
-- karavan-app-deployment-public.yaml
+- karavan-app-deployment-oidc.yaml
 - karavan-app-service-cluster-ip.yaml
 - karavan-app-route.yaml
\ No newline at end of file


[camel-karavan] 02/04: Upload kamalets and component as batch

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

marat pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git

commit 76e9ffb722174d8468130cc12ca77064a8a6850c
Author: Marat Gubaidullin <ma...@gmail.com>
AuthorDate: Wed Oct 5 22:34:37 2022 -0400

    Upload kamalets and component as batch
---
 karavan-app/pom.xml                                |  1 -
 .../camel/karavan/api/ComponentResources.java      | 13 +------
 .../apache/camel/karavan/api/KameletResources.java | 44 ++++++----------------
 karavan-app/src/main/webapp/src/Main.tsx           | 17 ++++++---
 karavan-app/src/main/webapp/src/api/KaravanApi.tsx | 28 ++------------
 .../main/webapp/src/components/ComponentsPage.tsx  | 18 +--------
 .../src/main/webapp/src/kamelets/KameletsPage.tsx  | 31 +++------------
 .../generator/CamelComponentsGenerator.java        |  2 +-
 .../camel/karavan/generator/KameletGenerator.java  | 30 +++++++++------
 karavan-vscode/kamelets/kamelets.yaml              |  1 -
 karavan-vscode/src/utils.ts                        |  3 +-
 11 files changed, 55 insertions(+), 133 deletions(-)

diff --git a/karavan-app/pom.xml b/karavan-app/pom.xml
index 9c8aab1..2c20131 100644
--- a/karavan-app/pom.xml
+++ b/karavan-app/pom.xml
@@ -31,7 +31,6 @@
         <quarkus.platform.group-id>io.quarkus.platform</quarkus.platform.group-id>
         <quarkus.platform.version>2.11.2.Final</quarkus.platform.version>
         <surefire-plugin.version>3.0.0-M5</surefire-plugin.version>
-        <version.camel-kamelet>0.9.0</version.camel-kamelet>
         <version.camel>3.18.2</version.camel>
     </properties>
     <dependencyManagement>
diff --git a/karavan-app/src/main/java/org/apache/camel/karavan/api/ComponentResources.java b/karavan-app/src/main/java/org/apache/camel/karavan/api/ComponentResources.java
index f1d1ea5..25b9309 100644
--- a/karavan-app/src/main/java/org/apache/camel/karavan/api/ComponentResources.java
+++ b/karavan-app/src/main/java/org/apache/camel/karavan/api/ComponentResources.java
@@ -32,17 +32,8 @@ public class ComponentResources {
 
     @GET
     @Produces(MediaType.APPLICATION_JSON)
-    public List<String> getList() {
-        String list = getResourceFile("components.properties");
-        return List.of(list.split(System.getProperty("line.separator"))).stream()
-                .map(s -> s + ".json").collect(Collectors.toList());
-    }
-
-    @GET
-    @Produces(MediaType.APPLICATION_JSON)
-    @Path("/{name}")
-    public String getJson(@PathParam("name") String name) {
-        return getResourceFile(name);
+    public String getJson() {
+        return getResourceFile("components.json");
     }
 
     private String getResourceFile(String path) {
diff --git a/karavan-app/src/main/java/org/apache/camel/karavan/api/KameletResources.java b/karavan-app/src/main/java/org/apache/camel/karavan/api/KameletResources.java
index 840df37..1803610 100644
--- a/karavan-app/src/main/java/org/apache/camel/karavan/api/KameletResources.java
+++ b/karavan-app/src/main/java/org/apache/camel/karavan/api/KameletResources.java
@@ -16,24 +16,17 @@
  */
 package org.apache.camel.karavan.api;
 
-import io.vertx.core.Vertx;
 import org.apache.camel.karavan.service.InfinispanService;
-import org.eclipse.microprofile.config.inject.ConfigProperty;
 
 import javax.inject.Inject;
 import javax.ws.rs.GET;
 import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import java.io.BufferedReader;
-import java.io.File;
 import java.io.InputStream;
 import java.io.InputStreamReader;
-import java.nio.file.Files;
-import java.nio.file.Paths;
 import java.util.List;
-import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 @Path("/api/kamelet")
@@ -42,21 +35,18 @@ public class KameletResources {
     @Inject
     InfinispanService infinispanService;
 
-    @Inject
-    Vertx vertx;
-
     @GET
-    @Produces(MediaType.APPLICATION_JSON)
-    public List<String> getList() throws Exception {
-        List<String> kameletList = getBuildInKameletsList();
-        kameletList.addAll(infinispanService.getKameletNames());
-        return kameletList;
-    }
-
-    private List<String> getBuildInKameletsList() {
-        String list = getResourceFile("kamelets.properties");
-        return List.of(list.split(System.getProperty("line.separator"))).stream()
-                .map(s -> s + ".kamelet.yaml").collect(Collectors.toList());
+    @Produces(MediaType.TEXT_PLAIN)
+    public String getCustomYamls() {
+        StringBuilder kamelets = new StringBuilder(getResourceFile("kamelets.yaml"));
+        List<String> customKameletNames = infinispanService.getKameletNames();
+        if (customKameletNames.size() > 0) {
+            kamelets.append("\n---\n");
+            kamelets.append(infinispanService.getKameletNames().stream()
+                    .map(name -> infinispanService.getKameletYaml(name))
+                    .collect(Collectors.joining("\n---\n")));
+        }
+        return kamelets.toString();
     }
 
     private String getResourceFile(String path) {
@@ -69,16 +59,4 @@ public class KameletResources {
             return null;
         }
     }
-
-
-    @GET
-    @Produces(MediaType.TEXT_PLAIN)
-    @Path("/{name}")
-    public String getYaml(@PathParam("name") String name) {
-        if (infinispanService.getKameletNames().contains(name)) {
-            return infinispanService.getKameletYaml(name);
-        } else {
-            return getResourceFile(name);
-        }
-    }
 }
diff --git a/karavan-app/src/main/webapp/src/Main.tsx b/karavan-app/src/main/webapp/src/Main.tsx
index 1b35acb..b056697 100644
--- a/karavan-app/src/main/webapp/src/Main.tsx
+++ b/karavan-app/src/main/webapp/src/Main.tsx
@@ -126,12 +126,17 @@ export class Main extends React.Component<Props, State> {
         KaravanApi.getConfiguration((config: any) => {
             this.setState({ config: config })
         });
-        KaravanApi.getKameletNames(names => names.forEach(name => {
-            KaravanApi.getKamelet(name, yaml => KameletApi.saveKamelet(yaml))
-        }));
-        KaravanApi.getComponentNames(names => names.forEach(name => {
-            KaravanApi.getComponent(name, json => ComponentApi.saveComponent(json))
-        }));
+        KaravanApi.getKamelets(yamls => {
+            const kamelets: string[] = [];
+            yamls.split("\n---\n").map(c => c.trim()).forEach(z => kamelets.push(z));
+            KameletApi.saveKamelets(kamelets, true);
+        })
+        KaravanApi.getComponents(code => {
+            const components: [] = JSON.parse(code);
+            const jsons: string[] = [];
+            components.forEach(c => jsons.push(JSON.stringify(c)));
+            ComponentApi.saveComponents(jsons, true);
+        })
     }
 
     deleteErrorMessage = (id: string) => {
diff --git a/karavan-app/src/main/webapp/src/api/KaravanApi.tsx b/karavan-app/src/main/webapp/src/api/KaravanApi.tsx
index 31d976b..0d400b2 100644
--- a/karavan-app/src/main/webapp/src/api/KaravanApi.tsx
+++ b/karavan-app/src/main/webapp/src/api/KaravanApi.tsx
@@ -351,8 +351,8 @@ export class KaravanApi {
     }
 
 
-    static async getKameletNames(after: (names: []) => void) {
-        instance.get('/api/kamelet')
+    static async getKamelets(after: (yaml: string) => void) {
+        instance.get('/api/kamelet', {headers: {'Accept': 'text/plain'}})
             .then(res => {
                 if (res.status === 200) {
                     after(res.data);
@@ -362,30 +362,8 @@ export class KaravanApi {
         });
     }
 
-    static async getKamelet(name: string, after: (yaml: string) => void) {
-        instance.get('/api/kamelet/' + name, {headers: {'Accept': 'text/plain'}})
-            .then(res => {
-                if (res.status === 200) {
-                    after(res.data);
-                }
-            }).catch(err => {
-            console.log(err);
-        });
-    }
-
-    static async getComponentNames(after: (names: []) => void) {
+    static async getComponents(after: (json: string) => void) {
         instance.get('/api/component')
-            .then(res => {
-                if (res.status === 200) {
-                    after(res.data);
-                }
-            }).catch(err => {
-            console.log(err);
-        });
-    }
-
-    static async getComponent(name: string, after: (json: string) => void) {
-        instance.get('/api/component/' + name)
             .then(res => {
                 if (res.status === 200) {
                     after(JSON.stringify(res.data));
diff --git a/karavan-app/src/main/webapp/src/components/ComponentsPage.tsx b/karavan-app/src/main/webapp/src/components/ComponentsPage.tsx
index 696f0ba..182ce03 100644
--- a/karavan-app/src/main/webapp/src/components/ComponentsPage.tsx
+++ b/karavan-app/src/main/webapp/src/components/ComponentsPage.tsx
@@ -21,16 +21,13 @@ import {
     Gallery,
     ToolbarItem,
     TextInput,
-    PageSection, TextContent, Text, PageSectionVariants, Flex, FlexItem, Badge, Button
+    PageSection, TextContent, Text, PageSectionVariants, Flex, FlexItem, Badge
 } from '@patternfly/react-core';
 import '../designer/karavan.css';
 import {ComponentCard} from "./ComponentCard";
 import {ComponentModal} from "./ComponentModal";
 import {Component} from "karavan-core/lib/model/ComponentModels";
 import {ComponentApi} from "karavan-core/lib/api/ComponentApi";
-import RefreshIcon from "@patternfly/react-icons/dist/esm/icons/sync-alt-icon";
-import {KaravanApi} from "../api/KaravanApi";
-import {Components} from "karavan-core/lib/api/ComponentApi";
 
 interface Props {
     dark: boolean
@@ -89,19 +86,6 @@ export class ComponentsPage extends React.Component<Props, State> {
                         <FlexItem>
                             <Toolbar id="toolbar-group-types">
                                 <ToolbarContent>
-                                    <ToolbarItem>
-                                        <Button icon={<RefreshIcon/>} variant="link"
-                                                onClick={e => {
-                                                    KaravanApi.getComponentNames(names => names.forEach(name => {
-                                                        KaravanApi.getComponent(name, json => {
-                                                            ComponentApi.saveComponent(json);
-                                                            if (Components.length === names.length){
-                                                                this.setState({components: ComponentApi.getComponents()});
-                                                            }
-                                                        })
-                                                    }));
-                                                }}/>
-                                    </ToolbarItem>
                                     <ToolbarItem>
                                         <TextInput className="text-field" type="search" id="search" name="search"
                                                    value={this.state.filter}
diff --git a/karavan-app/src/main/webapp/src/kamelets/KameletsPage.tsx b/karavan-app/src/main/webapp/src/kamelets/KameletsPage.tsx
index 2fb8095..9176532 100644
--- a/karavan-app/src/main/webapp/src/kamelets/KameletsPage.tsx
+++ b/karavan-app/src/main/webapp/src/kamelets/KameletsPage.tsx
@@ -21,16 +21,13 @@ import {
     Gallery,
     ToolbarItem,
     TextInput,
-    PageSection, TextContent, Text, PageSectionVariants, Flex, FlexItem, Badge, Button
+    PageSection, TextContent, Text, PageSectionVariants, Flex, FlexItem, Badge
 } from '@patternfly/react-core';
 import '../designer/karavan.css';
 import {KameletCard} from "./KameletCard";
 import {KameletModel} from "karavan-core/lib/model/KameletModels";
 import {KameletApi} from "karavan-core/lib/api/KameletApi";
 import {KameletModal} from "./KameletModal";
-import {KaravanApi} from "../api/KaravanApi";
-import RefreshIcon from "@patternfly/react-icons/dist/esm/icons/sync-alt-icon";
-import {Kamelets} from "karavan-core/lib/api/KameletApi";
 
 interface Props {
     dark: boolean
@@ -59,11 +56,11 @@ export class KameletsPage extends React.Component<Props, State> {
         this.setState({kamelets: KameletApi.getKamelets()})
     }
 
-    select = (k: KameletModel) => {
+    select = (k: KameletModel)=> {
         this.setState({kamelet: k, isModalOpen: true})
     }
 
-    search(filter: string) {
+    search(filter: string){
         this.setState({
             filter: filter,
             isModalOpen: false,
@@ -73,12 +70,10 @@ export class KameletsPage extends React.Component<Props, State> {
 
     render() {
         return (
-            <PageSection variant={this.props.dark ? PageSectionVariants.darker : PageSectionVariants.light}
-                         padding={{default: 'noPadding'}} className="kamelet-section">
+            <PageSection variant={this.props.dark ? PageSectionVariants.darker : PageSectionVariants.light} padding={{ default: 'noPadding' }} className="kamelet-section">
                 <KameletModal key={this.state.kamelet?.metadata.name + this.state.isModalOpen.toString()}
                               isOpen={this.state.isModalOpen} kamelet={this.state.kamelet}/>
-                <PageSection className="tools-section"
-                             variant={this.props.dark ? PageSectionVariants.darker : PageSectionVariants.light}>
+                <PageSection  className="tools-section" variant={this.props.dark ? PageSectionVariants.darker : PageSectionVariants.light}>
                     <Flex className="tools" justifyContent={{default: 'justifyContentSpaceBetween'}}>
                         <FlexItem>
                             <TextContent className="header">
@@ -89,19 +84,6 @@ export class KameletsPage extends React.Component<Props, State> {
                         <FlexItem>
                             <Toolbar id="toolbar-group-types">
                                 <ToolbarContent>
-                                    <ToolbarItem>
-                                        <Button icon={<RefreshIcon/>} variant="link"
-                                                onClick={e => {
-                                                    KaravanApi.getKameletNames(names => names.forEach(name => {
-                                                        KaravanApi.getKamelet(name, yaml => {
-                                                            KameletApi.saveKamelet(yaml);
-                                                            if (Kamelets.length === names.length){
-                                                                this.setState({kamelets: KameletApi.getKamelets()});
-                                                            }
-                                                        })
-                                                    }));
-                                                }}/>
-                                    </ToolbarItem>
                                     <ToolbarItem>
                                         <TextInput className="text-field" type="search" id="search" name="search"
                                                    value={this.state.filter}
@@ -114,8 +96,7 @@ export class KameletsPage extends React.Component<Props, State> {
                         </FlexItem>
                     </Flex>
                 </PageSection>
-                <PageSection isFilled className="kamelets-page"
-                             variant={this.props.dark ? PageSectionVariants.darker : PageSectionVariants.light}>
+                <PageSection isFilled className="kamelets-page" variant={this.props.dark ? PageSectionVariants.darker : PageSectionVariants.light}>
                     <Gallery hasGutter>
                         {this.state.kamelets.map(k => (
                             <KameletCard key={k.metadata.name} kamelet={k} onClickCard={this.select}/>
diff --git a/karavan-generator/src/main/java/org/apache/camel/karavan/generator/CamelComponentsGenerator.java b/karavan-generator/src/main/java/org/apache/camel/karavan/generator/CamelComponentsGenerator.java
index 0a8f321..865e7f5 100644
--- a/karavan-generator/src/main/java/org/apache/camel/karavan/generator/CamelComponentsGenerator.java
+++ b/karavan-generator/src/main/java/org/apache/camel/karavan/generator/CamelComponentsGenerator.java
@@ -41,7 +41,7 @@ public final class CamelComponentsGenerator extends AbstractGenerator {
 
     public static void generate() throws Exception {
         CamelComponentsGenerator g = new CamelComponentsGenerator();
-        g.createCreateComponents("karavan-app/src/main/resources/components", false);
+        g.createCreateComponents("karavan-app/src/main/resources/components", true);
         g.createCreateComponents("karavan-designer/public/components", false);
         g.createCreateComponents("karavan-vscode/components", true);
     }
diff --git a/karavan-generator/src/main/java/org/apache/camel/karavan/generator/KameletGenerator.java b/karavan-generator/src/main/java/org/apache/camel/karavan/generator/KameletGenerator.java
index 410617d..5c9a408 100644
--- a/karavan-generator/src/main/java/org/apache/camel/karavan/generator/KameletGenerator.java
+++ b/karavan-generator/src/main/java/org/apache/camel/karavan/generator/KameletGenerator.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.karavan.generator;
 
+import io.fabric8.camelk.v1alpha1.Kamelet;
 import io.vertx.core.Vertx;
 import org.apache.camel.kamelets.catalog.KameletsCatalog;
 import org.jboss.logging.Logger;
@@ -26,10 +27,15 @@ import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.lang.reflect.Array;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Paths;
 import java.nio.file.StandardCopyOption;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 public class KameletGenerator extends AbstractGenerator {
@@ -39,7 +45,7 @@ public class KameletGenerator extends AbstractGenerator {
 
     public static void generate() throws Exception {
         KameletGenerator g = new KameletGenerator();
-        g.createKamelets("karavan-app/src/main/resources/kamelets", false);
+        g.createKamelets("karavan-app/src/main/resources/kamelets", true);
         g.createKamelets("karavan-designer/public/kamelets", false);
         g.createKamelets("karavan-vscode/kamelets", true);
     }
@@ -49,16 +55,18 @@ public class KameletGenerator extends AbstractGenerator {
         KameletsCatalog catalog = new KameletsCatalog();
         StringBuilder list = new StringBuilder();
         StringBuilder sources = new StringBuilder();
-        catalog.getKamelets().entrySet().stream()
-                .map(k -> k.getValue().getMetadata().getName())
-                .forEach(name -> {
-                    list.append(name).append("\n");
-                    if (singleFile) {
-                        sources.append(readKamelet(name)).append("\n---\n");
-                    } else {
-                        saveKamelet(folder, name);
-                    }
-                });
+
+        List<Map.Entry<String, Kamelet>> kamelets = new ArrayList<>(catalog.getKamelets().entrySet());
+        for (int i = 0; i < kamelets.size() ; i++) {
+            Map.Entry<String, Kamelet> k = kamelets.get(i);
+            String name = k.getValue().getMetadata().getName();
+            list.append(name).append("\n");
+            if (singleFile) {
+                sources.append(readKamelet(name)).append(i != kamelets.size() - 1 ? "\n---\n": "\n");
+            } else {
+                saveKamelet(folder, name);
+            }
+        }
         saveFile(folder, "kamelets.properties", list.toString());
         if (singleFile) {
             saveFile(folder, "kamelets.yaml", sources.toString());
diff --git a/karavan-vscode/kamelets/kamelets.yaml b/karavan-vscode/kamelets/kamelets.yaml
index bc4b9ef..6c31ca1 100644
--- a/karavan-vscode/kamelets/kamelets.yaml
+++ b/karavan-vscode/kamelets/kamelets.yaml
@@ -16253,4 +16253,3 @@ spec:
       - set-header:
           name: "Content-Type"
           constant: "application/json"
----
diff --git a/karavan-vscode/src/utils.ts b/karavan-vscode/src/utils.ts
index 8ccdbb6..3d3279d 100644
--- a/karavan-vscode/src/utils.ts
+++ b/karavan-vscode/src/utils.ts
@@ -60,8 +60,7 @@ async function readBuildInKamelets(context: ExtensionContext) {
     const result: string[] = [];
     const file = await readFile(kameletsPath);
     const code = Buffer.from(file).toString('utf8');
-    code.split("\n---\n").map(c => c.trim())
-        .filter(x => x !== undefined && x.length > 100).forEach(z => result.push(z));
+    code.split("\n---\n").map(c => c.trim()).forEach(z => result.push(z));
     return result;
 }
 


[camel-karavan] 03/04: Fix #486

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

marat pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git

commit 3c6b699bb5836fa15507bde446e880cb3d3ee368
Author: Marat Gubaidullin <ma...@gmail.com>
AuthorDate: Thu Oct 6 01:04:10 2022 -0400

    Fix #486
---
 karavan-core/src/core/model/KameletModels.ts       |  4 +++
 .../src/designer/route/DslSelector.tsx             |  1 -
 karavan-designer/src/designer/utils/CamelUi.tsx    | 30 ++++++++++++----------
 3 files changed, 20 insertions(+), 15 deletions(-)

diff --git a/karavan-core/src/core/model/KameletModels.ts b/karavan-core/src/core/model/KameletModels.ts
index 81a7d5f..33acf65 100644
--- a/karavan-core/src/core/model/KameletModels.ts
+++ b/karavan-core/src/core/model/KameletModels.ts
@@ -101,6 +101,10 @@ export class KameletModel {
     return this.spec.definition.title;
   }
 
+  description(): string {
+    return this.spec.definition.description;
+  }
+
   properties(): any {
     return this.spec.definition.properties;
   }
diff --git a/karavan-designer/src/designer/route/DslSelector.tsx b/karavan-designer/src/designer/route/DslSelector.tsx
index c3d8644..7aa267d 100644
--- a/karavan-designer/src/designer/route/DslSelector.tsx
+++ b/karavan-designer/src/designer/route/DslSelector.tsx
@@ -165,7 +165,6 @@ export class DslSelector extends React.Component<Props, State> {
                 }
                 actions={{}}>
                 <PageSection variant={this.props.dark ? "darker" : "light"}>
-
                     <Gallery key={"gallery-" + labelText} hasGutter className="dsl-gallery">
                         {CamelUi.getSelectorModelsForParentFiltered(parentDsl, labelText, this.props.showSteps)
                             .filter((dsl: DslMetaModel) => this.checkFilter(dsl))
diff --git a/karavan-designer/src/designer/utils/CamelUi.tsx b/karavan-designer/src/designer/utils/CamelUi.tsx
index bd707b9..40252a9 100644
--- a/karavan-designer/src/designer/utils/CamelUi.tsx
+++ b/karavan-designer/src/designer/utils/CamelUi.tsx
@@ -159,20 +159,22 @@ export class CamelUi {
 
     static getKameletDslMetaModel = (type: 'source' | "sink" | "action"): DslMetaModel[] => {
         return KameletApi.getKamelets().filter((k) => k.metadata.labels["camel.apache.org/kamelet.type"] === type)
-            .map((k) =>
-                    new DslMetaModel({
-                        dsl: type === 'source' ? "FromDefinition" : "ToDefinition",
-                        uri: "kamelet:" + k.metadata.name,
-                        labels: k.type(),
-                        navigation: "kamelet",
-                        type: k.type(),
-                        name: k.metadata.name,
-                        title: k.title(),
-                        description: k.title(),
-                        version: k.version(),
-                        supportLevel: k.metadata.annotations["camel.apache.org/kamelet.support.level"],
-                    })
-            );
+            .map((k) => {
+                const descriptionLines = k.description().split("\n");
+                const description = descriptionLines.at(0);
+                return new DslMetaModel({
+                    dsl: type === 'source' ? "FromDefinition" : "ToDefinition",
+                    uri: "kamelet:" + k.metadata.name,
+                    labels: k.type(),
+                    navigation: "kamelet",
+                    type: k.type(),
+                    name: k.metadata.name,
+                    title: k.title(),
+                    description: description,
+                    version: k.version(),
+                    supportLevel: k.metadata.annotations["camel.apache.org/kamelet.support.level"],
+                })
+            });
     }
 
     static nameFromTitle = (title: string): string => {