private StAXArtifactProcessor getProcessor()

in modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultStAXArtifactProcessorExtensionPoint.java [246:361]


        private StAXArtifactProcessor getProcessor() {
            if (processor == null) {

                if (processorDeclaration.getClassName()
                    .equals("org.apache.tuscany.sca.assembly.xml.DefaultBeanModelProcessor")) {

                    // Specific initialization for the DefaultBeanModelProcessor
                    ModelFactoryExtensionPoint modelFactories = extensionPoints.getExtensionPoint(ModelFactoryExtensionPoint.class);
                    AssemblyFactory assemblyFactory = modelFactories.getFactory(AssemblyFactory.class);
                    ExtensionFactory extensionFactory = modelFactories.getFactory(ExtensionFactory.class);
                    PolicyFactory policyFactory = modelFactories.getFactory(PolicyFactory.class);
                    try {
                        Class<StAXArtifactProcessor> processorClass =
                            (Class<StAXArtifactProcessor>)processorDeclaration.loadClass();
                        Object modelFactory;
                        if (factoryName != null) {
                            Class<?> factoryClass = (Class<?>)processorDeclaration.loadClass(factoryName);
                            modelFactory = modelFactories.getFactory(factoryClass);
                        } else {
                            modelFactory = null;
                        }
                        Constructor<StAXArtifactProcessor> constructor =
                            processorClass.getConstructor(AssemblyFactory.class,
                                                          ExtensionFactory.class,
                                                          PolicyFactory.class,
                                                          QName.class,
                                                          Class.class,
                                                          Object.class,
                                                          Monitor.class);
                        processor =
                            constructor.newInstance(assemblyFactory,
                                                    extensionFactory,
                                                    policyFactory,
                                                    artifactType,
                                                    getModelType(),
                                                    modelFactory,
                                                    monitor);
                    } catch (Exception e) {
                    	IllegalStateException ie = new IllegalStateException(e);
                    	error("IllegalStateException", processor, ie);
                        throw ie;
                    }
                } else {
                    ModelFactoryExtensionPoint modelFactories = extensionPoints.getExtensionPoint(ModelFactoryExtensionPoint.class);

                    // Load and instantiate the processor class
                    try {
                    	Class<StAXArtifactProcessor> processorClass =
                    		(Class<StAXArtifactProcessor>)processorDeclaration.loadClass();
                    	try {
                    		Constructor<StAXArtifactProcessor> constructor =
                    			processorClass.getConstructor(ModelFactoryExtensionPoint.class, Monitor.class);
                    		processor = constructor.newInstance(modelFactories, monitor);
                    	} catch (NoSuchMethodException e) {
                    		try {
                    			Constructor<StAXArtifactProcessor> constructor =
                    				processorClass.getConstructor(ExtensionPointRegistry.class, Monitor.class);
                    			processor = constructor.newInstance(extensionPoints, monitor);
                    		} catch (NoSuchMethodException e1) {
                    			try {
                    				Constructor<StAXArtifactProcessor> constructor =
                    					processorClass.getConstructor(ModelFactoryExtensionPoint.class, StAXArtifactProcessor.class, Monitor.class);
                    				processor = constructor.newInstance(modelFactories, extensionProcessor, monitor);
                    			} catch (NoSuchMethodException e2) {
                    				try {
                    					Constructor<StAXArtifactProcessor> constructor =
                    						processorClass.getConstructor(ModelFactoryExtensionPoint.class, StAXArtifactProcessor.class, StAXAttributeProcessor.class, Monitor.class);
                    					processor = constructor.newInstance(modelFactories, extensionProcessor, extensionAttributeProcessor, monitor);
                    				} catch (NoSuchMethodException e2a) {
                    					try {
                    						Constructor<StAXArtifactProcessor> constructor =
                    							processorClass.getConstructor(ExtensionPointRegistry.class, StAXArtifactProcessor.class, Monitor.class);
                    						processor = constructor.newInstance(extensionPoints, extensionProcessor, monitor);
                    					} catch (NoSuchMethodException e3) {
                    						try {
                    							Constructor<StAXArtifactProcessor> constructor =
                    								processorClass.getConstructor(ExtensionPointRegistry.class, StAXArtifactProcessor.class, StAXAttributeProcessor.class, Monitor.class);
                    							processor = constructor.newInstance(extensionPoints, extensionProcessor, extensionAttributeProcessor, monitor);
                    						} catch (NoSuchMethodException e3a) {

                    							try {
                    								Constructor<StAXArtifactProcessor> constructor =
                    									processorClass.getConstructor(ModelFactoryExtensionPoint.class);
                    								processor = constructor.newInstance(modelFactories);
                    							} catch (NoSuchMethodException e4) {
                    								try {
                    									Constructor<StAXArtifactProcessor> constructor =
                    										processorClass.getConstructor(ExtensionPointRegistry.class);
                    									processor = constructor.newInstance(extensionPoints);
                    								} catch (NoSuchMethodException e4a) {
                    									try {
                    										Constructor<StAXArtifactProcessor> constructor =
                    											processorClass.getConstructor(ModelFactoryExtensionPoint.class, StAXArtifactProcessor.class);
                    										processor = constructor.newInstance(modelFactories, extensionProcessor);
                    									} catch (NoSuchMethodException e5) {
                    										Constructor<StAXArtifactProcessor> constructor =
                    											processorClass.getConstructor(ExtensionPointRegistry.class, StAXArtifactProcessor.class);
                    										processor = constructor.newInstance(extensionPoints, extensionProcessor);
                    									}
                    								}
                    							}
                    						}
                    					}
                    				}
                    			}
                    		}
                    	}
                    } catch (Exception e) {
                    	IllegalStateException ie = new IllegalStateException(e);
                    	error("IllegalStateException", processor, ie);
                        throw ie;
                    }
                }
            }
            return processor;
        }