package org.jboss.tools.hibernate.runtime.common; import java.util.HashSet; import java.util.Iterator; import org.jboss.tools.hibernate.runtime.spi.IJoin; import org.jboss.tools.hibernate.runtime.spi.IProperty; public abstract class AbstractJoinFacade extends AbstractFacade implements IJoin { protected HashSet<IProperty> properties = null; public AbstractJoinFacade( IFacadeFactory facadeFactory, Object target) { super(facadeFactory, target); } @Override public Iterator<IProperty> getPropertyIterator() { if (properties == null) { initializeProperties(); } return properties.iterator(); } protected void initializeProperties() { properties = new HashSet<IProperty>(); Iterator<?> iterator = (Iterator<?>)Util.invokeMethod( getTarget(), "getPropertyIterator", new Class[] {}, new Object[] {}); while (iterator.hasNext()) { properties.add(getFacadeFactory().createProperty(iterator.next())); } } }