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:57 UTC
[camel-karavan] 02/04: Upload kamalets and component as batch
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;
}