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

net.sf.extcos.internal.ImmediateConnectorImpl Maven / Gradle / Ivy

package net.sf.extcos.internal;

import static net.sf.extcos.util.StringUtils.append;

import java.util.Set;

import net.sf.extcos.classgeneration.ClassGenerationListener;
import net.sf.extcos.filter.ImmediateConnector;
import net.sf.extcos.resource.Resource;
import net.sf.extcos.util.Assert;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class ImmediateConnectorImpl implements ImmediateConnector {
	private static Logger logger = LoggerFactory.getLogger(ImmediateConnectorImpl.class);

	private Set> receivingSet;
	private Set filtered;

	@Override
	public void setReceivingSet(final Set> receivingSet) {
		try {
			Assert.notNull(receivingSet, IllegalArgumentException.class,
					"receivingSet must not be null");

			this.receivingSet = receivingSet;

			if (logger.isTraceEnabled()) {
				logger.trace("successfully set receivingSet");
			}
		} catch(IllegalArgumentException e) {
			logger.debug("couldn't set receivingSet", e);
		}
	}

	@Override
	public void setFilteredRegistry(final Set filtered) {
		try {
			Assert.notNull(filtered, IllegalArgumentException.class,
					"filtered must not be null");

			this.filtered = filtered;

			if (logger.isTraceEnabled()) {
				logger.trace("successfully set filtered registry");
			}
		} catch(IllegalArgumentException e) {
			logger.debug("couldn't set filtered registry", e);
		}
	}

	@Override
	public void connect(final Resource resource) {
		if (receivingSet == null) {
			logger.debug("can't connect: receivingSet is not set");
			return;
		}

		resource.addClassGenerationListener(new ClassGenerationListener() {
			@SuppressWarnings("hiding")
			private final Logger logger = LoggerFactory.getLogger("ClassGenerationListener");

			@Override
			public  void classGenerated(final Class clazz) {
				if (clazz == null) {
					return;
				}

				receivingSet.add(clazz);

				if (logger.isTraceEnabled()) {
					logger.trace(append("successfully added generated ", clazz));
				}
			}
		});

		filtered.add(resource);

		if (logger.isTraceEnabled()) {
			logger.trace(append("successfully connected resource ", resource));
		}
	}

	@Override
	public Set> getReceivingSet() {
		return receivingSet;
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy