diff --git a/.github/workflows/External-Storage-Tests.yml b/.github/workflows/cloud-storage-tests.yml similarity index 93% rename from .github/workflows/External-Storage-Tests.yml rename to .github/workflows/cloud-storage-tests.yml index fa622ca51..acce56a5e 100644 --- a/.github/workflows/External-Storage-Tests.yml +++ b/.github/workflows/cloud-storage-tests.yml @@ -1,4 +1,4 @@ -name: External Storage Tests +name: Cloud Storage Tests on: workflow_dispatch: @@ -16,8 +16,8 @@ on: - cron: '0 0 * * 1' # At 00:00 on (every) Monday jobs: - test-external-storages: - name: Test External Storage + test-cloud-storage-providers: + name: Cloud Storage Provider Test env: GIT_REF: ${{ github.ref }} GIT_SHA: ${{ github.sha }} @@ -45,7 +45,7 @@ jobs: - name: Install run: mvn -B install --file $POM_PATH - - name: Test External Storages + - name: Test Cloud Storage run: | export AWSS3_TEST_ENABLED=true export STORAGE_AWSS3_ACCESS_KEY="${{ secrets.AWSS3_ACCESS_KEY }}" @@ -72,4 +72,4 @@ jobs: export STORAGE_GOOGLECS_FOLDER_NAME=gxclasses export STORAGE_GOOGLECS_APPLICATION_NAME=gxjavacloudstorageunittests - mvn -B -pl gxexternalproviders test --file $POM_PATH + mvn -B -pl gxcloudstorage-tests test --file $POM_PATH diff --git a/common/src/main/java/com/genexus/util/ResourceAccessControlList.java b/common/src/main/java/com/genexus/db/driver/ResourceAccessControlList.java similarity index 100% rename from common/src/main/java/com/genexus/util/ResourceAccessControlList.java rename to common/src/main/java/com/genexus/db/driver/ResourceAccessControlList.java diff --git a/gxcloudstorage-awss3/pom.xml b/gxcloudstorage-awss3/pom.xml new file mode 100644 index 000000000..33220655c --- /dev/null +++ b/gxcloudstorage-awss3/pom.xml @@ -0,0 +1,33 @@ + + + 4.0.0 + + + com.genexus + parent + ${revision}${changelist} + + + gxcloudstorage-awss3 + GeneXus AWS S3 Cloud Storage + + + + ${project.groupId} + gxclassR + ${project.version} + + + com.genexus + gxcloudstorage-common + ${project.version} + + + com.amazonaws + aws-java-sdk-s3 + ${com.amazonaws.version} + + + \ No newline at end of file diff --git a/gxexternalproviders/src/main/java/com/genexus/db/driver/ExternalProviderS3.java b/gxcloudstorage-awss3/src/main/java/com/genexus/db/driver/ExternalProviderS3.java similarity index 100% rename from gxexternalproviders/src/main/java/com/genexus/db/driver/ExternalProviderS3.java rename to gxcloudstorage-awss3/src/main/java/com/genexus/db/driver/ExternalProviderS3.java diff --git a/gxcloudstorage-azureblob/pom.xml b/gxcloudstorage-azureblob/pom.xml new file mode 100644 index 000000000..f37cd1ba9 --- /dev/null +++ b/gxcloudstorage-azureblob/pom.xml @@ -0,0 +1,33 @@ + + + 4.0.0 + + + com.genexus + parent + ${revision}${changelist} + + + gxcloudstorage-azureblob + GeneXus Azure Blob Cloud Storage + + + + ${project.groupId} + gxclassR + ${project.version} + + + com.genexus + gxcloudstorage-common + ${project.version} + + + com.microsoft.azure + azure-storage + 8.6.6 + + + diff --git a/gxexternalproviders/src/main/java/com/genexus/db/driver/ExternalProviderAzureStorage.java b/gxcloudstorage-azureblob/src/main/java/com/genexus/db/driver/ExternalProviderAzureStorage.java similarity index 98% rename from gxexternalproviders/src/main/java/com/genexus/db/driver/ExternalProviderAzureStorage.java rename to gxcloudstorage-azureblob/src/main/java/com/genexus/db/driver/ExternalProviderAzureStorage.java index 27faf6205..332aa47c0 100644 --- a/gxexternalproviders/src/main/java/com/genexus/db/driver/ExternalProviderAzureStorage.java +++ b/gxcloudstorage-azureblob/src/main/java/com/genexus/db/driver/ExternalProviderAzureStorage.java @@ -1,26 +1,21 @@ package com.genexus.db.driver; import com.genexus.Application; +import com.genexus.StructSdtMessages_Message; import com.genexus.util.GXService; import com.genexus.util.StorageUtils; -import com.genexus.StructSdtMessages_Message; - -import com.microsoft.azure.storage.*; +import com.microsoft.azure.storage.CloudStorageAccount; +import com.microsoft.azure.storage.StorageException; import com.microsoft.azure.storage.blob.*; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; -import java.io.InputStream; import java.io.ByteArrayInputStream; import java.io.IOException; +import java.io.InputStream; import java.net.URISyntaxException; import java.security.InvalidKeyException; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; +import java.util.*; public class ExternalProviderAzureStorage extends ExternalProviderBase implements ExternalProvider { private static Logger logger = LogManager.getLogger(ExternalProviderAzureStorage.class); @@ -111,7 +106,7 @@ public void download(String externalFileName, String localFile, ResourceAccessCo logger.error("Invalid URI ", ex.getMessage()); } catch (StorageException ex) { throw new RuntimeException(ex.getMessage(), ex); - } catch (java.io.IOException ioex) { + } catch (IOException ioex) { logger.error("Error downloading file", ioex); } } @@ -168,7 +163,7 @@ public String upload(String externalFileName, InputStream input, ResourceAccessC return ""; } catch (StorageException ex) { throw new RuntimeException(ex.getMessage(), ex); - } catch (java.io.IOException ex) { + } catch (IOException ex) { logger.error("Error uploading file", ex); return ""; } @@ -359,7 +354,7 @@ public void createDirectory(String directoryName) { logger.error("Invalid URI ", ex.getMessage()); } catch (StorageException ex) { throw new RuntimeException(ex.getMessage(), ex); - } catch (java.io.IOException ioex) { + } catch (IOException ioex) { logger.error("Error uploading file", ioex); } } diff --git a/gxexternalproviders/README.md b/gxcloudstorage-common/README.md similarity index 100% rename from gxexternalproviders/README.md rename to gxcloudstorage-common/README.md diff --git a/gxcloudstorage-common/pom.xml b/gxcloudstorage-common/pom.xml new file mode 100644 index 000000000..0d255c645 --- /dev/null +++ b/gxcloudstorage-common/pom.xml @@ -0,0 +1,24 @@ + + + 4.0.0 + + + com.genexus + parent + ${revision}${changelist} + + + gxcloudstorage-common + GeneXus Cloud Storage Common + + + + ${project.groupId} + gxclassR + ${project.version} + + + + diff --git a/gxexternalproviders/resources/test/text.txt b/gxcloudstorage-common/resources/test/text.txt similarity index 100% rename from gxexternalproviders/resources/test/text.txt rename to gxcloudstorage-common/resources/test/text.txt diff --git a/gxexternalproviders/resources/text.txt b/gxcloudstorage-common/resources/text.txt similarity index 100% rename from gxexternalproviders/resources/text.txt rename to gxcloudstorage-common/resources/text.txt diff --git a/gxexternalproviders/src/main/java/com/genexus/db/driver/ExternalProviderBase.java b/gxcloudstorage-common/src/main/java/com/genexus/db/driver/ExternalProviderBase.java similarity index 97% rename from gxexternalproviders/src/main/java/com/genexus/db/driver/ExternalProviderBase.java rename to gxcloudstorage-common/src/main/java/com/genexus/db/driver/ExternalProviderBase.java index 775877765..9d6fc7ed1 100644 --- a/gxexternalproviders/src/main/java/com/genexus/db/driver/ExternalProviderBase.java +++ b/gxcloudstorage-common/src/main/java/com/genexus/db/driver/ExternalProviderBase.java @@ -21,7 +21,7 @@ public abstract class ExternalProviderBase { static final String DEFAULT_EXPIRATION_DEPRECATED = "STORAGE_PROVIDER_DEFAULT_EXPIRATION"; static final int DEFAULT_EXPIRATION_MINUTES = 24 * 60; - ResourceAccessControlList defaultAcl = ResourceAccessControlList.PublicRead; + ResourceAccessControlList defaultAcl = ResourceAccessControlList.PublicRead; public ExternalProviderBase() { init(); diff --git a/gxexternalproviders/src/main/java/com/genexus/db/driver/ExternalProviderHelper.java b/gxcloudstorage-common/src/main/java/com/genexus/db/driver/ExternalProviderHelper.java similarity index 100% rename from gxexternalproviders/src/main/java/com/genexus/db/driver/ExternalProviderHelper.java rename to gxcloudstorage-common/src/main/java/com/genexus/db/driver/ExternalProviderHelper.java diff --git a/gxexternalproviders/src/main/java/com/genexus/db/driver/ExternalProviderMetadata.java b/gxcloudstorage-common/src/main/java/com/genexus/db/driver/ExternalProviderMetadata.java similarity index 100% rename from gxexternalproviders/src/main/java/com/genexus/db/driver/ExternalProviderMetadata.java rename to gxcloudstorage-common/src/main/java/com/genexus/db/driver/ExternalProviderMetadata.java diff --git a/gxcloudstorage-googlecloudstorage/pom.xml b/gxcloudstorage-googlecloudstorage/pom.xml new file mode 100644 index 000000000..7decd8b39 --- /dev/null +++ b/gxcloudstorage-googlecloudstorage/pom.xml @@ -0,0 +1,80 @@ + + + 4.0.0 + + + com.genexus + parent + ${revision}${changelist} + + + gxcloudstorage-googlecloudstorage + GeneXus Google Cloud Storage + + + + ${project.groupId} + gxclassR + ${project.version} + + + com.genexus + gxcloudstorage-common + ${project.version} + + + com.google.cloud + google-cloud-storage + 1.118.1 + + + com.google.code.findbugs + jsr305 + + + org.checkerframework + checker-qual + + + com.google.guava + listenablefuture + + + com.google.errorprone + error_prone_annotations + + + com.google.j2objc + j2objc-annotations + + + com.google.auto.value + auto-value-annotations + + + com.google.api.grpc + proto-google-common-protos + + + javax.annotation + javax.annotation-api + + + + com.google.api.grpc + proto-google-iam-v1 + + + com.google.protobuf + protobuf-java + + + com.google.protobuf + protobuf-java-util + + + + + \ No newline at end of file diff --git a/gxexternalproviders/src/main/java/com/genexus/db/driver/ExternalProviderGoogle.java b/gxcloudstorage-googlecloudstorage/src/main/java/com/genexus/db/driver/ExternalProviderGoogle.java similarity index 98% rename from gxexternalproviders/src/main/java/com/genexus/db/driver/ExternalProviderGoogle.java rename to gxcloudstorage-googlecloudstorage/src/main/java/com/genexus/db/driver/ExternalProviderGoogle.java index 180fce4bb..b20e3b433 100644 --- a/gxexternalproviders/src/main/java/com/genexus/db/driver/ExternalProviderGoogle.java +++ b/gxcloudstorage-googlecloudstorage/src/main/java/com/genexus/db/driver/ExternalProviderGoogle.java @@ -1,45 +1,34 @@ package com.genexus.db.driver; import com.genexus.Application; +import com.genexus.StructSdtMessages_Message; import com.genexus.util.GXService; import com.genexus.util.StorageUtils; -import com.genexus.StructSdtMessages_Message; import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; -import com.google.api.client.http.HttpTransport; -import com.google.api.client.json.JsonFactory; -import com.google.api.client.json.jackson2.JacksonFactory; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.googleapis.json.GoogleJsonResponseException; import com.google.api.client.http.GenericUrl; +import com.google.api.client.http.HttpTransport; import com.google.api.client.http.InputStreamContent; +import com.google.api.client.json.JsonFactory; +import com.google.api.client.json.jackson2.JacksonFactory; import com.google.api.services.storage.StorageScopes; import com.google.api.services.storage.model.Objects; import com.google.api.services.storage.model.StorageObject; -import com.google.cloud.storage.*; import com.google.auth.oauth2.ServiceAccountCredentials; +import com.google.cloud.storage.*; +import org.apache.commons.io.IOUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; -import java.io.ByteArrayInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.UnsupportedEncodingException; +import java.io.*; import java.net.URLDecoder; import java.nio.file.Files; import java.nio.file.Paths; import java.security.GeneralSecurityException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.TimeUnit; -import org.apache.commons.io.IOUtils; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - public class ExternalProviderGoogle extends ExternalProviderBase implements ExternalProvider { private static Logger logger = LogManager.getLogger(ExternalProviderGoogle.class); diff --git a/gxcloudstorage-ibmcos/pom.xml b/gxcloudstorage-ibmcos/pom.xml new file mode 100644 index 000000000..5ba1e55c1 --- /dev/null +++ b/gxcloudstorage-ibmcos/pom.xml @@ -0,0 +1,34 @@ + + + 4.0.0 + + + com.genexus + parent + ${revision}${changelist} + + + gxcloudstorage-ibmcos + GeneXus IBM Cloud Storage + + + + ${project.groupId} + gxclassR + ${project.version} + + + com.genexus + gxcloudstorage-common + ${project.version} + + + com.ibm.cos + ibm-cos-java-sdk-s3 + 2.12.1 + + + + diff --git a/gxexternalproviders/src/main/java/com/genexus/db/driver/ExternalProviderIBM.java b/gxcloudstorage-ibmcos/src/main/java/com/genexus/db/driver/ExternalProviderIBM.java similarity index 99% rename from gxexternalproviders/src/main/java/com/genexus/db/driver/ExternalProviderIBM.java rename to gxcloudstorage-ibmcos/src/main/java/com/genexus/db/driver/ExternalProviderIBM.java index af0ae847a..5d3977647 100644 --- a/gxexternalproviders/src/main/java/com/genexus/db/driver/ExternalProviderIBM.java +++ b/gxcloudstorage-ibmcos/src/main/java/com/genexus/db/driver/ExternalProviderIBM.java @@ -1,31 +1,29 @@ package com.genexus.db.driver; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - +import com.genexus.Application; +import com.genexus.StructSdtMessages_Message; +import com.genexus.util.GXService; import com.genexus.util.GXServices; +import com.genexus.util.StorageUtils; import com.ibm.cloud.objectstorage.ClientConfiguration; import com.ibm.cloud.objectstorage.HttpMethod; import com.ibm.cloud.objectstorage.SDKGlobalConfiguration; import com.ibm.cloud.objectstorage.auth.AWSCredentials; import com.ibm.cloud.objectstorage.auth.AWSStaticCredentialsProvider; +import com.ibm.cloud.objectstorage.auth.BasicAWSCredentials; import com.ibm.cloud.objectstorage.client.builder.AwsClientBuilder.EndpointConfiguration; import com.ibm.cloud.objectstorage.services.s3.AmazonS3; import com.ibm.cloud.objectstorage.services.s3.AmazonS3Client; import com.ibm.cloud.objectstorage.services.s3.AmazonS3ClientBuilder; import com.ibm.cloud.objectstorage.services.s3.model.*; -import com.ibm.cloud.objectstorage.auth.BasicAWSCredentials; - -import com.genexus.Application; -import com.genexus.StructSdtMessages_Message; -import com.genexus.util.GXService; -import com.genexus.util.StorageUtils; import com.ibm.cloud.objectstorage.util.IOUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import java.io.*; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; public class ExternalProviderIBM extends ExternalProviderBase implements ExternalProvider { diff --git a/gxcloudstorage-tests/README.md b/gxcloudstorage-tests/README.md new file mode 100644 index 000000000..735362331 --- /dev/null +++ b/gxcloudstorage-tests/README.md @@ -0,0 +1,9 @@ +| Branch | Status +|---|--- +|master |[![External Storage Tests](https://github.com/genexuslabs/JavaClasses/actions/workflows/External-Storage-Tests.yml/badge.svg?branch=master)](https://github.com/genexuslabs/JavaClasses/actions/workflows/External-Storage-Tests.yml) +|beta |[![External Storage Tests](https://github.com/genexuslabs/JavaClasses/actions/workflows/External-Storage-Tests.yml/badge.svg?branch=beta)](https://github.com/genexuslabs/JavaClasses/actions/workflows/External-Storage-Tests.yml) + +# gxexternalproviders + +Implements service provider for IBM Cloud, Google, Azure, Amazon + diff --git a/gxcloudstorage-tests/pom.xml b/gxcloudstorage-tests/pom.xml new file mode 100644 index 000000000..62d396c93 --- /dev/null +++ b/gxcloudstorage-tests/pom.xml @@ -0,0 +1,65 @@ + + + 4.0.0 + + + com.genexus + parent + ${revision}${changelist} + + + gxcloudstorage-tests + GeneXus Cloud Storage Tests + + + + ${project.groupId} + gxclassR + ${project.version} + + + com.genexus + gxcloudstorage-common + ${project.version} + + + com.genexus + gxcloudstorage-awss3 + ${project.version} + test + + + com.genexus + gxcloudstorage-ibmcos + ${project.version} + test + + + com.genexus + gxcloudstorage-googlecloudstorage + ${project.version} + test + + + com.genexus + gxcloudstorage-azureblob + ${project.version} + test + + + + + + + org.apache.maven.plugins + maven-deploy-plugin + 3.0.0 + + true + + + + + diff --git a/gxcloudstorage-tests/resources/test/text.txt b/gxcloudstorage-tests/resources/test/text.txt new file mode 100644 index 000000000..fc976593f --- /dev/null +++ b/gxcloudstorage-tests/resources/test/text.txt @@ -0,0 +1 @@ +test upload IBM \ No newline at end of file diff --git a/gxcloudstorage-tests/resources/text.txt b/gxcloudstorage-tests/resources/text.txt new file mode 100644 index 000000000..fc976593f --- /dev/null +++ b/gxcloudstorage-tests/resources/text.txt @@ -0,0 +1 @@ +test upload IBM \ No newline at end of file diff --git a/gxexternalproviders/src/test/java/com/genexus/db/driver/TestExternalProvider.java b/gxcloudstorage-tests/src/test/java/com/genexus/db/driver/TestExternalProvider.java similarity index 100% rename from gxexternalproviders/src/test/java/com/genexus/db/driver/TestExternalProvider.java rename to gxcloudstorage-tests/src/test/java/com/genexus/db/driver/TestExternalProvider.java diff --git a/gxexternalproviders/src/test/java/com/genexus/db/driver/TestExternalProviderAzure.java b/gxcloudstorage-tests/src/test/java/com/genexus/db/driver/TestExternalProviderAzure.java similarity index 100% rename from gxexternalproviders/src/test/java/com/genexus/db/driver/TestExternalProviderAzure.java rename to gxcloudstorage-tests/src/test/java/com/genexus/db/driver/TestExternalProviderAzure.java diff --git a/gxexternalproviders/src/test/java/com/genexus/db/driver/TestExternalProviderGoogleCloudStorage.java b/gxcloudstorage-tests/src/test/java/com/genexus/db/driver/TestExternalProviderGoogleCloudStorage.java similarity index 100% rename from gxexternalproviders/src/test/java/com/genexus/db/driver/TestExternalProviderGoogleCloudStorage.java rename to gxcloudstorage-tests/src/test/java/com/genexus/db/driver/TestExternalProviderGoogleCloudStorage.java diff --git a/gxexternalproviders/src/test/java/com/genexus/db/driver/TestExternalProviderIBM.java b/gxcloudstorage-tests/src/test/java/com/genexus/db/driver/TestExternalProviderIBM.java similarity index 100% rename from gxexternalproviders/src/test/java/com/genexus/db/driver/TestExternalProviderIBM.java rename to gxcloudstorage-tests/src/test/java/com/genexus/db/driver/TestExternalProviderIBM.java diff --git a/gxexternalproviders/src/test/java/com/genexus/db/driver/TestExternalProviderMinio.java b/gxcloudstorage-tests/src/test/java/com/genexus/db/driver/TestExternalProviderMinio.java similarity index 100% rename from gxexternalproviders/src/test/java/com/genexus/db/driver/TestExternalProviderMinio.java rename to gxcloudstorage-tests/src/test/java/com/genexus/db/driver/TestExternalProviderMinio.java diff --git a/gxexternalproviders/src/test/java/com/genexus/db/driver/TestExternalProviderOracle.java b/gxcloudstorage-tests/src/test/java/com/genexus/db/driver/TestExternalProviderOracle.java similarity index 100% rename from gxexternalproviders/src/test/java/com/genexus/db/driver/TestExternalProviderOracle.java rename to gxcloudstorage-tests/src/test/java/com/genexus/db/driver/TestExternalProviderOracle.java diff --git a/gxexternalproviders/src/test/java/com/genexus/db/driver/TestExternalProviderS3.java b/gxcloudstorage-tests/src/test/java/com/genexus/db/driver/TestExternalProviderS3.java similarity index 100% rename from gxexternalproviders/src/test/java/com/genexus/db/driver/TestExternalProviderS3.java rename to gxcloudstorage-tests/src/test/java/com/genexus/db/driver/TestExternalProviderS3.java diff --git a/gxexternalproviders/pom.xml b/gxexternalproviders/pom.xml deleted file mode 100644 index a8d62d597..000000000 --- a/gxexternalproviders/pom.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - 4.0.0 - - - com.genexus - parent - ${revision}${changelist} - - - gxexternalproviders - GeneXus External Providers - - - - ${project.groupId} - gxclassR - ${project.version} - - - com.microsoft.azure - azure-storage - 4.2.0 - - - org.pacesys - openstack4j - 3.0.3 - - - org.pacesys - openstack4j-core - 3.0.0 - - - com.amazonaws - aws-java-sdk-s3 - ${com.amazonaws.version} - - - com.google.code.gson - gson - 2.9.0 - - - com.google.cloud - google-cloud-storage - 1.118.1 - - - com.google.api-client - google-api-client - 1.34.1 - - - com.google.oauth-client - google-oauth-client - 1.33.3 - - - com.google.guava - guava - 30.1.1-jre - - - com.ibm.cos - ibm-cos-java-sdk-s3 - 2.10.0 - - - - - gxexternalproviders - - diff --git a/pom.xml b/pom.xml index 5527b0e5d..49423a10d 100644 --- a/pom.xml +++ b/pom.xml @@ -24,7 +24,7 @@ 5.2.2 2.14.1 4.13.2 - 1.12.93 + 1.12.376 2.17.272 2.19.0 1.19.0 @@ -97,7 +97,6 @@ gxgeospatial gxodata gxdynamodb - gxexternalproviders gxwebsocket gxwebsocketjakarta gxawsserverless @@ -105,7 +104,13 @@ gxqueue gxqueueawssqs gxqueueazure - + gxcloudstorage-common + gxcloudstorage-awss3 + gxcloudstorage-googlecloudstorage + gxcloudstorage-azureblob + gxcloudstorage-ibmcos + gxcloudstorage-tests +