#
# Copyright 2007 The Codehaus 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.
#

Component.default.number=2
Component.default.key=value1
Component.default.properties.org.jpox.PreserveCase=always
Component.default.properties.key=value2
Component.default.list=S1, S2
Component.default.map.org.jpox.PreserveCase=always
Component.default.map.key=value3
Component.default.mergeProperties.key32=value32
Component.default.mergeList=v3, v4
Component.default.nested.foo=bar
