001/* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017package org.apache.wicket.feedback; 018 019import org.apache.wicket.Component; 020import org.apache.wicket.MarkupContainer; 021import org.apache.wicket.util.lang.Args; 022import org.apache.wicket.util.lang.Objects; 023 024/** 025 * Filter for child-of relationship 026 * 027 * @author Jonathan Locke 028 * @author Johan Compagner 029 */ 030public class ContainerFeedbackMessageFilter implements IFeedbackMessageFilter 031{ 032 private static final long serialVersionUID = 1L; 033 034 private final MarkupContainer container; 035 036 /** 037 * Constructor 038 * 039 * @param container 040 * The container that message reporters must be a child of 041 */ 042 public ContainerFeedbackMessageFilter(MarkupContainer container) 043 { 044 this.container = Args.notNull(container, "container"); 045 } 046 047 @Override 048 public boolean accept(FeedbackMessage message) 049 { 050 final Component reporter = message.getReporter(); 051 052 return reporter != null && 053 (container.contains(reporter, true) || Objects.equal(container, reporter)); 054 } 055}