blob: 357458b0d76d2e58bae4a05258c1a9cbf379111f (
plain) (
blame)
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
package org.eclipse.jst.jsf.facelet.core.internal.registry;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.jst.jsf.common.internal.resource.ResourceSingletonObjectManager;
import org.eclipse.jst.jsf.core.JSFVersion;
import org.eclipse.jst.jsf.designtime.internal.view.model.ITagRegistry;
import org.eclipse.jst.jsf.designtime.internal.view.model.TagRegistryFactory;
import org.eclipse.jst.jsf.facelet.core.internal.FaceletCoreTraceOptions;
/**
* A per-resource singleton manager for TLDTagRegistry's.
*
* @author cbateman
*
*/
public final class FaceletRegistryManager extends
ResourceSingletonObjectManager<FaceletTagRegistry, IProject>
{
// STATIC
private static FaceletRegistryManager INSTANCE;
/**
* @return the singleton instance
*/
private static FaceletRegistryManager getGlobalManager(final IWorkspace workspace)
{
if (FaceletCoreTraceOptions.TRACE_REGISTRYMANAGER)
{
FaceletCoreTraceOptions
.log("FaceletRegistryManager: Initializing FaceletRegistryManager singleton"); //$NON-NLS-1$
}
synchronized(FaceletRegistryManager.class)
{
if (INSTANCE == null)
{
INSTANCE = new FaceletRegistryManager(workspace);
}
return INSTANCE;
}
}
private FaceletRegistryManager(final IWorkspace workspace)
{
super(workspace);
}
@Override
protected FaceletTagRegistry createNewInstance(final IProject project)
{
if (FaceletCoreTraceOptions.TRACE_REGISTRYMANAGER)
{
FaceletCoreTraceOptions.log("FaceletRegistryManager: creating new instance for " //$NON-NLS-1$
+ project.toString());
}
return new FaceletTagRegistry(project);
}
@Override
protected void runAfterGetInstance(final IProject resource)
{
if (FaceletCoreTraceOptions.TRACE_REGISTRYMANAGER)
{
FaceletCoreTraceOptions.log("FaceletRegistryManager: Acquired instance for " //$NON-NLS-1$
+ resource.toString());
}
}
@Override
protected void runBeforeGetInstance(final IProject resource)
{
if (FaceletCoreTraceOptions.TRACE_REGISTRYMANAGER)
{
FaceletCoreTraceOptions.log("FaceletRegistryManager: Getting registry for " //$NON-NLS-1$
+ resource.toString());
}
}
/**
* Adapter used to allow creation by extension point.
*
* @author cbateman
*
*/
public static class MyRegistryFactory extends TagRegistryFactory
{
@Override
public ITagRegistry createTagRegistry(IProject project) throws TagRegistryFactoryException
{
try
{
return getGlobalManager(project.getWorkspace()).getInstance(project);
}
catch (ManagedObjectException e)
{
throw new TagRegistryFactoryException(e);
}
}
@Override
public boolean isInstance(IProject project)
{
return getGlobalManager(project.getWorkspace()).isInstance(project);
}
public String getDisplayName()
{
return Messages.FaceletRegistryManager_REGISTRY_FACTORY_DISPLAYNAME;
}
@Override
public boolean projectIsValid(IProject project) {
if (project == null)
{
return false;
}
final JSFVersion jsfVersion = JSFVersion.valueOfProject(project);
if (jsfVersion != null && jsfVersion.compareTo(JSFVersion.V2_0) >= 0)
{
return true;
}
return false;
}
}
}
|