public MappingDescriptor loadClassDescriptors()

in src/main/java/org/apache/jackrabbit/ocm/mapper/impl/digester/DigesterDescriptorReader.java [112:181]


	public MappingDescriptor loadClassDescriptors()
	{
		try
		{
			MappingDescriptor mappingDescriptor = new MappingDescriptor();
			for (Iterator iter = configFileStreams.iterator(); iter.hasNext();)
			{
				InputStream xmlMappingDescriptorFile = (InputStream) iter.next();
				
				Digester digester = new Digester();
				digester.setValidating(this.validating);
				if (null != this.dtdResolver)
				{
	                digester.register("-//The Apache Software Foundation//DTD Repository//EN",
	                                  this.dtdResolver.toString());
	            }
		        digester.setClassLoader(getClass().getClassLoader());
				
		        MappingDescriptor currentMappingDescriptor = new MappingDescriptor();
		        digester.push(currentMappingDescriptor);
				

				// --------------------------------------------------------------------------------
				// Rules used for the class-descriptor element
				// --------------------------------------------------------------------------------	
				digester.addObjectCreate("jackrabbit-ocm/class-descriptor", ClassDescriptor.class);
				digester.addSetProperties("jackrabbit-ocm/class-descriptor");
				digester.addSetNext("jackrabbit-ocm/class-descriptor", "addClassDescriptor");		

				// --------------------------------------------------------------------------------
				// Rules used for the implement-descriptor element
				// --------------------------------------------------------------------------------
				digester.addObjectCreate("jackrabbit-ocm/class-descriptor/implement-descriptor", ImplementDescriptor.class);
				digester.addSetProperties("jackrabbit-ocm/class-descriptor/implement-descriptor");
	            digester.addSetNext("jackrabbit-ocm/class-descriptor/implement-descriptor", "addImplementDescriptor");
				
				// --------------------------------------------------------------------------------
				// Rules used for the field-descriptor element
				// --------------------------------------------------------------------------------
				digester.addObjectCreate("jackrabbit-ocm/class-descriptor/field-descriptor", FieldDescriptor.class);
				digester.addSetProperties("jackrabbit-ocm/class-descriptor/field-descriptor");
	            digester.addSetNext("jackrabbit-ocm/class-descriptor/field-descriptor", "addFieldDescriptor");

				// --------------------------------------------------------------------------------
				// Rules used for the bean-descriptor element
				// --------------------------------------------------------------------------------
				digester.addObjectCreate("jackrabbit-ocm/class-descriptor/bean-descriptor", BeanDescriptor.class);
				digester.addSetProperties("jackrabbit-ocm/class-descriptor/bean-descriptor");
	            digester.addSetNext("jackrabbit-ocm/class-descriptor/bean-descriptor", "addBeanDescriptor");

				// --------------------------------------------------------------------------------
				// Rules used for the collection-descriptor element
				// --------------------------------------------------------------------------------
				digester.addObjectCreate("jackrabbit-ocm/class-descriptor/collection-descriptor", CollectionDescriptor.class);
				digester.addSetProperties("jackrabbit-ocm/class-descriptor/collection-descriptor");
	            digester.addSetNext("jackrabbit-ocm/class-descriptor/collection-descriptor", "addCollectionDescriptor");			

	            currentMappingDescriptor = (MappingDescriptor) digester.parse(xmlMappingDescriptorFile);
				
				mappingDescriptor.getClassDescriptorsByClassName().putAll(currentMappingDescriptor.getClassDescriptorsByClassName());
				mappingDescriptor.getClassDescriptorsByNodeType().putAll(currentMappingDescriptor.getClassDescriptorsByNodeType());

			}
			return mappingDescriptor;
		}
		catch (Exception e)
		{
			throw new InitMapperException("Impossible to read the xml mapping descriptor file(s)", e);
		}
	}