// check permissions and constraints, filter fragments as required
List filteredFragments = null;
Iterator checkAccessIter = fragments.iterator();
while (checkAccessIter.hasNext())
{
BaseFragmentElement fragment = (BaseFragmentElement) checkAccessIter.next();
try
{
// check access
fragment.checkAccess(JetspeedActions.VIEW);
// add to filteredFragments fragments if copying
if (filteredFragments != null)
{
// permitted, add to filteredFragments fragments
filteredFragments.add(fragment);
}
}
catch (SecurityException se)
{
// create filteredFragments fragments if not already copying
if (filteredFragments == null)
{
// not permitted, copy previously permitted fragments
// to new filteredFragments node set with same comparator
filteredFragments = new ArrayList(fragments.size());
Iterator copyIter = fragments.iterator();
while (copyIter.hasNext())
{
BaseFragmentElement copyFragment = (BaseFragmentElement)copyIter.next();
if (copyFragment != fragment)
{
filteredFragments.add(copyFragment);
}
else