Compare commits

...

17 Commits

Author SHA1 Message Date
27f2c2677c v3.x; upgrade to jakarta libs 2024-08-15 10:49:32 -04:00
783d93dfe2 Merge branch 'develop-acs62' into develop-acs7 2023-08-25 11:49:04 -04:00
14853ca9ca Merge branch 'develop-acs61' into develop-acs62 2023-08-25 11:48:55 -04:00
91f215ec1d Merge branch 'develop-acs60' into develop-acs61 2023-08-25 11:48:36 -04:00
c637298e3b Merge branch 'develop-acs52' into develop-acs60 2023-08-25 11:48:30 -04:00
224a40c1eb added multi-value property support 2023-08-25 11:48:05 -04:00
3718b3afb1 added Model API path 2023-06-16 10:16:17 -04:00
b06c7a5b6e Merge branch 'develop-acs62' into develop-acs7 2023-06-16 10:10:49 -04:00
6becd9fbcd moved search codegen to fix sizeInBytes type 2023-06-16 10:10:00 -04:00
573804252b Merge branch 'develop-acs61' into develop-acs62 2023-06-16 09:51:20 -04:00
457bdec3ec updated API to v7.3.0 2023-06-08 13:40:02 -04:00
afa78f27d5 Merge branch 'develop-acs62' into develop-acs7 2023-05-28 12:13:06 -04:00
11f1b54dc2 Merge branch 'develop-acs61' into develop-acs62 2023-05-28 12:12:53 -04:00
39bdc3ab0d Merge branch 'develop-acs62' into develop-acs7 2022-10-02 18:45:09 -04:00
89515eb147 Merge branch 'develop-acs61' into develop-acs62 2022-10-02 18:44:51 -04:00
e80401167a added ACS v7.0 changes 2022-10-02 18:40:35 -04:00
2d05f7a2a5 not ACS v6.2 changes; just version tag 2022-10-02 18:33:58 -04:00
7 changed files with 102 additions and 49 deletions

69
pom.xml
View File

