// $Id$ /* * Copyright (c) 2009, Red Hat Middleware LLC or third-party contributors as * indicated by the @author tags or express copyright attribution * statements applied by the authors. All third-party contributions are * distributed under license by Red Hat Middleware LLC. * * This copyrighted material is made available to anyone wishing to use, modify, * copy, or redistribute it subject to the terms and conditions of the GNU * Lesser General Public License, as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this distribution; if not, write to: * Free Software Foundation, Inc. * 51 Franklin Street, Fifth Floor * Boston, MA 02110-1301 USA */ package org.hibernate.ejb.packaging; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set; import javax.persistence.spi.PersistenceUnitTransactionType; /** * Simple represenation of persistence.xml * * Object used by JBoss EJB 3 for persistence.xml parsing * Object used by Hibernate OGM as well, consider this some kind of exposed service at the SPI level * * @author <a href="mailto:bill@jboss.org">Bill Burke</a> */ public class PersistenceMetadata { private String name; private String nonJtaDatasource; private String jtaDatasource; private String provider; private PersistenceUnitTransactionType transactionType; private boolean useQuotedIdentifiers = false; // the spec (erroneously?) calls this delimited-identifiers private List<String> classes = new ArrayList<String>(); private List<String> packages = new ArrayList<String>(); private List<String> mappingFiles = new ArrayList<String>(); private Set<String> jarFiles = new HashSet<String>(); private List<NamedInputStream> hbmfiles = new ArrayList<NamedInputStream>(); private Properties props = new Properties(); private boolean excludeUnlistedClasses = false; private String validationMode; private String version; public String getVersion() { return version; } public void setVersion(String version) { this.version = version; } public String getSharedCacheMode() { return sharedCacheMode; } public boolean isExcludeUnlistedClasses() { return excludeUnlistedClasses; } private String sharedCacheMode; public String getName() { return name; } public void setName(String name) { this.name = name; } public PersistenceUnitTransactionType getTransactionType() { return transactionType; } public void setTransactionType(PersistenceUnitTransactionType transactionType) { this.transactionType = transactionType; } public String getNonJtaDatasource() { return nonJtaDatasource; } public void setNonJtaDatasource(String nonJtaDatasource) { this.nonJtaDatasource = nonJtaDatasource; } public String getJtaDatasource() { return jtaDatasource; } public void setJtaDatasource(String jtaDatasource) { this.jtaDatasource = jtaDatasource; } public String getProvider() { return provider; } public void setProvider(String provider) { if ( provider != null && provider.endsWith( ".class" ) ) { this.provider = provider.substring( 0, provider.length() - 6 ); } this.provider = provider; } public boolean isUseQuotedIdentifiers() { return useQuotedIdentifiers; } public void setUseQuotedIdentifiers(boolean useQuotedIdentifiers) { this.useQuotedIdentifiers = useQuotedIdentifiers; } public List<String> getClasses() { return classes; } public void setClasses(List<String> classes) { this.classes = classes; } public List<String> getPackages() { return packages; } public void setPackages(List<String> packages) { this.packages = packages; } public List<String> getMappingFiles() { return mappingFiles; } public void setMappingFiles(List<String> mappingFiles) { this.mappingFiles = mappingFiles; } public Set<String> getJarFiles() { return jarFiles; } public void setJarFiles(Set<String> jarFiles) { this.jarFiles = jarFiles; } public Properties getProps() { return props; } public void setProps(Properties props) { this.props = props; } public List<NamedInputStream> getHbmfiles() { return hbmfiles; } /** * @deprecated use getHbmfiles() rather */ public void setHbmfiles(List<NamedInputStream> hbmfiles) { this.hbmfiles = hbmfiles; } public boolean getExcludeUnlistedClasses() { return excludeUnlistedClasses; } public void setExcludeUnlistedClasses(boolean excludeUnlistedClasses) { this.excludeUnlistedClasses = excludeUnlistedClasses; } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append( "PersistenceMetadata(version=" ) .append( version ) .append(") [\n") .append("\tname: ").append(name).append("\n") .append("\tjtaDataSource: ").append(jtaDatasource).append("\n") .append("\tnonJtaDataSource: ").append(nonJtaDatasource).append("\n") .append("\ttransactionType: ").append(transactionType).append("\n") .append("\tprovider: ").append(provider).append("\n") .append("\tuseQuotedIdentifiers: ").append(useQuotedIdentifiers).append("\n") .append("\tclasses[\n"); if (classes != null) { for (String elt : classes) { sb.append("\t\t").append( elt ); } } sb.append( "\t]\n") .append("\tpackages[\n"); if (packages != null) { for (String elt : packages) { sb.append("\t\t").append( elt ).append("\n"); } } sb.append( "\t]\n") .append("\tmappingFiles[\n"); if (mappingFiles != null) { for (String elt : mappingFiles) { sb.append("\t\t").append( elt ).append("\n"); } } sb.append( "\t]\n") .append("\tjarFiles[\n"); if (jarFiles != null) { for (String elt : jarFiles) { sb.append("\t\t").append( elt ).append("\n"); } } sb.append( "\t]\n") .append("\thbmfiles: ") .append( hbmfiles != null ? hbmfiles.size() : 0 ).append("\n"); if (validationMode != null) { sb.append("\tvalidation-mode: ").append(validationMode).append("\n"); } if (sharedCacheMode != null) { sb.append("\tshared-cache-mode: ").append(sharedCacheMode).append("\n"); } sb.append("\tproperties[\n"); if (props != null) { for ( Map.Entry elt : props.entrySet()) { sb.append("\t\t").append( elt.getKey() ).append(": ").append( elt.getValue() ).append("\n"); } } sb.append( "\t]").append( "]"); return sb.toString(); } public void setValidationMode(String validationMode) { this.validationMode = validationMode; } public String getValidationMode() { return validationMode; } public void setSharedCacheMode(String sharedCacheMode) { this.sharedCacheMode = sharedCacheMode; } }