package org.openxdm.xcap.server.slee.appusage.omapresrules; import java.net.URL; import javax.xml.validation.Schema; import org.apache.log4j.Logger; import org.openxdm.xcap.common.appusage.AppUsageFactory; import org.openxdm.xcap.common.error.InternalServerErrorException; import org.openxdm.xcap.common.xml.SchemaContext; import org.openxdm.xcap.server.slee.AbstractAppUsageSbb; /** * JAIN SLEE Root Sbb for oma-pres-rules Xcap application usage. * @author Eduardo Martins * */ public abstract class OMAPresRulesAppUsageSbb extends AbstractAppUsageSbb { private static Logger logger = Logger .getLogger(OMAPresRulesAppUsageSbb.class); // MANDATORY ABSTRACT METHODS IMPL FOR A APP USAGE ROOT SBB, AbstractAppUsageSbb will invoke them public Logger getLogger() { return logger; } public AppUsageFactory getAppUsageFactory() throws InternalServerErrorException { if(getLogger().isDebugEnabled()) { getLogger().debug("getAppUsageFactory()"); } AppUsageFactory appUsageFactory = null; try { // load schema files to dom documents logger.info("Loading schemas from file system..."); URL schemaDirURL = this.getClass().getResource("xsd"); if (schemaDirURL != null) { // create schema context SchemaContext schemaContext = SchemaContext .fromDir(schemaDirURL.toURI()); // get schema from context Schema schema = schemaContext .getCombinedSchema(OMAPresRulesAppUsage.DEFAULT_DOC_NAMESPACE); logger.info("Schemas loaded."); // create and return factory appUsageFactory = new OMAPresRulesAppUsageFactory(schema); } else { logger.warn("Schemas dir resource not found!"); } } catch (Exception e) { logger.error("Unable to load app usage schemas from file system", e); } if (appUsageFactory == null) { throw new InternalServerErrorException( "Unable to get app usage factory"); } else { return appUsageFactory; } } public String getAUID() { return OMAPresRulesAppUsage.ID; } }