private List createServiceComponents()

in src/java/org/apache/fulcrum/yaafi/framework/container/ServiceContainerImpl.java [1063:1109]


	private List<ServiceComponent> createServiceComponents(Configuration roleConfiguration, Logger logger)
			throws ConfigurationException {
		Validate.notNull(roleConfiguration, "roleConfiguration");
		Validate.notNull(logger, "logger");

		ArrayList<ServiceComponent> result = new ArrayList<ServiceComponent>();
		ServiceComponent serviceComponent = null;

		// create an appropriate instance of role configuration parser

		RoleConfigurationParser roleConfigurationParser = this.createRoleConfigurationParser();

		// extract the role entries

		RoleEntry[] roleEntryList = roleConfigurationParser.parse(roleConfiguration);

		// get the default interceptors defined for the container

		ArrayList<String> defaultInterceptorList = this.getDefaultInterceptorServiceList();

		// create the service components based on the role entries

		for (int i = 0; i < roleEntryList.length; i++) {
			try {
				// add the default interceptors to all role entries

				RoleEntry roleEntry = roleEntryList[i];

				if (this.hasDynamicProxies()) {
					roleEntry.addInterceptors(defaultInterceptorList);
				} else {
					roleEntry.setHasDynamicProxy(false);
				}

				serviceComponent = new AvalonServiceComponentImpl(roleEntry, this.getLogger(), logger);

				result.add(serviceComponent);
			} catch (Throwable t) {
				String serviceComponentName = (serviceComponent != null ? serviceComponent.getName() : "unknown");
				String msg = "Failed to load the service " + serviceComponentName;
				this.getLogger().error(msg, t);
				throw new ConfigurationException(msg, t);
			}
		}

		return result;
	}