Browse Source

Abort widgetset compile for conflicting @Connect mappings (#9343)

Change-Id: I07f760501f956a720bdb840d64c293984b9cf948
tags/7.0.0.beta6
Leif Åstrand 11 years ago
parent
commit
dec9f91a70

+ 22
- 3
client-compiler/src/com/vaadin/server/widgetsetutils/metadata/ConnectorInitVisitor.java View File



package com.vaadin.server.widgetsetutils.metadata; package com.vaadin.server.widgetsetutils.metadata;


import java.util.Map;

import com.google.gwt.core.ext.TreeLogger; import com.google.gwt.core.ext.TreeLogger;
import com.google.gwt.core.ext.TreeLogger.Type; import com.google.gwt.core.ext.TreeLogger.Type;
import com.google.gwt.core.ext.UnableToCompleteException;
import com.google.gwt.core.ext.typeinfo.JClassType; import com.google.gwt.core.ext.typeinfo.JClassType;
import com.google.gwt.dev.util.collect.HashMap;
import com.vaadin.shared.ui.Connect; import com.vaadin.shared.ui.Connect;


public class ConnectorInitVisitor extends TypeVisitor { public class ConnectorInitVisitor extends TypeVisitor {


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

@Override @Override
public void visitConnector(TreeLogger logger, JClassType type, public void visitConnector(TreeLogger logger, JClassType type,
ConnectorBundle bundle) {
ConnectorBundle bundle) throws UnableToCompleteException {
Connect connectAnnotation = type.getAnnotation(Connect.class); Connect connectAnnotation = type.getAnnotation(Connect.class);
if (connectAnnotation != null) { if (connectAnnotation != null) {
logger.log(Type.INFO, type.getName() + " will be in the " logger.log(Type.INFO, type.getName() + " will be in the "
+ bundle.getName().replaceAll("^_*", "") + " bundle"); + bundle.getName().replaceAll("^_*", "") + " bundle");
bundle.setIdentifier(type, connectAnnotation.value()
.getCanonicalName());
String identifier = connectAnnotation.value().getCanonicalName();

JClassType previousMapping = processedConnections.put(identifier,
type);
if (previousMapping != null) {
logger.log(
Type.ERROR,
"Multiple @Connect mappings detected for " + identifier
+ ": " + type.getQualifiedSourceName()
+ " and "
+ previousMapping.getQualifiedSourceName());
throw new UnableToCompleteException();
}

bundle.setIdentifier(type, identifier);
bundle.setNeedsGwtConstructor(type); bundle.setNeedsGwtConstructor(type);
} }
} }

Loading…
Cancel
Save