Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 28 additions & 34 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ on:
env:
ALFRESCO_NEXUS_USERNAME: ${{ secrets.ALFRESCO_NEXUS_USERNAME }}
ALFRESCO_NEXUS_PASSWORD: ${{ secrets.ALFRESCO_NEXUS_PASSWORD }}
ORG_GRADLE_PROJECT_signingKey: ${{ secrets.MAVEN_CENTRAL_GPG_KEY }}
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.MAVEN_CENTRAL_GPG_PASSWORD }}
ORG_GRADLE_PROJECT_sonatype_username: ${{ secrets.SONATYPE_S01_USERNAME }}
ORG_GRADLE_PROJECT_sonatype_password: ${{ secrets.SONATYPE_S01_PASSWORD }}
SIGNING_PRIVATE_KEY: ${{ secrets.MAVEN_CENTRAL_GPG_KEY }}
SIGNING_PASSWORD: ${{ secrets.MAVEN_CENTRAL_GPG_PASSWORD }}
ORG_GRADLE_PROJECT_mavenCentralPublishUsername: ${{ secrets.MAVEN_CENTRAL_USERNAME }}
ORG_GRADLE_PROJECT_mavenCentralPublishPassword: ${{ secrets.MAVEN_CENTRAL_PASSWORD }}
BRANCH_NAME: ${{ github.ref_name }}
jobs:
apix-interface:
Expand All @@ -19,27 +19,23 @@ jobs:
- name: Set up JDK
uses: actions/setup-java@v3
with:
java-version: 11
java-version: 21
Comment thread
Brobrechts marked this conversation as resolved.
distribution: temurin
- name: Login to Docker
uses: docker/login-action@v2
- name: Login to Xenit Harbor
uses: docker/login-action@v3
with:
registry: private.docker.xenit.eu
username: ${{ secrets.CLOUDSMITH_USER }}
password: ${{ secrets.CLOUDSMITH_APIKEY }}
registry: docker.xenit.eu
username: ${{ secrets.HARBOR_USER }}
password: ${{ secrets.HARBOR_PASSWORD }}
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
- name: Build interface # Execute before integration testing to catch errors early
uses: gradle/gradle-build-action@v2.3.0
with:
arguments: :apix-interface:build :apix-interface:javadoc
run: ./gradlew :apix-interface:build :apix-interface:javadoc
- name: Unit test REST API
uses: gradle/gradle-build-action@v2.4.2
with:
arguments: --info :apix-rest-v1:test
run: ./gradlew --info :apix-rest-v1:test
- name: Publish
if: ${{ startsWith(github.ref, 'refs/heads/master') || startsWith(github.ref, 'refs/heads/release') }}"
uses: gradle/gradle-build-action@v2.4.2
with:
arguments: --info -PsigningKeyId=DF8285F0 :apix-interface:publish
if: ${{ startsWith(github.ref, 'refs/heads/master') || startsWith(github.ref, 'refs/heads/release') }}
run: ./gradlew --info :apix-interface:publish

apix-impl:
strategy:
Expand All @@ -53,22 +49,22 @@ jobs:
- name: Set up JDK
uses: actions/setup-java@v3
with:
java-version: 11
java-version: 21
distribution: temurin
- name: Login to Docker
uses: docker/login-action@v2
- name: Login to Xenit Harbor
uses: docker/login-action@v3
with:
registry: private.docker.xenit.eu
username: ${{ secrets.CLOUDSMITH_USER }}
password: ${{ secrets.CLOUDSMITH_APIKEY }}
registry: docker.xenit.eu
username: ${{ secrets.HARBOR_USER }}
password: ${{ secrets.HARBOR_PASSWORD }}
- name: Install Docker Compose
run: |
sudo apt-get update
sudo apt-get install -y docker-compose
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
- name: Build and test
uses: gradle/gradle-build-action@v2.4.2
with:
arguments: >-
run: ./gradlew >-
--info
:apix-impl:apix-impl-${{ matrix.alfresco_version }}:test
:apix-integrationtests:alfresco:${{ matrix.alfresco_version }}:integrationTest
Expand All @@ -82,8 +78,6 @@ jobs:
detailed_summary: true
- name: Publish
if: ${{ startsWith(github.ref, 'refs/heads/master') || startsWith(github.ref, 'refs/heads/release') }}"
uses: gradle/gradle-build-action@v2.4.2
with:
arguments: >-
--info -PsigningKeyId=DF8285F0
:alfresco:${{ matrix.alfresco_version }}:publish
run: ./gradlew >-
--info
:alfresco:${{ matrix.alfresco_version }}:publish
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Alfred API - Changelog

