Skip to content

Commit 53fb931

Browse files
author
Balaji Jayaraman
committed
added workspaces examples
1 parent 328b964 commit 53fb931

22 files changed

+617
-5
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
<monitor.version>1.4.0</monitor.version>
3333
<admin.version>2.0.0</admin.version>
3434
<webforms.version>2.1.0</webforms.version>
35-
<iam.version>0.0.1-alpha.1</iam.version>
35+
<iam.version>1.0.0-beta.6</iam.version>
3636
<swagger-core-version>2.2.22</swagger-core-version>
3737
<jackson-version>2.17.2</jackson-version>
3838
<jersey2.version>3.1.10</jersey2.version>

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ public enum ApiIndex {
1111
NOTARY("/pages/notary/index", "/restapi", "/n004", "/n"),
1212
WEBFORMS("/pages/webforms/index", "/restapi", "/web001", "/web"),
1313
MAESTRO("/pages/maestro/index", "/restapi", "/mae001", "/mae"),
14-
CONNECTEDFIELDS("/pages/connectedfields/index", "/restapi", "/cf001", "/cf");
14+
CONNECTEDFIELDS("/pages/connectedfields/index", "/restapi", "/cf001", "/cf"),
15+
WORKSPACES("/pages/workspaces/index", "/restapi", "/work001", "/work");
1516

1617
private final String indexPath;
1718

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,4 +186,10 @@ public class WorkArguments {
186186
private String instanceName;
187187

188188
private String folderName;
189+
190+
private String workspaceName;
191+
192+
private String documentName;
193+
194+
private String documentPath;
189195
}

src/main/java/com/docusign/controller/maestro/services/TriggerWorkflowService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ public static TriggerWorkflowResponse triggerWorkflowInstance(
141141
//ds-snippet-end:Maestro1Step4
142142

143143
//ds-snippet-start:Maestro1Step5
144-
w = new TriggerWorkflow(instanceName, triggerInputs);
144+
var triggerWorkflow = new TriggerWorkflow(instanceName, triggerInputs);
145145

146146
return client.maestro()
147147
.workflows()
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.docusign.controller.workspaces.examples;
2+
3+
import com.docusign.DSConfiguration;
4+
import com.docusign.core.controller.AbstractController;
5+
import com.docusign.core.model.Session;
6+
import com.docusign.core.model.User;
7+
import com.docusign.esign.client.ApiClient;
8+
import com.docusign.esign.client.auth.OAuth;
9+
import org.springframework.http.HttpHeaders;
10+
import org.springframework.stereotype.Controller;
11+
12+
/**
13+
* Abstract base class for all controllers.
14+
*/
15+
@Controller
16+
public abstract class AbstractWorkspacesController extends AbstractController {
17+
18+
private static final String EXAMPLE_PAGES_PATH = "pages/workspaces/examples/";
19+
20+
protected Session session;
21+
22+
protected User user;
23+
24+
public AbstractWorkspacesController(DSConfiguration config, String exampleName, Session session, User user) {
25+
super(config, exampleName);
26+
this.session = session;
27+
this.user = user;
28+
}
29+
30+
protected String getExamplePagesPath() {
31+
return AbstractWorkspacesController.EXAMPLE_PAGES_PATH;
32+
}
33+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package com.docusign.controller.workspaces.examples;
2+
3+
import com.docusign.DSConfiguration;
4+
import com.docusign.common.WorkArguments;
5+
import com.docusign.controller.workspaces.services.CreateWorkspaceService;
6+
import com.docusign.core.model.DoneExample;
7+
import com.docusign.core.model.Session;
8+
import com.docusign.core.model.User;
9+
import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
10+
import com.fasterxml.jackson.databind.ObjectMapper;
11+
import com.fasterxml.jackson.databind.ObjectWriter;
12+
import com.fasterxml.jackson.datatype.joda.JodaModule;
13+
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
14+
15+
import org.springframework.stereotype.Controller;
16+
import org.springframework.ui.ModelMap;
17+
import org.springframework.web.bind.annotation.RequestMapping;
18+
19+
import java.text.SimpleDateFormat;
20+
21+
import javax.servlet.http.HttpServletResponse;
22+
23+
/**
24+
* This example demonstrates how to create a new Workspace.
25+
*/
26+
@Controller
27+
@RequestMapping("/work001")
28+
public class Work001CreateWorkspaceController extends AbstractWorkspacesController {
29+
30+
public Work001CreateWorkspaceController(DSConfiguration config, Session session, User user) {
31+
super(config, "work001", session, user);
32+
}
33+
34+
@Override
35+
protected Object doWork(WorkArguments args, ModelMap model, HttpServletResponse response) throws Exception {
36+
var accountId = session.getAccountId();
37+
38+
//ds-snippet-start:Workspaces1Step2
39+
var accessToken = user.getAccessToken();
40+
//ds-snippet-end:Workspaces1Step2
41+
42+
//ds-snippet-start:Workspaces1Step3
43+
var workspaceName = args.getWorkspaceName();
44+
//ds-snippet-end:Workspaces1Step3
45+
46+
//ds-snippet-start:Workspaces1Step4
47+
var workspace = CreateWorkspaceService.createWorkspace(accessToken, accountId, workspaceName);
48+
//ds-snippet-end:Workspaces1Step4
49+
50+
var workspaceId = workspace.createWorkspaceResponse().get().workspaceId().orElse("");
51+
session.setWorkspaceId(workspaceId);
52+
DoneExample.createDefault(getTextForCodeExampleByApiType().ExampleName)
53+
.withMessage(getTextForCodeExampleByApiType().ResultsPageText.replaceFirst("\\{0}", workspaceId))
54+
.withJsonObject(workspace.createWorkspaceResponse().get())
55+
.addToModel(model, config);
56+
return DONE_EXAMPLE_PAGE;
57+
}
58+
}
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package com.docusign.controller.workspaces.examples;
2+
3+
import com.docusign.DSConfiguration;
4+
import com.docusign.common.WorkArguments;
5+
import com.docusign.controller.workspaces.services.AddDocumentToWorkspaceService;
6+
import com.docusign.core.model.DoneExample;
7+
import com.docusign.core.model.Session;
8+
import com.docusign.core.model.User;
9+
import org.springframework.stereotype.Controller;
10+
import org.springframework.ui.ModelMap;
11+
import org.springframework.web.bind.annotation.RequestMapping;
12+
13+
import java.nio.file.Paths;
14+
15+
import javax.servlet.http.HttpServletResponse;
16+
17+
/**
18+
* This example demonstrates how to add a Document to the Workspace.
19+
*/
20+
@Controller
21+
@RequestMapping("/work002")
22+
public class Work002AddDocumentToWorkspaceController extends AbstractWorkspacesController {
23+
private static final String MODEL_WORKSPACE_OK = "workspaceOk";
24+
25+
private static final String MODEL_DOCUMENT_FOLDER = "documentFolder";
26+
27+
public Work002AddDocumentToWorkspaceController(DSConfiguration config, Session session, User user) {
28+
super(config, "work002", session, user);
29+
}
30+
31+
@Override
32+
protected void onInitModel(WorkArguments args, ModelMap model) throws Exception {
33+
super.onInitModel(args, model);
34+
35+
model.addAttribute(MODEL_WORKSPACE_OK, session.getWorkspaceId() != null && !session.getWorkspaceId().isEmpty());
36+
model.addAttribute(MODEL_DOCUMENT_FOLDER, config.getCodeExamplesText().SupportingTexts.HelpingTexts.SelectPDFFileFromFolder.replaceFirst("\\{0}", Paths.get("src", "main", "resources").toAbsolutePath().toString()));
37+
}
38+
39+
@Override
40+
protected Object doWork(WorkArguments args, ModelMap model, HttpServletResponse response) throws Exception {
41+
var accountId = session.getAccountId();
42+
43+
//ds-snippet-start:Workspaces2Step2
44+
var accessToken = user.getAccessToken();
45+
//ds-snippet-end:Workspaces2Step2
46+
47+
var workspaceId = session.getWorkspaceId();
48+
49+
//ds-snippet-start:Workspaces2Step3
50+
var documentName = args.getDocumentName();
51+
var documentPath = args.getDocumentPath();
52+
//ds-snippet-end:Workspaces2Step3
53+
54+
//ds-snippet-start:Workspaces2Step4
55+
var results = AddDocumentToWorkspaceService.addDocumentToWorkspace(accessToken, accountId, workspaceId, documentPath, documentName);
56+
//ds-snippet-end:Workspaces2Step4
57+
58+
var documentId = results.createWorkspaceDocumentResponse().get().documentId().orElse("");
59+
session.setDocumentId(documentId);
60+
61+
DoneExample.createDefault(getTextForCodeExampleByApiType().ExampleName)
62+
.withMessage(getTextForCodeExampleByApiType().ResultsPageText.replaceFirst("\\{0}", documentId))
63+
.withJsonObject(results.createWorkspaceDocumentResponse().get())
64+
.addToModel(model, config);
65+
66+
return DONE_EXAMPLE_PAGE;
67+
}
68+
}
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package com.docusign.controller.workspaces.examples;
2+
3+
import com.docusign.DSConfiguration;
4+
import com.docusign.common.WorkArguments;
5+
import com.docusign.controller.workspaces.services.SendEnvelopeWithRecipientInfoService;
6+
import com.docusign.core.model.DoneExample;
7+
import com.docusign.core.model.Session;
8+
import com.docusign.core.model.User;
9+
10+
import org.springframework.stereotype.Controller;
11+
import org.springframework.ui.ModelMap;
12+
import org.springframework.web.bind.annotation.RequestMapping;
13+
14+
import javax.servlet.http.HttpServletResponse;
15+
16+
/**
17+
* This example demonstrates how to create and send a Workspace Envelope.
18+
*/
19+
@Controller
20+
@RequestMapping("/work003")
21+
public class Work003SendEnvelopeWithRecipientController extends AbstractWorkspacesController {
22+
private static final String MODEL_WORKSPACE_OK = "workspaceOk";
23+
24+
private static final String MODEL_DOCUMENT_OK = "documentOk";
25+
26+
public Work003SendEnvelopeWithRecipientController(DSConfiguration config, Session session, User user) {
27+
super(config, "work003", session, user);
28+
}
29+
30+
@Override
31+
protected void onInitModel(WorkArguments args, ModelMap model) throws Exception {
32+
super.onInitModel(args, model);
33+
34+
model.addAttribute(MODEL_WORKSPACE_OK, session.getWorkspaceId() != null && !session.getWorkspaceId().isEmpty());
35+
model.addAttribute(MODEL_DOCUMENT_OK, session.getDocumentId() != null && !session.getDocumentId().isEmpty());
36+
}
37+
38+
@Override
39+
protected Object doWork(WorkArguments args, ModelMap model, HttpServletResponse response) throws Exception {
40+
var accountId = session.getAccountId();
41+
42+
//ds-snippet-start:Workspaces3Step2
43+
var accessToken = user.getAccessToken();
44+
//ds-snippet-end:Workspaces3Step2
45+
46+
var basePath = session.getBasePath();
47+
var workspaceId = session.getWorkspaceId();
48+
49+
//ds-snippet-start:Workspaces3Step3
50+
var documentId = session.getDocumentId();
51+
//ds-snippet-end:Workspaces3Step3
52+
53+
var signerEmail = args.getSignerEmail();
54+
var signerName = args.getSignerName();
55+
56+
//ds-snippet-start:Workspaces3Step4
57+
var envelope = SendEnvelopeWithRecipientInfoService.createWorkspaceEnvelope(accessToken, accountId, workspaceId, documentId);
58+
//ds-snippet-end:Workspaces3Step4
59+
60+
//ds-snippet-start:Workspaces3Step5
61+
var envelopeId = envelope.createWorkspaceEnvelopeResponse().get().envelopeId().get();
62+
//ds-snippet-end:Workspaces3Step5
63+
64+
//ds-snippet-start:Workspaces3Step6
65+
var results = SendEnvelopeWithRecipientInfoService.sendEnvelope(accessToken, basePath, accountId, envelopeId, signerEmail, signerName);
66+
//ds-snippet-end:Workspaces3Step6
67+
68+
DoneExample.createDefault(getTextForCodeExampleByApiType().ExampleName)
69+
.withMessage(getTextForCodeExampleByApiType().ResultsPageText.replaceFirst("\\{0}", envelopeId))
70+
.withJsonObject(results)
71+
.addToModel(model, config);
72+
73+
return DONE_EXAMPLE_PAGE;
74+
}
75+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.docusign.controller.workspaces.services;
2+
3+
import org.springframework.core.io.ClassPathResource;
4+
import org.springframework.util.StreamUtils;
5+
6+
import com.docusign.iam.sdk.IamClient;
7+
import com.docusign.iam.sdk.models.components.AddWorkspaceDocumentRequest;
8+
import com.docusign.iam.sdk.models.components.AddWorkspaceDocumentRequestFile;
9+
import com.docusign.iam.sdk.models.operations.AddWorkspaceDocumentResponse;
10+
11+
public final class AddDocumentToWorkspaceService {
12+
private static IamClient createIamClient(String accessToken) {
13+
return IamClient.builder().accessToken(accessToken).build();
14+
}
15+
16+
public static AddWorkspaceDocumentResponse addDocumentToWorkspace(
17+
String accessToken,
18+
String accountId,
19+
String workspaceId,
20+
String documentPath,
21+
String documentName) throws Exception {
22+
23+
var resource = new ClassPathResource(documentPath);
24+
var documentBytes = StreamUtils.copyToByteArray(resource.getInputStream());
25+
26+
var workspaceDocumentFile = new AddWorkspaceDocumentRequestFile(documentName, documentBytes);
27+
var addWorkspaceDocumentRequest = new AddWorkspaceDocumentRequest();
28+
addWorkspaceDocumentRequest.withFile(workspaceDocumentFile);
29+
30+
return createIamClient(accessToken)
31+
.workspaces()
32+
.workspaceDocuments()
33+
.addWorkspaceDocument()
34+
.accountId(accountId)
35+
.workspaceId(workspaceId)
36+
.addWorkspaceDocumentRequest(addWorkspaceDocumentRequest)
37+
.call();
38+
}
39+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.docusign.controller.workspaces.services;
2+
3+
import com.docusign.iam.sdk.IamClient;
4+
import com.docusign.iam.sdk.models.components.CreateWorkspaceBody;
5+
import com.docusign.iam.sdk.models.operations.CreateWorkspaceResponse;
6+
7+
public final class CreateWorkspaceService {
8+
private static IamClient createIamClient(String accessToken) {
9+
return IamClient.builder().accessToken(accessToken).build();
10+
}
11+
12+
public static CreateWorkspaceResponse createWorkspace(
13+
String accessToken,
14+
String accountId,
15+
String name) throws Exception {
16+
var createWorkspaceBody = new CreateWorkspaceBody();
17+
createWorkspaceBody.withName(name);
18+
19+
return createIamClient(accessToken)
20+
.workspaces()
21+
.workspaces()
22+
.createWorkspace()
23+
.accountId(accountId)
24+
.createWorkspaceBody(createWorkspaceBody)
25+
.call();
26+
}
27+
}

0 commit comments

Comments
 (0)