/*
 * Copyright 2004-2019 H2 Group. Multiple-Licensed under the MPL 2.0,
 * and the EPL 1.0 (http://h2database.com/html/license.html).
 * Initial Developer: H2 Group
 */
package org.h2.jdbcx;

import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.Name;
import javax.naming.Reference;
import javax.naming.spi.ObjectFactory;

import org.h2.engine.Constants;
import org.h2.engine.SysProperties;
import org.h2.message.Trace;
import org.h2.message.TraceSystem;

This class is used to create new DataSource objects. An application should not use this class directly.
/** * This class is used to create new DataSource objects. * An application should not use this class directly. */
public class JdbcDataSourceFactory implements ObjectFactory { private static TraceSystem cachedTraceSystem; private final Trace trace; static { org.h2.Driver.load(); }
The public constructor to create new factory objects.
/** * The public constructor to create new factory objects. */
public JdbcDataSourceFactory() { trace = getTraceSystem().getTrace(Trace.JDBCX); }
Creates a new object using the specified location or reference information.
Params:
  • obj – the reference (this factory only supports objects of type javax.naming.Reference)
  • name – unused
  • nameCtx – unused
  • environment – unused
Returns:the new JdbcDataSource, or null if the reference class name is not JdbcDataSource.
/** * Creates a new object using the specified location or reference * information. * * @param obj the reference (this factory only supports objects of type * javax.naming.Reference) * @param name unused * @param nameCtx unused * @param environment unused * @return the new JdbcDataSource, or null if the reference class name is * not JdbcDataSource. */
@Override public synchronized Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable<?, ?> environment) { if (trace.isDebugEnabled()) { trace.debug("getObjectInstance obj={0} name={1} " + "nameCtx={2} environment={3}", obj, name, nameCtx, environment); } if (obj instanceof Reference) { Reference ref = (Reference) obj; if (ref.getClassName().equals(JdbcDataSource.class.getName())) { JdbcDataSource dataSource = new JdbcDataSource(); dataSource.setURL((String) ref.get("url").getContent()); dataSource.setUser((String) ref.get("user").getContent()); dataSource.setPassword((String) ref.get("password").getContent()); dataSource.setDescription((String) ref.get("description").getContent()); String s = (String) ref.get("loginTimeout").getContent(); dataSource.setLoginTimeout(Integer.parseInt(s)); return dataSource; } } return null; }
INTERNAL
/** * INTERNAL */
public static TraceSystem getTraceSystem() { synchronized (JdbcDataSourceFactory.class) { if (cachedTraceSystem == null) { cachedTraceSystem = new TraceSystem( SysProperties.CLIENT_TRACE_DIRECTORY + "h2datasource" + Constants.SUFFIX_TRACE_FILE); cachedTraceSystem.setLevelFile(SysProperties.DATASOURCE_TRACE_LEVEL); } return cachedTraceSystem; } } Trace getTrace() { return trace; } }