Skip to content

Commit e15f606

Browse files
authored
#HouseKeeping: CloudStorage implementation refactoring. Prepare for import using gradle (#649)
* Refactor and Move Cloud Storage implementation * Rename pipline file and called module name * Try clean Google Cloud unnecessary maven dependencies * Reduce Google Dependencie Tyree * Try reduce Google Cloud dependencies * Reduce file differences * Bump AWS SDK version * Rename project * Try Skip maven module CloudStorageTests * Azure Blob Storage bump * Add maven plugin version * Azure back to SDK v11
1 parent d97dead commit e15f606

File tree

30 files changed

+322
-132
lines changed

30 files changed

+322
-132
lines changed

.github/workflows/External-Storage-Tests.yml renamed to .github/workflows/cloud-storage-tests.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: External Storage Tests
1+
name: Cloud Storage Tests
22

33
on:
44
workflow_dispatch:
@@ -16,8 +16,8 @@ on:
1616
- cron: '0 0 * * 1' # At 00:00 on (every) Monday
1717

1818
jobs:
19-
test-external-storages:
20-
name: Test External Storage
19+
test-cloud-storage-providers:
20+
name: Cloud Storage Provider Test
2121
env:
2222
GIT_REF: ${{ github.ref }}
2323
GIT_SHA: ${{ github.sha }}
@@ -45,7 +45,7 @@ jobs:
4545
- name: Install
4646
run: mvn -B install --file $POM_PATH
4747

48-
- name: Test External Storages
48+
- name: Test Cloud Storage
4949
run: |
5050
export AWSS3_TEST_ENABLED=true
5151
export STORAGE_AWSS3_ACCESS_KEY="${{ secrets.AWSS3_ACCESS_KEY }}"
@@ -72,4 +72,4 @@ jobs:
7272
export STORAGE_GOOGLECS_FOLDER_NAME=gxclasses
7373
export STORAGE_GOOGLECS_APPLICATION_NAME=gxjavacloudstorageunittests
7474
75-
mvn -B -pl gxexternalproviders test --file $POM_PATH
75+
mvn -B -pl gxcloudstorage-tests test --file $POM_PATH

gxcloudstorage-awss3/pom.xml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?xml version="1.0"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<parent>
8+
<groupId>com.genexus</groupId>
9+
<artifactId>parent</artifactId>
10+
<version>${revision}${changelist}</version>
11+
</parent>
12+
13+
<artifactId>gxcloudstorage-awss3</artifactId>
14+
<name>GeneXus AWS S3 Cloud Storage</name>
15+
16+
<dependencies>
17+
<dependency>
18+
<groupId>${project.groupId}</groupId>
19+
<artifactId>gxclassR</artifactId>
20+
<version>${project.version}</version>
21+
</dependency>
22+
<dependency>
23+
<groupId>com.genexus</groupId>
24+
<artifactId>gxcloudstorage-common</artifactId>
25+
<version>${project.version}</version>
26+
</dependency>
27+
<dependency>
28+
<groupId>com.amazonaws</groupId>
29+
<artifactId>aws-java-sdk-s3</artifactId>
30+
<version>${com.amazonaws.version}</version>
31+
</dependency>
32+
</dependencies>
33+
</project>

gxcloudstorage-azureblob/pom.xml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?xml version="1.0"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<parent>
8+
<groupId>com.genexus</groupId>
9+
<artifactId>parent</artifactId>
10+
<version>${revision}${changelist}</version>
11+
</parent>
12+
13+
<artifactId>gxcloudstorage-azureblob</artifactId>
14+
<name>GeneXus Azure Blob Cloud Storage</name>
15+
16+
<dependencies>
17+
<dependency>
18+
<groupId>${project.groupId}</groupId>
19+
<artifactId>gxclassR</artifactId>
20+
<version>${project.version}</version>
21+
</dependency>
22+
<dependency>
23+
<groupId>com.genexus</groupId>
24+
<artifactId>gxcloudstorage-common</artifactId>
25+
<version>${project.version}</version>
26+
</dependency>
27+
<dependency>
28+
<groupId>com.microsoft.azure</groupId>
29+
<artifactId>azure-storage</artifactId>
30+
<version>8.6.6</version>
31+
</dependency>
32+
</dependencies>
33+
</project>

gxexternalproviders/src/main/java/com/genexus/db/driver/ExternalProviderAzureStorage.java renamed to gxcloudstorage-azureblob/src/main/java/com/genexus/db/driver/ExternalProviderAzureStorage.java

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,21 @@
11
package com.genexus.db.driver;
22

33
import com.genexus.Application;
4+
import com.genexus.StructSdtMessages_Message;
45
import com.genexus.util.GXService;
56
import com.genexus.util.StorageUtils;
6-
import com.genexus.StructSdtMessages_Message;
7-
8-
import com.microsoft.azure.storage.*;
7+
import com.microsoft.azure.storage.CloudStorageAccount;
8+
import com.microsoft.azure.storage.StorageException;
99
import com.microsoft.azure.storage.blob.*;
10+
import org.apache.logging.log4j.LogManager;
11+
import org.apache.logging.log4j.Logger;
1012

