// TODO: check whether this is correct!
break;
}
try
{
Condition condition = null;
boolean add = false;
Class clazz = Class.forName(m_conditionInfos[i].getType());
synchronized (m_conditions)
{
if (m_conditions[i] == null)
{
m_conditions[i] = createCondition(m_module.getBundle(),
clazz, m_conditionInfos[i]);
}
condition = m_conditions[i];
}
Object current = m_conditionStack.get();
if (current != null)
{
if (current instanceof HashSet)
{
if (((HashSet) current).contains(clazz))
{
return false;
}
}
else
{
if (current == clazz)
{
return false;
}
}
}
if (condition.isPostponed())
{
if (check && !permissions.implies(permission, null))
{
return false;
}
else
{
check = false;
}
posts.add(new Object[] { condition, new Integer(i) });
}
else
{
if (current == null)
{
m_conditionStack.set(clazz);
}
else
{
if (current instanceof HashSet)
{
if (((HashSet) current).contains(clazz))
{
return false;
}
((HashSet) current).add(clazz);
}
else
{
if (current == clazz)
{
return false;
}
HashSet frame = new HashSet();
frame.add(current);
frame.add(clazz);
m_conditionStack.set(frame);
current = frame;
}
}
try
{
boolean mutable = condition.isMutable();
boolean result = condition.isSatisfied();
if (!mutable
&& ((condition != Condition.TRUE) && (condition != Condition.FALSE)))
{
synchronized (m_conditions)