1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.security.app.dialog.action;
35
36 import info.magnolia.event.EventBus;
37 import info.magnolia.security.app.util.UsersWorkspaceUtil;
38 import info.magnolia.ui.api.event.AdmincentralEventBus;
39 import info.magnolia.ui.framework.action.DuplicateNodeAction;
40 import info.magnolia.ui.framework.action.DuplicateNodeActionDefinition;
41 import info.magnolia.ui.vaadin.integration.jcr.JcrItemAdapter;
42 import info.magnolia.ui.vaadin.integration.jcr.JcrItemId;
43 import info.magnolia.ui.vaadin.integration.jcr.JcrItemUtil;
44
45 import javax.inject.Named;
46 import javax.jcr.Node;
47 import javax.jcr.RepositoryException;
48
49
50
51
52 public class DuplicateRoleAction extends DuplicateNodeAction {
53
54 private JcrItemId duplicateNodeId;
55
56 public DuplicateRoleAction(DuplicateNodeActionDefinition definition, JcrItemAdapter item, @Named(AdmincentralEventBus.NAME) EventBus eventBus) {
57 super(definition, item, eventBus);
58 }
59
60 @Override
61 protected void onExecute(JcrItemAdapter item) throws RepositoryException {
62 final String oldPath = item.getJcrItem().getPath();
63 super.onExecute(item);
64 if (duplicateNodeId != null) {
65 final Node duplicateNode = (Node) JcrItemUtil.getJcrItem(duplicateNodeId);
66 UsersWorkspaceUtil.updateAcls(duplicateNode, oldPath);
67 }
68 }
69
70 @Override
71 protected void setItemIdOfChangedItem(JcrItemId itemIdOfChangedItem) {
72 super.setItemIdOfChangedItem(itemIdOfChangedItem);
73 this.duplicateNodeId = itemIdOfChangedItem;
74 }
75 }