/** * Returns true if there is a path from the group to the resource that does not involve crossing * a opaque group */ private boolean allowsAccessViaNonOpaqueGroup(LayerGroupInfo gi, ResourceInfo resource) { for (PublishedInfo pi : gi.getLayers()) { if (pi instanceof LayerInfo) { if (resource.equals(((LayerInfo) pi).getResource())) { return true; } } else { LayerGroupInfo lg = (LayerGroupInfo) pi; if (lg.getMode() != LayerGroupInfo.Mode.OPAQUE_CONTAINER && allowsAccessViaNonOpaqueGroup(lg, resource)) { return true; } } } return false; }
&& canAccess(user, gi, directAccess) && (!directAccess || allowsAccessViaNonOpaqueGroup( gi, resource)); }); && canAccess(user, gi, directAccess) && (!directAccess || allowsAccessViaNonOpaqueGroup(gi, resource)); });