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.audit;
35
36 import info.magnolia.jcr.decoration.ContentDecoratorSessionWrapper;
37
38 import java.util.LinkedList;
39 import java.util.Map;
40 import java.util.Map.Entry;
41
42 import javax.jcr.AccessDeniedException;
43 import javax.jcr.InvalidItemStateException;
44 import javax.jcr.ItemExistsException;
45 import javax.jcr.PathNotFoundException;
46 import javax.jcr.ReferentialIntegrityException;
47 import javax.jcr.RepositoryException;
48 import javax.jcr.Session;
49 import javax.jcr.lock.LockException;
50 import javax.jcr.nodetype.ConstraintViolationException;
51 import javax.jcr.nodetype.NoSuchNodeTypeException;
52 import javax.jcr.version.VersionException;
53
54
55
56
57
58
59 public class MgnlAuditLoggingContentDecoratorSessionWrapper extends ContentDecoratorSessionWrapper<MgnlAuditLoggingContentDecorator> {
60
61 public MgnlAuditLoggingContentDecoratorSessionWrapper(Session session, MgnlAuditLoggingContentDecorator contentDecorator) {
62 super(session, contentDecorator);
63 }
64
65 @Override
66 public void move(String srcAbsPath, String destAbsPath) throws ItemExistsException, PathNotFoundException, VersionException, ConstraintViolationException, LockException, RepositoryException {
67 super.move(srcAbsPath, destAbsPath);
68 getContentDecorator().logActionMove(srcAbsPath, destAbsPath, getWorkspace().getName());
69 }
70
71 @Override
72 public void removeItem(String absPath) throws VersionException, LockException, ConstraintViolationException, AccessDeniedException, RepositoryException {
73 super.removeItem(absPath);
74 getContentDecorator().logActionDelete(absPath, getWorkspace().getName(), null);
75 }
76
77
78
79
80 @Override
81 public void save() throws AccessDeniedException, ItemExistsException, ReferentialIntegrityException, ConstraintViolationException, InvalidItemStateException, VersionException, LockException, NoSuchNodeTypeException, RepositoryException {
82 super.save();
83
84 Map<String, LinkedList<MgnlAuditLogEntry>> logMap = getContentDecorator().getLogEntries();
85 for (Entry<String, LinkedList<MgnlAuditLogEntry>> pathLogEntries : logMap.entrySet()) {
86 for (MgnlAuditLogEntry entry : pathLogEntries.getValue()) {
87 AuditLoggingUtil.log(entry.getAction(), entry.getTimeStamp(), entry.getWorkspace(), entry.getNodeType(), entry.getPath(), entry.getPathTo());
88 }
89 }
90 logMap.clear();
91 }
92
93 }