11-
import java.io.InputStream;
1213
import java.io.ByteArrayInputStream;
1314
import java.io.IOException;
15+
import java.io.InputStream;
1416
import java.net.URISyntaxException;
1517
import java.security.InvalidKeyException;
16-
import java.util.ArrayList;
17-
import java.util.Calendar;
18-
import java.util.Date;
19-
import java.util.HashMap;
20-
import java.util.List;
21-
22-
import org.apache.logging.log4j.LogManager;
23-
import org.apache.logging.log4j.Logger;
18+
import java.util.*;
2419

2520
public class ExternalProviderAzureStorage extends ExternalProviderBase implements ExternalProvider {
2621
private static Logger logger = LogManager.getLogger(ExternalProviderAzureStorage.class);
@@ -111,7 +106,7 @@ public void download(String externalFileName, String localFile, ResourceAccessCo
111106
logger.error("Invalid URI ", ex.getMessage());
112107
} catch (StorageException ex) {
113108
throw new RuntimeException(ex.getMessage(), ex);
114-
} catch (java.io.IOException ioex) {
109+
} catch (IOException ioex) {
115110
logger.error("Error downloading file", ioex);
116111
}
117112
}
@@ -168,7 +163,7 @@ public String upload(String externalFileName, InputStream input, ResourceAccessC
168163
return "";
169164
} catch (StorageException ex) {
170165
throw new RuntimeException(ex.getMessage(), ex);
171-
} catch (java.io.IOException ex) {
166+
} catch (IOException ex) {
172167
logger.error("Error uploading file", ex);
173168
return "";
174169
}
@@ -359,7 +354,7 @@ public void createDirectory(String directoryName) {
359354
logger.error("Invalid URI ", ex.getMessage());
360355
} catch (StorageException ex) {
361356
throw new RuntimeException(ex.getMessage(), ex);
362-
} catch (java.io.IOException ioex) {
357+
} catch (IOException ioex) {
363358
logger.error("Error uploading file", ioex);
364359
}
365360
}
File renamed without changes.

gxcloudstorage-common/pom.xml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?xml version="1.0"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<parent>
8+
<groupId>com.genexus</groupId>
9+
<artifactId>parent</artifactId>
10+
<version>${revision}${changelist}</version>
11+
</parent>
12+
13+
<artifactId>gxcloudstorage-common</artifactId>
14+
<name>GeneXus Cloud Storage Common</name>
15+
16+
<dependencies>
17+
<dependency>
18+
<groupId>${project.groupId}</groupId>
19+
<artifactId>gxclassR</artifactId>
20+
<version>${project.version}</version>
21+
</dependency>
22+
</dependencies>
23+
24+
</project>

