All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.richfaces.cdk.apt.JavaSourceTrackerImpl Maven / Gradle / Ivy

The newest version!
package org.richfaces.cdk.apt;

import static javax.lang.model.element.ElementKind.CLASS;
import static javax.lang.model.element.ElementKind.ENUM;
import static javax.lang.model.element.ElementKind.INTERFACE;

import java.util.List;
import java.util.Map;

import javax.lang.model.element.Element;
import javax.lang.model.element.ElementKind;
import javax.tools.JavaFileObject;
import javax.tools.JavaFileObject.Kind;

import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.inject.Singleton;

@Singleton
public class JavaSourceTrackerImpl implements JavaSourceTracker {

    private List changed = Lists.newLinkedList();
    private Map elements = Maps.newHashMap();

    public void putChanged(JavaFileObject sourceObject) {
        changed.add(sourceObject);
    }

    public boolean isChanged(Element element) {
        Boolean result = elements.get(element);
        if (result == null) {
            result = determineElementChanged(element);
            elements.put(element, result);
        }
        return result;
    }

    private boolean determineElementChanged(Element element) {
        ElementKind kind = element.getKind();
        if (kind == CLASS || kind == ENUM || kind == INTERFACE) {
            for (JavaFileObject sourceObject : changed) {
                if (sourceObject.isNameCompatible(element.getSimpleName().toString(), Kind.SOURCE)) {
                    elements.put(element, true);
                    return true;
                }
            }
            return false;
        }
        return true;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy