diff --git a/.github/workflows/Docker.build.yaml b/.github/workflows/Docker.build.yaml
new file mode 100644
index 00000000..cc287013
--- /dev/null
+++ b/.github/workflows/Docker.build.yaml
@@ -0,0 +1,37 @@
+name: Docker Build and Deploy
+
+on:
+ push:
+ branches:
+ - fix/postgresql-array-handling #branch name which is used for image building
+
+jobs:
+ build:
+ runs-on: self-hosted
+ permissions:
+ contents: read
+ packages: read
+
+ env:
+ ECR_REPOSITORY: atomhopper
+ AWS_REGION: us-east-1
+
+ steps:
+ - name: checkout code
+ uses: actions/checkout@v3
+
+ - name: Set Short commit SHA as image tag
+ run: echo "IMAGE_TAG=$(echo $GITHUB_SHA | cut -c1-7)" >> $GITHUB_ENV
+
+ - name: AWS ECR login
+ run: |
+ aws ecr get-login-password --region ${{ env.AWS_REGION }} | docker login --username AWS --password-stdin ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com
+ - name: Build docker image
+ run: |
+ docker build -f docker/Dockerfile \
+ --build-arg GITHUB_TOKEN=${{ secrets.PAT_FOR_DOCKER }} \
+ --build-arg GITHUB_ACTOR=${{ secrets.USER_ID }} \
+ -t ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }} .
+ - name: Push docker image to registry
+ run: |
+ docker push ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }}
\ No newline at end of file
diff --git a/adapters/dynamoDB_adapters/pom.xml b/adapters/dynamoDB_adapters/pom.xml
index af7b89b4..8bd636f1 100644
--- a/adapters/dynamoDB_adapters/pom.xml
+++ b/adapters/dynamoDB_adapters/pom.xml
@@ -5,7 +5,7 @@
parent
org.atomhopper
- 1.2.35-SNAPSHOT
+ 1.2.35
../../pom.xml
4.0.0
diff --git a/adapters/hibernate/pom.xml b/adapters/hibernate/pom.xml
index eaf139ca..c272806e 100644
--- a/adapters/hibernate/pom.xml
+++ b/adapters/hibernate/pom.xml
@@ -5,7 +5,7 @@
org.atomhopper
parent
- 1.2.35-SNAPSHOT
+ 1.2.35
./../../pom.xml
diff --git a/adapters/jdbc/pom.xml b/adapters/jdbc/pom.xml
index 3c00eb0e..dc04674b 100644
--- a/adapters/jdbc/pom.xml
+++ b/adapters/jdbc/pom.xml
@@ -5,7 +5,7 @@
org.atomhopper
parent
- 1.2.35-SNAPSHOT
+ 1.2.35
./../../pom.xml
diff --git a/adapters/jdbc/src/main/java/org/atomhopper/jdbc/adapter/JdbcFeedSource.java b/adapters/jdbc/src/main/java/org/atomhopper/jdbc/adapter/JdbcFeedSource.java
index 5ec48eb2..2f2af058 100644
--- a/adapters/jdbc/src/main/java/org/atomhopper/jdbc/adapter/JdbcFeedSource.java
+++ b/adapters/jdbc/src/main/java/org/atomhopper/jdbc/adapter/JdbcFeedSource.java
@@ -28,6 +28,8 @@
import org.atomhopper.util.uri.template.URITemplate;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormatter;
+
+import java.sql.Array;
import org.joda.time.format.ISODateTimeFormat;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -826,7 +828,14 @@ public Object extractData( ResultSet rs ) throws SQLException, DataAccessExcepti
entry.setEntryId(rs.getString("entryid"));
- List cats = new ArrayList( Arrays.asList( (String[])rs.getArray( "categories" ).getArray() ) );
+ List cats = new ArrayList();
+ Array categoriesArray = rs.getArray("categories");
+ if (categoriesArray != null) {
+ String[] categoryStrings = (String[]) categoriesArray.getArray();
+ if (categoryStrings != null) {
+ cats.addAll(Arrays.asList(categoryStrings));
+ }
+ }
for( String column : mapColumn.keySet() ) {
diff --git a/adapters/migration/pom.xml b/adapters/migration/pom.xml
index 83e2f4fd..291e1350 100644
--- a/adapters/migration/pom.xml
+++ b/adapters/migration/pom.xml
@@ -5,7 +5,7 @@
org.atomhopper
parent
- 1.2.35-SNAPSHOT
+ 1.2.35
./../../pom.xml
diff --git a/adapters/mongodb/pom.xml b/adapters/mongodb/pom.xml
index 35436835..2eebe3f8 100644
--- a/adapters/mongodb/pom.xml
+++ b/adapters/mongodb/pom.xml
@@ -5,7 +5,7 @@
org.atomhopper
parent
- 1.2.35-SNAPSHOT
+ 1.2.35
./../../pom.xml
diff --git a/adapters/postgres-adapter/pom.xml b/adapters/postgres-adapter/pom.xml
index a62cf3d2..b36a0f78 100644
--- a/adapters/postgres-adapter/pom.xml
+++ b/adapters/postgres-adapter/pom.xml
@@ -5,7 +5,7 @@
org.atomhopper
parent
- 1.2.35-SNAPSHOT
+ 1.2.35
./../../pom.xml
diff --git a/atomhopper/pom.xml b/atomhopper/pom.xml
index 747ae115..4e2c06b0 100644
--- a/atomhopper/pom.xml
+++ b/atomhopper/pom.xml
@@ -5,7 +5,7 @@
org.atomhopper
parent
- 1.2.35-SNAPSHOT
+ 1.2.35
org.atomhopper
@@ -65,7 +65,7 @@
org.atomhopper.adapter
dynamoDB_adapters
- 1.2.35-SNAPSHOT
+ 1.2.35
@@ -104,11 +104,7 @@
4.2.5.RELEASE
-
- org.atomhopper.adapter
- dynamoDB_adapters
- 1.2.35-SNAPSHOT
-
+
jakarta.xml.bind
diff --git a/docker/Dockerfile b/docker/Dockerfile
index dfee6f62..c257b449 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -3,9 +3,19 @@ FROM tomcat:9.0.41-jdk8 as tomcat
FROM adoptopenjdk/openjdk8:alpine-slim
+# Build arguments for GitHub authentication
+ARG GITHUB_TOKEN
+ARG GITHUB_ACTOR
+
+# Validate that authentication arguments are provided
+RUN if [ -z "$GITHUB_TOKEN" ] || [ -z "$GITHUB_ACTOR" ]; then \
+ echo "ERROR: GITHUB_TOKEN and GITHUB_ACTOR build arguments are required for GitHub Packages authentication"; \
+ exit 1; \
+ fi
+
LABEL maintainer="AtomHopperTeam@rackspace.com" \
#Atom Hopper version
- version="1.2.33" \
+ version="1.2.35" \
description="Docker image for Atom Hopper"
#The database type
@@ -16,28 +26,38 @@ ENV DB_TYPE=H2 \
DB_PASSWORD= \
#Database Host:Port
DB_HOST=h2 \
- AH_VERSION=1.2.33 \
+ AH_VERSION=1.2.35 \
CATALINA_HOME=/opt/tomcat \
AH_HOME=/opt/atomhopper \
PATH=${PATH}:${CATALINA_HOME}/bin:${AH_HOME}
-RUN mkdir -p "${CATALINA_HOME}" "${AH_HOME}" /etc/atomhopper/ /var/log/atomhopper/
+RUN mkdir -p "${CATALINA_HOME}" "${AH_HOME}" /etc/atomhopper/ /var/log/atomhopper/
WORKDIR ${AH_HOME}
COPY --from=tomcat /usr/local/tomcat ${CATALINA_HOME}
-COPY start.sh .
-
-RUN apk --no-cache add curl \
- && curl -o atomhopper.war https://maven.research.rackspacecloud.com/content/repositories/releases/org/atomhopper/atomhopper/${AH_VERSION}/atomhopper-${AH_VERSION}.war \
+COPY docker/start.sh .
+
+RUN apk --no-cache add curl unzip file \
+ && echo "Downloading AtomHopper ${AH_VERSION} from GitHub Packages..." \
+ && echo "URL: https://maven.pkg.github.com/rackerlabs/atom-hopper/org/atomhopper/atomhopper/${AH_VERSION}/atomhopper-${AH_VERSION}.war" \
+ && curl -L -v -u ${GITHUB_ACTOR}:${GITHUB_TOKEN} -o atomhopper.war \
+ "https://maven.pkg.github.com/rackerlabs/atom-hopper/org/atomhopper/atomhopper/${AH_VERSION}/atomhopper-${AH_VERSION}.war" \
+ && echo "Download completed. Verifying WAR file..." \
+ && ls -la atomhopper.war \
+ && file atomhopper.war \
+ && unzip -t atomhopper.war > /dev/null \
+ && echo "Extracting configuration files..." \
&& unzip atomhopper.war META-INF/application-context.xml META-INF/template-logback.xml WEB-INF/classes/META-INF/atom-server.cfg.xml -d . \
&& mv META-INF/application-context.xml WEB-INF/classes/META-INF/atom-server.cfg.xml /etc/atomhopper/ \
&& mv META-INF/template-logback.xml /etc/atomhopper/logback.xml \
&& mv atomhopper.war ${CATALINA_HOME}/webapps/ROOT.war \
&& rm -rf META-INF WEB-INF \
- && chmod +x ${AH_HOME}/start.sh
+ && chmod +x ${AH_HOME}/start.sh \
+ && echo "Verifying start.sh file..." \
+ && ls -la ${AH_HOME}/start.sh \
+ && echo "AtomHopper ${AH_VERSION} setup completed successfully"
EXPOSE 8080
-CMD ["start.sh"]
-
+CMD ["/opt/atomhopper/start.sh"]
diff --git a/docker/README.md b/docker/README.md
index 52746488..9fb7472c 100644
--- a/docker/README.md
+++ b/docker/README.md
@@ -1,5 +1,5 @@
# docker build image and run the conatiner
-Your current direcotry should be pointing to ***atom-hopper/docker***.
+Your current direcotry should be pointing to ***atom-hopper/docker***.
Run the following command to build an image.
```
$docker build -t atomhopper:latest-alpine .
@@ -17,7 +17,7 @@ Test the sample feed at http://localhost:8080/namespace/feed
H2 is the default databse configured to be used. The databse file for this is present under */opt/atomhopper*
-Following environment variables are set by default
+Following environment variables are set by default
```
JAVA_HOME "/opt/java/openjdk8/jre"
CATALINA_HOME "/opt/tomcat"
@@ -26,10 +26,7 @@ AH_VERSION "1.2.33"
```
For specific databse configuration of your choice (PostgreSQL,MySQL) provide values for the variables DB_TYPE, DB_USER, DB_PASSWORD and DB_HOST
-Example of running with a PostgreSQL databse hosted externally.
+Example of running with a PostgreSQL databse hosted externally.
```
$docker run -d --name atomhopper -p 8080:8080 -e DB_TYPE=PostgreSQL -e DB_USER=postgresql -e DB_PASSWORD=postgresql -e DB_HOST=10.0.0.1:5432 atomhopper:latest-alpine
-```
-
-
-
+```
\ No newline at end of file
diff --git a/documentation/pom.xml b/documentation/pom.xml
index 9a9da839..863fd974 100644
--- a/documentation/pom.xml
+++ b/documentation/pom.xml
@@ -5,7 +5,7 @@
org.atomhopper
parent
- 1.2.35-SNAPSHOT
+ 1.2.35
org.atomhopper
diff --git a/hopper/pom.xml b/hopper/pom.xml
index 5a09096c..3b6b754b 100644
--- a/hopper/pom.xml
+++ b/hopper/pom.xml
@@ -5,7 +5,7 @@
org.atomhopper
parent
- 1.2.36-SNAPSHOT
+ 1.2.35
org.atomhopper
diff --git a/pom.xml b/pom.xml
index a5bb315e..318fea7f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
org.atomhopper
parent
pom
- 1.2.36-SNAPSHOT
+ 1.2.35
ATOM Hopper - ATOMpub Server Collection
http://atomhopper.org/
@@ -398,12 +398,12 @@
github
GitHub Packages
- https://maven.pkg.github.com/rackerlabs/atom-hopper.git
+ https://maven.pkg.github.com/rackerlabs/atom-hopper
- snapshots
+ github
GitHub Packages
- https://maven.pkg.github.com/rackerlabs/atom-hopper.git
+ https://maven.pkg.github.com/rackerlabs/atom-hopper
diff --git a/server/pom.xml b/server/pom.xml
index 5d19438e..87d4e58e 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -5,7 +5,7 @@
org.atomhopper
parent
- 1.2.35-SNAPSHOT
+ 1.2.35
org.atomhopper
diff --git a/test-suite/pom.xml b/test-suite/pom.xml
index 0d4af7d1..224b6a76 100644
--- a/test-suite/pom.xml
+++ b/test-suite/pom.xml
@@ -5,7 +5,7 @@
org.atomhopper
parent
- 1.2.35-SNAPSHOT
+ 1.2.35
org.atomhopper
diff --git a/test-util/pom.xml b/test-util/pom.xml
index 4526ead6..65fb42eb 100644
--- a/test-util/pom.xml
+++ b/test-util/pom.xml
@@ -5,7 +5,7 @@
org.atomhopper
parent
- 1.2.35-SNAPSHOT
+ 1.2.35
org.atomhopper