@ -5,10 +5,10 @@
<groupId>com.inteligr8.alfresco</groupId> <groupId>com.inteligr8.alfresco</groupId>
<artifactId>acs-public-rest-api</artifactId> <artifactId>acs-public-rest-api</artifactId>
<version>2.1-SNAPSHOT-acs61</version> <version>3.0-SNAPSHOT-acs7</version>
<name>Alfresco Content Services ReST API for Java</name> <name>Alfresco Content Services ReST API for Java</name>
<description>A library for building ACS v6.1.x JAX-RS REST API clients</description> <description>A library for building ACS v7.x JAX-RS REST API clients</description>
<url>https://bitbucket.org/inteligr8/acs-public-rest-api</url> <url>https://bitbucket.org/inteligr8/acs-public-rest-api</url>
<licenses> <licenses>
@ -38,17 +38,17 @@
<properties> <properties>
<project.build.sourceEncoding>utf-8</project.build.sourceEncoding> <project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
<maven.compiler.source>8</maven.compiler.source> <maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target> <maven.compiler.target>11</maven.compiler.target>
<maven.compiler.debuglevel>lines,vars,source</maven.compiler.debuglevel> <maven.compiler.debuglevel>lines,vars,source</maven.compiler.debuglevel>
<swagger.basePackage>com.inteligr8.alfresco.acs</swagger.basePackage> <swagger.basePackage>com.inteligr8.alfresco.acs</swagger.basePackage>
<alfresco.platform.version>6.1.0</alfresco.platform.version> <alfresco.platform.version>7.3.0</alfresco.platform.version>
<jersey.version>2.39.1</jersey.version> <jersey.version>3.1.8</jersey.version>
<cxf.version>3.5.6</cxf.version> <cxf.version>4.0.2</cxf.version>
<jackson.version>2.15.1</jackson.version> <jackson.version>2.17.2</jackson.version>
</properties> </properties>
<dependencies> <dependencies>
@ -63,9 +63,9 @@
<version>2.2.11</version> <version>2.2.11</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>javax.validation</groupId> <groupId>jakarta.activation</groupId>
<artifactId>validation-api</artifactId> <artifactId>jakarta.activation-api</artifactId>
<version>2.0.1.Final</version> <version>2.1.3</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.slf4j</groupId> <groupId>org.slf4j</groupId>
@ -75,7 +75,12 @@
<dependency> <dependency>
<groupId>jakarta.ws.rs</groupId> <groupId>jakarta.ws.rs</groupId>
<artifactId>jakarta.ws.rs-api</artifactId> <artifactId>jakarta.ws.rs-api</artifactId>
<version>2.1.6</version> <version>3.1.0</version>
</dependency>
<dependency>
<groupId>jakarta.xml.bind</groupId>
<artifactId>jakarta.xml.bind-api</artifactId>
<version>4.0.1</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.fasterxml.jackson.module</groupId> <groupId>com.fasterxml.jackson.module</groupId>
@ -131,9 +136,12 @@
<plugin> <plugin>
<groupId>io.swagger.codegen.v3</groupId> <groupId>io.swagger.codegen.v3</groupId>
<artifactId>swagger-codegen-maven-plugin</artifactId> <artifactId>swagger-codegen-maven-plugin</artifactId>
<version>3.0.45</version> <version>3.0.61</version>
<configuration> <configuration>
<language>jaxrs-cxf-client</language> <language>jaxrs-cxf-client</language>
<configOptions>
<jakarta>true</jakarta>
</configOptions>
<output>${basedir}</output> <output>${basedir}</output>
<apiPackage>${swagger.basePackage}.api</apiPackage> <apiPackage>${swagger.basePackage}.api</apiPackage>
<modelPackage>${swagger.basePackage}.model</modelPackage> <modelPackage>${swagger.basePackage}.model</modelPackage>
@ -144,6 +152,17 @@
<generateModelDocumentation>false</generateModelDocumentation> <generateModelDocumentation>false</generateModelDocumentation>
</configuration> </configuration>
<executions> <executions>
<!-- search before core, as ContentInfo is incorrect in search -->
<execution>
<id>swagger-search-codegen</id>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${project.build.directory}/dependency/definitions/alfresco-search.yaml</inputSpec>
</configuration>
</execution>
<execution> <execution>
<id>swagger-core-codegen</id> <id>swagger-core-codegen</id>
<phase>generate-sources</phase> <phase>generate-sources</phase>
@ -164,16 +183,6 @@
<inputSpec>${project.build.directory}/dependency/definitions/alfresco-workflow.yaml</inputSpec> <inputSpec>${project.build.directory}/dependency/definitions/alfresco-workflow.yaml</inputSpec>
</configuration> </configuration>
</execution> </execution>
<execution>
<id>swagger-search-codegen</id>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${project.build.directory}/dependency/definitions/alfresco-search.yaml</inputSpec>
</configuration>
</execution>
<execution> <execution>
<id>swagger-auth-codegen</id> <id>swagger-auth-codegen</id>
<phase>generate-sources</phase> <phase>generate-sources</phase>
@ -194,6 +203,16 @@
<inputSpec>${project.build.directory}/dependency/definitions/alfresco-discovery.yaml</inputSpec> <inputSpec>${project.build.directory}/dependency/definitions/alfresco-discovery.yaml</inputSpec>
</configuration> </configuration>
</execution> </execution>
<execution>
<id>swagger-model-codegen</id>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${project.build.directory}/dependency/definitions/alfresco-model.yaml</inputSpec>
</configuration>
</execution>
</executions> </executions>
</plugin> </plugin>
<plugin> <plugin>
@ -244,6 +263,10 @@
<pattern>(\*\*Search API\*\*[^@]*)@Path\("/"\)</pattern> <pattern>(\*\*Search API\*\*[^@]*)@Path\("/"\)</pattern>
<replacement>$1@Path("/api/-default-/public/search/versions/1")</replacement> <replacement>$1@Path("/api/-default-/public/search/versions/1")</replacement>
</regex> </regex>
<regex>
<pattern>(\*\*Model API\*\*[^@]*)@Path\("/"\)</pattern>
<replacement>$1@Path("/api/-default-/public/alfresco/versions/1")</replacement>
</regex>
</regexes> </regexes>
</configuration> </configuration>
</execution> </execution>

View File

