"' contains "+l.size()+" objects.");
OctetString ctx = new OctetString();
SortedMap roots = new TreeMap();
OID last = null;
for (Iterator it = l.iterator(); it.hasNext(); ) {
VariableBinding vb = (VariableBinding) it.next();
if (last != null) {
int min = Math.min(vb.getOid().size(), last.size());
while (min > 0) {
if (vb.getOid().leftMostCompare(min, last) == 0) {
OID root = new OID(last.getValue(), 0, min);
roots.put(root, root);
break;
}
min--;
}
}
last = vb.getOid();
}
logger.info("Identified the following sub-tree candidates: "+roots);
SortedMap rootsCopy = new TreeMap();
for (Iterator it = roots.keySet().iterator(); it.hasNext();) {
OID k = (OID) it.next();
if (k.size() > 1) {
OID sk = new OID(k.getValue(), 0, k.size()-1);
while ((sk.size() > 0) && (roots.get(sk) == null)) {
sk.trim(1);
}
if (sk.size() == 0) {
rootsCopy.put(k,k);
}
}
}
logger.info("Identified the following sub-trees "+rootsCopy);
for (Iterator it = rootsCopy.keySet().iterator(); it.hasNext();) {
OID root = (OID) it.next();
ArrayList subtree = new ArrayList();
for (Iterator vit = l.iterator(); vit.hasNext(); ) {
VariableBinding vb = (VariableBinding) vit.next();
if (vb.getOid().size() >= root.size()) {
if (vb.getOid().leftMostCompare(root.size(), root) == 0) {
subtree.add(vb);
}
}
}
StaticMOGroup group =