Skip to content

Commit 6a934d4

Browse files
author
nianiB9
authored
Merge pull request #154 from docusign/feature/added-set-connected-fields-example
Set connected fields example
2 parents 3ae925d + 73b6dc1 commit 6a934d4

File tree

14 files changed

+559
-22
lines changed

14 files changed

+559
-22
lines changed

pom.xml

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
<oauth2.version>2.5.6</oauth2.version>
2727
<commonsio.version>2.16.1</commonsio.version>
2828

29-
<esignature.version>6.0.0</esignature.version>
29+
<esignature.version>6.1.0-RC1</esignature.version>
3030
<rooms.version>1.4.3</rooms.version>
3131
<click.version>1.5.0</click.version>
3232
<monitor.version>1.4.0</monitor.version>
@@ -63,8 +63,9 @@
6363
<groupId>org.projectlombok</groupId>
6464
<artifactId>lombok</artifactId>
6565
<version>1.18.34</version>
66-
<optional>true</optional>
66+
<scope>provided</scope>
6767
</dependency>
68+
6869
<dependency>
6970
<groupId>org.apache.commons</groupId>
7071
<artifactId>commons-lang3</artifactId>
@@ -224,6 +225,22 @@
224225
</configuration>
225226
</plugin>
226227

228+
<plugin>
229+
<groupId>org.apache.maven.plugins</groupId>
230+
<artifactId>maven-compiler-plugin</artifactId>
231+
<configuration>
232+
<source>${java.version}</source>
233+
<target>${java.version}</target>
234+
<annotationProcessorPaths>
235+
<path>
236+
<groupId>org.projectlombok</groupId>
237+
<artifactId>lombok</artifactId>
238+
<version>1.18.34</version>
239+
</path>
240+
</annotationProcessorPaths>
241+
</configuration>
242+
</plugin>
243+
227244
<plugin>
228245
<groupId>org.apache.maven.plugins</groupId>
229246
<artifactId>maven-checkstyle-plugin</artifactId>
@@ -275,6 +292,24 @@
275292
<version>5.7.12</version>
276293
</dependency>
277294

295+
<dependency>
296+
<groupId>org.glassfish.jersey.core</groupId>
297+
<artifactId>jersey-client</artifactId>
298+
<version>${jersey2.version}</version>
299+
</dependency>
300+
301+
<dependency>
302+
<groupId>org.glassfish.jersey.inject</groupId>
303+
<artifactId>jersey-hk2</artifactId>
304+
<version>${jersey2.version}</version>
305+
</dependency>
306+
307+
<dependency>
308+
<groupId>org.glassfish.jersey.core</groupId>
309+
<artifactId>jersey-common</artifactId>
310+
<version>${jersey2.version}</version>
311+
</dependency>
312+
278313
<dependency>
279314
<groupId>ch.qos.logback</groupId>
280315
<artifactId>logback-core</artifactId>

