Skip to content

Commit 770db91

Browse files
author
Orestis Tsakiridis
committed
Fixes template ownership issue
- Removed 'owner' property form default templates - Set 'owner' to project creator when creating project from template Fixes #289
1 parent 45ff770 commit 770db91

9 files changed

Lines changed: 20 additions & 15 deletions

File tree

designer/src/main/java/org/restcomm/connect/rvd/http/resources/ProjectRestService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ Response createProjectFromTemplate(String templateId, String projectName) throws
270270
// first create the restcomm application to get an appId
271271
ProjectApplicationsApi applicationsApi = new ProjectApplicationsApi(getUserIdentityContext(),applicationContext,restcommBaseUrl);
272272
String applicationId = applicationsApi.createApplication(projectName, kind.toString());
273-
projectDao.createProjectFromTemplate(applicationId, template.getId(), "main", templateDao);
273+
projectDao.createProjectFromTemplate(applicationId, template.getId(), "main", templateDao, getLoggedUsername() );
274274
// upgrade project if needed
275275
UpgradeService upgradeService = new UpgradeService(workspaceStorage);
276276
upgradeService.upgradeProject(applicationId);

designer/src/main/java/org/restcomm/connect/rvd/storage/FsProjectDao.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -117,16 +117,20 @@ public void createProject(String applicationId, ProjectState projectState) throw
117117
* identifier.
118118
*
119119
* Note, source path points at the project directory itself
120-
*
121-
* @param applicationId
120+
* @param applicationId
122121
* @param sourcePath
122+
* @param owner
123123
*/
124124
@Override
125-
public void createProjectFromLocation(String applicationId, String sourcePath) throws StorageException {
125+
public void createProjectFromLocation(String applicationId, String sourcePath, String owner) throws StorageException {
126126
// create a directory in the filesystem to host the new project
127127
FsProjectStorage.createProjectSlot(applicationId, workspaceStorage);
128128
// create state and project structure
129129
ProjectState projectState = workspaceStorage.loadEntity("state", sourcePath, ProjectState.class);
130+
if (owner != null) {
131+
projectState.getHeader().setOwner(owner);
132+
}
133+
130134
FsProjectStorage.storeProject(true, projectState, applicationId, workspaceStorage);
131135
// copy project settings
132136
try {
@@ -151,9 +155,9 @@ public void createProjectFromLocation(String applicationId, String sourcePath) t
151155
}
152156

153157
@Override
154-
public void createProjectFromTemplate(String applicationId, String templateId, String projectAlias, ProjectTemplateDao templateDao) throws StorageException {
158+
public void createProjectFromTemplate(String applicationId, String templateId, String projectAlias, ProjectTemplateDao templateDao, String owner) throws StorageException {
155159
String sourceProjectPath = ((FsProjectTemplateDao)templateDao).resolveTemplateProjectPath(templateId, projectAlias);
156-
createProjectFromLocation(applicationId, sourceProjectPath);
160+
createProjectFromLocation(applicationId, sourceProjectPath, owner );
157161
}
158162

159163
/**

designer/src/main/java/org/restcomm/connect/rvd/storage/ProjectDao.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,9 @@ public interface ProjectDao {
7171

7272
void createProject(String applicationId, ProjectState projectState) throws StorageException;
7373

74-
void createProjectFromLocation(String applicationId, String sourcePath ) throws StorageException;
74+
void createProjectFromLocation(String applicationId, String sourcePath, String owner) throws StorageException;
7575

76-
void createProjectFromTemplate(String applicationId, String templateId, String projectAlias, ProjectTemplateDao templateDao) throws StorageException;
76+
void createProjectFromTemplate(String applicationId, String templateId, String projectAlias, ProjectTemplateDao templateDao, String owner) throws StorageException;
7777

7878
List<WavItem> listMedia(String applicationId) throws StorageException;
7979

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"lastStepId":12,"nodes":[{"name":"start","label":"Welcome","kind":"voice","steps":[{"method":"GET","finishOnKey":"*","steps":[{"phrase":"Welcome! Enter your customer ID and press star","kind":"say","label":"say","title":"say","name":"step6"}],"collectdigits":{"next":"module1","collectVariable":"customerId","scope":"module"},"gatherType":"collectdigits","kind":"gather","label":"gather","title":"collect","name":"step4"},{"phrase":"Goodbye","kind":"say","label":"say","title":"say","name":"step12"}]},{"name":"module1","label":"Check User","kind":"voice","steps":[{"url":"/RvdExternalServicesDemo/userDetails.json","urlParams":[{"name":"customerId","value":"$customerId"}],"assignments":[{"destVariable":"firstname","scope":"application","moduleNameScope":"module2","valueExtractor":{"accessOperations":[{"kind":"object","fixed":true,"terminal":false,"expression":".firstname","action":"propertyNamed","property":"firstname"},{"kind":"value","fixed":true,"terminal":true,"expression":" value"}]}},{"destVariable":"lastname","scope":"application","moduleNameScope":"module2","valueExtractor":{"accessOperations":[{"kind":"object","fixed":true,"terminal":false,"expression":".lastname","action":"propertyNamed","property":"lastname"},{"kind":"value","fixed":true,"terminal":true,"expression":" value"}]}},{"destVariable":"error","scope":"application","moduleNameScope":"module4","valueExtractor":{"accessOperations":[{"kind":"object","fixed":true,"terminal":false,"expression":".error","action":"propertyNamed","property":"error"},{"kind":"value","fixed":true,"terminal":true,"expression":" value"}]}}],"next":"","doRouting":true,"nextType":"responseBased","nextValueExtractor":{"accessOperations":[{"kind":"object","fixed":true,"terminal":false,"expression":".nextModule","action":"propertyNamed","property":"nextModule"},{"kind":"value","fixed":true,"terminal":false,"expression":" value","action":""}]},"kind":"externalService","label":"externalService","title":"external service","name":"step7"}]},{"name":"module2","label":"Members","kind":"voice","steps":[{"phrase":"Welcome back $firstname $lastname","kind":"say","label":"say","title":"say","name":"step8"}]},{"name":"module3","label":"Guests","kind":"voice","steps":[{"phrase":"Welcome guest","kind":"say","label":"say","title":"say","name":"step11"}]},{"name":"module4","label":"Error","kind":"voice","steps":[{"phrase":"Sorry. An internal error has occured","kind":"say","label":"say","title":"say","name":"step10"}]}],"lastNodeId":4,"header":{"projectKind":"voice","startNodeName":"start","owner":"administrator@company.com","version":"1.13"}}
1+
{"lastStepId":12,"nodes":[{"name":"start","label":"Welcome","kind":"voice","steps":[{"method":"GET","finishOnKey":"*","steps":[{"phrase":"Welcome! Enter your customer ID and press star","kind":"say","label":"say","title":"say","name":"step6"}],"collectdigits":{"next":"module1","collectVariable":"customerId","scope":"module"},"gatherType":"collectdigits","kind":"gather","label":"gather","title":"collect","name":"step4"},{"phrase":"Goodbye","kind":"say","label":"say","title":"say","name":"step12"}]},{"name":"module1","label":"Check User","kind":"voice","steps":[{"url":"/RvdExternalServicesDemo/userDetails.json","urlParams":[{"name":"customerId","value":"$customerId"}],"assignments":[{"destVariable":"firstname","scope":"application","moduleNameScope":"module2","valueExtractor":{"accessOperations":[{"kind":"object","fixed":true,"terminal":false,"expression":".firstname","action":"propertyNamed","property":"firstname"},{"kind":"value","fixed":true,"terminal":true,"expression":" value"}]}},{"destVariable":"lastname","scope":"application","moduleNameScope":"module2","valueExtractor":{"accessOperations":[{"kind":"object","fixed":true,"terminal":false,"expression":".lastname","action":"propertyNamed","property":"lastname"},{"kind":"value","fixed":true,"terminal":true,"expression":" value"}]}},{"destVariable":"error","scope":"application","moduleNameScope":"module4","valueExtractor":{"accessOperations":[{"kind":"object","fixed":true,"terminal":false,"expression":".error","action":"propertyNamed","property":"error"},{"kind":"value","fixed":true,"terminal":true,"expression":" value"}]}}],"next":"","doRouting":true,"nextType":"responseBased","nextValueExtractor":{"accessOperations":[{"kind":"object","fixed":true,"terminal":false,"expression":".nextModule","action":"propertyNamed","property":"nextModule"},{"kind":"value","fixed":true,"terminal":false,"expression":" value","action":""}]},"kind":"externalService","label":"externalService","title":"external service","name":"step7"}]},{"name":"module2","label":"Members","kind":"voice","steps":[{"phrase":"Welcome back $firstname $lastname","kind":"say","label":"say","title":"say","name":"step8"}]},{"name":"module3","label":"Guests","kind":"voice","steps":[{"phrase":"Welcome guest","kind":"say","label":"say","title":"say","name":"step11"}]},{"name":"module4","label":"Error","kind":"voice","steps":[{"phrase":"Sorry. An internal error has occured","kind":"say","label":"say","title":"say","name":"step10"}]}],"lastNodeId":4,"header":{"projectKind":"voice","startNodeName":"start","version":"1.13"}}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"lastStepId":3,"nodes":[{"name":"start","label":"Welcome","kind":"ussd","steps":[{"gatherType":"collectdigits","text":"","collectdigits":{"next":"module1","collectVariable":"friendName","scope":"application"},"messages":[{"text":"Welcome $core_From !"},{"text":"Please enter the name of your best friend :)"}],"kind":"ussdCollect","label":"USSD Collect","title":"USSD Collect","name":"step2"}]},{"name":"module1","label":"End","kind":"ussd","steps":[{"text":"So, $friendName is the friend you love the most!","kind":"ussdSay","label":"USSD Message","title":"USSD Message","name":"step3"}]}],"lastNodeId":1,"header":{"projectKind":"ussd","startNodeName":"start","version":"1.14","owner":"administrator@company.com"}}
1+
{"lastStepId":3,"nodes":[{"name":"start","label":"Welcome","kind":"ussd","steps":[{"gatherType":"collectdigits","text":"","collectdigits":{"next":"module1","collectVariable":"friendName","scope":"application"},"messages":[{"text":"Welcome $core_From !"},{"text":"Please enter the name of your best friend :)"}],"kind":"ussdCollect","label":"USSD Collect","title":"USSD Collect","name":"step2"}]},{"name":"module1","label":"End","kind":"ussd","steps":[{"text":"So, $friendName is the friend you love the most!","kind":"ussdSay","label":"USSD Message","title":"USSD Message","name":"step3"}]}],"lastNodeId":1,"header":{"projectKind":"ussd","startNodeName":"start","version":"1.14"}}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"lastStepId":1,"nodes":[{"name":"start","label":"Welcome","kind":"sms","steps":[{"text":"echo: $core_Body","to":"$core_From","from":"$core_To","kind":"sms","label":"sms","title":"sms","name":"step1"}]}],"lastNodeId":0,"header":{"projectKind":"sms","startNodeName":"start","version":"1.14","owner":"administrator@company.com"}}
1+
{"lastStepId":1,"nodes":[{"name":"start","label":"Welcome","kind":"sms","steps":[{"text":"echo: $core_Body","to":"$core_From","from":"$core_To","kind":"sms","label":"sms","title":"sms","name":"step1"}]}],"lastNodeId":0,"header":{"projectKind":"sms","startNodeName":"start","version":"1.14"}}

designer/src/test/java/org/restcomm/connect/rvd/storage/FsProjectDaoTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,9 +113,10 @@ public void checkCreateFromLocation() throws IOException, StorageException {
113113
File project2 = TestUtils.createProjectWithMedia(projectName, "orestis", workspaceDir, marshaler, configuration);
114114

115115
String clonedProject = "APclonedProject";
116-
dao.createProjectFromLocation(clonedProject, project2.getPath());
116+
dao.createProjectFromLocation(clonedProject, project2.getPath(), "orestis2" );
117117
// check everything is in place in the cloned project
118118
ProjectState state = dao.loadProject(clonedProject);
119+
Assert.assertEquals("orestis2", state.getHeader().getOwner());
119120
Assert.assertNotNull(state);
120121
List<WavItem> media = dao.listMedia(clonedProject);
121122
Assert.assertEquals(2, media.size());

designer/src/test/java/org/restcomm/connect/rvd/storage/MemoryProjectDao.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,12 @@ public void createProject(String applicationId, ProjectState projectState) throw
7878
}
7979

8080
@Override
81-
public void createProjectFromLocation(String applicationId, String sourcePath) throws StorageException {
81+
public void createProjectFromLocation(String applicationId, String sourcePath, String owner) throws StorageException {
8282

8383
}
8484

8585
@Override
86-
public void createProjectFromTemplate(String applicationId, String templateId, String projectAlias, ProjectTemplateDao templateDao) throws StorageException {
86+
public void createProjectFromTemplate(String applicationId, String templateId, String projectAlias, ProjectTemplateDao templateDao, String owner) throws StorageException {
8787

8888
}
8989

testsuite/src/test/java/org/restcomm/connect/rvd/TemplatesRestServiceTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public void getTemplateList() {
5555
Assert.assertTrue(root.isJsonObject());
5656
JsonElement results = root.getAsJsonObject().get("results");
5757
Assert.assertTrue(results.isJsonArray());
58-
Assert.assertEquals(1, results.getAsJsonArray().size());
58+
Assert.assertEquals(3, results.getAsJsonArray().size());
5959
}
6060

6161
@Deployment(name = "TemplatesRestServiceTest", managed = true, testable = false)

0 commit comments

Comments
 (0)