@ -16,6 +16,7 @@ package com.inteligr8.alfresco.acs;
import com.inteligr8.alfresco.acs.api.ActionsApi; import com.inteligr8.alfresco.acs.api.ActionsApi;
import com.inteligr8.alfresco.acs.api.ActivitiesApi; import com.inteligr8.alfresco.acs.api.ActivitiesApi;
import com.inteligr8.alfresco.acs.api.AspectsApi;
import com.inteligr8.alfresco.acs.api.AuditApi; import com.inteligr8.alfresco.acs.api.AuditApi;
import com.inteligr8.alfresco.acs.api.AuthenticationApi; import com.inteligr8.alfresco.acs.api.AuthenticationApi;
import com.inteligr8.alfresco.acs.api.CommentsApi; import com.inteligr8.alfresco.acs.api.CommentsApi;
@ -40,6 +41,7 @@ import com.inteligr8.alfresco.acs.api.SitesApi;
import com.inteligr8.alfresco.acs.api.TagsApi; import com.inteligr8.alfresco.acs.api.TagsApi;
import com.inteligr8.alfresco.acs.api.TasksApi; import com.inteligr8.alfresco.acs.api.TasksApi;
import com.inteligr8.alfresco.acs.api.TrashcanApi; import com.inteligr8.alfresco.acs.api.TrashcanApi;
import com.inteligr8.alfresco.acs.api.TypesApi;
import com.inteligr8.alfresco.acs.api.V0Api; import com.inteligr8.alfresco.acs.api.V0Api;
import com.inteligr8.alfresco.acs.api.VersionsApi; import com.inteligr8.alfresco.acs.api.VersionsApi;
@ -61,6 +63,10 @@ public interface AcsPublicRestApi {
return this.getApi(ActivitiesApi.class); return this.getApi(ActivitiesApi.class);
} }
default AspectsApi getAspectsApi() {
return this.getApi(AspectsApi.class);
}
default AuditApi getAuditApi() { default AuditApi getAuditApi() {
return this.getApi(AuditApi.class); return this.getApi(AuditApi.class);
} }
@ -157,6 +163,10 @@ public interface AcsPublicRestApi {
return this.getApi(TrashcanApi.class); return this.getApi(TrashcanApi.class);
} }
default TypesApi getTypesApi() {
return this.getApi(TypesApi.class);
}
default VersionsApi getVersionsApi() { default VersionsApi getVersionsApi() {
return this.getApi(VersionsApi.class); return this.getApi(VersionsApi.class);
} }

View File

@ -14,12 +14,12 @@
*/ */
package com.inteligr8.alfresco.acs.api; package com.inteligr8.alfresco.acs.api;
import javax.ws.rs.Consumes; import jakarta.ws.rs.Consumes;
import javax.ws.rs.POST; import jakarta.ws.rs.POST;
import javax.ws.rs.Path; import jakarta.ws.rs.Path;
import javax.ws.rs.PathParam; import jakarta.ws.rs.PathParam;
import javax.ws.rs.Produces; import jakarta.ws.rs.Produces;
import javax.ws.rs.core.MediaType; import jakarta.ws.rs.core.MediaType;
import com.inteligr8.alfresco.acs.model.Error; import com.inteligr8.alfresco.acs.model.Error;
import com.inteligr8.alfresco.acs.model.NodeBodyCreateMultipartCxf; import com.inteligr8.alfresco.acs.model.NodeBodyCreateMultipartCxf;

View File

@ -14,12 +14,12 @@
*/ */
package com.inteligr8.alfresco.acs.api; package com.inteligr8.alfresco.acs.api;
import javax.ws.rs.Consumes; import jakarta.ws.rs.Consumes;
import javax.ws.rs.POST; import jakarta.ws.rs.POST;
import javax.ws.rs.Path; import jakarta.ws.rs.Path;
import javax.ws.rs.PathParam; import jakarta.ws.rs.PathParam;
import javax.ws.rs.Produces; import jakarta.ws.rs.Produces;
import javax.ws.rs.core.MediaType; import jakarta.ws.rs.core.MediaType;
import com.inteligr8.alfresco.acs.model.Error; import com.inteligr8.alfresco.acs.model.Error;
import com.inteligr8.alfresco.acs.model.NodeBodyCreateMultipartJersey; import com.inteligr8.alfresco.acs.model.NodeBodyCreateMultipartJersey;

View File

@ -16,11 +16,11 @@ package com.inteligr8.alfresco.acs.api;
import java.util.List; import java.util.List;
import javax.ws.rs.GET; import jakarta.ws.rs.GET;
import javax.ws.rs.Path; import jakarta.ws.rs.Path;
import javax.ws.rs.PathParam; import jakarta.ws.rs.PathParam;
import javax.ws.rs.Produces; import jakarta.ws.rs.Produces;
import javax.ws.rs.QueryParam; import jakarta.ws.rs.QueryParam;
import com.inteligr8.alfresco.acs.model.v0.AssociationInfo; import com.inteligr8.alfresco.acs.model.v0.AssociationInfo;
import com.inteligr8.alfresco.acs.model.v0.ClassInfo; import com.inteligr8.alfresco.acs.model.v0.ClassInfo;

View File

@ -17,12 +17,13 @@ package com.inteligr8.alfresco.acs.model;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.util.Collection;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import javax.ws.rs.core.MediaType; import jakarta.ws.rs.core.MediaType;
import org.apache.cxf.jaxrs.ext.multipart.Attachment; import org.apache.cxf.jaxrs.ext.multipart.Attachment;
import org.apache.cxf.jaxrs.ext.multipart.ContentDisposition; import org.apache.cxf.jaxrs.ext.multipart.ContentDisposition;
@ -90,9 +91,18 @@ public class NodeBodyCreateMultipartCxf extends MultipartBody {
if (nodeBody.getAspectNames() != null && !nodeBody.getAspectNames().isEmpty()) if (nodeBody.getAspectNames() != null && !nodeBody.getAspectNames().isEmpty())
logger.warn("The ACS Public REST API does not support the explicit inclusion of aspects while creating content"); logger.warn("The ACS Public REST API does not support the explicit inclusion of aspects while creating content");
if (nodeBody.getProperties() != null) { if (nodeBody.getProperties() != null) {
Map<String, ?> props = (Map<String, ?>)nodeBody.getProperties(); @SuppressWarnings("unchecked")
Map<String, ?> props = (Map<String, ?>)nodeBody.getProperties();
for (Entry<String, ?> prop : props.entrySet()) { for (Entry<String, ?> prop : props.entrySet()) {
if (prop.getValue() != null) { if (prop.getValue() instanceof Collection<?>) {
for (Object value : (Collection<?>)prop.getValue())
if (value != null)
atts.add(toAttachment(prop.getKey(), value.toString()));
} else if (prop.getValue() instanceof Object[]) {
for (Object value : (Object[])prop.getValue())
if (value != null)
atts.add(toAttachment(prop.getKey(), value.toString()));
} else if (prop.getValue() != null) {
// FIXME convert dates as ACS would expect them to be formatted // FIXME convert dates as ACS would expect them to be formatted
atts.add(toAttachment(prop.getKey(), prop.getValue().toString())); atts.add(toAttachment(prop.getKey(), prop.getValue().toString()));
} }

View File

@ -17,12 +17,13 @@ package com.inteligr8.alfresco.acs.model;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.text.ParseException; import java.text.ParseException;
import java.util.Collection;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import javax.ws.rs.core.MediaType; import jakarta.ws.rs.core.MediaType;
import org.glassfish.jersey.media.multipart.BodyPart; import org.glassfish.jersey.media.multipart.BodyPart;
import org.glassfish.jersey.media.multipart.FormDataBodyPart; import org.glassfish.jersey.media.multipart.FormDataBodyPart;
@ -86,12 +87,21 @@ public class NodeBodyCreateMultipartJersey extends FormDataMultiPart {
if (nodeBody.getAspectNames() != null && !nodeBody.getAspectNames().isEmpty()) if (nodeBody.getAspectNames() != null && !nodeBody.getAspectNames().isEmpty())
logger.warn("The ACS Public REST API does not support the explicit inclusion of aspects while creating content"); logger.warn("The ACS Public REST API does not support the explicit inclusion of aspects while creating content");
if (nodeBody.getProperties() != null) { if (nodeBody.getProperties() != null) {
Map<String, ?> props = (Map<String, ?>)nodeBody.getProperties(); @SuppressWarnings("unchecked")
Map<String, ?> props = (Map<String, ?>)nodeBody.getProperties();
for (Entry<String, ?> prop : props.entrySet()) { for (Entry<String, ?> prop : props.entrySet()) {
if (prop.getValue() != null) { if (prop.getValue() instanceof Collection<?>) {
// FIXME convert dates as ACS would expect them to be formatted for (Object value : (Collection<?>)prop.getValue())
fields.add(new FormDataBodyPart(prop.getKey(), prop.getValue().toString())); if (value != null)
} fields.add(new FormDataBodyPart(prop.getKey(), value.toString()));
} else if (prop.getValue() instanceof Object[]) {
for (Object value : (Object[])prop.getValue())
if (value != null)
fields.add(new FormDataBodyPart(prop.getKey(), value.toString()));
} else if (prop.getValue() != null) {
// FIXME convert dates as ACS would expect them to be formatted
fields.add(new FormDataBodyPart(prop.getKey(), prop.getValue().toString()));
}
} }
} }