瀏覽代碼

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

Change-Id: I07f760501f956a720bdb840d64c293984b9cf948
tags/7.0.0.beta6
Leif Åstrand 11 年之前
父節點
當前提交
dec9f91a70
共有 1 個檔案被更改,包括 22 行新增3 行删除
  1. 22
    3
      client-compiler/src/com/vaadin/server/widgetsetutils/metadata/ConnectorInitVisitor.java

+ 22
- 3
client-compiler/src/com/vaadin/server/widgetsetutils/metadata/ConnectorInitVisitor.java 查看文件

@@ -4,22 +4,41 @@

package com.vaadin.server.widgetsetutils.metadata;

import java.util.Map;

import com.google.gwt.core.ext.TreeLogger;
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.dev.util.collect.HashMap;
import com.vaadin.shared.ui.Connect;

public class ConnectorInitVisitor extends TypeVisitor {

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

@Override
public void visitConnector(TreeLogger logger, JClassType type,
ConnectorBundle bundle) {
ConnectorBundle bundle) throws UnableToCompleteException {
Connect connectAnnotation = type.getAnnotation(Connect.class);
if (connectAnnotation != null) {
logger.log(Type.INFO, type.getName() + " will be in the "
+ 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);
}
}

Loading…
取消
儲存