/** Instantiates an layout of the given class and sets its name. */ @SuppressWarnings("unchecked") public void begin(InterpretationContext ec, String localName, Attributes attributes) { // Let us forget about previous errors (in this object) inError = false; String errorMsg; String conversionWord = attributes.getValue(ActionConst.CONVERSION_WORD_ATTRIBUTE); String converterClass = attributes.getValue(ActionConst.CONVERTER_CLASS_ATTRIBUTE); if (OptionHelper.isEmpty(conversionWord)) { inError = true; errorMsg = "No 'conversionWord' attribute in <conversionRule>"; addError(errorMsg); return; } if (OptionHelper.isEmpty(converterClass)) { inError = true; errorMsg = "No 'converterClass' attribute in <conversionRule>"; ec.addError(errorMsg); return; } try { Map<String, String> ruleRegistry = (Map) context.getObject(CoreConstants.PATTERN_RULE_REGISTRY); if (ruleRegistry == null) { ruleRegistry = new HashMap<String, String>(); context.putObject(CoreConstants.PATTERN_RULE_REGISTRY, ruleRegistry); } // put the new rule into the rule registry addInfo( "registering conversion word " + conversionWord + " with class [" + converterClass + "]"); ruleRegistry.put(conversionWord, converterClass); } catch (Exception oops) { inError = true; errorMsg = "Could not add conversion rule to PatternLayout."; addError(errorMsg); } }
/** * Instantiates an a data source and bind it to JNDI Most of the required parameters are placed in * the ec.substitutionProperties */ public void begin(InterpretationContext ec, String localName, Attributes attributes) { String dsClassName = ec.getProperty(DATA_SOURCE_CLASS); if (OptionHelper.isEmpty(dsClassName)) { addWarn("dsClassName is a required parameter"); ec.addError("dsClassName is a required parameter"); return; } String urlStr = ec.getProperty(URL); String userStr = ec.getProperty(USER); String passwordStr = ec.getProperty(PASSWORD); try { DataSource ds = (DataSource) OptionHelper.instantiateByClassName(dsClassName, DataSource.class, context); PropertySetter setter = new PropertySetter(ds); setter.setContext(context); if (!OptionHelper.isEmpty(urlStr)) { setter.setProperty("url", urlStr); } if (!OptionHelper.isEmpty(userStr)) { setter.setProperty("user", userStr); } if (!OptionHelper.isEmpty(passwordStr)) { setter.setProperty("password", passwordStr); } Context ctx = new InitialContext(); ctx.rebind("dataSource", ds); } catch (Exception oops) { addError("Could not bind datasource. Reported error follows.", oops); ec.addError("Could not not bind datasource of type [" + dsClassName + "]."); } }