class RuleCompositionServiceImpl extends AbstractJargonService implements RuleCompositionService {

	@Override
	public Rule parseStringIntoRule(final String inputRuleAsString) throws JargonException {
		log.info("parseStringIntoRule()");

		if (inputRuleAsString == null || inputRuleAsString.isEmpty()) {
			throw new IllegalArgumentException("inputRuleAsString is null or empty");
		}

		log.info("inputRuleAsString:{}", inputRuleAsString);

		final AbstractRuleTranslator irodsRuleTranslator = new IrodsRuleEngineRuleTranslator(
				getIrodsAccessObjectFactory().getIRODSServerProperties(getIrodsAccount()),
				RuleInvocationConfiguration.instanceWithDefaultAutoSettings(),
				getIrodsAccessObjectFactory().getJargonProperties());

		IRODSRule irodsRule = irodsRuleTranslator.translatePlainTextRuleIntoIRODSRule(inputRuleAsString);

		log.info("got irodsRule:{}", irodsRule);

		Rule rule = new Rule();
		rule.setRuleBody(irodsRule.getRuleBody());
		rule.setInputParameters(irodsRule.getIrodsRuleInputParameters());
		rule.setOutputParameters(irodsRule.getIrodsRuleOutputParameters());
		log.info("resulting rule:{}", rule);
		return rule;

	}

	public  RuleCompositionServiceImpl();
	public  RuleCompositionServiceImpl(final IRODSAccessObjectFactory irodsAccessObjectFactory,
			final IRODSAccount irodsAccount);

}