/* * 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.settings; /** * Settings class for various debug settings * <p> * <i>componentUseCheck </i> (defaults to true in development mode) - causes the framework to do a * check after rendering each page to ensure that each component was used in rendering the markup. * If components are found that are not referenced in the markup, an appropriate error will be * displayed * * @author Jonathan Locke * @author Chris Turner * @author Eelco Hillenius * @author Juergen Donnerstag * @author Johan Compagner * @author Igor Vaynberg (ivaynberg) * @author Martijn Dashorst * @author James Carman */ public class DebugSettings { /** ajax debug mode status */ private boolean ajaxDebugModeEnabled = false; /** True to check that each component on a page is used */ private boolean componentUseCheck = true; /** * whether wicket should track line precise additions of components for error reporting. */ private boolean linePreciseReportingOnAddComponentEnabled = false; /** * whether wicket should track line precise instantiations of components for error reporting. */ private boolean linePreciseReportingOnNewComponentEnabled = false; /** * Whether the container's class name should be printed to response (in a html comment). */ private boolean outputMarkupContainerClassName = false; private String componentPathAttributeName = null; private boolean developmentUtilitiesEnabled = false; /** * @return true if componentUseCheck is enabled */ public boolean getComponentUseCheck() { return componentUseCheck; } /** * Returns status of ajax debug mode. * * @return true if ajax debug mode is enabled, false otherwise */ public boolean isAjaxDebugModeEnabled() { return ajaxDebugModeEnabled; } /** * Returns status of line precise error reporting for added components that are not present in * the markup: it points to the line where the component was added to the hierarchy in your Java * classes. This can cause a significant decrease in performance, do not use in customer facing * applications. * * @return true if the line precise error reporting is enabled */ public boolean isLinePreciseReportingOnAddComponentEnabled() { return linePreciseReportingOnAddComponentEnabled; } /** * Returns status of line precise error reporting for new components that are not present in the * markup: it points to the line where the component was created in your Java classes. This can * cause a significant decrease in performance, do not use in customer facing applications. * * @return true if the line precise error reporting is enabled */ public boolean isLinePreciseReportingOnNewComponentEnabled() { return linePreciseReportingOnNewComponentEnabled; } /** * Returns whether the output of markup container's should be wrapped by comments containing the * container's class name. * * @return true if the markup container's class name should be written to response */ public boolean isOutputMarkupContainerClassName() { return outputMarkupContainerClassName; } /** * Enables or disables ajax debug mode. * * @param enable * @return {@code this} object for chaining */ public DebugSettings setAjaxDebugModeEnabled(boolean enable) { ajaxDebugModeEnabled = enable; return this; } /** * Sets componentUseCheck debug settings * * @param componentUseCheck * @return {@code this} object for chaining */ public DebugSettings setComponentUseCheck(final boolean componentUseCheck) { this.componentUseCheck = componentUseCheck; return this; } /** * Enables line precise error reporting for added components that are not present in the markup: * it points to the line where the component was added to the hierarchy in your Java classes. * This can cause a significant decrease in performance, do not use in customer facing * applications. * * @param enable * @return {@code this} object for chaining */ public DebugSettings setLinePreciseReportingOnAddComponentEnabled(boolean enable) { linePreciseReportingOnAddComponentEnabled = enable; return this; } /** * Enables line precise error reporting for new components that are not present in the markup: * it points to the line where the component was created in your Java classes. This can cause a * significant decrease in performance, do not use in customer facing applications. * * @param enable * @return {@code this} object for chaining */ public DebugSettings setLinePreciseReportingOnNewComponentEnabled(boolean enable) { linePreciseReportingOnNewComponentEnabled = enable; return this; } /** * Enables wrapping output of markup container in html comments that contain markup container's * class name. (Useful for determining which part of page belongs to which markup file). * * @param enable * @return {@code this} object for chaining */ public DebugSettings setOutputMarkupContainerClassName(boolean enable) { outputMarkupContainerClassName = enable; return this; } /** * If the parameter value is non-empty then Wicket will use it as the name of an attribute of the * component tag to print the {@link org.apache.wicket.Component}'s path. * This can be useful for debugging and automating tests. * * For example: if {@code componentPathAttributeName} is 'data-wicket-path' then Wicket will add * an attribute to the {@link org.apache.wicket.markup.ComponentTag} for each component with name * 'data-wicket-path' and as a value the component's * {@link org.apache.wicket.Component#getPageRelativePath() page relative path}. * * @param componentPathAttributeName * The name of the attribute for the {@link org.apache.wicket.markup.ComponentTag}. * If {@code null} or empty then the attribute won't be rendered * @return {@code this} object for chaining */ public DebugSettings setComponentPathAttributeName(String componentPathAttributeName) { this.componentPathAttributeName = componentPathAttributeName; return this; } /** * @see #setComponentPathAttributeName(String) * @return The name of the attribute for the {@link org.apache.wicket.markup.ComponentTag}. * If {@code null} or empty then the attribute won't be rendered */ public String getComponentPathAttributeName() { return componentPathAttributeName; } /** * Enables all of the panels and pages, etc, from wicket-devutils package. * * @param enable * @return {@code this} object for chaining */ public DebugSettings setDevelopmentUtilitiesEnabled(boolean enable) { developmentUtilitiesEnabled = enable; return this; } /** * Are all of the panels and pages, etc, from wicket-devutils package enabled? * * @return true if all of the panels and pages, etc, from wicket-devutils package are enabled */ public boolean isDevelopmentUtilitiesEnabled() { return developmentUtilitiesEnabled; } }