gxexternalproviders/src/main/java/com/genexus/db/driver/ExternalProviderBase.java renamed to gxcloudstorage-common/src/main/java/com/genexus/db/driver/ExternalProviderBase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public abstract class ExternalProviderBase {
2121
static final String DEFAULT_EXPIRATION_DEPRECATED = "STORAGE_PROVIDER_DEFAULT_EXPIRATION";
2222

2323
static final int DEFAULT_EXPIRATION_MINUTES = 24 * 60;
24-
ResourceAccessControlList defaultAcl = ResourceAccessControlList.PublicRead;
24+
ResourceAccessControlList defaultAcl = ResourceAccessControlList.PublicRead;
2525

2626
public ExternalProviderBase() {
2727
init();
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
<?xml version="1.0"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<parent>
8+
<groupId>com.genexus</groupId>
9+
<artifactId>parent</artifactId>
10+
<version>${revision}${changelist}</version>
11+
</parent>
12+
13+
<artifactId>gxcloudstorage-googlecloudstorage</artifactId>
14+
<name>GeneXus Google Cloud Storage</name>
15+
16+
<dependencies>
17+
<dependency>
18+
<groupId>${project.groupId}</groupId>
19+
<artifactId>gxclassR</artifactId>
20+
<version>${project.version}</version>
21+
</dependency>
22+
<dependency>
23+
<groupId>com.genexus</groupId>
24+
<artifactId>gxcloudstorage-common</artifactId>
25+
<version>${project.version}</version>
26+
</dependency>
27+
<dependency>
28+
<groupId>com.google.cloud</groupId>
29+
<artifactId>google-cloud-storage</artifactId>
30+
<version>1.118.1</version>
31+
<exclusions>
32+
<exclusion>
33+
<groupId>com.google.code.findbugs</groupId>
34+
<artifactId>jsr305</artifactId>
35+
</exclusion>
36+
<exclusion>
37+
<groupId>org.checkerframework</groupId>
38+
<artifactId>checker-qual</artifactId>
39+
</exclusion>
40+
<exclusion>
41+
<groupId>com.google.guava</groupId>
42+
<artifactId>listenablefuture</artifactId>
43+
</exclusion>
44+
<exclusion>
45+
<groupId>com.google.errorprone</groupId>
46+
<artifactId>error_prone_annotations</artifactId>
47+
</exclusion>
48+
<exclusion>
49+
<groupId>com.google.j2objc</groupId>
50+
<artifactId>j2objc-annotations</artifactId>
51+
</exclusion>
52+
<exclusion>
53+
<groupId>com.google.auto.value</groupId>
54+
<artifactId>auto-value-annotations</artifactId>
55+
</exclusion>
56+
<exclusion>
57+
<groupId>com.google.api.grpc</groupId>
58+
<artifactId>proto-google-common-protos</artifactId>
59+
</exclusion>
60+
<exclusion>
61+
<groupId>javax.annotation</groupId>
62+
<artifactId>javax.annotation-api</artifactId>
63+
</exclusion>
64+
65+
<exclusion>
66+
<groupId>com.google.api.grpc</groupId>
67+
<artifactId>proto-google-iam-v1</artifactId>
68+
</exclusion>
69+
<exclusion>
70+
<groupId>com.google.protobuf</groupId>
71+
<artifactId>protobuf-java</artifactId>
72+
</exclusion>
73+
<exclusion>
74+
<groupId>com.google.protobuf</groupId>
75+
<artifactId>protobuf-java-util</artifactId>
76+
</exclusion>
77+
</exclusions>
78+
</dependency>
79+
</dependencies>
80+
</project>

gxexternalproviders/src/main/java/com/genexus/db/driver/ExternalProviderGoogle.java renamed to gxcloudstorage-googlecloudstorage/src/main/java/com/genexus/db/driver/ExternalProviderGoogle.java

Lines changed: 10 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,34 @@
11
package com.genexus.db.driver;
22

33
import com.genexus.Application;
4+
import com.genexus.StructSdtMessages_Message;
45
import com.genexus.util.GXService;
56
import com.genexus.util.StorageUtils;
6-
import com.genexus.StructSdtMessages_Message;
77
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
8-
import com.google.api.client.http.HttpTransport;
9-
import com.google.api.client.json.JsonFactory;
10-
import com.google.api.client.json.jackson2.JacksonFactory;
118
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
129
import com.google.api.client.googleapis.json.GoogleJsonResponseException;
1310
import com.google.api.client.http.GenericUrl;
11+
import com.google.api.client.http.HttpTransport;
1412
import com.google.api.client.http.InputStreamContent;
13+
import com.google.api.client.json.JsonFactory;
14+
import com.google.api.client.json.jackson2.JacksonFactory;
1515
import com.google.api.services.storage.StorageScopes;
1616
import com.google.api.services.storage.model.Objects;
1717
import com.google.api.services.storage.model.StorageObject;
18-
import com.google.cloud.storage.*;
1918
import com.google.auth.oauth2.ServiceAccountCredentials;
19+
import com.google.cloud.storage.*;
20+
import org.apache.commons.io.IOUtils;
21+
import org.apache.logging.log4j.LogManager;
22+
import org.apache.logging.log4j.Logger;
2023

21-
import java.io.ByteArrayInputStream;
22-
import java.io.FileOutputStream;
23-
import java.io.IOException;
24-
import java.io.InputStream;
25-
import java.io.OutputStream;
26-
import java.io.UnsupportedEncodingException;
24+
import java.io.*;
2725
import java.net.URLDecoder;
2826
import java.nio.file.Files;
2927
import java.nio.file.Paths;
3028
import java.security.GeneralSecurityException;
31-
import java.util.ArrayList;
32-
import java.util.Collections;
33-
import java.util.Date;
34-
import java.util.HashMap;
35-
import java.util.List;
36-
import java.util.Map;
29+
import java.util.*;
3730
import java.util.concurrent.TimeUnit;
3831

39-
import org.apache.commons.io.IOUtils;
40-
import org.apache.logging.log4j.LogManager;
41-
import org.apache.logging.log4j.Logger;
42-
4332
public class ExternalProviderGoogle extends ExternalProviderBase implements ExternalProvider {
4433

4534
private static Logger logger = LogManager.getLogger(ExternalProviderGoogle.class);

gxcloudstorage-ibmcos/pom.xml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?xml version="1.0"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<parent>
8+
<groupId>com.genexus</groupId>
9+
<artifactId>parent</artifactId>
10+
<version>${revision}${changelist}</version>
11+
</parent>
12+
13+
<artifactId>gxcloudstorage-ibmcos</artifactId>
14+
<name>GeneXus IBM Cloud Storage</name>
15+
16+
<dependencies>
17+
<dependency>
18+
<groupId>${project.groupId}</groupId>
19+
<artifactId>gxclassR</artifactId>
20+
<version>${project.version}</version>
21+
</dependency>
22+
<dependency>
23+
<groupId>com.genexus</groupId>
24+
<artifactId>gxcloudstorage-common</artifactId>
25+
<version>${project.version}</version>
26+
</dependency>
27+
<dependency>
28+
<groupId>com.ibm.cos</groupId>
29+
<artifactId>ibm-cos-java-sdk-s3</artifactId>
30+
<version>2.12.1</version>
31+
</dependency>
32+
</dependencies>
33+
34+
</project>

0 commit comments

Comments
 (0)