Author: seade Date: Thu Jun 22 22:13:42 2006 New Revision: 416569 URL: http://svn.apache.org/viewvc?rev=416569&view=rev Log: TRB-14: Intake fails to load correct Default Validators if rules are empty Thanks to Juergen Hoffmann for the patch (inclusion of test case was very helpful).
Added: jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/conf/test/TurbineResourcesWithIntake.properties jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/conf/test/intake.xml jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/test/org/apache/turbine/services/intake/IntakeServiceTest.java Modified: jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/java/org/apache/turbine/services/intake/model/Field.java jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/xdocs/changes.xml Added: jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/conf/test/TurbineResourcesWithIntake.properties URL: http://svn.apache.org/viewvc/jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/conf/test/TurbineResourcesWithIntake.properties?rev=416569&view=auto ============================================================================== --- jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/conf/test/TurbineResourcesWithIntake.properties (added) +++ jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/conf/test/TurbineResourcesWithIntake.properties Thu Jun 22 22:13:42 2006 @@ -0,0 +1,710 @@ +# ------------------------------------------------------------------- +# $Id: TurbineResources.properties 278819 2005-09-05 21:24:56 +0200 (Mo, 05 Sep 2005) henning $ +# +# This is the configuration file for Turbine. +# +# Note that strings containing "," (comma) characters must backslash +# escape the comma (i.e. '\,') +# +# ------------------------------------------------------------------- + +# Copyright 2001-2005 The Apache Software Foundation. +# +# Licensed 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. + +# ------------------------------------------------------------------- +# +# L O G 4 J - L O G G I N G +# +# ------------------------------------------------------------------- + +log4j.file = conf/test/Log4j.properties + +# ------------------------------------------------------------------- +# +# M A I L S E R V E R +# +# ------------------------------------------------------------------- +# Your mail server for outgoing email. +# +# Default: null +# ------------------------------------------------------------------- + +mail.server= + +# ------------------------------------------------------------------- +# SMTP-From header for your outgoing messages +# +# All failed delivery messages will be returned to this address. +# If unset, these messages will be sent to the address in the +# From header (standard behaviour) +# +# Default: null +# ------------------------------------------------------------------- + +mail.smtp.from= + +# ------------------------------------------------------------------- +# +# M O D U L E C A C H I N G +# +# ------------------------------------------------------------------- +# This determines whether or not to cache the modules in memory. For +# development, turn this off. For production, turn this on. +# +# Default: false +# ------------------------------------------------------------------- + +module.cache=false + +# If module.cache=true, then how large should we make the hashtables +# by default. + +action.cache.size=20 +layout.cache.size=10 +navigation.cache.size=10 +page.cache.size=5 +screen.cache.size=50 +scheduledjob.cache.size=10 + +# ------------------------------------------------------------------- +# +# M O D U L E P A C K A G E S +# +# ------------------------------------------------------------------- +# This is the "classpath" for Turbine. In order to locate your own +# modules, you should add them to this path. For example, if you have +# com.company.actions, com.company.screens, com.company.navigations, +# then this setting would be "com.company,org.apache.turbine.modules". +# This path is searched in order. For example, Turbine comes with a +# screen module named "Login". If you wanted to have your own screen +# module named "Login", then you would specify the path to your +# modules before the others. +# +# Note: org.apache.turbine.modules will always be added to the search +# path. If it is not explictly added here, it will be added to the +# end. +# +# Default: org.apache.turbine.modules +# ------------------------------------------------------------------- + +module.packages=org.apache.turbine.modules + +# ------------------------------------------------------------------- +# +# F R A M E W O R K S E T T I N G S +# +# ------------------------------------------------------------------- +# These are settings that control the behaviour of the framework, +# such as determining whether a template system is in use, what +# the default templates and screens are and session handling settings. +# ------------------------------------------------------------------- + +# Used to set the template homepage if you are using a template +# layout. This is the template that will be displayed to the user +# when no specific template is requested. This is normally executed +# as the first template the user sees when they access the system. +# +# Default: Index.vm + +template.homepage=Index.vm + +# This is the default screen to show to people when they first access +# the system. This is only used if there is no value for +# template.homepage. This is for use when you are not using a +# templating system such as Velocity or JSP. +# +# Default: Login + +screen.homepage= + +# This is the template that is shown on an incorrect login attempt. +# Setting this property will override any value of screen.login specfied +# below. +# +# Default: Login.vm + +template.login=Login.vm + +# This is the page that is shown on an incorrect login attempt. It is +# referenced in the LoginUser action. This is only used if there is no value +# for template.login. This is for use when you are not using a +# templating system such as Velocity or JSP. +# +# Default: Login + +screen.login= + +# This is the template that is used by the respective Template based +# ErrorScreen for displaying the error. If you are not using a Template based +# ErrorScreen, then this is ignored. +# +# Default: Error.vm + +template.error=Error.vm + +# This is the default error screen. +# +# Default: VelocityErrorScreen + +screen.error=VelocityErrorScreen + +# This is the screen that is displayed when the user's web page is in +# an invalid state. +# +# Default: error.InvalidState + +screen.invalidstate=error.InvalidState + +# Set the default Doctype. The default Doctype can be set by using +# the single strings: Html40Strict, Html40Transitional, or +# Html40Frameset. Additionally the default can be supplied as two +# strings separated by a comma giving the DTD and URI. +# +# Default: ignored if not set to some value. + +default.doctype=Html40Transitional + +# This is the default action to log a user in. If you write your own +# implementation of the login action, make sure that you change this +# to reflect the new name. + +action.login=LoginUser + +# This is the default action to log a user out. If you write your own +# implementation of the logout action, make sure that you change this +# to reflect the new name. + +action.logout=LogoutUser + +# This is the default action to validate whether or not a session is +# valid. For example, if you want to make sure if a user has already +# logged in or not. +# +# Default: SessionValidator + +# action.sessionvalidator=sessionvalidator.TemplateSessionValidator +# +# Use this setting if you want your application to display the Login Screen +# as first action and does not allow any operation before the user has +# logged in +# +action.sessionvalidator=sessionvalidator.TemplateSecureSessionValidator + +# This is the timeout in seconds for sessions. If left commented out, the +# servlet container's default timeout will be left as is. + +# session.timeout=1800 + +# This is the default action that builds up the AccessControlList for +# the individual users session. + +action.accesscontroller=AccessController + +# +# Set this value to true if you want to be able to submit multiple +# events to an Action by doing eventSubmit_do<action> and consider +# only events that have a non-empty, non-zero value. This is useful +# if you submit your form with JavaScript +# +action.eventsubmit.needsvalue = true + +# ------------------------------------------------------------------- +# +# J N D I C O N T E X T S +# +# ------------------------------------------------------------------- + +# This indicates whether Turbine should try to create JNDI contexts. +# +# Default: false +# +# contexts=true + +# These are the JNDI context properties. Each context's properties +# are defined by the properties beginning with context.name. +# +# Default: none +# +# Example: The following will create a JNDI context named "name" in +# the data.contexts Hashtable. It will point at the RMI registry on +# localhost running on port 1099, and will use +# com.sun.jndi.rmi.registry.RegistryContextFactory as the initial +# context factory: +# +# context.name.java.naming.provider.url=rmi://localhost:1099 +# context.name.java.naming.factory.initial=com.sun.jndi.rmi.registry.RegistryContextFactory + +# ------------------------------------------------------------------- +# +# S E C U R E S O C K E T S L A Y E R +# +# ------------------------------------------------------------------- +# Whether the web server is able to use SSL. Links in Turbine can +# check this property to determine if SSL can be used. +# +# Default: true +# ------------------------------------------------------------------- + +use.ssl=false + +# ------------------------------------------------------------------- +# +# S E R V I C E S +# +# ------------------------------------------------------------------- +# Classes for Turbine Services should be defined here. +# Format: services.[name].classname=[implementing class] +# +# To specify properties of a service use the following syntax: +# service.[name].[property]=[value] +# +# The order that these services is listed is important! The +# order that is stated here is the order in which the services +# will be initialized. Keep this is mind if you have services +# that depend on other services during initialization. +# ------------------------------------------------------------------- +services.AvalonComponentService.classname=org.apache.turbine.services.avaloncomponent.TurbineAvalonComponentService +services.CryptoService.classname=org.apache.turbine.services.crypto.TurbineCryptoService +# services.ComponentService.classname=org.apache.turbine.services.component.TurbineComponentService +services.FactoryService.classname=org.apache.turbine.services.factory.TurbineFactoryService +services.PoolService.classname=org.apache.turbine.services.pool.TurbinePoolService +services.RunDataService.classname=org.apache.turbine.services.rundata.TurbineRunDataService +services.ServletService.classname=org.apache.turbine.services.servlet.TurbineServletService +services.AssemblerBrokerService.classname=org.apache.turbine.services.assemblerbroker.TurbineAssemblerBrokerService +services.GlobalCacheService.classname=org.apache.turbine.services.cache.TurbineGlobalCacheService +services.PullService.classname=org.apache.turbine.services.pull.TurbinePullService +services.IntakeService.classname=org.apache.turbine.services.intake.TurbineIntakeService +services.TemplateService.classname=org.apache.turbine.services.template.TurbineTemplateService +services.VelocityService.classname=org.apache.turbine.services.velocity.TurbineVelocityService +services.UploadService.classname=org.apache.turbine.services.upload.TurbineUploadService +services.SecurityService.classname=org.apache.turbine.services.security.torque.TorqueSecurityService + + +# ------------------------------------------------------------------- +# +# R U N D A T A S E R V I C E +# +# ------------------------------------------------------------------- +# Default implementations of base interfaces for request processing. +# Additional configurations can be defined by using other keys +# in the place of the <default> key. +# ------------------------------------------------------------------- + +services.RunDataService.default.run.data=org.apache.turbine.services.rundata.DefaultTurbineRunData +services.RunDataService.default.parameter.parser=org.apache.turbine.util.parser.DefaultParameterParser +services.RunDataService.default.cookie.parser=org.apache.turbine.util.parser.DefaultCookieParser + +# ------------------------------------------------------------------- +# +# C A C H E S E R V I C E +# +# ------------------------------------------------------------------- + +# Interval at which the cache will be checked. The default is +# 5000ms or 5 seconds. + +services.GlobalCacheService.cache.check.frequency = 5000 + +# ------------------------------------------------------------------- +# +# A S S E M B L E R B R O K E R S E R V I C E +# +# ------------------------------------------------------------------- +# A list of AssemblerFactory classes that will be registered +# with TurbineAssemblerBrokerService +# ------------------------------------------------------------------- + +services.AssemblerBrokerService.screen=org.apache.turbine.services.assemblerbroker.util.java.JavaScreenFactory +services.AssemblerBrokerService.action=org.apache.turbine.services.assemblerbroker.util.java.JavaActionFactory +services.AssemblerBrokerService.layout=org.apache.turbine.services.assemblerbroker.util.java.JavaLayoutFactory +services.AssemblerBrokerService.page=org.apache.turbine.services.assemblerbroker.util.java.JavaPageFactory +services.AssemblerBrokerService.navigation=org.apache.turbine.services.assemblerbroker.util.java.JavaNavigationFactory +services.AssemblerBrokerService.scheduledjob=org.apache.turbine.services.assemblerbroker.util.java.JavaScheduledJobFactory + +# ------------------------------------------------------------------- +# +# T E M P L A T E S E R V I C E +# +# ------------------------------------------------------------------- + +# Roughly, the number of templates in each category. +# +# Defaults: layout=2, navigation=10, screen=50 + +services.TemplateService.layout.cache.size=2 +services.TemplateService.navigation.cache.size=10 +services.TemplateService.screen.cache.size=50 + +# ------------------------------------------------------------------- +# +# P U L L S E R V I C E +# +# ------------------------------------------------------------------- +# These are the properties for the Pull Service, the service +# that works in conjuction with the Turbine Pull Model API. +# ------------------------------------------------------------------- + +services.PullService.earlyInit= true + +# This determines whether the non-request tools are refreshed +# on each request (request tools aren't ever, because they're +# instantiated for the request only anyway). +services.PullService.tools.per.request.refresh=true +services.PullService.tools.resources.dir = /turbine-resources/ + +# These are tools that are placed in the context by the service +# These tools will be made available to all your +# templates. You list the tools in the following way: +# +# tool.<scope>.<id> = <classname> +# +# <scope> is the tool scope: global, request, session +# or persistent (see below for more details) +# <id> is the name of the tool in the context +# +# You can configure the tools in this way: +# tool.<id>.<parameter> = <value> +# +# So if you find "global", "request", "session" or "persistent" as second +# part, it is a configuration to put a tool into the toolbox, else it is a +# tool specific configuration. +# +# For example: +# +# tool.global.ui = org.apache.turbine.util.pull.UIManager +# tool.global.mm = org.apache.turbine.util.pull.MessageManager +# tool.request.link = org.apache.turbine.util.template.TemplateLink +# tool.request.page = org.apache.turbine.util.template.TemplatePageAttributes +# +# Then: +# +# tool.ui.skin = default +# +# configures the value of "skin" for the "ui" tool. +# +# Tools are accessible in all templates by the <id> given +# to the tool. So for the above listings the UIManager would +# be available as $ui, the MessageManager as $mm, the TemplateLink +# as $link and the TemplatePageAttributes as $page. +# +# You should avoid using tool names called "global", "request", +# "session" or "persistent" because of clashes with the possible Scopes. +# +# Scopes: +# +# global: tool is instantiated once and that instance is available +# to all templates for all requests. Tool must be threadsafe. +# +# request: tool is instantiated once for each request (although the +# PoolService is used to recycle instances). Tool need not +# be threadsafe. +# +# session: tool is instantiated once for each user session, and is +# stored in the user's temporary hashtable. Tool should be +# threadsafe. +# +# persistent: tool is instantitated once for each use session, and +# is stored in the user's permanent hashtable. This means +# for a logged in user the tool will be persisted in the +# user's objectdata. Tool should be threadsafe and +# Serializable. +# +# Defaults: none + +tool.request.link=org.apache.turbine.services.pull.tools.TemplateLink +tool.request.page=org.apache.turbine.util.template.HtmlPageAttributes +tool.request.content=org.apache.turbine.services.pull.tools.ContentTool + +tool.global.ui = org.apache.turbine.services.pull.util.UIManager + +tool.ui.dir.skin = /turbine-skins/ +tool.ui.dir.image = /turbine-images/ +tool.ui.skin = myskin +tool.ui.css = skins.css + +# This pull tool is to allow for easy formatting of Date object into Strings +tool.request.dateFormatter=org.apache.turbine.services.pull.util.DateFormatter + +# Use this tool if you need a place to store data that will persist between +# requests. Any data stored using this tool will be stored in the session. +tool.session.sessionData=org.apache.turbine.services.pull.util.SessionData + +# These are intake tools. +# tool.request.om=org.apache.turbine.om.OMTool +tool.request.intake=org.apache.turbine.services.intake.IntakeTool + +# This is a tool that allows access to the scheduler service. +# tool.request.scheduler=org.apache.turbine.services.SchedulerTool + +# +# The content tool can put its URIs through the Servlet container, +# which might attach things like the jsessionid even to URIs that +# are not servered by the container. +# +# The default behaviour was not to put these through the container. +# +# Set this to true if you need things like jsessionid attached to all +# links generated from the $content pull tool. +# +tool.content.want.encoding = false + +# +# Both the link and the content tool normally return absolute URIs +# You can change this by exchanging the tool classes but this is not +# really recommended. Setting these properties to true allow you +# to change the behaviour if you want only relative URIs (e.g. if you +# run behind a reverse proxy or a load balancer). +# +tool.content.want.relative = true +tool.link.want.relative = true + +# ------------------------------------------------------------------- +# +# V E L O C I T Y S E R V I C E +# +# ------------------------------------------------------------------- + +services.VelocityService.earlyInit= true + +# The location of Velocity configuration file, relative to webapp root +# These properties will override the default properties set by Velocity. +# You should specify the path to the templates directories as well as +# the path to the log file and they should also be relative to webapp root + +services.VelocityService.template.extension=vm +services.VelocityService.default.page = VelocityPage +services.VelocityService.default.screen = VelocityScreen +services.VelocityService.default.layout = VelocityOnlyLayout +services.VelocityService.default.navigation = VelocityNavigation +services.VelocityService.default.error.screen = VelocityErrorScreen +services.VelocityService.default.layout.template = Default.vm + +services.VelocityService.runtime.log=/logs/velocity.log +# services.VelocityService.input.encoding=UTF-8 + +# +# Class Path Loader, Turbine jar +services.VelocityService.velocimacro.library = macros/TurbineMacros.vm + +# Set the following line to true to cause velocity to automatically reload +# library macro files if they change. This is useful for debugging. +services.VelocityService.velocimacro.library.autoreload = true + +services.VelocityService.resource.loader = file +services.VelocityService.file.resource.loader.description = Velocity File Resource Loader +services.VelocityService.file.resource.loader.class = org.apache.velocity.runtime.resource.loader.FileResourceLoader +services.VelocityService.file.resource.loader.path = /templates +services.VelocityService.file.resource.loader.cache = false +services.VelocityService.file.resource.loader.modificationCheckInterval = 2 + +services.VelocityService.resource.loader = classpath +services.VelocityService.classpath.resource.loader.description = Velocity Classpath Resource Loader +services.VelocityService.classpath.resource.loader.class = org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader + +# ------------------------------------------------------------------- +# +# U P L O A D S E R V I C E +# +# ------------------------------------------------------------------- + +# Whether the files should be automatically picked up by +# ParameterParser. + +services.UploadService.earlyinit=true + +services.UploadService.automatic=true + +# +# The directory where files will be temporarily stored. +# +services.UploadService.repository=. + +# +# The maximum size of a request that will be processed. +# +services.UploadService.size.max=1048576 + +# +# The maximum size of a request that will have it's elements cached in +# memory by TurbineUploadService class. +# +services.UploadService.size.threshold=10240 + +# ------------------------------------------------------------------- +# +# C R Y P T O S E R V I C E +# +# ------------------------------------------------------------------- + +# +# Standard Unix crypt(3) password encryption. +# +services.CryptoService.algorithm.unix = org.apache.turbine.services.crypto.provider.UnixCrypt +# +# This providers allows access to the Java Message Digest encryption algorithms +# +services.CryptoService.algorithm.java = org.apache.turbine.services.crypto.provider.JavaCrypt +# +# This is a simple, cleartext "encryption" provider. +# +services.CryptoService.algorithm.cleartext = org.apache.turbine.services.crypto.provider.ClearCrypt +# +# Use this provider if you upgrade from Turbine 2.1 to current. It provides bug-to-bug +# compatibility for passwords created with the old Security Service. See the javadocs for +# OldJavaCrypt +# +services.CryptoService.algorithm.oldjava = org.apache.turbine.services.crypto.provider.OldJavaCrypt +# +# This is the default crypto provider. It implements the normal Java MessageDigest ciphers +# You need not to have this, it is the default if no algorithms are given. The default +# provider gives you all the Java MessageDigest Ciphers +# +services.CryptoService.algorithm.default = org.apache.turbine.services.crypto.provider.JavaCrypt + +# ------------------------------------------------------------------- +# +# S E C U R I T Y S E R V I C E +# +# ------------------------------------------------------------------- + +# This is the class that implements the ACL interface. +services.SecurityService.acl.class = org.apache.turbine.util.security.TurbineAccessControlList + +# +# This is used by the SecurityService to make the password checking +# secure. When enabled, passwords are transformed by a one-way +# function into a sequence of bytes that is base64 encoded. +# It is impossible to guess the plain-text form of the password +# from the representation. When user logs in, the entered password +# is transformed the same way and then compared with stored value. +# +# Default: false +# +services.SecurityService.secure.passwords=false + +# +# This property lets you choose what digest algorithm will be used +# for encrypting passwords. Check documentation of your JRE for +# available algorithms. +# +# Default: SHA +# +services.SecurityService.secure.passwords.algorithm=SHA + +services.SecurityService.user.manager = org.apache.turbine.services.security.torque.TorqueUserManager + +services.SecurityService.torque.user.class = org.apache.turbine.services.security.torque.om.TurbineUser +services.SecurityService.torque.group.class = org.apache.turbine.services.security.torque.om.TurbineGroup +services.SecurityService.torque.role.class = org.apache.turbine.services.security.torque.om.TurbineRole +services.SecurityService.torque.permission.class = org.apache.turbine.services.security.torque.om.TurbinePermission + +services.SecurityService.user.class = org.apache.turbine.services.security.torque.TorqueUser +services.SecurityService.group.class = org.apache.turbine.services.security.torque.TorqueGroup +services.SecurityService.permission.class = org.apache.turbine.services.security.torque.TorquePermission +services.SecurityService.role.class = org.apache.turbine.services.security.torque.TorqueRole + +# ------------------------------------------------------------------- +# +# P O O L S E R V I C E +# +# ------------------------------------------------------------------- + +# Default capacity of pools of the Object pooling service. +# +# Default: 128 +services.PoolService.pool.capacity = 128 + +# Class specific capacities used instead of the default if specified. +# +# services.PoolService.pool.capacity.org.apache.turbine.services.rundata.DefaultTurbineRunData=512 + +# ------------------------------------------------------------------- +# +# F A C T O R Y S E R V I C E +# +# ------------------------------------------------------------------- + +# A comma separated list of classloaders (very optional) +# +# Example: org.foo.bar.MyClassLoader, org.ack.joe.YourClassLoader +# +# services.FactoryService.class.loaders= + +# Customized factories to be used instead of the default factory. +# E.g. to instantiate XML parsers, SSL sockets, etc., which require +# specific instantiation not supported by the default factory. +# The property name is prefixed with "factory" followed by the +# name of the production class. The value is the class name of +# the factory implementing the Factory interface. The factory +# will be instantiated by using the service itself. +# +# Examples: +# +# services.FactoryService.factory.javax.xml.parsers.DocumentBuilder=org.foo.xml.DomBuilderFactory +# services.FactoryService.factory.javax.xml.parsers.SAXParser=org.foo.xml.SaxParserFactory +# services.FactoryService.factory.java.net.ServerSocket=org.foo.net.SslServerSocketFactory + +# -------------------------------------------------------------------- +# +# P A R A M E T E R P A R S E R +# +# -------------------------------------------------------------------- +# +# This variable controls the case folding applied to URL variable +# names. +# +# Allowed values: none, lower, upper +# Default: lower +# + +url.case.folding=lower + +# ------------------------------------------------------------------- +# +# A V A L O N C O M P O N E N T S E R V I C E +# +# ------------------------------------------------------------------- +# Components implementing the Avalon lifecycle interfaces can be loaded, +# configured and initialized by Turbine +# ------------------------------------------------------------------- + +# +# Name and location to the configuration file for the components. +# +services.AvalonComponentService.componentConfiguration = conf/test/componentTorqueConfiguration.xml + +# +# Name and location to the configuration file for the component roles. +# +services.AvalonComponentService.componentRoles = conf/test/roleTorqueConfiguration.xml + +# +# Names of the Components to start right at Service init time +services.AvalonComponentService.lookup = org.apache.torque.avalon.Torque + +# ------------------------------------------------------------------- +# +# A D D I T I O N A L P R O P E R T I E S +# +# ------------------------------------------------------------------- +# The full path name to an additional properties file. Properties in +# this file will be included in this property set. Duplicate name +# values will be replaced, so be careful. +# +# Default: none +# ------------------------------------------------------------------- + + + +services.IntakeService.xml.path = conf/test/intake.xml Added: jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/conf/test/intake.xml URL: http://svn.apache.org/viewvc/jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/conf/test/intake.xml?rev=416569&view=auto ============================================================================== --- jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/conf/test/intake.xml (added) +++ jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/conf/test/intake.xml Thu Jun 22 22:13:42 2006 @@ -0,0 +1,13 @@ +<!DOCTYPE input-data SYSTEM + "http://jakarta.apache.org/turbine/dtd/intake_2_3.dtd"> +<input-data> + <group name="BooleanTest" key="bt"> + <field name="EmptyBooleanTestField" key="ebtf" type="boolean" /> + <field name="BooleanTestField" key="btf" type="boolean"> + <rule value="false" name="required">ValidValue</rule> + </field> + <field name="RequiredBooleanTestField" key="rbtf" type="boolean"> + <rule value="true" name="required">ValidValue</rule> + </field> + </group> +</input-data> Modified: jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/java/org/apache/turbine/services/intake/model/Field.java URL: http://svn.apache.org/viewvc/jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/java/org/apache/turbine/services/intake/model/Field.java?rev=416569&r1=416568&r2=416569&view=diff ============================================================================== --- jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/java/org/apache/turbine/services/intake/model/Field.java (original) +++ jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/java/org/apache/turbine/services/intake/model/Field.java Thu Jun 22 22:13:42 2006 @@ -1,7 +1,7 @@ package org.apache.turbine.services.intake.model; /* - * Copyright 2001-2005 The Apache Software Foundation. + * Copyright 2001-2006 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License") * you may not use this file except in compliance with the License. @@ -49,6 +49,7 @@ * @author <a href="mailto:dlr@finemaltcoding.com>Daniel Rall</a> * @author <a href="mailto:[EMAIL PROTECTED]">Henning P. Schmiedehausen</a> * @author <a href="mailto:[EMAIL PROTECTED]">Quinton McCombs</a> + * @author <a href="mailto:[EMAIL PROTECTED]">Jürgen Hoffmann</a> * @version $Id$ */ public abstract class Field @@ -198,7 +199,7 @@ } String validatorClassName = field.getValidator(); - if (validatorClassName == null && field.getRules().size() > 0) + if (validatorClassName == null) { validatorClassName = getDefaultValidator(); } Added: jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/test/org/apache/turbine/services/intake/IntakeServiceTest.java URL: http://svn.apache.org/viewvc/jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/test/org/apache/turbine/services/intake/IntakeServiceTest.java?rev=416569&view=auto ============================================================================== --- jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/test/org/apache/turbine/services/intake/IntakeServiceTest.java (added) +++ jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/test/org/apache/turbine/services/intake/IntakeServiceTest.java Thu Jun 22 22:13:42 2006 @@ -0,0 +1,76 @@ +package org.apache.turbine.services.intake; + +/* + * Copyright 2001-2006 The Apache Software Foundation. + * + * Licensed 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. + */ + +import junit.framework.TestSuite; + +import org.apache.turbine.services.ServiceManager; +import org.apache.turbine.services.TurbineServices; +import org.apache.turbine.services.intake.model.Field; +import org.apache.turbine.services.intake.model.Group; +import org.apache.turbine.services.intake.validator.BooleanValidator; +import org.apache.turbine.test.BaseTurbineTest; + + +public class IntakeServiceTest extends BaseTurbineTest +{ + + Group booleanTestGroup = null; + + public IntakeServiceTest(String name) throws Exception + { + super(name, "conf/test/TurbineResourcesWithIntake.properties"); + + ServiceManager serviceManager = TurbineServices.getInstance(); + IntakeService intakeService = (IntakeService) serviceManager.getService(IntakeService.SERVICE_NAME); + booleanTestGroup = intakeService.getGroup("BooleanTest"); + } + + + public void testEmptyBooleanField() throws IntakeException + { + Field booleanField = booleanTestGroup.get("EmptyBooleanTestField"); + assertTrue("The Default Validator of an intake Field type boolean should be BooleanValidator", (booleanField.getValidator() instanceof BooleanValidator)); + assertFalse("An Empty intake Field type boolean should not be required", booleanField.isRequired()); + } + + public void testBooleanField() throws IntakeException + { + Field booleanField = booleanTestGroup.get("BooleanTestField"); + assertTrue("The Default Validator of an intake Field type boolean should be BooleanValidator", (booleanField.getValidator() instanceof BooleanValidator)); + assertFalse("An intake Field type boolean, which is not required, should not be required", booleanField.isRequired()); + } + + public void testRequiredBooleanField() throws IntakeException + { + Field booleanField = booleanTestGroup.get("RequiredBooleanTestField"); + assertTrue("The Default Validator of an intake Field type boolean should be BooleanValidator", (booleanField.getValidator() instanceof BooleanValidator)); + assertTrue("An intake Field type boolean, which is required, should be required", booleanField.isRequired()); + } + + /** + * Factory method for creating a TestSuite for this class. + * + * @return the test suite + */ + public static TestSuite suite() + { + TestSuite suite = new TestSuite(IntakeServiceTest.class); + return suite; + } + +} Modified: jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/xdocs/changes.xml URL: http://svn.apache.org/viewvc/jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/xdocs/changes.xml?rev=416569&r1=416568&r2=416569&view=diff ============================================================================== --- jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/xdocs/changes.xml (original) +++ jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/xdocs/changes.xml Thu Jun 22 22:13:42 2006 @@ -1,7 +1,7 @@ <?xml version="1.0"?> <!-- - Copyright 2001-2005 The Apache Software Foundation. + Copyright 2001-2006 The Apache Software Foundation. Licensed under the Apache License, Version 2.0 (the "License") you may not use this file except in compliance with the License. @@ -25,6 +25,10 @@ <body> <release version="2.3.3-dev" date="in Subversion"> + <action type="fix" dev="eade" issue="TRB-14" due-to="Jürgen Hoffmann"> + Intake was not loading the correct Default Validators when the rules for + a field are empty. + </action> </release> <release version="2.3.2" date="2005-10-03"> <action type="fix" dev="seade"> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]