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.module;
35
36 import info.magnolia.module.model.ModuleDefinition;
37
38 import java.util.Date;
39 import java.util.List;
40 import java.util.Map;
41
42 import javax.jcr.Node;
43 import javax.jcr.RepositoryException;
44 import javax.jcr.Session;
45
46 import org.apache.commons.lang3.exception.ExceptionUtils;
47
48
49
50
51
52 public interface InstallContext {
53
54 void info(String message);
55
56 void warn(String message);
57
58 void error(String message, Throwable th);
59
60 void restartNeeded(String message);
61
62 int getExecutedTaskCount();
63
64 int getTotalTaskCount();
65
66 InstallStatus getStatus();
67
68
69
70
71 Map<String, List<Message>> getMessages();
72
73 boolean hasModulesNode();
74
75
76
77
78 Node getModulesNode() throws RepositoryException;
79
80 Node getOrCreateCurrentModuleNode() throws RepositoryException;
81
82 Node getOrCreateCurrentModuleConfigNode() throws RepositoryException;
83
84
85
86
87 ModuleDefinition getCurrentModuleDefinition();
88
89 boolean isModuleRegistered(String moduleName);
90
91 Session getJCRSession(String workspaceName) throws RepositoryException;
92
93 Session getConfigJCRSession() throws RepositoryException;
94
95
96
97
98 final class Message {
99 private final Date timestamp;
100 private final String message;
101 private final String details;
102 private final MessagePriority priority;
103
104 public Message(MessagePriority priority, String message) {
105 this(priority, message, (String) null);
106 }
107
108 public Message(MessagePriority priority, String message, Throwable th) {
109 this(priority, message, th != null ? ExceptionUtils.getStackTrace(th) : null);
110 }
111
112 public Message(MessagePriority priority, String message, String details) {
113 this.timestamp = new Date();
114 this.priority = priority;
115 this.message = message;
116 this.details = details;
117 }
118
119 public Date getTimestamp() {
120 return timestamp;
121 }
122
123 public String getMessage() {
124 return message;
125 }
126
127 public String getDetails() {
128 return details;
129 }
130
131 public MessagePriority getPriority() {
132 return priority;
133 }
134 }
135
136
137
138
139 enum MessagePriority {
140 info, warning, error, restartNeeded
141 }
142 }