Skip to content

Commit

Permalink
Implement on other endpoints
Browse files Browse the repository at this point in the history
  • Loading branch information
nielsm5 committed Jun 8, 2024
1 parent 9fee12e commit 194d60b
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 53 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

import org.apache.commons.io.FilenameUtils;
import org.frankframework.frankflow.util.FileUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
Expand All @@ -34,9 +35,12 @@
@RestController
public class DirectoryApi {

@Autowired
private Configurations configurations;

@PostMapping(value = "/configurations/{name}/directories", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> makeDirectory(@PathVariable("name") String configurationName, @RequestParam("path") String path) {
File rootFolder = FileUtils.getDir(configurationName);
File rootFolder = FileUtils.getConfigurationRoot(configurations.getConfiguration(configurationName));
File file = getFile(rootFolder, path);

if(file.exists()) {
Expand All @@ -56,7 +60,7 @@ public ResponseEntity<?> renameFolder(@PathVariable("name") String configuration
throw new ApiException("An unexpected error occurred, property [newName] does not exist or is empty");
}

File rootFolder = FileUtils.getDir(configurationName);
File rootFolder = FileUtils.getConfigurationRoot(configurations.getConfiguration(configurationName));
File file = getFile(rootFolder, path);

if(path.contains("/")) {
Expand All @@ -82,7 +86,7 @@ public ResponseEntity<?> renameFolder(@PathVariable("name") String configuration

@DeleteMapping(value = "/configurations/{name}/directories", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> deleteDirectory(@PathVariable("name") String configurationName, @RequestParam("path") String path) {
File rootFolder = FileUtils.getDir(configurationName);
File rootFolder = FileUtils.getConfigurationRoot(configurations.getConfiguration(configurationName));
File file = getFile(rootFolder, path);

if(!file.exists()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import org.apache.commons.io.FilenameUtils;
import org.frankframework.frankflow.util.FileUtils;
import org.frankframework.frankflow.util.MimeTypeUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
Expand All @@ -42,9 +43,12 @@
@RestController
public class FileApi {

@Autowired
private Configurations configurations;

@GetMapping(value = "/configurations/{name}/files", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> getFile(@PathVariable("name") String configurationName, @RequestParam("path") String path) {
File rootFolder = FileUtils.getDir(configurationName);
File rootFolder = FileUtils.getConfigurationRoot(configurations.getConfiguration(configurationName));
File file = getFile(rootFolder, path);
if(!file.exists()) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
Expand All @@ -68,7 +72,7 @@ public ResponseEntity<?> createFolder(@PathVariable("name") String configuration
throw new ApiException("Missing form-data [file] parameter");
}

File rootFolder = FileUtils.getDir(configurationName);
File rootFolder = FileUtils.getConfigurationRoot(configurations.getConfiguration(configurationName));
File file = getFile(rootFolder, path);
if(file.exists()) {
if(file.isDirectory()) {
Expand Down Expand Up @@ -96,7 +100,7 @@ public ResponseEntity<?> renameFolder(@PathVariable("name") String configuration
throw new ApiException("An unexpected error occurred, property [newName] does not exist or is empty");
}

File rootFolder = FileUtils.getDir(configurationName);
File rootFolder = FileUtils.getConfigurationRoot(configurations.getConfiguration(configurationName));
File file = getFile(rootFolder, path);

if(path.contains("/")) {
Expand Down Expand Up @@ -127,7 +131,7 @@ public ResponseEntity<?> saveFile(@PathVariable("name") String configurationName
throw new ApiException("Missing form-data [file] parameter");
}

File rootFolder = FileUtils.getDir(configurationName);
File rootFolder = FileUtils.getConfigurationRoot(configurations.getConfiguration(configurationName));
File file = getFile(rootFolder, path);
if(file.exists()) {
throw new ApiException("File already exists", HttpStatus.CONFLICT);
Expand All @@ -148,7 +152,7 @@ public ResponseEntity<?> saveFile(@PathVariable("name") String configurationName

@DeleteMapping(value = "/configurations/{name}/files", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> deleteFile(@PathVariable("name") String configurationName, @RequestParam("path") String path) {
File rootFolder = FileUtils.getDir(configurationName);
File rootFolder = FileUtils.getConfigurationRoot(configurations.getConfiguration(configurationName));
File file = getFile(rootFolder, path);
if(!file.exists()) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,11 @@
package org.frankframework.frankflow.lifecycle;

import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.frankframework.frankflow.util.FileUtils;
import org.frankframework.management.bus.LocalGateway;
import org.frankframework.management.bus.OutboundGatewayFactory;
import org.frankframework.management.gateway.HazelcastOutboundGateway;
import org.ibissource.frankflow.FrontendServlet;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
Expand All @@ -34,24 +30,10 @@

@Configuration
public class AnnotationConfig {
private Logger log = LogManager.getLogger(this);
private String basePath = null;

@Value("${configurations.directory}")
private String configurationsDirectory;

@Autowired
private ApplicationContext applicationContext;

@Bean
@Scope("singleton")
public String getConfigurationsDirectory() {
FileUtils.BASE_DIR = configurationsDirectory;
log.info("using configurations.directory [{}]", configurationsDirectory);

return basePath;
}

@Bean
@Scope("singleton")
public ServletRegistrationBean<FrontendServlet> frontend() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,13 @@
import java.util.ArrayList;
import java.util.List;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.frankframework.frankflow.dto.ConfigurationDTO;
import org.frankframework.frankflow.util.FileUtils;
import org.frankframework.management.bus.BusAction;
import org.frankframework.management.bus.BusTopic;
import org.frankframework.management.bus.message.JsonMessage;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.integration.core.MessageSelector;
import org.springframework.integration.dispatcher.MessageDispatcher;
Expand All @@ -40,6 +42,10 @@
*/
@Component
public class ConfigurationsDirectory {
private static final Logger log = LogManager.getLogger(ConfigurationsDirectory.class);

@Value("${configurations.directory}")
private String configurationsDirectory;

/**
* This method is picked up by the IbisInitializer annotation and autowired via the SpringEnvironmentContext.
Expand All @@ -65,13 +71,26 @@ public MessageHandler getHandler() {
return serviceActivator;
}

private File getConfigurationsDirectory() {
log.info("using configurations.directory [{}]", configurationsDirectory);
File dir = new File(configurationsDirectory);

if(!dir.exists()) {
throw new IllegalStateException("path ["+configurationsDirectory+"] doesn't not exist");
}
if(!dir.isDirectory()) {
throw new IllegalStateException("path ["+configurationsDirectory+"] is not a directory");
}
return dir;
}

/**
* The actual action that is performed when calling the bus with the LOGGING topic.
*/
@RolesAllowed({"IbisObserver", "IbisDataAdmin", "IbisAdmin", "IbisTester"})
public Message<String> getConfigurationsDirectory(Message<?> message) {
List<ConfigurationDTO> configurations = new ArrayList<>();
for(File folder : FileUtils.getBaseDir().listFiles()) {
for(File folder : getConfigurationsDirectory().listFiles()) {
ConfigurationDTO dto = new ConfigurationDTO();
dto.setName(folder.getName());
dto.setDirectory(folder.getAbsolutePath());
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
Copyright 2020 WeAreFrank!
Copyright 2020 - 2024 WeAreFrank!
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand All @@ -17,38 +17,19 @@

import java.io.File;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.frankframework.frankflow.dto.ConfigurationDTO;

public abstract class FileUtils {

private static final Logger log = LogManager.getLogger(FileUtils.class);
public static String BASE_DIR;

public static File getBaseDir() {
log.info("using configurations.directory [{}]", BASE_DIR);
return getDir((File)null, BASE_DIR);
}

/**
* Get sub-directory relative to baseDir
*/
public static File getDir(String directory) {
return getDir(getBaseDir(), directory);
}

/**
* Get sub-directory relative to baseDir
*/
public static File getDir(String baseDir, String directory) {
return getDir(getDir(baseDir), directory);
public static File getConfigurationRoot(ConfigurationDTO config) {
return getDir(config.getDirectory());
}

/**
* Get sub-directory relative to baseDir
*/
private static File getDir(File baseDir, String directory) {
File dir = new File(baseDir, directory);
private static File getDir(String directory) {
File dir = new File(directory);
if(!dir.exists()) {
throw new IllegalStateException("path ["+directory+"] doesn't not exist");
}
Expand Down

0 comments on commit 194d60b

Please sign in to comment.