private TransformerFactory<?> getTransformerFactory(TransformModel transformModel) { TransformerFactoryClass transformerFactoryClass = transformModel.getClass().getAnnotation(TransformerFactoryClass.class); if (transformerFactoryClass == null) { TransformMessages.MESSAGES.transformModelNotAnnotated(transformModel.getClass().getName()); } Class<?> factoryClass = transformerFactoryClass.value(); if (!TransformerFactory.class.isAssignableFrom(factoryClass)) { TransformMessages.MESSAGES.invalidTransformerFactory( org.switchyard.transform.internal.TransformerFactory.class.getName()); } try { if (!_transformerFactories.containsKey(factoryClass)) { TransformerFactory<?> factory = (TransformerFactory<?>) factoryClass.newInstance(); _transformerFactories.put(factoryClass, factory); } return _transformerFactories.get(factoryClass); } catch (ClassCastException e) { throw TransformMessages.MESSAGES.failedCreateInstanceofTransformerFactory( factoryClass.getName()); } catch (IllegalArgumentException iae) { throw TransformMessages.MESSAGES.failedCreateInstanceofTransformerFactory( factoryClass.getName()); } catch (NullPointerException npe) { throw TransformMessages.MESSAGES.failedCreateInstanceofTransformerFactory( factoryClass.getName()); } catch (InstantiationException ie) { throw TransformMessages.MESSAGES.failedCreateInstanceofTransformerFactory( factoryClass.getName()); } catch (IllegalAccessException iae) { throw TransformMessages.MESSAGES.failedCreateInstanceofTransformerFactory( factoryClass.getName()); } }