blob: 41e9046e2281f3b2e6b04911a26b4acfc14b9705 (
plain)
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
/*
@VaadinApache2LicenseForJavaFiles@
*/
package com.vaadin.terminal.gwt.server;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import com.vaadin.Application;
import com.vaadin.event.EventRouter;
import com.vaadin.terminal.DeploymentConfiguration;
import com.vaadin.tools.ReflectTools;
public class AddonContext {
private static final Method APPLICATION_STARTED_METHOD = ReflectTools
.findMethod(ApplicationStartedListener.class, "applicationStarted",
ApplicationStartedEvent.class);
private final DeploymentConfiguration deploymentConfiguration;
private final EventRouter eventRouter = new EventRouter();
private List<BootstrapListener> bootstrapListeners = new ArrayList<BootstrapListener>();
private List<AddonContextListener> initedListeners = new ArrayList<AddonContextListener>();
public AddonContext(DeploymentConfiguration deploymentConfiguration) {
this.deploymentConfiguration = deploymentConfiguration;
deploymentConfiguration.setAddonContext(this);
}
public DeploymentConfiguration getDeploymentConfiguration() {
return deploymentConfiguration;
}
public void init() {
AddonContextEvent event = new AddonContextEvent(this);
Iterator<AddonContextListener> listeners = deploymentConfiguration
.getAddonContextListeners();
while (listeners.hasNext()) {
AddonContextListener listener = listeners.next();
listener.contextCreated(event);
initedListeners.add(listener);
}
}
public void destroy() {
AddonContextEvent event = new AddonContextEvent(this);
for (AddonContextListener listener : initedListeners) {
listener.contextDestoryed(event);
}
}
public void addBootstrapListener(BootstrapListener listener) {
bootstrapListeners.add(listener);
}
public void applicationStarted(Application application) {
eventRouter.fireEvent(new ApplicationStartedEvent(this, application));
for (BootstrapListener l : bootstrapListeners) {
application.addBootstrapListener(l);
}
}
public void addApplicationStartedListener(
ApplicationStartedListener applicationStartListener) {
eventRouter.addListener(ApplicationStartedEvent.class,
applicationStartListener, APPLICATION_STARTED_METHOD);
}
public void removeApplicationStartedListener(
ApplicationStartedListener applicationStartListener) {
eventRouter.removeListener(ApplicationStartedEvent.class,
applicationStartListener, APPLICATION_STARTED_METHOD);
}
}
|