blob: bee3ce92ee77f421e44edba2cedbaf1143aea111 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.wicket;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.IModel;
/**
* Test page for detach logic.
*
* @author dashorst
*/
public class TestDetachPage extends WebPage
{
/** For serialization. */
private static final long serialVersionUID = 1L;
private int nrPageOnDetachCalls = 0;
private int nrPageDetachModelCalls = 0;
private int nrPageDetachModelsCalls = 0;
private int nrComponentOnDetachCalls = 0;
private int nrComponentDetachModelCalls = 0;
private int nrComponentDetachModelsCalls = 0;
private int nrAjaxBehaviorDetachModelCalls = 0;
private int nrModelDetachCalls = 0;
private final AjaxEventBehavior ajaxEventBehavior;
/**
* Model for testing detach logic.
*
* @author dashorst
*/
private class DetachModel implements IModel<String>
{
/** for serialization. */
private static final long serialVersionUID = 1L;
@Override
public String getObject()
{
return "body";
}
@Override
public void setObject(String object)
{
}
@Override
public void detach()
{
nrModelDetachCalls++;
}
}
/**
* Construct.
*/
public TestDetachPage()
{
final Label label = new Label("comp", new DetachModel())
{
/** For serialization */
private static final long serialVersionUID = 1L;
@Override
protected void onDetach()
{
nrComponentOnDetachCalls++;
super.onDetach();
}
@Override
protected void detachModel()
{
nrComponentDetachModelCalls++;
super.detachModel();
}
@Override
public void detachModels()
{
nrComponentDetachModelsCalls++;
super.detachModels();
}
};
label.setOutputMarkupId(true);
ajaxEventBehavior = new AjaxEventBehavior("click")
{
/** for serialization. */
private static final long serialVersionUID = 1L;
@Override
public void detach(Component component)
{
nrAjaxBehaviorDetachModelCalls++;
super.detach(component);
}
@Override
protected void onEvent(AjaxRequestTarget target)
{
target.add(label);
}
};
label.add(ajaxEventBehavior);
add(label);
}
@Override
protected void onDetach()
{
nrPageOnDetachCalls++;
super.onDetach();
}
@Override
protected void detachModel()
{
nrPageDetachModelCalls++;
super.detachModel();
}
@Override
public void detachModels()
{
nrPageDetachModelsCalls++;
super.detachModels();
}
/**
* @return nrComponentDetachModelCalls
*/
public int getNrComponentDetachModelCalls()
{
return nrComponentDetachModelCalls;
}
/**
* @return nrComponentDetachModelsCalls
*/
public int getNrComponentDetachModelsCalls()
{
return nrComponentDetachModelsCalls;
}
/**
* @return nrComponentOnDetachCalls
*/
public int getNrComponentOnDetachCalls()
{
return nrComponentOnDetachCalls;
}
/**
* @return nrPageDetachModelCalls
*/
public int getNrPageDetachModelCalls()
{
return nrPageDetachModelCalls;
}
/**
* @return nrPageDetachModelsCalls
*/
public int getNrPageDetachModelsCalls()
{
return nrPageDetachModelsCalls;
}
/**
* @return nrPageOnDetachCalls
*/
public int getNrPageOnDetachCalls()
{
return nrPageOnDetachCalls;
}
/**
* @return nrModelDetachCalls
*/
public int getNrModelDetachCalls()
{
return nrModelDetachCalls;
}
/**
* @return nrAjaxBehaviorDetachModelCalls
*/
public int getNrAjaxBehaviorDetachModelCalls()
{
return nrAjaxBehaviorDetachModelCalls;
}
/**
* @return ajaxEventBehavior
*/
public AjaxEventBehavior getAjaxBehavior()
{
return ajaxEventBehavior;
}
}