src/main/java/com/docusign/common/ApiIndex.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ public enum ApiIndex {
88
ADMIN("/pages/admin/index", "/management", "/a001", "/a"),
99
CONNECT("/pages/connect/index", "", "/con001", "/con"),
1010
NOTARY("/pages/notary/index", "/restapi", "/n004", "/n"),
11-
WEBFORMS("/pages/webforms/index", "/restapi", "/web001", "/web");
11+
WEBFORMS("/pages/webforms/index", "/restapi", "/web001", "/web"),
12+
CONNECTEDFIELDS("/pages/connectedfields/index", "/restapi", "/cf001", "/cf");
1213

1314
private final String indexPath;
1415

src/main/java/com/docusign/common/WorkArguments.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
import java.util.UUID;
99

10-
1110
@Component
1211
@Scope(value = WebApplicationContext.SCOPE_REQUEST)
1312
@Data
@@ -66,6 +65,8 @@ public class WorkArguments {
6665

6766
private String profileId;
6867

68+
private String appId;
69+
6970
private String groupId;
7071

7172
private String permissionProfileName;
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package com.docusign.controller.connectedFields.examples;
2+
3+
import com.docusign.DSConfiguration;
4+
import com.docusign.esign.api.EnvelopesApi;
5+
import com.docusign.esign.client.ApiClient;
6+
import com.docusign.core.controller.AbstractController;
7+
import com.docusign.core.model.Session;
8+
import com.docusign.core.model.User;
9+
import org.springframework.http.HttpHeaders;
10+
import org.springframework.stereotype.Controller;
11+
12+
/**
13+
* Abstract base class for all Connected fields controllers.
14+
*/
15+
@Controller
16+
public abstract class AbstractConnectedFieldsController extends AbstractController {
17+
18+
private static final String EXAMPLE_PAGES_PATH = "pages/connectedfields/examples/";
19+
20+
protected final User user;
21+
22+
protected final Session session;
23+
24+
public AbstractConnectedFieldsController(DSConfiguration config, String exampleName, User user, Session session) {
25+
super(config, exampleName);
26+
this.user = user;
27+
this.session = session;
28+
}
29+
30+
/**
31+
* Creates new instance of the eSignature API client.
32+
*
33+
* @param accessToken user's access token
34+
* @param basePath basePath to the server
35+
* @return an instance of the {@link ApiClient}
36+
*/
37+
protected static ApiClient createApiClient(
38+
String accessToken,
39+
String basePath) {
40+
ApiClient apiClient = new ApiClient(basePath);
41+
apiClient.addDefaultHeader(
42+
HttpHeaders.AUTHORIZATION,
43+
BEARER_AUTHENTICATION + accessToken);
44+
45+
return apiClient;
46+
}
47+
48+
/**
49+
* Creates a new instance of the EnvelopesApi. This method
50+
* creates an instance of the EnvelopesApi class silently.
51+
*
52+
* @param accessToken user's access token
53+
* @param basePath basePath to the server
54+
* @return an instance of the {@link EnvelopesApi}
55+
*/
56+
protected EnvelopesApi createEnvelopesApi(String basePath, String userAccessToken) {
57+
ApiClient apiClient = createApiClient(userAccessToken, basePath);
58+
return new EnvelopesApi(apiClient);
59+
}
60+
61+
protected String getExamplePagesPath() {
62+
return AbstractConnectedFieldsController.EXAMPLE_PAGES_PATH;
63+
}
64+
}
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
package com.docusign.controller.connectedFields.examples;
2+
3+
import com.docusign.DSConfiguration;
4+
import com.docusign.admin.client.ApiException;
5+
import com.docusign.common.WorkArguments;
6+
import com.docusign.controller.connectedFields.services.SetConnectedFieldsService;
7+
import com.docusign.core.model.DoneExample;
8+
import com.docusign.core.model.Session;
9+
import com.docusign.core.model.User;
10+
import com.docusign.esign.api.EnvelopesApi;
11+
import com.docusign.esign.model.EnvelopeDefinition;
12+
import com.docusign.esign.model.EnvelopeSummary;
13+
import com.fasterxml.jackson.databind.JsonNode;
14+
15+
import org.springframework.stereotype.Controller;
16+
import org.springframework.ui.ModelMap;
17+
import org.springframework.web.bind.annotation.RequestMapping;
18+
import org.slf4j.Logger;
19+
import org.slf4j.LoggerFactory;
20+
21+
import java.util.List;
22+
import java.util.Map;
23+
24+
import javax.servlet.http.HttpServletResponse;
25+
26+
/**
27+
* This example demonstrates how to set connected fields from extension.
28+
*/
29+
@Controller
30+
@RequestMapping("/cf001")
31+
public class CF001SetConnectedFields extends AbstractConnectedFieldsController {
32+
33+
private static final Logger LOGGER = LoggerFactory.getLogger(CF001SetConnectedFields.class);
34+
35+
private static final String MODEL_APPS_LIST = "appsList";
36+
37+
public CF001SetConnectedFields(DSConfiguration config, Session session, User user) {
38+
super(config, "cf001", user, session);
39+
}
40+
41+
@Override
42+
protected void onInitModel(WorkArguments args, ModelMap model) throws Exception {
43+
44+
try {
45+
super.onInitModel(args, model);
46+
47+
String extensionApps = SetConnectedFieldsService.getConnectedFieldsTabGroups(
48+
session.getAccountId(),
49+
user.getAccessToken());
50+
String filteredExtensionApps = SetConnectedFieldsService.filterData(extensionApps);
51+
this.session.setExtensionApps(filteredExtensionApps);
52+
53+
List<Map<String, String>> appsList = SetConnectedFieldsService.convertJsonToList(filteredExtensionApps);
54+
model.addAttribute(MODEL_APPS_LIST, appsList);
55+
} catch (ApiException e) {
56+
LOGGER.info(String.valueOf(e));
57+
}
58+
}
59+
60+
@Override
61+
protected Object doWork(WorkArguments args, ModelMap model, HttpServletResponse response) throws Exception {
62+
63+
JsonNode extensionApp = SetConnectedFieldsService.findAppById(
64+
this.session.getExtensionApps(),
65+
args.getAppId());
66+
67+
EnvelopesApi envelopesApi = createEnvelopesApi(session.getBasePath(), user.getAccessToken());
68+
69+
EnvelopeDefinition envelope = SetConnectedFieldsService.makeEnvelope(
70+
args.getSignerEmail(),
71+
args.getSignerName(),
72+
extensionApp);
73+
EnvelopeSummary envelopeSummary = SetConnectedFieldsService.signingViaEmail(
74+
envelopesApi,
75+
session.getAccountId(),
76+
envelope);
77+
78+
DoneExample.createDefault(getTextForCodeExampleByApiType().ExampleName)
79+
.withMessage(getTextForCodeExampleByApiType().ResultsPageText
80+
.replaceFirst("\\{0}", envelopeSummary.getEnvelopeId()))
81+
.addToModel(model, config);
82+
return DONE_EXAMPLE_PAGE;
83+
}
84+
}

0 commit comments

Comments
 (0)