All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jbpm.persistence.settings.JpaSettings Maven / Gradle / Ivy

The newest version!
/*
 * Copyright 2017 Red Hat, Inc. and/or its affiliates.
 *
 * 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.
 */
package org.jbpm.persistence.settings;

import java.io.InputStream;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Utility class which gives access to some JPA's settings like, for instance, the JDI datasource name.
 * 

(see JBPM-4913: Ability to read the underlying JNDI datasource name)

*/ public class JpaSettings { private static JpaSettings INSTANCE = new JpaSettings(); public static JpaSettings get() { return INSTANCE; } private static final Logger logger = LoggerFactory.getLogger(JpaSettings.class); private String dataSourceJndiName = null; private JpaSettings() { } public String getDataSourceJndiName() { if (dataSourceJndiName == null) { dataSourceJndiName = findJndiDataSourceName(); } return dataSourceJndiName; } public void setDataSourceJndiName(String dataSourceJndiName) { this.dataSourceJndiName = dataSourceJndiName; } private String findJndiDataSourceName() { String defaultName = System.getProperty("org.kie.ds.jndi", "java:jboss/datasources/ExampleDS"); try { String jndiName = getJndiNameFromPersistenceXml(); if (jndiName != null) { return jndiName; } } catch (XMLStreamException e) { logger.warn("Unable to find out JNDI name fo data source " + "due to {} using default {}", e.getMessage(), defaultName, e); } return defaultName; } private String getJndiNameFromPersistenceXml() throws XMLStreamException { XMLInputFactory factory = XMLInputFactory.newInstance(); InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("META-INF/persistence.xml"); XMLStreamReader reader = factory.createXMLStreamReader(is); while (reader.hasNext()) { int event = reader.next(); if (event == XMLStreamConstants.START_ELEMENT && "jta-data-source".equals(reader.getLocalName())) { return reader.getElementText(); } } return null; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy