Skip to content

Commit 9728ef2

Browse files
authored
Merge pull request #224 from TanyaEf/master
Updated DTO dependency, added ConnectionService
2 parents 723047f + 8c7d1eb commit 9728ef2

File tree

14 files changed

+924
-30
lines changed

14 files changed

+924
-30
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1781,7 +1781,7 @@ OperationResult result = client
17811781
Import/Export
17821782
=============
17831783
###Export service
1784-
The export service works asynchronously: first you request the export with the desired options, then you monitor the state of the export, and finally you request the output file. You must be authenticated as the system admin (superuser) for the export services.
1784+
The export service works asynchronously: first you request the export with the desired options, then you monitor the state of the export, and finally you request the output file. You must be authenticated as the system admin (superuser)or jasperadmin for the export services.
17851785
```java
17861786
OperationResult<State> operationResult =
17871787
client
@@ -1866,7 +1866,7 @@ OperationResult<InputStream> operationResult1 =
18661866
InputStream inputStream = operationResult1.getEntity();
18671867
```
18681868
###Import service
1869-
Use the following service to upload a catalog as a zip file and import it with the given options. Specify options as arguments from `com.jaspersoft.jasperserver.jaxrs.client.apiadapters.importexport.importservice.ImportParameter`. Arguments that are omitted are assumed to be false. You must be authenticated as the system admin (superuser) for the import service. Jaspersoft does not recommend uploading files greater than 2 gigabytes.
1869+
Use the following service to upload a catalog as a zip file and import it with the given options. Specify options as arguments from `com.jaspersoft.jasperserver.jaxrs.client.apiadapters.importexport.importservice.ImportParameter`. Arguments that are omitted are assumed to be false. You must be authenticated as the system admin (superuser) or jasperadmin for the import service. Jaspersoft does not recommend uploading files greater than 2 gigabytes.
18701870
```java
18711871
URL url = ImportService.class.getClassLoader().getResource("testExportArchive.zip");
18721872
OperationResult<State> operationResult =

pom.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
<properties>
1515
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
1616
<powermock.version>1.5.5</powermock.version>
17+
<jasperserver-dto.version>6.3.0</jasperserver-dto.version>
1718
</properties>
1819

1920
<scm>
@@ -38,7 +39,7 @@
3839
<dependency>
3940
<groupId>com.jaspersoft.jasperserver</groupId>
4041
<artifactId>jasperserver-dto</artifactId>
41-
<version>6.2.1</version>
42+
<version>${jasperserver-dto.version}</version>
4243
</dependency>
4344

4445
<!-- Jersey-->
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.jaspersoft.jasperserver.jaxrs.client.apiadapters.connections;
2+
3+
import com.jaspersoft.jasperserver.jaxrs.client.apiadapters.AbstractAdapter;
4+
import com.jaspersoft.jasperserver.jaxrs.client.core.SessionStorage;
5+
6+
/**
7+
* <p/>
8+
* <p/>
9+
*
10+
* @author tetiana.iefimenko
11+
* @version $Id$
12+
* @see
13+
*/
14+
public class ConnectionsService extends AbstractAdapter {
15+
16+
public ConnectionsService(SessionStorage sessionStorage) {
17+
super(sessionStorage);
18+
}
19+
20+
public SingleConnectionsAdapter connection(String uuId) {
21+
return this.connection(Object.class, null, Object.class, null, uuId);
22+
}
23+
24+
public SingleConnectionsAdapter connection(Class connectionClass, String connectionMimeType, String uuId) {
25+
return this.connection(connectionClass, connectionMimeType, Object.class, null, uuId);
26+
}
27+
28+
public SingleConnectionsAdapter connection(Class connectionClass, String connectionMimeType) {
29+
return this.connection(connectionClass, connectionMimeType, Object.class, null, null);
30+
}
31+
32+
public <C, M> SingleConnectionsAdapter<C, M> connection(Class<C> connection,
33+
String connectionMimeType,
34+
Class<M> metadata,
35+
String metadataMimeType,
36+
String uuId) {
37+
38+
39+
return new SingleConnectionsAdapter<C, M>(sessionStorage, connection,
40+
connectionMimeType,
41+
metadata,
42+
metadataMimeType,
43+
uuId);
44+
}
45+
46+
}
Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
package com.jaspersoft.jasperserver.jaxrs.client.apiadapters.connections;
2+
3+
import com.jaspersoft.jasperserver.dto.connection.FtpConnection;
4+
import com.jaspersoft.jasperserver.dto.connection.LfsConnection;
5+
import com.jaspersoft.jasperserver.dto.resources.ClientCustomDataSource;
6+
import com.jaspersoft.jasperserver.dto.resources.ClientJdbcDataSource;
7+
import com.jaspersoft.jasperserver.dto.resources.ClientJndiJdbcDataSource;
8+
import com.jaspersoft.jasperserver.dto.resources.ClientReportUnit;
9+
import com.jaspersoft.jasperserver.dto.resources.ClientSemanticLayerDataSource;
10+
import com.jaspersoft.jasperserver.jaxrs.client.apiadapters.AbstractAdapter;
11+
import com.jaspersoft.jasperserver.jaxrs.client.core.JerseyRequest;
12+
import com.jaspersoft.jasperserver.jaxrs.client.core.MimeTypeUtil;
13+
import com.jaspersoft.jasperserver.jaxrs.client.core.SessionStorage;
14+
import com.jaspersoft.jasperserver.jaxrs.client.core.exceptions.MandatoryParameterNotFoundException;
15+
import com.jaspersoft.jasperserver.jaxrs.client.core.exceptions.handling.DefaultErrorHandler;
16+
import com.jaspersoft.jasperserver.jaxrs.client.core.operationresult.OperationResult;
17+
18+
/**
19+
* <p/>
20+
* <p/>
21+
*
22+
* @author tetiana.iefimenko
23+
* @version $Id$
24+
* @see
25+
*/
26+
public class SingleConnectionsAdapter<C, M> extends AbstractAdapter {
27+
public static final String SERVICE_URI = "connections";
28+
private String uuId;
29+
private Class<C> connectionClass;
30+
private String connectionMimeType;
31+
private Class<M> metadataClass;
32+
private String metadataMimeType;
33+
34+
public SingleConnectionsAdapter(SessionStorage sessionStorage, Class<C> connectionClass,
35+
String connectionMimeType,
36+
Class<M> metadataClass,
37+
String metadataMimeType,
38+
String uuId) {
39+
super(sessionStorage);
40+
this.uuId = uuId;
41+
this.connectionClass = connectionClass;
42+
this.connectionMimeType = connectionMimeType;
43+
this.metadataClass = metadataClass;
44+
this.metadataMimeType = metadataMimeType;
45+
}
46+
47+
@SuppressWarnings("unchecked")
48+
public OperationResult<C> create(C connection) {
49+
if (!isConnectionTypeValid(connection)) {
50+
throw new IllegalArgumentException("Unsupported connectionClass type");
51+
}
52+
JerseyRequest<C> jerseyRequest = JerseyRequest.buildRequest(this.sessionStorage
53+
, connectionClass
54+
, new String[]{SERVICE_URI}
55+
, new DefaultErrorHandler());
56+
if (connectionMimeType != null) {
57+
jerseyRequest
58+
.setContentType(MimeTypeUtil.toCorrectContentMime(sessionStorage.getConfiguration(),
59+
connectionMimeType + "+{mime}"));
60+
}
61+
return jerseyRequest.post(connection);
62+
}
63+
64+
public OperationResult<C> get() {
65+
JerseyRequest<C> jerseyRequest = buildRequest();
66+
return jerseyRequest.get();
67+
}
68+
69+
public OperationResult<C> update(C connection) {
70+
if (!isConnectionTypeValid(connection)) {
71+
throw new IllegalArgumentException("Unsupported connectionClass type");
72+
}
73+
JerseyRequest<C> jerseyRequest = buildRequest();
74+
if (connectionMimeType != null) {
75+
jerseyRequest
76+
.setContentType(MimeTypeUtil.toCorrectContentMime(sessionStorage.getConfiguration()
77+
, connectionMimeType + "+{mime}"));
78+
}
79+
return jerseyRequest.put(connection);
80+
}
81+
82+
public OperationResult delete() {
83+
return buildRequest().delete();
84+
}
85+
86+
protected JerseyRequest<C> buildRequest() {
87+
if (uuId == null || uuId.isEmpty()) {
88+
throw new MandatoryParameterNotFoundException("Uuid of the connection must be specified");
89+
}
90+
return JerseyRequest.buildRequest(this.sessionStorage
91+
, connectionClass
92+
, new String[]{SERVICE_URI, uuId}
93+
, new DefaultErrorHandler());
94+
}
95+
96+
public OperationResult<M> metadata() {
97+
if (uuId == null || uuId.isEmpty()) {
98+
throw new MandatoryParameterNotFoundException("Uuid of the connection must be specified");
99+
}
100+
JerseyRequest<M> jerseyRequest = JerseyRequest.buildRequest(
101+
sessionStorage,
102+
metadataClass,
103+
new String[]{SERVICE_URI, uuId, "metadata"},
104+
new DefaultErrorHandler()
105+
);
106+
jerseyRequest.setAccept(MimeTypeUtil.toCorrectAcceptMime(sessionStorage.getConfiguration()
107+
, metadataMimeType + "+{mime}"));
108+
return jerseyRequest.get();
109+
}
110+
111+
public OperationResult<M> createAndGetMetadata(C connection) {
112+
if (!isConnectionTypeValid(connection)) {
113+
throw new IllegalArgumentException("Unsupported connectionClass type");
114+
}
115+
JerseyRequest<M> jerseyRequest = JerseyRequest.buildRequest(this.sessionStorage
116+
, metadataClass
117+
, new String[]{SERVICE_URI}
118+
, new DefaultErrorHandler());
119+
jerseyRequest
120+
.setContentType(MimeTypeUtil.toCorrectContentMime(sessionStorage.getConfiguration()
121+
, connectionMimeType + "+{mime}"));
122+
jerseyRequest
123+
.setAccept(MimeTypeUtil.toCorrectAcceptMime(sessionStorage.getConfiguration()
124+
, metadataMimeType + "+{mime}"));
125+
return jerseyRequest.post(connection);
126+
}
127+
128+
protected <T> Boolean isConnectionTypeValid(T connection) {
129+
if (connection == null) {
130+
throw new MandatoryParameterNotFoundException("Connection is null");
131+
}
132+
return (connection instanceof FtpConnection ||
133+
connection instanceof LfsConnection ||
134+
connection instanceof ClientSemanticLayerDataSource ||
135+
connection instanceof ClientCustomDataSource ||
136+
connection instanceof ClientJndiJdbcDataSource ||
137+
connection instanceof ClientJdbcDataSource ||
138+
connection instanceof ClientReportUnit);
139+
}
140+
}

src/main/java/com/jaspersoft/jasperserver/jaxrs/client/apiadapters/permissions/SinglePermissionRecipientRequestAdapter.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,20 @@
2424
import com.jaspersoft.jasperserver.jaxrs.client.apiadapters.AbstractAdapter;
2525
import com.jaspersoft.jasperserver.jaxrs.client.core.*;
2626
import com.jaspersoft.jasperserver.jaxrs.client.core.operationresult.OperationResult;
27+
import java.util.ArrayList;
2728

2829
import static com.jaspersoft.jasperserver.jaxrs.client.core.JerseyRequest.buildRequest;
30+
import static java.util.Arrays.asList;
2931

3032
public class SinglePermissionRecipientRequestAdapter extends AbstractAdapter {
3133
public static final String SERVICE_URI = "permissions";
32-
private final String resourceUri;
3334
private final String recipient;
35+
private ArrayList<String> path = new ArrayList<String>();
3436

3537
public SinglePermissionRecipientRequestAdapter(SessionStorage sessionStorage, String resourceUri, String recipient) {
3638
super(sessionStorage);
37-
this.resourceUri = resourceUri;
39+
this.path.add(SERVICE_URI);
40+
this.path.addAll(asList(resourceUri.split("/")));
3841
this.recipient = recipient;
3942
}
4043

@@ -87,7 +90,8 @@ public void run() {
8790
}
8891

8992
private <T> JerseyRequest<T> getBuilder(Class<T> responseClass) {
90-
JerseyRequest<T> request = buildRequest(sessionStorage, responseClass, new String[]{SERVICE_URI, resourceUri});
93+
94+
JerseyRequest<T> request = buildRequest(sessionStorage, responseClass, path.toArray(new String[path.size()]));
9195
request.addMatrixParam("recipient", recipient);
9296
return request;
9397
}

src/main/java/com/jaspersoft/jasperserver/jaxrs/client/core/Session.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,9 @@
2424
import com.jaspersoft.jasperserver.jaxrs.client.apiadapters.authority.organizations.OrganizationsService;
2525
import com.jaspersoft.jasperserver.jaxrs.client.apiadapters.authority.roles.RolesService;
2626
import com.jaspersoft.jasperserver.jaxrs.client.apiadapters.authority.users.UsersService;
27-
import com.jaspersoft.jasperserver.jaxrs.client.apiadapters.domain.DomainMetadataService;
27+
import com.jaspersoft.jasperserver.jaxrs.client.apiadapters.connections.ConnectionsService;
2828
import com.jaspersoft.jasperserver.jaxrs.client.apiadapters.diagnostic.DiagnosticService;
29+
import com.jaspersoft.jasperserver.jaxrs.client.apiadapters.domain.DomainMetadataService;
2930
import com.jaspersoft.jasperserver.jaxrs.client.apiadapters.importexport.exportservice.ExportService;
3031
import com.jaspersoft.jasperserver.jaxrs.client.apiadapters.importexport.importservice.ImportService;
3132
import com.jaspersoft.jasperserver.jaxrs.client.apiadapters.inputControls.InputControlsService;
@@ -118,4 +119,6 @@ public AttributesService attributesService() {
118119

119120
public DiagnosticService diagnosticService() {return getService(DiagnosticService.class);}
120121

122+
public ConnectionsService connectionsService() {return getService(ConnectionsService.class);}
123+
121124
}

src/main/java/com/jaspersoft/jasperserver/jaxrs/client/core/enums/ConnectionMediaType.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,43 @@
2323

2424
public final class ConnectionMediaType {
2525

26+
public static final String FTP_TYPE = "application/connections.ftp";
2627
public static final String FTP_JSON = "application/connections.ftp+json";
2728
public static final String FTP_XML = "application/connections.ftp+xml";
2829

30+
public static final String LOCAL_FILE_SYSTEM_TYPE = "application/connections.lfs";
2931
public static final String LOCAL_FILE_SYSTEM_JSON = "application/connections.lfs+json";
3032
public static final String LOCAL_FILE_SYSTEM_XML = "application/connections.lfs+xml";
3133

34+
public static final String CUSTOM_DATA_SOURCE_TYPE = "application/repository.customDataSource";
35+
public static final String CUSTOM_DATA_SOURCE_JSON = "application/repository.customDataSource+json";
36+
public static final String CUSTOM_DATA_SOURCE_XML = "application/repository.customDataSource+xml";
37+
38+
public static final String CUSTOM_DATA_SOURCE_METADATA_TYPE = "application/table.metadata";
39+
public static final String CUSTOM_DATA_SOURCE_METADATA_JSON = "application/table.metadata+json";
40+
public static final String CUSTOM_DATA_SOURCE_METADATA_XML = "application/table.metadata+xml";
41+
42+
public static final String JNDI_JDBC_DATA_SOURCE_TYPE = "application/repository.jndiJdbcDataSource";
43+
public static final String JNDI_JDBC_DATA_SOURCE_JSON = "application/repository.jndiJdbcDataSource+json";
44+
public static final String JNDI_JDBC_DATA_SOURCE_XML = "application/repository.jndiJdbcDataSource+xml";
45+
46+
public static final String JDBC_DATA_SOURCE_TYPE = "application/repository.jdbcDataSource";
47+
public static final String JDBC_DATA_SOURCE_JSON = "application/repository.jdbcDataSource+json";
48+
public static final String JDBC_DATA_SOURCE_XML = "application/repository.jdbcDataSource+xml";
49+
50+
public static final String JDBC_DATA_SOURCE_METADATA_TYPE = "application/repository.customDataSource.metadata";
51+
public static final String JDBC_DATA_SOURCE_METADATA_JSON = "application/repository.customDataSource.metadata+json";
52+
public static final String JDBC_DATA_SOURCE_METADATA_XML = "application/repository.customDataSource.metadata+xml";
53+
54+
public static final String DOMAIN_DATA_SOURCE_TYPE = "application/repository.domain";
55+
public static final String DOMAIN_DATA_SOURCE_JSON = "application/repository.domain+json";
56+
public static final String DOMAIN_DATA_SOURCE_XML = "application/repository.domain+xml";
57+
58+
public static final String TXT_FILE_TYPE = "application/connections.txtFile";
3259
public static final String TXT_FILE_JSON = "application/connections.txtFile+json";
3360
public static final String TXT_FILE_XML = "application/connections.txtFile+xml";
3461

62+
public static final String XLS_FILE_TYPE = "application/connections.xlsFile";
3563
public static final String XLS_FILE_JSON = "application/connections.xlsFile+json";
3664
public static final String XLS_FILE_XML = "application/connections.xlsFile+xml";
3765

src/main/java/com/jaspersoft/jasperserver/jaxrs/client/dto/common/DeepCloneable.java

Lines changed: 0 additions & 13 deletions
This file was deleted.

src/main/java/com/jaspersoft/jasperserver/jaxrs/client/dto/jobs/JobTrigger.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
package com.jaspersoft.jasperserver.jaxrs.client.dto.jobs;
2323

24-
import com.jaspersoft.jasperserver.jaxrs.client.dto.common.DeepCloneable;
24+
import com.jaspersoft.jasperserver.dto.common.DeepCloneable;
2525
import com.jaspersoft.jasperserver.jaxrs.client.dto.jobs.jaxb.adapters.NoTimezoneDateToStringXmlAdapter;
2626

2727
import java.lang.reflect.Constructor;

src/test/java/com/jaspersoft/jasperserver/jaxrs/client/apiadapters/connection/ConnectionMediaTypeTest.java renamed to src/test/java/com/jaspersoft/jasperserver/jaxrs/client/apiadapters/connections/ConnectionMediaTypeTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.jaspersoft.jasperserver.jaxrs.client.apiadapters.connection;
1+
package com.jaspersoft.jasperserver.jaxrs.client.apiadapters.connections;
22

33
import com.jaspersoft.jasperserver.jaxrs.client.core.enums.ConnectionMediaType;
44
import org.testng.annotations.Test;

0 commit comments

Comments
 (0)