###
#  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.
###

Apache
xbean
interceptor
apache
org
href
Rev
interceptors
resusitated
multi
db
xdbm
plugin
surefire
noinspection
marshaller
btree
multivalued
univalued
nulling
eval
registries
apacheds
jdbm
xmlns
io
pom
avl
api
xml
namespace
springframework
bootstrappers
cli
lang
registry
bouncycastle
bcprov
maven
basedir
plugins
src
gif
utils
codec
admin
abandonable
init
credentials
ldap
conns
sasl
psearch
ok
username
hnelson
callback
eg
com
requestor
junit
ldapsdk
dnsjava
jndi
kerberos
antrun
pertest
bootstrapper
tanuki
conf
ldif
noarch
tanukisoft
dep
aop
apis
util
akarasulu
lib
macosx
mac
pkg
dmg
makensis
nsis
usr
solaris
linux
debian
deb
zip
exe
rpm
rpmbuild
unix
sparc
ckoppelt
elecharny
ersiner
kayyagari
pamarcelot
szoerner
seelmann
@directory.apache.org
bytecode
ou
timestamps
foo
timestamp
classpath
oid
accessors
cannonical
malformed
rdn
nexus
attr
op
subentries
aug
thu
rollback
dn
standalone
apachemeta
subentry
namespaces
unbind
var
lifecycle
hardcoded
cn
dependees
codecs
mina
antlr
addons
qdescrs
qdescrlist
qdescr
descr
descrs
numericoid
qdstring
oids
superclasses
oidlist
strs
encodable
decorator
lockable
enum
encodeable
vals
stateful
inactivated
kdc
criticality
unstack
subcontext
uid
dc
deserialize
clonable
cyclical
felix
configs
osgi
offline
newrdn
deleteoldrdn
covariant
req
param
app
servlet
nonce
hibernate
javadocs
karasulu
alex
timezone
min
sec
dao
ref
openid
hellman
diffie
decrypts
crypto
ns
jetty
config
https
http
programmatically
url
refactoring
