diff --git a/phileas-core/pom.xml b/phileas-core/pom.xml index 369dc71c1..fc11768a9 100644 --- a/phileas-core/pom.xml +++ b/phileas-core/pom.xml @@ -119,12 +119,6 @@ ${junit.version} test - - io.findify - s3mock_2.12 - 0.2.6 - test - ai.grakn redis-mock diff --git a/phileas-core/src/main/java/ai/philterd/phileas/services/PhileasFilterService.java b/phileas-core/src/main/java/ai/philterd/phileas/services/PhileasFilterService.java index b1c39e851..cf7cb3f61 100644 --- a/phileas-core/src/main/java/ai/philterd/phileas/services/PhileasFilterService.java +++ b/phileas-core/src/main/java/ai/philterd/phileas/services/PhileasFilterService.java @@ -31,7 +31,17 @@ import ai.philterd.phileas.model.responses.BinaryDocumentFilterResponse; import ai.philterd.phileas.model.responses.FilterResponse; import ai.philterd.phileas.model.serializers.PlaceholderDeserializer; -import ai.philterd.phileas.model.services.*; +import ai.philterd.phileas.model.services.AlertService; +import ai.philterd.phileas.model.services.AnonymizationCacheService; +import ai.philterd.phileas.model.services.Classification; +import ai.philterd.phileas.model.services.DocumentProcessor; +import ai.philterd.phileas.model.services.FilterService; +import ai.philterd.phileas.model.services.MetricsService; +import ai.philterd.phileas.model.services.PolicyService; +import ai.philterd.phileas.model.services.PostFilter; +import ai.philterd.phileas.model.services.Redacter; +import ai.philterd.phileas.model.services.SentimentDetector; +import ai.philterd.phileas.model.services.SplitService; import ai.philterd.phileas.processors.unstructured.UnstructuredDocumentProcessor; import ai.philterd.phileas.service.ai.sentiment.OpenNLPSentimentDetector; import ai.philterd.phileas.services.alerts.AlertServiceFactory; @@ -39,9 +49,12 @@ import ai.philterd.phileas.services.disambiguation.VectorBasedSpanDisambiguationService; import ai.philterd.phileas.services.metrics.NoOpMetricsService; import ai.philterd.phileas.services.policies.LocalPolicyService; -import ai.philterd.phileas.services.policies.S3PolicyService; import ai.philterd.phileas.services.policies.utils.PolicyUtils; -import ai.philterd.phileas.services.postfilters.*; +import ai.philterd.phileas.services.postfilters.IgnoredPatternsFilter; +import ai.philterd.phileas.services.postfilters.IgnoredTermsFilter; +import ai.philterd.phileas.services.postfilters.TrailingNewLinePostFilter; +import ai.philterd.phileas.services.postfilters.TrailingPeriodPostFilter; +import ai.philterd.phileas.services.postfilters.TrailingSpacePostFilter; import ai.philterd.phileas.services.split.SplitFactory; import ai.philterd.services.pdf.PdfRedacter; import ai.philterd.services.pdf.PdfTextExtractor; @@ -55,7 +68,15 @@ import org.apache.logging.log4j.Logger; import java.io.IOException; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.LinkedHashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; public class PhileasFilterService implements FilterService { @@ -86,12 +107,10 @@ public PhileasFilterService(final PhileasConfiguration phileasConfiguration, fin this.filterCache = new ConcurrentHashMap<>(); // Configure the deserialization. - final GsonBuilder gsonBuilder = new GsonBuilder(); - gsonBuilder.registerTypeAdapter(String.class, new PlaceholderDeserializer()); - final Gson gson = gsonBuilder.create(); + final Gson gson = new GsonBuilder().registerTypeAdapter(String.class, new PlaceholderDeserializer()).create(); // Set the policy services. - this.policyService = buildPolicyService(phileasConfiguration); + this.policyService = new LocalPolicyService(phileasConfiguration); this.policyUtils = new PolicyUtils(policyService, gson); // Set the anonymization cache service. @@ -362,28 +381,6 @@ private List getBoundingBoxes(final Policy policy, final MimeType m } - private PolicyService buildPolicyService(final PhileasConfiguration phileasConfiguration) throws IOException { - - final PolicyService policyService; - final String s3Bucket = phileasConfiguration.policiesS3Bucket(); - - // If an S3 bucket is provided then instantiate an S3PolicyService. - if(StringUtils.isNotEmpty(s3Bucket)) { - - LOGGER.info("Initializing configuration for policies S3 bucket."); - policyService = new S3PolicyService(phileasConfiguration, false); - - } else { - - LOGGER.info("Using local storage for policies."); - policyService = new LocalPolicyService(phileasConfiguration); - - } - - return policyService; - - } - private List getPostFiltersForPolicy(final Policy policy) throws IOException { LOGGER.debug("Reloading policies."); diff --git a/phileas-core/src/test/java/ai/philterd/test/phileas/services/registry/S3PolicyServiceTest.java b/phileas-core/src/test/java/ai/philterd/test/phileas/services/policies/LocalPolicyServiceTest.java similarity index 54% rename from phileas-core/src/test/java/ai/philterd/test/phileas/services/registry/S3PolicyServiceTest.java rename to phileas-core/src/test/java/ai/philterd/test/phileas/services/policies/LocalPolicyServiceTest.java index 744a4d945..b91f62683 100644 --- a/phileas-core/src/test/java/ai/philterd/test/phileas/services/registry/S3PolicyServiceTest.java +++ b/phileas-core/src/test/java/ai/philterd/test/phileas/services/policies/LocalPolicyServiceTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package ai.philterd.test.phileas.services.registry; +package ai.philterd.test.phileas.services.policies; import ai.philterd.phileas.model.configuration.PhileasConfiguration; import ai.philterd.phileas.model.policy.Identifiers; @@ -23,22 +23,16 @@ import ai.philterd.phileas.model.policy.filters.strategies.rules.AgeFilterStrategy; import ai.philterd.phileas.model.policy.filters.strategies.rules.CreditCardFilterStrategy; import ai.philterd.phileas.model.services.PolicyService; -import ai.philterd.phileas.services.policies.S3PolicyService; +import ai.philterd.phileas.services.policies.LocalPolicyService; import com.google.gson.Gson; -import io.findify.s3mock.S3Mock; -import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import redis.embedded.RedisServer; +import java.io.File; import java.io.IOException; import java.nio.file.Files; -import java.nio.file.Path; import java.util.Arrays; import java.util.List; import java.util.Map; @@ -46,106 +40,32 @@ import static org.junit.jupiter.api.Assumptions.assumeFalse; -public class S3PolicyServiceTest { +public class LocalPolicyServiceTest { - private static final Logger LOGGER = LogManager.getLogger(S3PolicyServiceTest.class); + private static final Logger LOGGER = LogManager.getLogger(LocalPolicyServiceTest.class); - private Gson gson = new Gson(); - private RedisServer redisServer; - private S3Mock api; - - private static boolean isExternalRedis = false; + private final Gson gson = new Gson(); private PhileasConfiguration getConfiguration() throws IOException { - final Properties properties = new Properties(); - - final String redisHost = System.getenv("PHILTER_REDIS_HOST"); - final String redisPort = System.getenv("PHILTER_REDIS_PORT"); - final String redisSsl = System.getenv("PHILTER_REDIS_SSL"); - final String redisToken = System.getenv("PHILTER_REDIS_AUTH_TOKEN"); - final String redisClustered = System.getenv("PHILTER_REDIS_CLUSTERED"); - - properties.setProperty("filter.policies", "s3"); - properties.setProperty("filter.policies.s3.bucket", "policies"); - properties.setProperty("filter.policies.s3.prefix", "test/"); - properties.setProperty("cache.redis.enabled", "true"); - - if(StringUtils.isNotEmpty(redisHost)) { - - LOGGER.info("Using redis host: {}", redisHost); - - properties.setProperty("cache.redis.host", redisHost); - properties.setProperty("cache.redis.port", redisPort); - properties.setProperty("cache.redis.ssl", redisSsl); - properties.setProperty("cache.redis.auth.token", redisToken); - properties.setProperty("cache.redis.cluster", "true"); - properties.setProperty("cache.redis.cluster", redisClustered); - - } else { - - LOGGER.info("Using local redis host."); - - properties.setProperty("cache.redis.host", "localhost"); - properties.setProperty("cache.redis.port", "31000"); - properties.setProperty("cache.redis.ssl", "false"); - properties.setProperty("cache.redis.auth.token", ""); - properties.setProperty("cache.redis.cluster", "false"); + final String tempDirectory = Files.createTempDirectory("phileas-policies").toFile().getAbsolutePath(); - } + final Properties properties = new Properties(); + properties.setProperty("filter.policies.directory", tempDirectory); + properties.setProperty("cache.redis.enabled", "false"); return new PhileasConfiguration(properties); } - @BeforeAll - public static void beforeClass() { - - assumeFalse(System.getProperty("os.name").toLowerCase().startsWith("win")); - - final String redisHost = System.getenv("PHILTER_REDIS_HOST"); - - if(StringUtils.isNotEmpty(redisHost)) { - isExternalRedis = true; - } - - } - - @BeforeEach - public void before() throws IOException { - - LOGGER.info("Starting S3 emulator."); - - final Path temporaryDirectory = Files.createTempDirectory("s3mock"); - - api = new S3Mock.Builder().withPort(8001).withFileBackend(temporaryDirectory.toFile().getAbsolutePath()).build(); - api.start(); - - if(!isExternalRedis) { - redisServer = RedisServer.builder().setting("bind 127.0.0.1").port(31000).build(); - redisServer.start(); - } - - } - - @AfterEach - public void after() { - - api.shutdown(); - - if(!isExternalRedis) { - redisServer.stop(); - } - - } - @Test public void list() throws IOException { - final PolicyService policyService = new S3PolicyService(getConfiguration(), true); + final PolicyService policyService = new LocalPolicyService(getConfiguration()); policyService.save(gson.toJson(getPolicy("name1"))); policyService.save(gson.toJson(getPolicy("name2"))); + final List names = policyService.get(); LOGGER.info("Found {} policies", names.size()); @@ -159,7 +79,7 @@ public void list() throws IOException { @Test public void getAll() throws IOException { - final PolicyService policyService = new S3PolicyService(getConfiguration(), true); + final PolicyService policyService = new LocalPolicyService(getConfiguration()); policyService.save(gson.toJson(getPolicy("name1"))); policyService.save(gson.toJson(getPolicy("name2"))); @@ -181,7 +101,7 @@ public void save() throws IOException { final String policy = gson.toJson(getPolicy(name)); - final PolicyService policyService = new S3PolicyService(getConfiguration(), true); + final PolicyService policyService = new LocalPolicyService(getConfiguration()); policyService.save(policy); @@ -199,7 +119,7 @@ public void get() throws IOException { final String policy = gson.toJson(getPolicy(name)); - final PolicyService policyService = new S3PolicyService(getConfiguration(), true); + final PolicyService policyService = new LocalPolicyService(getConfiguration()); policyService.save(policy); @@ -215,7 +135,7 @@ public void delete() throws IOException { final String name = "default"; final String policy = gson.toJson(getPolicy(name)); - final PolicyService policyService = new S3PolicyService(getConfiguration(), true); + final PolicyService policyService = new LocalPolicyService(getConfiguration()); policyService.save(policy); @@ -225,6 +145,22 @@ public void delete() throws IOException { } + @Test + public void deleteOutsidePath() throws IOException { + + final File tempFile = File.createTempFile("phileas-", "-temp"); + tempFile.deleteOnExit(); + + Assertions.assertTrue(Files.exists(tempFile.toPath())); + + final String name = "../" + tempFile.getName(); + + final PolicyService policyService = new LocalPolicyService(getConfiguration()); + + Assertions.assertThrows(IOException.class, () -> policyService.delete(name)); + + } + private Policy getPolicy(String name) { AgeFilterStrategy ageFilterStrategy = new AgeFilterStrategy(); diff --git a/phileas-model/src/main/java/ai/philterd/phileas/model/configuration/PhileasConfiguration.java b/phileas-model/src/main/java/ai/philterd/phileas/model/configuration/PhileasConfiguration.java index e59abf7d8..3a2ee9aeb 100644 --- a/phileas-model/src/main/java/ai/philterd/phileas/model/configuration/PhileasConfiguration.java +++ b/phileas-model/src/main/java/ai/philterd/phileas/model/configuration/PhileasConfiguration.java @@ -117,18 +117,6 @@ public String policiesDirectory() { return getProperty("filter.policies.directory", "./policies/"); } - public String policiesS3Bucket() { - return getProperty("filter.policies.s3.bucket", ""); - } - - public String policiesS3Prefix() { - return getProperty("filter.policies.s3.prefix", ""); - } - - public String policiesS3Region() { - return getProperty("filter.policies.s3.region", "us-east-1"); - } - private String getProperty(final String property, final String defaultValue) { final String environmentVariableValue = getEnvironmentVariable(property); diff --git a/phileas-services/phileas-services-alerts/src/test/java/ai/philterd/test/phileas/services/alerts/RedisAlertServiceTest.java b/phileas-services/phileas-services-alerts/src/test/java/ai/philterd/test/phileas/services/alerts/RedisAlertServiceTest.java index df5b1a959..9b2d0a646 100644 --- a/phileas-services/phileas-services-alerts/src/test/java/ai/philterd/test/phileas/services/alerts/RedisAlertServiceTest.java +++ b/phileas-services/phileas-services-alerts/src/test/java/ai/philterd/test/phileas/services/alerts/RedisAlertServiceTest.java @@ -53,10 +53,6 @@ private PhileasConfiguration getConfiguration() throws IOException { final String redisToken = System.getenv("PHILTER_REDIS_AUTH_TOKEN"); final String redisClustered = System.getenv("PHILTER_REDIS_CLUSTERED"); - properties.setProperty("filter.policies", "s3"); - properties.setProperty("filter.policies.s3.bucket", "policies"); - properties.setProperty("filter.policies.s3.prefix", "/"); - properties.setProperty("cache.redis.enabled", "true"); if(StringUtils.isNotEmpty(redisHost)) { diff --git a/phileas-services/phileas-services-anonymization/src/test/java/ai/philterd/test/phileas/services/anonymization/cache/RedisAnonymizationCacheServiceTest.java b/phileas-services/phileas-services-anonymization/src/test/java/ai/philterd/test/phileas/services/anonymization/cache/RedisAnonymizationCacheServiceTest.java index cb920d13e..c9ef91680 100644 --- a/phileas-services/phileas-services-anonymization/src/test/java/ai/philterd/test/phileas/services/anonymization/cache/RedisAnonymizationCacheServiceTest.java +++ b/phileas-services/phileas-services-anonymization/src/test/java/ai/philterd/test/phileas/services/anonymization/cache/RedisAnonymizationCacheServiceTest.java @@ -45,10 +45,6 @@ private PhileasConfiguration getConfiguration() throws IOException { final String redisToken = System.getenv("PHILTER_REDIS_AUTH_TOKEN"); final String redisClustered = System.getenv("PHILTER_REDIS_CLUSTERED"); - properties.setProperty("filter.policies", "s3"); - properties.setProperty("filter.policies.s3.bucket", "policies"); - properties.setProperty("filter.policies.s3.prefix", "/"); - properties.setProperty("cache.redis.enabled", "true"); if(StringUtils.isNotEmpty(redisHost)) { diff --git a/phileas-services/phileas-services-policies/pom.xml b/phileas-services/phileas-services-policies/pom.xml index f122b143f..e44ba1508 100644 --- a/phileas-services/phileas-services-policies/pom.xml +++ b/phileas-services/phileas-services-policies/pom.xml @@ -14,11 +14,6 @@ phileas-model ${project.version} - - com.amazonaws - aws-java-sdk-s3 - ${aws.version} - org.json json diff --git a/phileas-services/phileas-services-policies/src/main/java/ai/philterd/phileas/services/policies/LocalPolicyService.java b/phileas-services/phileas-services-policies/src/main/java/ai/philterd/phileas/services/policies/LocalPolicyService.java index 7313a5291..9672bc9b0 100644 --- a/phileas-services/phileas-services-policies/src/main/java/ai/philterd/phileas/services/policies/LocalPolicyService.java +++ b/phileas-services/phileas-services-policies/src/main/java/ai/philterd/phileas/services/policies/LocalPolicyService.java @@ -160,6 +160,8 @@ public void delete(String policyName) throws IOException { final File file = new File(policiesDirectory, policyName + JSON_EXTENSION); + LOGGER.info("Deleting policy at: {}", file.getAbsolutePath()); + if(file.exists()) { if(!file.delete()) { diff --git a/phileas-services/phileas-services-policies/src/main/java/ai/philterd/phileas/services/policies/S3PolicyService.java b/phileas-services/phileas-services-policies/src/main/java/ai/philterd/phileas/services/policies/S3PolicyService.java deleted file mode 100644 index 4aef1e2a1..000000000 --- a/phileas-services/phileas-services-policies/src/main/java/ai/philterd/phileas/services/policies/S3PolicyService.java +++ /dev/null @@ -1,299 +0,0 @@ -/* - * Copyright 2024 Philterd, LLC @ https://www.philterd.ai - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package ai.philterd.phileas.services.policies; - -import ai.philterd.phileas.model.configuration.PhileasConfiguration; -import com.amazonaws.auth.AWSStaticCredentialsProvider; -import com.amazonaws.auth.AnonymousAWSCredentials; -import com.amazonaws.auth.DefaultAWSCredentialsProviderChain; -import com.amazonaws.client.builder.AwsClientBuilder; -import com.amazonaws.services.s3.AmazonS3; -import com.amazonaws.services.s3.AmazonS3ClientBuilder; -import com.amazonaws.services.s3.model.*; -import ai.philterd.phileas.model.exceptions.api.BadRequestException; -import ai.philterd.phileas.model.exceptions.api.InternalServerErrorException; -import ai.philterd.phileas.model.services.AbstractPolicyService; -import ai.philterd.phileas.model.services.PolicyCacheService; -import ai.philterd.phileas.model.services.PolicyService; -import ai.philterd.phileas.services.policies.cache.PolicyCacheServiceFactory; -import org.apache.commons.io.IOUtils; -import org.apache.commons.lang3.StringUtils; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.json.JSONException; -import org.json.JSONObject; - -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.util.*; - -/** - * Implementation of {@link PolicyService} that is backed by S3. - */ -public class S3PolicyService extends AbstractPolicyService implements PolicyService { - - private static final Logger LOGGER = LogManager.getLogger(S3PolicyService.class); - - private static final String JSON_EXTENSION = ".json"; - - private AmazonS3 s3Client; - private String bucket; - private String prefix; - private PolicyCacheService policyCacheService; - - public S3PolicyService(PhileasConfiguration phileasConfiguration, boolean testing) throws IOException { - - this.bucket = phileasConfiguration.policiesS3Bucket(); - final String region = phileasConfiguration.policiesS3Region(); - - // If the prefix is not empty it must end with a forward slash. - if(!StringUtils.isEmpty(phileasConfiguration.policiesS3Prefix())) { - if(!phileasConfiguration.policiesS3Prefix().endsWith("/")) { - this.prefix = phileasConfiguration.policiesS3Prefix() + "/"; - } - } - - // Create a policy cache. - this.policyCacheService = PolicyCacheServiceFactory.getInstance(phileasConfiguration); - - LOGGER.info("Configuring S3 backend for policies in s3 bucket {}", bucket); - - if(testing) { - - final AwsClientBuilder.EndpointConfiguration endpoint = new AwsClientBuilder.EndpointConfiguration("http://localhost:8001", "us-west-2"); - - this.s3Client = AmazonS3ClientBuilder - .standard() - .withPathStyleAccessEnabled(true) - .withEndpointConfiguration(endpoint) - .withCredentials(new AWSStaticCredentialsProvider(new AnonymousAWSCredentials())) - .build(); - - this.s3Client.createBucket(bucket); - - } else { - - // Only permits credentials via the standard channels. - this.s3Client = AmazonS3ClientBuilder - .standard() - .withCredentials(new DefaultAWSCredentialsProviderChain()) - .withRegion(region) - .build(); - - } - - } - - @Override - public List get() { - - final List policyNames = new LinkedList<>(); - - try { - - LOGGER.info("Looking for policies in s3 bucket {}", bucket); - final ListObjectsV2Request listObjectsV2Request = new ListObjectsV2Request() - .withBucketName(bucket) - .withPrefix(prefix); - - ListObjectsV2Result result; - - do { - - result = s3Client.listObjectsV2(listObjectsV2Request); - - for (S3ObjectSummary objectSummary : result.getObjectSummaries()) { - - final S3Object fullObject = s3Client.getObject(new GetObjectRequest(bucket, objectSummary.getKey())); - final String json = IOUtils.toString(fullObject.getObjectContent(), StandardCharsets.UTF_8.name()); - - fullObject.close(); - - final JSONObject object = new JSONObject(json); - final String name = object.getString("name"); - - policyNames.add(name); - LOGGER.debug("Found policy named {}", name); - - } - - // If there are more than maxKeys keys in the bucket, get a continuation token and list the next objects. - final String token = result.getNextContinuationToken(); - - listObjectsV2Request.setContinuationToken(token); - - } while (result.isTruncated()); - - } catch (Exception ex) { - - LOGGER.error("Unable to get policy names.", ex); - - throw new InternalServerErrorException("Unable to get policy names."); - - } - - return policyNames; - - } - - @Override - public String get(String policyName) { - - try { - - // Get from cache. - LOGGER.info("Getting policy name [{}] from the cache.", policyName); - String json = policyCacheService.get(policyName); - - if(json == null) { - - // The policy was not in the cache. Look in S3. - LOGGER.info("Policy was not cached. Looking for policy {} in s3 bucket {}", policyName, bucket); - final S3Object fullObject = s3Client.getObject(new GetObjectRequest(bucket, prefix + policyName + JSON_EXTENSION)); - json = IOUtils.toString(fullObject.getObjectContent(), StandardCharsets.UTF_8.name()); - fullObject.close(); - - // Put it in the cache. - LOGGER.info("Caching policy [{}]", policyName); - policyCacheService.insert(policyName, json); - - } - - return json; - - } catch (Exception ex) { - - LOGGER.error("Unable to get policy.", ex); - - throw new InternalServerErrorException("Unable to get policy."); - - } - - } - - @Override - public Map getAll() { - - final Map policies = new HashMap<>(); - - try { - - LOGGER.info("Looking for all policies in s3 bucket {}", bucket); - final ListObjectsV2Request listObjectsV2Request = new ListObjectsV2Request() - .withBucketName(bucket) - .withPrefix(prefix); - - ListObjectsV2Result result; - - do { - - result = s3Client.listObjectsV2(listObjectsV2Request); - - LOGGER.info("Found {} policies.", result.getObjectSummaries().size()); - - for (final S3ObjectSummary objectSummary : result.getObjectSummaries()) { - - // Ignore any non .json files. - if (objectSummary.getKey().endsWith(JSON_EXTENSION)) { - - final S3Object fullObject = s3Client.getObject(new GetObjectRequest(bucket, objectSummary.getKey())); - final String json = IOUtils.toString(fullObject.getObjectContent(), StandardCharsets.UTF_8.name()); - - fullObject.close(); - - final JSONObject object = new JSONObject(json); - final String name = object.getString("name"); - - LOGGER.info("Adding policy named [{}]", name); - policies.put(name, json); - - LOGGER.info("Caching policy [{}]", name); - policyCacheService.insert(name, json); - - } - - } - - // If there are more than maxKeys keys in the bucket, get a continuation token and list the next objects. - final String token = result.getNextContinuationToken(); - - listObjectsV2Request.setContinuationToken(token); - - } while (result.isTruncated()); - - } catch (Exception ex) { - - LOGGER.error("Unable to get all policy names.", ex); - - throw new InternalServerErrorException("Unable to get all policies."); - - } - - return policies; - - } - - @Override - public void save(String policyJson) { - - try { - - final JSONObject object = new JSONObject(policyJson); - final String name = object.getString("name"); - - LOGGER.info("Uploading object to s3://{}/{}", bucket, name + JSON_EXTENSION); - s3Client.putObject(bucket, prefix + name + JSON_EXTENSION, policyJson); - - // Insert it into the cache. - policyCacheService.insert(name, policyJson); - - } catch (JSONException ex) { - - LOGGER.error("The provided policy is not valid.", ex); - throw new BadRequestException("The provided policy is not valid."); - - } catch (Exception ex) { - - LOGGER.error("Unable to save policy.", ex); - - throw new InternalServerErrorException("Unable to save policy."); - - } - - } - - @Override - public void delete(String policyName) { - - try { - - LOGGER.info("Deleting object from s3://{}/{}", bucket, policyName + JSON_EXTENSION); - s3Client.deleteObject(bucket, prefix + policyName + JSON_EXTENSION); - - // Remove it from the cache. - policyCacheService.remove(policyName); - - } catch (Exception ex) { - - LOGGER.error("Unable to delete policy.", ex); - - throw new InternalServerErrorException("Unable to delete policy."); - - } - - } - -} diff --git a/phileas-services/phileas-services-policies/src/main/java/ai/philterd/phileas/services/policies/StaticPolicyService.java b/phileas-services/phileas-services-policies/src/main/java/ai/philterd/phileas/services/policies/StaticPolicyService.java index 208273186..c2ceac339 100644 --- a/phileas-services/phileas-services-policies/src/main/java/ai/philterd/phileas/services/policies/StaticPolicyService.java +++ b/phileas-services/phileas-services-policies/src/main/java/ai/philterd/phileas/services/policies/StaticPolicyService.java @@ -35,7 +35,7 @@ public class StaticPolicyService implements PolicyService { private static final Logger LOGGER = LogManager.getLogger(StaticPolicyService.class); - private Policy policy; + private final Policy policy; private Gson gson; /** diff --git a/pom.xml b/pom.xml index 6d08d4f7f..7cd0acef5 100644 --- a/pom.xml +++ b/pom.xml @@ -77,7 +77,6 @@ UTF-8 4.13.2 - 1.12.778 4.4 3.17.0 1.2