package org.hibernate.tool.hbm2x.xml; public final class XMLPrettyPrinterStrategyFactory { public static final String PROPERTY_STRATEGY_IMPL = "org.hibernate.tool.hbm2x.xml.XMLPrettyPrinterStrategy"; private static final XMLPrettyPrinterStrategy DEFAULT_STRATEGY = new TrAXPrettyPrinterStrategy(); private XMLPrettyPrinterStrategyFactory() { } public static XMLPrettyPrinterStrategy newXMLPrettyPrinterStrategy() { XMLPrettyPrinterStrategy strategy = loadFromSystemProperty(); return strategy == null ? DEFAULT_STRATEGY : strategy; } @SuppressWarnings("unchecked") private static XMLPrettyPrinterStrategy loadFromSystemProperty() { String strategyClass = System.getProperty(PROPERTY_STRATEGY_IMPL); if (strategyClass != null) { try { Class<XMLPrettyPrinterStrategy> clazz = (Class<XMLPrettyPrinterStrategy>) Class.forName(strategyClass); return clazz.newInstance(); } catch (Exception e) { throw new RuntimeException(e); } } return null; } }