# 
# Copyright 2004-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.
#
#
#user-info-attributes.properties
#
#This a the file used add user information attributes 
#defined in PLT.D of the JSR-168 specification. All
#attributes in this file are prefixed with the name
#of the authenticated user (returned from PortletRequest.getRemoteUser())
#followed by a dot. Use the user-info-attributes.properties.template file
#as a template for adding other users to this file. All users
#must also be registered in tomcat-users.xml.
#
#
#Please format the user.bdate attribute as mm/dd/yyyy.
#As noted in PLT.D of the JSR-168 spec, the user.bdate 
#value returned will be the time in milliseconds 
#since January 1, 1970, 00:00:00 GMT.
tomcat.user.bdate=
tomcat.user.gender=male
tomcat.user.employer=Sun Microsystems Inc.
tomcat.user.department=
tomcat.user.jobtitle=Reference Implementation
tomcat.user.name.prefix=
tomcat.user.name.given=Catalina
tomcat.user.name.family=Tomcat
tomcat.user.name.middle=
tomcat.user.name.suffix=
tomcat.user.name.nickName=Tomcat
tomcat.user.home-info.postal.name=
tomcat.user.home-info.postal.street=
tomcat.user.home-info.postal.city=
tomcat.user.home-info.postal.stateprov=
tomcat.user.home-info.postal.postalcode=
tomcat.user.home-info.postal.country=
tomcat.user.home-info.postal.organization=
tomcat.user.home-info.telecom.telephone.intcode=
tomcat.user.home-info.telecom.telephone.loccode=
tomcat.user.home-info.telecom.telephone.number=
tomcat.user.home-info.telecom.telephone.ext=
tomcat.user.home-info.telecom.telephone.comment=
tomcat.user.home-info.telecom.fax.intcode=
tomcat.user.home-info.telecom.fax.loccode=
tomcat.user.home-info.telecom.fax.number=
tomcat.user.home-info.telecom.fax.ext=
tomcat.user.home-info.telecom.fax.comment=
tomcat.user.home-info.telecom.mobile.intcode=
tomcat.user.home-info.telecom.mobile.loccode=
tomcat.user.home-info.telecom.mobile.number=
tomcat.user.home-info.telecom.mobile.ext=
tomcat.user.home-info.telecom.mobile.comment=
tomcat.user.home-info.telecom.pager.intcode=
tomcat.user.home-info.telecom.pager.loccode=
tomcat.user.home-info.telecom.pager.number=
tomcat.user.home-info.telecom.pager.ext=
tomcat.user.home-info.telecom.pager.comment=
tomcat.user.home-info.online.email=
tomcat.user.home-info.online.uri=
tomcat.user.business-info.postal.name=
tomcat.user.business-info.postal.street=
tomcat.user.business-info.postal.city=
tomcat.user.business-info.postal.stateprov=
tomcat.user.business-info.postal.postalcode=
tomcat.user.business-info.postal.country=
tomcat.user.business-info.postal.organization=
tomcat.user.business-info.telecom.telephone.intcode=
tomcat.user.business-info.telecom.telephone.loccode=
tomcat.user.business-info.telecom.telephone.number=
tomcat.user.business-info.telecom.telephone.ext=
tomcat.user.business-info.telecom.telephone.comment=
tomcat.user.business-info.telecom.fax.intcode=
tomcat.user.business-info.telecom.fax.loccode=
tomcat.user.business-info.telecom.fax.number=
tomcat.user.business-info.telecom.fax.ext=
tomcat.user.business-info.telecom.fax.comment=
tomcat.user.business-info.telecom.mobile.intcode=
tomcat.user.business-info.telecom.mobile.loccode=
tomcat.user.business-info.telecom.mobile.number=
tomcat.user.business-info.telecom.mobile.ext=
tomcat.user.business-info.telecom.mobile.comment=
tomcat.user.business-info.telecom.pager.intcode=
tomcat.user.business-info.telecom.pager.loccode=
tomcat.user.business-info.telecom.pager.number=
tomcat.user.business-info.telecom.pager.ext=
tomcat.user.business-info.telecom.pager.comment=
tomcat.user.business-info.online.email=dev@tomcat.apache.org
tomcat.user.business-info.online.uri=http://tomcat.apache.org/