Browse Source

Enable overriding which connectors are in the widgetset (#10710)

Change-Id: I98d09a1a9c1855e3385b6d48950a45c0388ba0bb
tags/7.0.0.rc1
Leif Åstrand 11 years ago
parent
commit
d9e9a7db65

+ 36
- 7
client-compiler/src/com/vaadin/server/widgetsetutils/ConnectorBundleLoaderFactory.java View File

@@ -757,12 +757,9 @@ public class ConnectorBundleLoaderFactory extends Generator {
connectorsByLoadStyle.put(loadStyle, new ArrayList<JClassType>());
}

JClassType connectorType = typeOracle.getType(ServerConnector.class
.getName());
JClassType[] subtypes = connectorType.getSubtypes();

// Find all types with a valid mapping
Collection<JClassType> selectedTypes = getMappedTypes(logger, subtypes);
Collection<JClassType> selectedTypes = getConnectorsForWidgetset(
logger, typeOracle);

// Group by load style
for (JClassType connectorSubtype : selectedTypes) {
@@ -816,8 +813,40 @@ public class ConnectorBundleLoaderFactory extends Generator {
return bundles;
}

private Collection<JClassType> getMappedTypes(TreeLogger logger,
JClassType[] types) throws UnableToCompleteException {
/**
* Returns the connector types that should be included in the widgetset.
* This method can be overridden to create a widgetset only containing
* selected connectors.
* <p>
* The default implementation finds all type implementing
* {@link ServerConnector} that have a @{@link Connect} annotation. It also
* checks that multiple connectors aren't connected to the same server-side
* class.
*
* @param logger
* the logger to which information can be logged
* @param typeOracle
* the type oracle that can be used for finding types
* @return a collection of all the connector types that should be included
* in the widgetset
* @throws UnableToCompleteException
* if the operation fails
*/
protected Collection<JClassType> getConnectorsForWidgetset(
TreeLogger logger, TypeOracle typeOracle)
throws UnableToCompleteException {
JClassType serverConnectorType;
try {
serverConnectorType = typeOracle.getType(ServerConnector.class
.getName());
} catch (NotFoundException e) {
logger.log(Type.ERROR,
"Can't find " + ServerConnector.class.getName());
throw new UnableToCompleteException();
}

JClassType[] types = serverConnectorType.getSubtypes();

Map<String, JClassType> mappings = new HashMap<String, JClassType>();

// Keep track of what has happened to avoid logging intermediate state

Loading…
Cancel
Save