Skip to content

Commit 914e3c7

Browse files
authored
Pubsub module with GCP implementation (#71)
1 parent 3874af0 commit 914e3c7

File tree

28 files changed

+7090
-0
lines changed

28 files changed

+7090
-0
lines changed

pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
<module>blob</module>
3838
<module>docstore</module>
3939
<module>examples</module>
40+
<module>pubsub</module>
4041
<module>sts</module>
4142
<module>multicloudj-common</module>
4243
<module>multicloudj-common-ali</module>

pubsub/pom.xml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
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+
<parent>
7+
<groupId>com.salesforce.multicloudj</groupId>
8+
<artifactId>multicloudj-parent</artifactId>
9+
<version>${revision}</version>
10+
<relativePath>../pom.xml</relativePath>
11+
</parent>
12+
<artifactId>pubsub</artifactId>
13+
<packaging>pom</packaging>
14+
<name>MultiCloudJ Pubsub</name>
15+
<description>MultiCloudJ Pubsub Service</description>
16+
<modules>
17+
<module>pubsub-client</module>
18+
<module>pubsub-aws</module>
19+
<module>pubsub-gcp</module>
20+
</modules>
21+
22+
<dependencies>
23+
<dependency>
24+
<groupId>com.google.inject</groupId>
25+
<artifactId>guice</artifactId>
26+
</dependency>
27+
<dependency>
28+
<groupId>com.google.auto.service</groupId>
29+
<artifactId>auto-service</artifactId>
30+
<version>1.0-rc7</version>
31+
<scope>provided</scope>
32+
</dependency>
33+
</dependencies>
34+
35+
</project>

pubsub/pubsub-aws/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" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3+
<modelVersion>4.0.0</modelVersion>
4+
5+
<artifactId>pubsub-aws</artifactId>
6+
<packaging>jar</packaging>
7+
<name>MultiCloudJ - PubSub AWS</name>
8+
9+
<parent>
10+
<groupId>com.salesforce.multicloudj</groupId>
11+
<artifactId>pubsub</artifactId>
12+
<version>${revision}</version>
13+
<relativePath>../pom.xml</relativePath>
14+
</parent>
15+
16+
<dependencies>
17+
<dependency>
18+
<groupId>com.salesforce.multicloudj</groupId>
19+
<artifactId>pubsub-client</artifactId>
20+
<version>${project.version}</version>
21+
</dependency>
22+
<dependency>
23+
<groupId>com.salesforce.multicloudj</groupId>
24+
<artifactId>multicloudj-common-aws</artifactId>
25+
</dependency>
26+
<dependency>
27+
<groupId>com.salesforce.multicloudj</groupId>
28+
<artifactId>sts-client</artifactId>
29+
</dependency>
30+
</dependencies>
31+
32+
</project>
33+
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
package com.salesforce.multicloudj.pubsub.aws;
2+
3+
import com.salesforce.multicloudj.common.aws.AwsConstants;
4+
import com.salesforce.multicloudj.common.exceptions.SubstrateSdkException;
5+
import com.salesforce.multicloudj.pubsub.driver.AbstractSubscription;
6+
import com.salesforce.multicloudj.pubsub.driver.AckID;
7+
import com.salesforce.multicloudj.pubsub.driver.Message;
8+
9+
import java.util.Collections;
10+
import java.util.List;
11+
import java.util.Map;
12+
import java.util.concurrent.CompletableFuture;
13+
14+
public class AwsSubscription extends AbstractSubscription<AwsSubscription> {
15+
16+
public AwsSubscription() {
17+
this(new Builder());
18+
}
19+
20+
public AwsSubscription(Builder builder) {
21+
super(builder);
22+
}
23+
24+
@Override
25+
public void sendAck(AckID ackID) {
26+
}
27+
28+
@Override
29+
public CompletableFuture<Void> sendAcks(List<AckID> ackIDs) {
30+
return null;
31+
}
32+
33+
@Override
34+
protected void doSendAcks(List<AckID> ackIDs) {
35+
// TODO: Implement AWS SQS acknowledgment
36+
}
37+
38+
@Override
39+
protected void doSendNacks(List<AckID> ackIDs) {
40+
// TODO: Implement AWS SQS negative acknowledgment
41+
}
42+
43+
@Override
44+
protected String getMessageId(AckID ackID) {
45+
// TODO: Implement AWS-specific message ID extraction
46+
return ackID != null ? ackID.toString() : null;
47+
}
48+
49+
@Override
50+
public void sendNack(AckID ackID) {
51+
}
52+
53+
@Override
54+
public CompletableFuture<Void> sendNacks(List<AckID> ackIDs) {
55+
return null;
56+
}
57+
58+
@Override
59+
public boolean canNack() {
60+
return false;
61+
}
62+
63+
@Override
64+
public Map<String, String> getAttributes() {
65+
return null;
66+
}
67+
68+
@Override
69+
public boolean isRetryable(Throwable error) {
70+
return false;
71+
}
72+
73+
@Override
74+
public Class<? extends SubstrateSdkException> getException(Throwable t) {
75+
return null;
76+
}
77+
78+
@Override
79+
public void close() throws Exception {
80+
super.close();
81+
}
82+
83+
@Override
84+
protected List<Message> doReceiveBatch(int batchSize) {
85+
return Collections.emptyList();
86+
}
87+
88+
public Builder builder() {
89+
return new Builder();
90+
}
91+
92+
public static class Builder extends AbstractSubscription.Builder<AwsSubscription> {
93+
94+
public Builder() {
95+
this.providerId = AwsConstants.PROVIDER_ID;
96+
}
97+
98+
@Override
99+
public AwsSubscription build() {
100+
return new AwsSubscription(this);
101+
}
102+
}
103+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package com.salesforce.multicloudj.pubsub.aws;
2+
3+
import com.salesforce.multicloudj.common.aws.AwsConstants;
4+
import com.salesforce.multicloudj.common.exceptions.SubstrateSdkException;
5+
import com.salesforce.multicloudj.pubsub.driver.AbstractTopic;
6+
import com.salesforce.multicloudj.pubsub.driver.Message;
7+
8+
import java.util.List;
9+
10+
public class AwsTopic extends AbstractTopic<AwsTopic> {
11+
12+
public AwsTopic() {
13+
this(new Builder());
14+
}
15+
16+
public AwsTopic(Builder builder) {
17+
super(builder);
18+
}
19+
20+
@Override
21+
protected void doSendBatch(List<Message> messages) {
22+
// TODO: Will create the aws implementation for batch sending later
23+
}
24+
25+
@Override
26+
public Class<? extends SubstrateSdkException> getException(Throwable t) {
27+
return null;
28+
}
29+
30+
@Override
31+
public void close() throws Exception {
32+
super.close();
33+
}
34+
35+
public Builder builder() {
36+
return new Builder();
37+
}
38+
39+
public static class Builder extends AbstractTopic.Builder<AwsTopic> {
40+
41+
public Builder() {
42+
this.providerId = AwsConstants.PROVIDER_ID;
43+
}
44+
45+
@Override
46+
public AwsTopic build() {
47+
return new AwsTopic(this);
48+
}
49+
}
50+
}

pubsub/pubsub-client/pom.xml

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3+
<modelVersion>4.0.0</modelVersion>
4+
5+
<artifactId>pubsub-client</artifactId>
6+
<packaging>jar</packaging>
7+
<name>MultiCloudJ - Pubsub Client</name>
8+
9+
<parent>
10+
<groupId>com.salesforce.multicloudj</groupId>
11+
<artifactId>pubsub</artifactId>
12+
<version>${revision}</version>
13+
<relativePath>../pom.xml</relativePath>
14+
</parent>
15+
16+
<dependencies>
17+
<dependency>
18+
<groupId>com.salesforce.multicloudj</groupId>
19+
<artifactId>sts-client</artifactId>
20+
</dependency>
21+
<dependency>
22+
<groupId>org.projectlombok</groupId>
23+
<artifactId>lombok</artifactId>
24+
<version>1.18.36</version>
25+
<scope>provided</scope>
26+
</dependency>
27+
<dependency>
28+
<groupId>org.mockito</groupId>
29+
<artifactId>mockito-core</artifactId>
30+
<version>5.16.1</version>
31+
<scope>test</scope>
32+
</dependency>
33+
<dependency>
34+
<groupId>org.junit.jupiter</groupId>
35+
<artifactId>junit-jupiter-api</artifactId>
36+
<version>5.12.1</version>
37+
<scope>test</scope>
38+
</dependency>
39+
<dependency>
40+
<groupId>org.mockito</groupId>
41+
<artifactId>mockito-junit-jupiter</artifactId>
42+
<version>5.16.1</version>
43+
<scope>test</scope>
44+
</dependency>
45+
<dependency>
46+
<groupId>com.salesforce.multicloudj</groupId>
47+
<artifactId>multicloudj-common</artifactId>
48+
</dependency>
49+
<dependency>
50+
<groupId>com.salesforce.multicloudj</groupId>
51+
<artifactId>multicloudj-common</artifactId>
52+
<type>test-jar</type>
53+
<scope>test</scope>
54+
</dependency>
55+
<dependency>
56+
<groupId>com.google.guava</groupId>
57+
<artifactId>guava</artifactId>
58+
<version>32.0.1-jre</version>
59+
<exclusions>
60+
<exclusion>
61+
<groupId>*</groupId>
62+
<artifactId>*</artifactId>
63+
</exclusion>
64+
</exclusions>
65+
</dependency>
66+
<dependency>
67+
<groupId>org.apache.commons</groupId>
68+
<artifactId>commons-lang3</artifactId>
69+
<version>3.17.0</version>
70+
<exclusions>
71+
<exclusion>
72+
<groupId>*</groupId>
73+
<artifactId>*</artifactId>
74+
</exclusion>
75+
</exclusions>
76+
</dependency>
77+
78+
<!-- The transitives of the dependencies above -->
79+
<dependency>
80+
<groupId>com.google.code.findbugs</groupId>
81+
<artifactId>jsr305</artifactId>
82+
<version>3.0.2</version>
83+
<exclusions>
84+
<exclusion>
85+
<groupId>*</groupId>
86+
<artifactId>*</artifactId>
87+
</exclusion>
88+
</exclusions>
89+
</dependency>
90+
<dependency>
91+
<groupId>com.google.errorprone</groupId>
92+
<artifactId>error_prone_annotations</artifactId>
93+
<version>2.31.0</version>
94+
<exclusions>
95+
<exclusion>
96+
<groupId>*</groupId>
97+
<artifactId>*</artifactId>
98+
</exclusion>
99+
</exclusions>
100+
</dependency>
101+
<dependency>
102+
<groupId>com.google.guava</groupId>
103+
<artifactId>failureaccess</artifactId>
104+
<version>1.0.1</version>
105+
<exclusions>
106+
<exclusion>
107+
<groupId>*</groupId>
108+
<artifactId>*</artifactId>
109+
</exclusion>
110+
</exclusions>
111+
</dependency>
112+
<dependency>
113+
<groupId>com.google.j2objc</groupId>
114+
<artifactId>j2objc-annotations</artifactId>
115+
<version>2.8</version>
116+
<exclusions>
117+
<exclusion>
118+
<groupId>*</groupId>
119+
<artifactId>*</artifactId>
120+
</exclusion>
121+
</exclusions>
122+
</dependency>
123+
<dependency>
124+
<groupId>org.checkerframework</groupId>
125+
<artifactId>checker-qual</artifactId>
126+
<version>3.39.0</version>
127+
<exclusions>
128+
<exclusion>
129+
<groupId>*</groupId>
130+
<artifactId>*</artifactId>
131+
</exclusion>
132+
</exclusions>
133+
</dependency>
134+
</dependencies>
135+
<build>
136+
<plugins>
137+
<plugin>
138+
<groupId>org.apache.maven.plugins</groupId>
139+
<artifactId>maven-jar-plugin</artifactId>
140+
<version>3.4.2</version>
141+
<executions>
142+
<execution>
143+
<goals>
144+
<goal>test-jar</goal>
145+
</goals>
146+
</execution>
147+
</executions>
148+
</plugin>
149+
</plugins>
150+
</build>
151+
</project>

0 commit comments

Comments
 (0)