Skip to content

Commit 4a181d2

Browse files
committed
Merge pull request #184 from Jaspersoft/develop
Added DiagnosticService, bugfix
2 parents b2d0fe2 + 6d8af73 commit 4a181d2

File tree

14 files changed

+1106
-62
lines changed

14 files changed

+1106
-62
lines changed

.travis.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,11 @@ branches:
1212
only:
1313
- develop
1414
- master
15+
- develop-domainDesigner
1516

1617
env:
1718
global:
1819
- secure: "Dwb41Mdes13RFaB9Pf4fViLVt9U0NK8EvbzrD/GcWfHjKi1GpAgQ0WyUdQSKrxLViH2OL4BqQIQmOtugkW1rNQn/Gnnb4Hu4/rZ06+tLStcvmrm9+Pph++niqzCxZe206/VwDV393UVPWtVpFtbhDTaiJOf0dP+3BX7NAzqW+JU="
1920

2021
after_success:
21-
- mvn clean cobertura:cobertura coveralls:cobertura
22+
- mvn clean cobertura:cobertura coveralls:cobertura

README.md

Lines changed: 117 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -114,14 +114,15 @@ Table of Contents
114114
* [Checking the Import State](#checking-the-import-state).
115115
11. [Domain metadata service](#domainmetadata-service).
116116
12. [Thumbnail Search Service](#thumbnail-search-service).
117-
13. [Query Executor Service](#query-executor-service).
118-
14. [Server Information Service](#server-information-service).
119-
15. [Bundles service](#bundles-service).
120-
16. [Asynchronous API](#asynchronous-api).
121-
17. [Getting serialized content from response](#getting-serialized-content-from-response).
122-
18. [Possible issues](#possible-issues).
123-
19. [Maven dependency to add jasperserver-rest-client to your app](#maven-dependency-to-add-jasperserver-rest-client-to-your-app).
124-
20. [License](#license).
117+
13. [Diagnostic Service](#diagnostic-service).
118+
14. [Query Executor Service](#query-executor-service).
119+
15. [Server Information Service](#server-information-service).
120+
16. [Bundles service](#bundles-service).
121+
17. [Asynchronous API](#asynchronous-api).
122+
18. [Getting serialized content from response](#getting-serialized-content-from-response).
123+
19. [Possible issues](#possible-issues).
124+
20. [Maven dependency to add jasperserver-rest-client to your app](#maven-dependency-to-add-jasperserver-rest-client-to-your-app).
125+
21. [License](#license).
125126

126127
Introduction
127128
-------------
@@ -1897,7 +1898,113 @@ List<ResourceThumbnail> entity = session.thumbnailsService()
18971898
```
18981899
Please notice that ResourceThumbnail class (DTO) contains the content in Base64 string format (not InputStream).
18991900

1900-
####Query Executor Service
1901+
###Diagnostic Service
1902+
1903+
The service is used to create, update, stop log collectors and get logs and data snapshots.
1904+
To create log collector use the code below:
1905+
```java
1906+
OperationResult<CollectorSettings> operationResult1 = session
1907+
.diagnosticService()
1908+
.forCollector(collector1)
1909+
.create();
1910+
1911+
collector1 = operationResult1.getEntity();
1912+
```
1913+
New collector gets ID and status "RUNNING" automatically.
1914+
After creation you can get metadata of all collectors:
1915+
```java
1916+
OperationResult<CollectorSettingsList> operationResult = session
1917+
.diagnosticService()
1918+
.allCollectors()
1919+
.collectorsSettings();
1920+
1921+
CollectorSettingsList result = operationResult
1922+
.getEntity();
1923+
```
1924+
or for single log collector:
1925+
```java
1926+
OperationResult<CollectorSettings> operationResult = session
1927+
.diagnosticService()
1928+
.forCollector(collector1.getId())
1929+
.collectorSettings();
1930+
1931+
CollectorSettings result = operationResult
1932+
.getEntity();
1933+
```
1934+
You can change collector's metadata or stop it using `.updateCollectorSettings()` method:
1935+
```java
1936+
PatchDescriptor patchDescriptor = new PatchDescriptor();
1937+
List<PatchItem> items = new ArrayList<PatchItem>();
1938+
items.add(new PatchItem().setField("status").setValue("STOPPED"));
1939+
patchDescriptor.setItems(items);
1940+
1941+
OperationResult<CollectorSettings> operationResult = session
1942+
.diagnosticService()
1943+
.forCollector(collector1)
1944+
.updateCollectorSettings(patchDescriptor);
1945+
1946+
CollectorSettings result = operationResult
1947+
.getEntity();
1948+
```
1949+
Using similar method for batch operation you can update the same field of all collectors:
1950+
```java
1951+
OperationResult<CollectorSettingsList> operationResult = session
1952+
.diagnosticService()
1953+
.allCollectors()
1954+
.updateCollectorsSettings(patchDescriptor);
1955+
CollectorSettingsList result = operationResult
1956+
.getEntity();
1957+
```
1958+
Also you can update whole collector:
1959+
```java
1960+
collector1.setStatus("STOPPED");
1961+
1962+
OperationResult<CollectorSettings> operationResult = session
1963+
.diagnosticService()
1964+
.forCollector(collector1)
1965+
.updateCollectorSettings(collector1);
1966+
1967+
CollectorSettings result = operationResult
1968+
.getEntity();
1969+
1970+
```
1971+
To get collectors' content use code below:
1972+
```java
1973+
OperationResult<InputStream> operationResult = session
1974+
.diagnosticService()
1975+
.allCollectors()
1976+
.collectorsContent();
1977+
1978+
// or for single collector
1979+
1980+
OperationResult<InputStream> operationResult = session
1981+
.diagnosticService()
1982+
.forCollector(collector1)
1983+
.collectorContent();
1984+
1985+
InputStream result = operationResult
1986+
.getEntity();
1987+
````
1988+
Please notice, you should stop them previously using `.updateCollectorSettings()` methods.
1989+
Stopping the collector will turn off logging and begin resource export (if "includeDataSnapshots" is `true` and resourceUri not empty).
1990+
Once stopped, collectors can't be run again.
1991+
When App Server (e.g. Tomcat) is restarted, all collectors must change to stopped state.
1992+
Before getting collectors' content check them status with method `.collectorsSettings()`.
1993+
1994+
Delete log collectors you can as single or as batch operation:
1995+
```java
1996+
OperationResult<CollectorSettings> operationResult = session
1997+
.diagnosticService()
1998+
.forCollector(collector1)
1999+
.delete();
2000+
2001+
OperationResult<CollectorSettingsList> operationResult = session
2002+
.diagnosticService()
2003+
.allCollectors()
2004+
.delete();
2005+
```
2006+
2007+
###Query Executor Service
19012008
In addition to running reports, JasperReports Server exposes queries that you can run through the QueryExecutor service.
19022009
For now the only resource that supports queries is a Domain.
19032010

@@ -1909,8 +2016,7 @@ QueryResult queryResult = session.queryExecutorService()
19092016
.getEntity();
19102017
```
19112018

1912-
Server Information Service
1913-
========================
2019+
###Server Information Service
19142020
Use the following service to verify the server information, the same as the `About JasperReports Server` link in the user interface.
19152021
```java
19162022
OperationResult<ServerInfo> result = client

pom.xml

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<properties>
1515
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
1616
<powermock.version>1.5.5</powermock.version>
17-
</properties>
17+
</properties>
1818

1919
<scm>
2020
<connection>scm:git:http://github.com/Jaspersoft/jrs-rest-java-client</connection>
@@ -171,7 +171,8 @@
171171
<instrumentation>
172172
<excludes>
173173
<exclude>**/com/jaspersoft/jasperserver/jaxrs/client/dto/**</exclude>
174-
<exclude>**/com/jaspersoft/jasperserver/jaxrs/client/apiadapters/resources/support/**</exclude>
174+
<exclude>**/com/jaspersoft/jasperserver/jaxrs/client/apiadapters/resources/support/**
175+
</exclude>
175176
<exclude>**/com/jaspersoft/jasperserver/jaxrs/client/core/exceptions/**</exclude>
176177
<exclude>**/com/jaspersoft/jasperserver/jaxrs/client/core/enums/**</exclude>
177178
</excludes>
@@ -220,6 +221,33 @@
220221
</plugin>
221222
</plugins>
222223
</build>
224+
<reporting>
225+
<plugins>
226+
<plugin>
227+
<groupId>org.codehaus.mojo</groupId>
228+
<artifactId>findbugs-maven-plugin</artifactId>
229+
<version>3.0.0</version>
230+
</plugin>
231+
<plugin>
232+
<groupId>org.apache.maven.plugins</groupId>
233+
<artifactId>maven-pmd-plugin</artifactId>
234+
<version>3.4</version>
235+
</plugin>
236+
<plugin>
237+
<groupId>org.apache.maven.plugins</groupId>
238+
<artifactId>maven-checkstyle-plugin</artifactId>
239+
<version>2.14</version>
240+
<configuration>
241+
<configLocation>config/sun_checks.xml</configLocation>
242+
</configuration>
243+
</plugin>
244+
<plugin>
245+
<groupId>org.codehaus.mojo</groupId>
246+
<artifactId>cobertura-maven-plugin</artifactId>
247+
<version>2.7</version>
248+
</plugin>
249+
</plugins>
250+
</reporting>
223251
<developers>
224252
<developer>
225253
<id>borys.kolesnykov</id>
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package com.jaspersoft.jasperserver.jaxrs.client.apiadapters.diagnostic;
2+
3+
import com.jaspersoft.jasperserver.dto.common.PatchDescriptor;
4+
import com.jaspersoft.jasperserver.dto.logcapture.CollectorSettingsList;
5+
import com.jaspersoft.jasperserver.jaxrs.client.apiadapters.AbstractAdapter;
6+
import com.jaspersoft.jasperserver.jaxrs.client.core.JerseyRequest;
7+
import com.jaspersoft.jasperserver.jaxrs.client.core.SessionStorage;
8+
import com.jaspersoft.jasperserver.jaxrs.client.core.exceptions.handling.DefaultErrorHandler;
9+
import com.jaspersoft.jasperserver.jaxrs.client.core.operationresult.OperationResult;
10+
import java.io.InputStream;
11+
12+
/**
13+
* <p/>
14+
* <p/>
15+
*
16+
* @author tetiana.iefimenko
17+
* @version $Id$
18+
* @see
19+
*/
20+
public class BatchDiagnosticCollectorsAdapter extends AbstractAdapter {
21+
public BatchDiagnosticCollectorsAdapter(SessionStorage sessionStorage) {
22+
super(sessionStorage);
23+
}
24+
25+
public OperationResult<CollectorSettingsList> collectorsSettings() {
26+
return buildRequest().get();
27+
}
28+
29+
30+
public OperationResult<InputStream> collectorsContent() {
31+
JerseyRequest<InputStream> request = JerseyRequest.buildRequest(sessionStorage,
32+
InputStream.class,
33+
new String[]{"/diagnostic/collectors", "content"},
34+
new DefaultErrorHandler());
35+
request.setAccept("application/zip");
36+
return request.get();
37+
}
38+
39+
public OperationResult<CollectorSettingsList> delete() {
40+
41+
return buildRequest().delete();
42+
}
43+
44+
public OperationResult<CollectorSettingsList> updateCollectorsSettings(PatchDescriptor newData) {
45+
return buildRequest()
46+
.addHeader("X-HTTP-Method-Override", "PATCH")
47+
.post(newData);
48+
}
49+
50+
51+
protected JerseyRequest<CollectorSettingsList> buildRequest() {
52+
return JerseyRequest.buildRequest(sessionStorage,
53+
CollectorSettingsList.class,
54+
new String[]{"/diagnostic/collectors"},
55+
new DefaultErrorHandler());
56+
}
57+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package com.jaspersoft.jasperserver.jaxrs.client.apiadapters.diagnostic;
2+
3+
import com.jaspersoft.jasperserver.dto.logcapture.CollectorSettings;
4+
import com.jaspersoft.jasperserver.jaxrs.client.apiadapters.AbstractAdapter;
5+
import com.jaspersoft.jasperserver.jaxrs.client.core.SessionStorage;
6+
import com.jaspersoft.jasperserver.jaxrs.client.core.exceptions.MandatoryParameterNotFoundException;
7+
8+
/**
9+
* <p/>
10+
* <p/>
11+
*
12+
* @author tetiana.iefimenko
13+
* @version $Id$
14+
* @see
15+
*/
16+
public class DiagnosticService extends AbstractAdapter {
17+
18+
public DiagnosticService(SessionStorage sessionStorage) {
19+
super(sessionStorage);
20+
}
21+
22+
public SingleDiagnosticCollectorAdapter forCollector(CollectorSettings collector) {
23+
if (collector == null) {
24+
throw new MandatoryParameterNotFoundException("Collector must not be null");
25+
}
26+
return new SingleDiagnosticCollectorAdapter(sessionStorage, collector);
27+
}
28+
29+
public SingleDiagnosticCollectorAdapter forCollector(String collectorId) {
30+
if (collectorId == null || "".equals(collectorId)) {
31+
throw new MandatoryParameterNotFoundException("Collector's ID is not valid");
32+
}
33+
CollectorSettings collectorSettings = new CollectorSettings();
34+
collectorSettings.setId(collectorId);
35+
return this.forCollector(collectorSettings);
36+
}
37+
38+
39+
public BatchDiagnosticCollectorsAdapter allCollectors() {
40+
return new BatchDiagnosticCollectorsAdapter(sessionStorage);
41+
}
42+
43+
}
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
package com.jaspersoft.jasperserver.jaxrs.client.apiadapters.diagnostic;
2+
3+
import com.jaspersoft.jasperserver.dto.common.PatchDescriptor;
4+
import com.jaspersoft.jasperserver.dto.logcapture.CollectorSettings;
5+
import com.jaspersoft.jasperserver.jaxrs.client.apiadapters.AbstractAdapter;
6+
import com.jaspersoft.jasperserver.jaxrs.client.core.JerseyRequest;
7+
import com.jaspersoft.jasperserver.jaxrs.client.core.SessionStorage;
8+
import com.jaspersoft.jasperserver.jaxrs.client.core.exceptions.handling.DefaultErrorHandler;
9+
import com.jaspersoft.jasperserver.jaxrs.client.core.operationresult.OperationResult;
10+
import java.io.InputStream;
11+
12+
/**
13+
* <p/>
14+
* <p/>
15+
* ``
16+
*
17+
* @author tetiana.iefimenko
18+
* @version $Id$
19+
* @see
20+
*/
21+
public class SingleDiagnosticCollectorAdapter extends AbstractAdapter {
22+
23+
private CollectorSettings collector;
24+
25+
public SingleDiagnosticCollectorAdapter(SessionStorage sessionStorage, CollectorSettings collector) {
26+
super(sessionStorage);
27+
this.collector = collector;
28+
}
29+
30+
public OperationResult<CollectorSettings> create() {
31+
return JerseyRequest.buildRequest(sessionStorage,
32+
CollectorSettings.class,
33+
new String[]{"/diagnostic/collectors"},
34+
new DefaultErrorHandler()).post(collector);
35+
}
36+
37+
public OperationResult<CollectorSettings> delete() {
38+
return buildCollectorRequest()
39+
.delete();
40+
}
41+
42+
43+
public OperationResult<CollectorSettings> collectorSettings() {
44+
return buildCollectorRequest().get();
45+
}
46+
47+
/**
48+
* This method can be used to stop the
49+
* collector by setting "status" to "STOPPED" in the request.
50+
* Stopping the collector will turn off logging and begin resource export
51+
* (if "includeDataSnapshots"=true and resourceUri not empty).
52+
*/
53+
public OperationResult<CollectorSettings> updateCollectorSettings(CollectorSettings newData) {
54+
return buildCollectorRequest().put(newData);
55+
}
56+
57+
public OperationResult<CollectorSettings> updateCollectorSettings(PatchDescriptor newData) {
58+
return buildCollectorRequest()
59+
.addHeader("X-HTTP-Method-Override", "PATCH")
60+
.post(newData);
61+
}
62+
63+
public OperationResult<InputStream> collectorContent() {
64+
JerseyRequest<InputStream> request = JerseyRequest.buildRequest(sessionStorage,
65+
InputStream.class,
66+
new String[]{"/diagnostic/collectors", collector.getId(), "content"},
67+
new DefaultErrorHandler());
68+
request.setAccept("application/zip");
69+
return request.get();
70+
}
71+
72+
protected JerseyRequest<CollectorSettings> buildCollectorRequest() {
73+
return JerseyRequest.buildRequest(sessionStorage,
74+
CollectorSettings.class,
75+
new String[]{"/diagnostic/collectors", collector.getId()},
76+
new DefaultErrorHandler());
77+
}
78+
79+
}

0 commit comments

Comments
 (0)