blob: 46ddb330387d9d4773053327860c8af6448fe2c2 [file] [log] [blame]
/*
* 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.jackrabbit.j2ee;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Properties;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
/**
* The JNDI config hold information about JNDI connection details.
*
* It supports the following properties and init parameters:
* <pre>
* +-------------------+--------------------+
* | Property Name | Init-Param Name |
* +-------------------+--------------------+
* | jndi.enable | {provider spec.} |
* | java.naming.* | java.naming.* |
* +-------------------+--------------------+
* </pre>
*/
public class JNDIConfig extends AbstractConfig {
private boolean jndiEnabled;
private String jndiName;
private final BootstrapConfig parentConfig;
private Properties jndiEnv = new Properties();
public JNDIConfig(BootstrapConfig parentConfig) {
this.parentConfig = parentConfig;
}
public String getJndiName() {
return jndiName;
}
public void setJndiName(String jndiName) {
this.jndiName = jndiName;
}
public boolean enabled() {
return jndiEnabled;
}
public String getJndiEnabled() {
return String.valueOf(jndiEnabled);
}
public void setJndiEnabled(String jndiEnabled) {
this.jndiEnabled = Boolean.valueOf(jndiEnabled).booleanValue();
}
public Properties getJndiEnv() {
return jndiEnv;
}
public void init(Properties props) throws ServletException {
super.init(props);
// add all props whose name starts with 'java.namming.' to the env
Iterator iter = props.keySet().iterator();
while (iter.hasNext()) {
String name = (String) iter.next();
if (name.startsWith("java.naming.")) {
jndiEnv.put(name, props.getProperty(name));
}
}
}
public void init(ServletConfig ctx) throws ServletException {
super.init(ctx);
// add all params whose name starts with 'java.namming.' to the env
Enumeration names = ctx.getInitParameterNames();
while (names.hasMoreElements()) {
String name = (String) names.nextElement();
if (name.startsWith("java.naming.")) {
jndiEnv.put(name, ctx.getInitParameter(name));
}
}
// enable jndi if url is specified
jndiEnabled = jndiEnv.containsKey("java.naming.provider.url");
}
public void validate() {
if (jndiName == null) {
jndiName = parentConfig.getRepositoryName();
}
valid = true;
}
}