package org.osgi.cdi.impl.extension.services;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.osgi.cdi.api.extension.Registration;
import org.osgi.cdi.api.extension.Registrations;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;
/**
*
* @author Mathieu ANCELIN - SERLI (mathieu.ancelin@serli.com)
*/
public class RegistrationsImpl<T> implements Registrations<T> {
private Class<T> type;
private List<Registration<T>> registrations = new ArrayList<Registration<T>>();
private BundleContext registry;
private RegistrationsHolder holder;
private Bundle bundle;
@Override
public Iterator<Registration<T>> iterator() {
populate();
return registrations.iterator();
}
@Override
public int size() {
List<ServiceRegistration> regs = holder.getRegistrations();
return regs.size();
}
private void populate() {
registrations.clear();
try {
List<ServiceRegistration> regs = holder.getRegistrations();
for (ServiceRegistration reg : regs) {
registrations.add(new RegistrationImpl<T>(type, reg, registry, bundle, holder));
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void setBundle(Bundle bundle) {
this.bundle = bundle;
}
public void setType(Class<T> type) {
this.type = type;
}
public void setHolder(RegistrationsHolder holder) {
this.holder = holder;
}
public void setRegistry(BundleContext registry) {
this.registry = registry;
}
}