## 5.1.0 (unreleased)

### Added
* [ALFREDAPI-585](https://xenitsupport.jira.com/browse/ALFREDAPI-585): Test possibility to pass id when creating a document (Java API)


## 5.0.4 (2024-11-22)

### Fixed
Expand Down
2 changes: 1 addition & 1 deletion apix-docker/70/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ dependencies {
}

dockerAlfresco {
baseImage = 'private.docker.xenit.eu/alfresco-enterprise/alfresco-repository-enterprise:7.0.1.9'
baseImage = 'docker.xenit.eu/alfresco-enterprise/alfresco-repository-enterprise:7.0.1.9'
}
2 changes: 1 addition & 1 deletion apix-docker/70/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ services:
- GLOBAL_localTransform.core-aio.url=http://transform-core-aio:8090/

solr:
image: private.docker.xenit.eu/alfresco-enterprise/alfresco-solr6:2.0.3
image: docker.xenit.eu/alfresco-enterprise/alfresco-solr6:2.0.3
volumes:
- solr:/opt/alfresco/alf_data
restart: unless-stopped
Expand Down
2 changes: 1 addition & 1 deletion apix-docker/71/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ dependencies {
}

dockerAlfresco {
baseImage = 'private.docker.xenit.eu/alfresco-enterprise/alfresco-repository-enterprise:7.1.0.6'
baseImage = 'docker.xenit.eu/alfresco-enterprise/alfresco-repository-enterprise:7.1.0.6'
}
2 changes: 1 addition & 1 deletion apix-docker/71/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ services:
- GLOBAL_localTransform.core-aio.url=http://transform-core-aio:8090/

solr:
image: private.docker.xenit.eu/alfresco-enterprise/alfresco-solr6:2.0.3
image: docker.xenit.eu/alfresco-enterprise/alfresco-solr6:2.0.3
volumes:
- solr:/opt/alfresco/alf_data
restart: unless-stopped
Expand Down
2 changes: 1 addition & 1 deletion apix-docker/72/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ dependencies {
}

dockerAlfresco {
baseImage = 'private.docker.xenit.eu/alfresco-enterprise/alfresco-repository-enterprise:7.2.1.13'
baseImage = 'docker.xenit.eu/alfresco-enterprise/alfresco-repository-enterprise:7.2.1.13'
}
2 changes: 1 addition & 1 deletion apix-docker/72/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ services:
- GLOBAL_localTransform.core-aio.url=http://transform-core-aio:8090/

solr:
image: private.docker.xenit.eu/alfresco-enterprise/alfresco-solr6:2.0.3
image: docker.xenit.eu/alfresco-enterprise/alfresco-solr6:2.0.3
volumes:
- solr:/opt/alfresco/alf_data
restart: unless-stopped
Expand Down
2 changes: 1 addition & 1 deletion apix-docker/73/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ dependencies {
}

dockerAlfresco {
baseImage = 'private.docker.xenit.eu/alfresco-enterprise/alfresco-repository-enterprise:7.3.1.2'
baseImage = 'docker.xenit.eu/alfresco-enterprise/alfresco-repository-enterprise:7.3.1.2'
}
2 changes: 1 addition & 1 deletion apix-docker/73/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ services:
- GLOBAL_localTransform.core-aio.url=http://transform-core-aio:8090/

solr:
image: private.docker.xenit.eu/alfresco-enterprise/alfresco-solr6:2.0.3
image: docker.xenit.eu/alfresco-enterprise/alfresco-solr6:2.0.3
volumes:
- solr:/opt/alfresco/alf_data
restart: unless-stopped
Expand Down
2 changes: 1 addition & 1 deletion apix-docker/74/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ dependencies {
}

dockerAlfresco {
baseImage = 'private.docker.xenit.eu/alfresco-enterprise/alfresco-repository-enterprise:7.4.1.3'
baseImage = 'docker.xenit.eu/alfresco-enterprise/alfresco-repository-enterprise:7.4.1.3'
}
2 changes: 1 addition & 1 deletion apix-docker/74/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ services:
- GLOBAL_localTransform.core-aio.url=http://transform-core-aio:8090/

solr:
image: private.docker.xenit.eu/alfresco-enterprise/alfresco-solr6:2.0.8.2
image: docker.xenit.eu/alfresco-enterprise/alfresco-solr6:2.0.8.2
volumes:
- solr:/opt/alfresco/alf_data
restart: unless-stopped
Expand Down
1 change: 1 addition & 0 deletions apix-docker/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ subprojects {

dockerCompose {
useComposeFiles = ['docker-compose.yml']
tcpPortsToIgnoreWhenWaiting = [ 8000 ] // Don't get stuck when a debugger is attached
// Don't use the dev compose file during CI builds
if (!ci.isCi()) {
// Allow the dev compose file to be deleted
Expand Down
40 changes: 23 additions & 17 deletions apix-impl/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -46,26 +46,14 @@ allprojects {
testImplementation 'org.alfresco:alfresco-repository'
testImplementation 'org.alfresco:alfresco-remote-api'
testImplementation 'org.alfresco:alfresco-data-model'
testImplementation 'org.mockito:mockito-core'
// Mockito 3.x (from Alfresco 7.0/7.1/7.2 BOM) has a circular static init bug on Java 17+.
// Pin to 4.x which fixes it (same version range ACS 7.3/7.4 already ship).
testImplementation 'org.mockito:mockito-core:4.11.0'
}

task generateVersionFile(type: Task) {
def versionFile = "${rootDir}/apix-impl/src/main/java/eu/xenit/apix/Version.java"
outputs.file versionFile
doFirst {
file(versionFile).text = """package eu.xenit.apix;
/*
* WARNING: THIS FILE IS AUTO-GENERATED BY GRADLE DURING BUILD.
* ANY CHANGES TO THIS FILE WILL BE LOST AFTER NEW BUILD.
* SEE Gradle task generateVersionFile
*/
public class Version {
public static final String Number = "${project.versionWithoutQualifier}";
}
"""
}
tasks.named('compileJava').configure {
dependsOn generateVersionFile
}
compileJava.dependsOn generateVersionFile

test {
// Always run unit tests
Expand All @@ -75,3 +63,21 @@ public class Version {
testLogging { events "PASSED", "FAILED", "SKIPPED" }
}
}


task generateVersionFile(type: Task) {
def versionFile = "${rootDir}/apix-impl/src/main/java/eu/xenit/apix/Version.java"
outputs.file versionFile
doFirst {
file(versionFile).text = """package eu.xenit.apix;
/*
* WARNING: THIS FILE IS AUTO-GENERATED BY GRADLE DURING BUILD.
* ANY CHANGES TO THIS FILE WILL BE LOST AFTER NEW BUILD.
* SEE Gradle task generateVersionFile
*/
public class Version {
public static final String Number = "${project.versionWithoutQualifier}";
}
"""
}
}
1 change: 1 addition & 0 deletions apix-integrationtests/alfresco/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ allprojects {

testImplementation project.sourceSets.integrationTest.output
testImplementation group: 'org.mockito', name: 'mockito-core', version: '2.25.1'

}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,5 @@
package eu.xenit.apix.tests.metadata;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;

import eu.xenit.apix.alfresco.ApixToAlfrescoConversion;
import eu.xenit.apix.categories.ICategoryService;
import eu.xenit.apix.data.ContentInputStream;
Expand All @@ -16,19 +9,6 @@
import eu.xenit.apix.node.NodeAssociation;
import eu.xenit.apix.node.NodeMetadata;
import eu.xenit.apix.tests.BaseTest;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import org.alfresco.model.ContentModel;
import org.alfresco.repo.domain.node.ContentDataWithId;
import org.alfresco.repo.model.Repository;
Expand Down Expand Up @@ -58,6 +38,27 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;

import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;


public class NodeServiceTest extends BaseTest {

Expand Down Expand Up @@ -658,8 +659,7 @@ public void testCreateNodeWithMetadata() throws UnsupportedEncodingException {
assertNotNull("the cm:name property could not be found", testProperties.get(ContentModel.PROP_NAME));
assertNotNull("", testProperties.get(c.alfresco(documentStatusQname)));
assertTrue(alfrescoNodeService.hasAspect(c.alfresco(createdNodeRef), ContentModel.ASPECT_TEMPORARY));
}
finally {
} finally {
this.cleanUp();
}
}
Expand Down Expand Up @@ -793,7 +793,7 @@ public void TestFileUpload() throws IOException {
}

@Test
public void testTextFileUploadWithMimeGuess() throws IOException{
public void testTextFileUploadWithMimeGuess() throws IOException {
cleanUp();
NodeRef companyHomeNodeRef = repository.getCompanyHome();
FileInfo mainTestFolder = createMainTestFolder(companyHomeNodeRef);
Expand All @@ -803,7 +803,7 @@ public void testTextFileUploadWithMimeGuess() throws IOException{
eu.xenit.apix.data.ContentData contentData = service.createContentWithMimetypeGuess(inputStream,
testTextFile.getName(),
"UTF-8");
assertEquals(contentData.getEncoding(),"UTF-8");
assertEquals(contentData.getEncoding(), "UTF-8");
assertEquals(TEXT_MIMETYPE, contentData.getMimetype());
} finally {
removeTestNode(mainTestFolder.getNodeRef());
Expand Down Expand Up @@ -847,4 +847,35 @@ public void TestGetRootNode() {
service.getRootNode(apixStoreRef).toString(),
alfrescoNodeService.getRootNode(alfStoreRef).toString());
}

// https://xenitsupport.jira.com/browse/ALFREDAPI-585: Needed for Ethias ContentGrid migration rollback
@Test
public void testCreateNodeWithId() {
NodeRef companyHomeRef = repository.getCompanyHome();
FileInfo mainTestFolder = createMainTestFolder(companyHomeRef);
FileInfo testFolder = createTestFolder(mainTestFolder.getNodeRef(), "testfolder");
try {
// Constraint: UUID passed must be <= 50 characters (otherwise IllegalArgumentException)
String desiredId = "Blond hair. Don't care";
String desiredName = "testos nodos";

Map<eu.xenit.apix.data.QName, String[]> properties = new HashMap<>();
properties.put(c.apix(ContentModel.PROP_NODE_UUID), new String[]{desiredId});
properties.put(c.apix(ContentModel.PROP_NAME), new String[]{desiredName});

eu.xenit.apix.data.NodeRef created = service.createNode(
c.apix(testFolder.getNodeRef()),
properties,
c.apix(ContentModel.TYPE_CONTENT),
null // contentData
);

logger.warn("Created node with NodeRef='{}'", created);

assertEquals(desiredId, created.getGuid());
assertEquals(desiredName, alfrescoNodeService.getProperty(c.alfresco(created), ContentModel.PROP_NAME));
Comment thread
Brobrechts marked this conversation as resolved.
} finally {
removeTestNode(mainTestFolder.getNodeRef());
}
}
}
Loading
Loading