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
The following commit(s) were added to refs/heads/main by this push:
new d2651e8c Fix save file
d2651e8c is described below
commit d2651e8cf71ce289178a710163953449c49f902b
Author: Marat Gubaidullin <[email protected]>
AuthorDate: Tue Jan 30 17:21:42 2024 -0500
Fix save file
---
.../apache/camel/karavan/api/ProjectFileResource.java | 16 +++++++++++++++-
.../camel/karavan/infinispan/InfinispanService.java | 7 -------
.../validation/project/ProjectFileCreateValidator.java | 3 +--
.../karavan-app/src/main/webui/src/api/KaravanApi.tsx | 4 ++--
.../karavan-app/src/main/webui/src/api/ProjectService.ts | 4 ++--
.../src/main/webui/src/project/DevModeToolbar.tsx | 12 ++++++------
.../src/main/webui/src/project/FileEditor.tsx | 4 ++--
.../src/main/webui/src/projects/ProjectsTableRow.tsx | 2 +-
8 files changed, 29 insertions(+), 23 deletions(-)
diff --git
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectFileResource.java
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectFileResource.java
index bf00fa8a..77776f6c 100644
---
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectFileResource.java
+++
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectFileResource.java
@@ -22,6 +22,7 @@ import jakarta.ws.rs.core.MediaType;
import org.apache.camel.karavan.code.CodeService;
import org.apache.camel.karavan.infinispan.InfinispanService;
import org.apache.camel.karavan.infinispan.model.ProjectFile;
+import org.apache.camel.karavan.validation.project.ProjectFileCreateValidator;
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;
@@ -39,6 +40,9 @@ public class ProjectFileResource {
@Inject
CodeService codeService;
+ @Inject
+ ProjectFileCreateValidator projectFileCreateValidator;
+
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/{projectId}")
@@ -52,7 +56,17 @@ public class ProjectFileResource {
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
- public ProjectFile save(ProjectFile file) throws Exception {
+ public ProjectFile create(ProjectFile file) throws Exception {
+ file.setLastUpdate(Instant.now().toEpochMilli());
+ projectFileCreateValidator.validate(file).failOnError();
+ infinispanService.saveProjectFile(file);
+ return file;
+ }
+
+ @PUT
+ @Produces(MediaType.APPLICATION_JSON)
+ @Consumes(MediaType.APPLICATION_JSON)
+ public ProjectFile update(ProjectFile file) throws Exception {
file.setLastUpdate(Instant.now().toEpochMilli());
infinispanService.saveProjectFile(file);
return file;
diff --git
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/InfinispanService.java
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/InfinispanService.java
index 594dde7b..fca6c20e 100644
---
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/InfinispanService.java
+++
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/InfinispanService.java
@@ -17,10 +17,8 @@
package org.apache.camel.karavan.infinispan;
import jakarta.enterprise.inject.Default;
-import jakarta.inject.Inject;
import jakarta.inject.Singleton;
import org.apache.camel.karavan.infinispan.model.*;
-import org.apache.camel.karavan.validation.project.ProjectFileCreateValidator;
import org.eclipse.microprofile.config.inject.ConfigProperty;
import org.eclipse.microprofile.faulttolerance.Retry;
import org.eclipse.microprofile.health.HealthCheck;
@@ -65,9 +63,6 @@ public class InfinispanService implements HealthCheck {
@ConfigProperty(name = "karavan.infinispan.password")
String infinispanPassword;
- @Inject
- ProjectFileCreateValidator projectFileCreateValidator;
-
private RemoteCache<GroupedKey, Project> projects;
private RemoteCache<GroupedKey, ProjectFile> files;
private RemoteCache<GroupedKey, DeploymentStatus> deploymentStatuses;
@@ -179,8 +174,6 @@ public class InfinispanService implements HealthCheck {
}
public void saveProjectFile(ProjectFile file) {
- projectFileCreateValidator.validate(file).failOnError();
-
files.put(GroupedKey.create(file.getProjectId(), DEFAULT_ENVIRONMENT,
file.getName()), file);
}
diff --git
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/validation/project/ProjectFileCreateValidator.java
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/validation/project/ProjectFileCreateValidator.java
index 686c3db1..f6f71265 100644
---
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/validation/project/ProjectFileCreateValidator.java
+++
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/validation/project/ProjectFileCreateValidator.java
@@ -21,14 +21,13 @@ public class ProjectFileCreateValidator extends
Validator<ProjectFile> {
this.infinispanService = infinispanService;
}
-
@Override
protected void validationRules(ProjectFile value, List<ValidationError>
errors) {
simpleValidator.validate(value, errors);
boolean projectFileExists =
infinispanService.getProjectFile(value.getProjectId(), value.getName()) != null;
- if(projectFileExists) {
+ if (projectFileExists) {
errors.add(new ValidationError("name", "File with given name
already exists"));
}
}
diff --git a/karavan-web/karavan-app/src/main/webui/src/api/KaravanApi.tsx
b/karavan-web/karavan-app/src/main/webui/src/api/KaravanApi.tsx
index 840e0234..4cef25c0 100644
--- a/karavan-web/karavan-app/src/main/webui/src/api/KaravanApi.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/api/KaravanApi.tsx
@@ -271,8 +271,8 @@ export class KaravanApi {
return instance.post('/api/file', file);
}
- static async postProjectFile(file: ProjectFile, after: (res:
AxiosResponse<any>) => void) {
- instance.post('/api/file', file)
+ static async putProjectFile(file: ProjectFile, after: (res:
AxiosResponse<any>) => void) {
+ instance.put('/api/file', file)
.then(res => {
after(res);
}).catch(err => {
diff --git a/karavan-web/karavan-app/src/main/webui/src/api/ProjectService.ts
b/karavan-web/karavan-app/src/main/webui/src/api/ProjectService.ts
index d0d03034..0876b506 100644
--- a/karavan-web/karavan-app/src/main/webui/src/api/ProjectService.ts
+++ b/karavan-web/karavan-app/src/main/webui/src/api/ProjectService.ts
@@ -139,8 +139,8 @@ export class ProjectService {
})
}
- public static saveFile(file: ProjectFile, active: boolean) {
- KaravanApi.postProjectFile(file, res => {
+ public static updateFile(file: ProjectFile, active: boolean) {
+ KaravanApi.putProjectFile(file, res => {
if (res.status === 200) {
const newFile = res.data;
useFilesStore.getState().upsertFile(newFile);
diff --git
a/karavan-web/karavan-app/src/main/webui/src/project/DevModeToolbar.tsx
b/karavan-web/karavan-app/src/main/webui/src/project/DevModeToolbar.tsx
index af580439..e2b0bfe1 100644
--- a/karavan-web/karavan-app/src/main/webui/src/project/DevModeToolbar.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/project/DevModeToolbar.tsx
@@ -78,7 +78,7 @@ export function DevModeToolbar(props: Props) {
}
return (<Flex className="toolbar" direction={{default: "row"}}
alignItems={{default: "alignItemsCenter"}}>
- <FlexItem className="refresher">
+ <FlexItem className="dev-action-button-place refresher">
{poll && <Spinner className="spinner" size="lg"
aria-label="Refresh"/>}
<Tooltip content={poll ? "Stop refresh" : "Refresh auto"}
position={TooltipPosition.bottom}>
<Button className="dev-action-button button"
@@ -96,7 +96,7 @@ export function DevModeToolbar(props: Props) {
{containerStatus?.containerId && <FlexItem>
<Label icon={icon} color={color}>
<Tooltip content={"Show log"}
position={TooltipPosition.bottom}>
- <Button className='dev-action-button labeled-button'
variant="link" isDisabled={!isRunning}
+ <Button className='labeled-button' variant="link"
isDisabled={!isRunning}
onClick={e =>
setShowLog(true, 'container',
containerStatus.containerName)}>
{containerStatus.containerName}
@@ -105,7 +105,7 @@ export function DevModeToolbar(props: Props) {
<Badge isRead>{containerStatus.type}</Badge>
</Label>
</FlexItem>}
- {!isRunning && <FlexItem>
+ {!isRunning && <FlexItem className="dev-action-button-place">
<Tooltip content="Verbose" position={TooltipPosition.bottom}>
<Switch aria-label="verbose"
id="verbose"
@@ -114,7 +114,7 @@ export function DevModeToolbar(props: Props) {
/>
</Tooltip>
</FlexItem>}
- {!isRunning && <FlexItem>
+ {!isRunning && <FlexItem className="dev-action-button-place">
<Tooltip content="Run in developer mode"
position={TooltipPosition.bottomEnd}>
<Button className="dev-action-button" size="sm"
isDisabled={(!(commands.length === 0) &&
!commands.includes('run')) || inTransit}
@@ -128,7 +128,7 @@ export function DevModeToolbar(props: Props) {
</Button>
</Tooltip>
</FlexItem>}
- {isRunning && inDevMode && <FlexItem>
+ {isRunning && inDevMode && <FlexItem
className="dev-action-button-place">
<Tooltip content="Reload" position={TooltipPosition.bottomEnd}>
<Button className="project-button dev-action-button" size="sm"
isDisabled={inTransit}
@@ -138,7 +138,7 @@ export function DevModeToolbar(props: Props) {
</Button>
</Tooltip>
</FlexItem>}
- {inDevMode && <FlexItem>
+ {inDevMode && <FlexItem className="dev-action-button-place">
<Tooltip content="Delete container"
position={TooltipPosition.bottomEnd}>
<Button className="dev-action-button" size="sm"
isDisabled={!commands.includes('delete') || inTransit}
diff --git a/karavan-web/karavan-app/src/main/webui/src/project/FileEditor.tsx
b/karavan-web/karavan-app/src/main/webui/src/project/FileEditor.tsx
index b98285eb..7193243a 100644
--- a/karavan-web/karavan-app/src/main/webui/src/project/FileEditor.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/project/FileEditor.tsx
@@ -41,7 +41,7 @@ export function FileEditor (props: Props) {
function save (name: string, code: string) {
if (file) {
file.code = code;
- ProjectService.saveFile(file, true);
+ ProjectService.updateFile(file, true);
}
}
@@ -61,7 +61,7 @@ export function FileEditor (props: Props) {
tab={designerTab}
onSave={(name, yaml) => save(name, yaml)}
onSaveCustomCode={(name, code) =>
- ProjectService.saveFile(new ProjectFile(name + ".java",
props.projectId, code, Date.now()), false)}
+ ProjectService.updateFile(new ProjectFile(name + ".java",
props.projectId, code, Date.now()), false)}
onGetCustomCode={onGetCustomCode}
/>
)
diff --git
a/karavan-web/karavan-app/src/main/webui/src/projects/ProjectsTableRow.tsx
b/karavan-web/karavan-app/src/main/webui/src/projects/ProjectsTableRow.tsx
index 6e4da548..9e47d449 100644
--- a/karavan-web/karavan-app/src/main/webui/src/projects/ProjectsTableRow.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/projects/ProjectsTableRow.tsx
@@ -81,7 +81,7 @@ export function ProjectsTableRow (props: Props) {
const active = value[1];
const color = active ? "green" : "grey"
const style = active ? {fontWeight: "bold"} : {}
- return <Label style={style} color={color}
>{value[0]}</Label>
+ return <Label key={value.toString()} style={style}
color={color} >{value[0]}</Label>
})}
</div>
}