package com.buschmais.xo.impl.proxy.collection;
import com.buschmais.xo.impl.SessionContext;
import com.buschmais.xo.spi.metadata.method.AbstractRelationPropertyMethodMetadata;
import java.util.AbstractCollection;
import java.util.Collection;
import java.util.Iterator;
public abstract class AbstractCollectionProxy<Instance, Entity, Relation, PropertyMetadata extends AbstractRelationPropertyMethodMetadata<?>> extends AbstractCollection<Instance> implements Collection<Instance> {
private final SessionContext<?, Entity, ?, ?, ?, Relation, ?, ?, ?> sessionContext;
private final Entity entity;
private final PropertyMetadata metadata;
public AbstractCollectionProxy(SessionContext<?, Entity, ?, ?, ?, Relation, ?, ?, ?> sessionContext, Entity entity, PropertyMetadata metadata) {
this.sessionContext = sessionContext;
this.entity = entity;
this.metadata = metadata;
}
public SessionContext<?, Entity, ?, ?, ?, Relation, ?, ?, ?> getSessionContext() {
return sessionContext;
}
public Entity getEntity() {
return entity;
}
public PropertyMetadata getMetadata() {
return metadata;
}
public int size() {
int size = 0;
for (Iterator<Instance> iterator = iterator(); iterator.hasNext(); ) {
iterator.next();
size++;
}
return size;
}
}