From: <sha...@us...> - 2011-08-30 12:12:52
|
Revision: 3169 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3169&view=rev Author: shadowtm Date: 2011-08-30 12:12:45 +0000 (Tue, 30 Aug 2011) Log Message: ----------- Used XMLBeans to be able to get the XML representation of our IConfiguration objects. Modified Paths: -------------- trunk/components-core/pom.xml trunk/components-core/src/main/java/org/dllearner/configuration/IConfigurationProperty.java trunk/interfaces/pom.xml trunk/interfaces/src/main/java/org/dllearner/cli/ConfFileOption2.java trunk/interfaces/src/test/java/org/dllearner/cli/FatherCLITest.java Added Paths: ----------- trunk/interfaces/src/main/java/org/dllearner/configuration/util/ trunk/interfaces/src/main/java/org/dllearner/configuration/util/ConfigurationXMLBeanConverter.java trunk/interfaces/src/main/java/org/dllearner/configuration/util/SpringConfigurationXMLBeanConverter.java trunk/interfaces/src/main/xsd/ trunk/interfaces/src/main/xsd/spring-beans-3.0.xsd Modified: trunk/components-core/pom.xml =================================================================== --- trunk/components-core/pom.xml 2011-08-30 09:53:50 UTC (rev 3168) +++ trunk/components-core/pom.xml 2011-08-30 12:12:45 UTC (rev 3169) @@ -208,10 +208,10 @@ <artifactId>ini4j</artifactId> </dependency> - <dependency> - <groupId>xmlbeans</groupId> - <artifactId>xbean</artifactId> - </dependency> + <dependency> + <groupId>org.apache.xmlbeans</groupId> + <artifactId>xmlbeans</artifactId> + </dependency> <dependency> <groupId>com.google.code.factplusplus</groupId> Modified: trunk/components-core/src/main/java/org/dllearner/configuration/IConfigurationProperty.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/configuration/IConfigurationProperty.java 2011-08-30 09:53:50 UTC (rev 3168) +++ trunk/components-core/src/main/java/org/dllearner/configuration/IConfigurationProperty.java 2011-08-30 12:12:45 UTC (rev 3169) @@ -25,14 +25,7 @@ */ public Object getValue(); - /** - * Get the type of this value. - * - * @return The type of this value. - */ - public Class getType(); - /** * Does this property represent a bean reference? * Modified: trunk/interfaces/pom.xml =================================================================== --- trunk/interfaces/pom.xml 2011-08-30 09:53:50 UTC (rev 3168) +++ trunk/interfaces/pom.xml 2011-08-30 12:12:45 UTC (rev 3169) @@ -126,6 +126,24 @@ <build> <finalName>interfaces</finalName> <plugins> + + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>xmlbeans-maven-plugin</artifactId> + <version>2.3.3</version> + <executions> + <execution> + <goals> + <goal>xmlbeans</goal> + </goals> + </execution> + </executions> + <inherited>true</inherited> + <configuration> + <schemaDirectory>src/main/xsd</schemaDirectory> + </configuration> + </plugin> + <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>tomcat-maven-plugin</artifactId> @@ -235,6 +253,10 @@ <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> </dependency> + <dependency> + <groupId>org.apache.xmlbeans</groupId> + <artifactId>xmlbeans</artifactId> + </dependency> </dependencies> Modified: trunk/interfaces/src/main/java/org/dllearner/cli/ConfFileOption2.java =================================================================== --- trunk/interfaces/src/main/java/org/dllearner/cli/ConfFileOption2.java 2011-08-30 09:53:50 UTC (rev 3168) +++ trunk/interfaces/src/main/java/org/dllearner/cli/ConfFileOption2.java 2011-08-30 12:12:45 UTC (rev 3169) @@ -116,11 +116,6 @@ } @Override - public Class<?> getType() { - return getPropertyType(); - } - - @Override public boolean isBeanReferenceCollection() { return isBeanReferenceCollection; } Added: trunk/interfaces/src/main/java/org/dllearner/configuration/util/ConfigurationXMLBeanConverter.java =================================================================== --- trunk/interfaces/src/main/java/org/dllearner/configuration/util/ConfigurationXMLBeanConverter.java (rev 0) +++ trunk/interfaces/src/main/java/org/dllearner/configuration/util/ConfigurationXMLBeanConverter.java 2011-08-30 12:12:45 UTC (rev 3169) @@ -0,0 +1,23 @@ +package org.dllearner.configuration.util; + +import org.apache.xmlbeans.XmlObject; +import org.dllearner.configuration.IConfiguration; + +/** + * Created by IntelliJ IDEA. + * User: Chris + * Date: 8/30/11 + * Time: 5:20 AM + * + * Interface designed to convert an IConfiguration object into an XML Bean Object. + */ +public interface ConfigurationXMLBeanConverter { + + /** + * Convert configuration to XmlObject. + * + * @param configuration The configuration object to convert + * @return The resulting xml bean object + */ + XmlObject convert(IConfiguration configuration); +} Added: trunk/interfaces/src/main/java/org/dllearner/configuration/util/SpringConfigurationXMLBeanConverter.java =================================================================== --- trunk/interfaces/src/main/java/org/dllearner/configuration/util/SpringConfigurationXMLBeanConverter.java (rev 0) +++ trunk/interfaces/src/main/java/org/dllearner/configuration/util/SpringConfigurationXMLBeanConverter.java 2011-08-30 12:12:45 UTC (rev 3169) @@ -0,0 +1,99 @@ +package org.dllearner.configuration.util; + +import org.apache.xmlbeans.XmlObject; +import org.apache.xmlbeans.XmlString; +import org.dllearner.configuration.IConfiguration; +import org.dllearner.configuration.IConfigurationProperty; +import org.dllearner.core.Component; +import org.springframework.schema.beans.*; + +import java.util.Collection; +import java.util.Set; + +/** + * Created by IntelliJ IDEA. + * User: Chris + * Date: 8/30/11 + * Time: 5:23 AM + * <p/> + * Implementation responsible for writing the IConfiguration object out to a Spring Beans Schema. + */ +public class SpringConfigurationXMLBeanConverter implements ConfigurationXMLBeanConverter { + + @Override + public XmlObject convert(IConfiguration configuration) { + BeansDocument document = BeansDocument.Factory.newInstance(); + BeansDocument.Beans beans = document.addNewBeans(); + + Collection<String> beanNames = configuration.getBeanNames(); + for (String beanName : beanNames) { + + Collection<IConfigurationProperty> properties = configuration.getConfigurationProperties(beanName); + + BeanDocument.Bean bean = beans.addNewBean(); + Class configurationClass = configuration.getClass(beanName); + bean.setClass1(configurationClass.getName()); + bean.setName(beanName); + + if (isComponentClass(configurationClass)) { + bean.setInitMethod("init"); + } + + + for (IConfigurationProperty property : properties) { + + PropertyType xmlProp = bean.addNewProperty(); + xmlProp.setName(property.getName()); + + Object value = property.getValue(); + if (property.isBeanReference()) { + xmlProp.setRef2((String) value); + } else { + if (value instanceof String) { + xmlProp.setValue2((String) value); + } + + if(value instanceof Set){ + processSet(beanNames, xmlProp, (Set) value); + } + + //TODO For Map + } + + } + + } + return document; + } + + private void processSet(Collection<String> beanNames, PropertyType xmlProp, Set value) { + Set mySet = (Set) value; + SetDocument.Set set = xmlProp.addNewSet(); + for (Object o : mySet) { + + if (beanNames.contains(o)) { + RefDocument.Ref ref = set.addNewRef(); + ref.setBean((String) o); + } else { + ValueDocument.Value setValue = set.addNewValue(); + XmlString s = XmlString.Factory.newInstance(); + s.setStringValue((String) o); + setValue.set(s); + } + } + } + + private boolean isComponentClass(Class configurationClass) { + boolean found = false; + + Class[] interfaces = configurationClass.getInterfaces(); + + int ctr = 0; + while(!found && ctr < interfaces.length) { + found = interfaces[ctr].isAssignableFrom(Component.class); + ctr++; + } + + return found; + } +} Added: trunk/interfaces/src/main/xsd/spring-beans-3.0.xsd =================================================================== --- trunk/interfaces/src/main/xsd/spring-beans-3.0.xsd (rev 0) +++ trunk/interfaces/src/main/xsd/spring-beans-3.0.xsd 2011-08-30 12:12:45 UTC (rev 3169) @@ -0,0 +1,1152 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> + +<xsd:schema xmlns="http://www.springframework.org/schema/beans" + xmlns:xsd="http://www.w3.org/2001/XMLSchema" + targetNamespace="http://www.springframework.org/schema/beans"> + + <xsd:import namespace="http://www.w3.org/XML/1998/namespace"/> + + <xsd:annotation> + <xsd:documentation><![CDATA[ + Spring XML Beans Schema, version 3.0 + Authors: Juergen Hoeller, Rob Harrop, Mark Fisher + + This defines a simple and consistent way of creating a namespace + of JavaBeans objects, managed by a Spring BeanFactory, read by + XmlBeanDefinitionReader (with DefaultBeanDefinitionDocumentReader). + + This document type is used by most Spring functionality, including + web application contexts, which are based on bean factories. + + Each "bean" element in this document defines a JavaBean. + Typically the bean class is specified, along with JavaBean properties + and/or constructor arguments. + + A bean instance can be a "singleton" (shared instance) or a "prototype" + (independent instance). Further scopes can be provided by extended + bean factories, for example in a web environment. + + References among beans are supported, that is, setting a JavaBean property + or a constructor argument to refer to another bean in the same factory + (or an ancestor factory). + + As alternative to bean references, "inner bean definitions" can be used. + Singleton flags of such inner bean definitions are effectively ignored: + inner beans are typically anonymous prototypes. + + There is also support for lists, sets, maps, and java.util.Properties + as bean property types or constructor argument types. + ]]></xsd:documentation> + </xsd:annotation> + + <!-- base types --> + <xsd:complexType name="identifiedType" abstract="true"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The unique identifier for a bean. The scope of the identifier + is the enclosing bean factory. + ]]></xsd:documentation> + </xsd:annotation> + <xsd:attribute name="id" type="xsd:ID"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The unique identifier for a bean. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + </xsd:complexType> + + <!-- Top-level <beans> tag --> + <xsd:element name="beans"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The top level (typically root) element. Allows the definition + of default values for all nested bean definitions. + ]]></xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="description" minOccurs="0"/> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element ref="import"/> + <xsd:element ref="alias"/> + <xsd:element ref="bean"/> + <xsd:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + </xsd:sequence> + <xsd:attribute name="default-lazy-init" default="false" type="xsd:boolean"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The default 'lazy-init' value; see the documentation for the + 'lazy-init' attribute of the '<bean>' element. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="default-merge" default="false" type="xsd:boolean"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The default 'merge' value; see the documentation for the + 'merge' attribute of the various collection elements. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="default-autowire" default="no"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The default 'autowire' value; see the documentation for the + 'autowire' attribute of the '<bean>' element. + ]]></xsd:documentation> + </xsd:annotation> + <xsd:simpleType> + <xsd:restriction base="xsd:NMTOKEN"> + <xsd:enumeration value="no"/> + <xsd:enumeration value="byName"/> + <xsd:enumeration value="byType"/> + <xsd:enumeration value="constructor"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + <xsd:attribute name="default-autowire-candidates" type="xsd:string"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + A default bean name pattern for identifying autowire candidates: + e.g. "*Service", "data*", "*Service*", "data*Service". + Also accepts a comma-separated list of patterns: e.g. "*Service,*Dao". + See the documentation for the 'autowire-candidate' attribute of the + '<bean/>' element for the semantic details of autowire candidate beans. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="default-init-method" type="xsd:string"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The default 'init-method' value; see the documentation for the + 'init-method' attribute of the '<bean>' element. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="default-destroy-method" type="xsd:string"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The default 'destroy-method' value; see the documentation for the + 'destroy-method' attribute of the '<bean>' element. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:anyAttribute namespace="##other" processContents="lax"/> + </xsd:complexType> + </xsd:element> + + <xsd:element name="description"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + Contains informative text describing the purpose of the enclosing element. + Used primarily for user documentation of XML bean definition documents. + ]]></xsd:documentation> + </xsd:annotation> + <xsd:complexType mixed="true"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"/> + </xsd:complexType> + </xsd:element> + + <xsd:element name="import"> + <xsd:annotation> + <xsd:documentation source="java:org.springframework.core.io.Resource"><![CDATA[ + Specifies an XML bean definition resource to import. + ]]></xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:complexContent> + <xsd:restriction base="xsd:anyType"> + <xsd:attribute name="resource" type="xsd:string" use="required"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The relative resource location of the XML (bean definition) file to import, + for example "myImport.xml" or "includes/myImport.xml" or "../myImport.xml". + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + + <xsd:element name="alias"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + Defines an alias for a bean (which can reside in a different definition + resource). + ]]></xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:complexContent> + <xsd:restriction base="xsd:anyType"> + <xsd:attribute name="name" type="xsd:string" use="required"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The name of the bean to define an alias for. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="alias" type="xsd:string" use="required"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The alias name to define for the bean. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + + <xsd:group name="beanElements"> + <xsd:sequence> + <xsd:element ref="description" minOccurs="0"/> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element ref="meta"/> + <xsd:element ref="constructor-arg"/> + <xsd:element ref="property"/> + <xsd:element ref="qualifier"/> + <xsd:element ref="lookup-method"/> + <xsd:element ref="replaced-method"/> + <xsd:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + </xsd:sequence> + </xsd:group> + + <xsd:attributeGroup name="beanAttributes"> + <xsd:attribute name="name" type="xsd:string"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + Can be used to create one or more aliases illegal in an (XML) id. + Multiple aliases can be separated by any number of spaces, commas, + or semi-colons (or indeed any mixture of the three). + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="class" type="xsd:string"> + <xsd:annotation> + <xsd:documentation source="java:java.lang.Class"><![CDATA[ + The fully qualified name of the bean's class, except if it serves only + as a parent definition for child bean definitions. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="parent" type="xsd:string"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The name of the parent bean definition. + + Will use the bean class of the parent if none is specified, but can + also override it. In the latter case, the child bean class must be + compatible with the parent, i.e. accept the parent's property values + and constructor argument values, if any. + + A child bean definition will inherit constructor argument values, + property values and method overrides from the parent, with the option + to add new values. If init method, destroy method, factory bean and/or + factory method are specified, they will override the corresponding + parent settings. + + The remaining settings will always be taken from the child definition: + depends on, autowire mode, scope, lazy init. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="scope" type="xsd:string"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The scope of this bean: typically "singleton" (one shared instance, + which will be returned by all calls to getBean with the given id), or + "prototype" (independent instance resulting from each call to getBean). + + By default, a bean will be a singleton, unless the bean has a parent + bean definition in which case it will inherit the parent's scope. + + Singletons are most commonly used, and are ideal for multi-threaded + service objects. Further scopes, such as "request" or "session", might + be supported by extended bean factories (e.g. in a web environment). + + Inner bean definitions inherit the singleton status of their containing + bean definition, unless explicitly specified: The inner bean will be a + singleton if the containing bean is a singleton, and a prototype if + the containing bean has any other scope. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="abstract" type="xsd:boolean"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + Is this bean "abstract", that is, not meant to be instantiated itself + but rather just serving as parent for concrete child bean definitions? + The default is "false". Specify "true" to tell the bean factory to not + try to instantiate that particular bean in any case. + + Note: This attribute will not be inherited by child bean definitions. + Hence, it needs to be specified per abstract bean definition. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="lazy-init" default="default" type="defaultable-boolean"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + Indicates whether or not this bean is to be lazily initialized. + If false, it will be instantiated on startup by bean factories + that perform eager initialization of singletons. The default is + "false". + + Note: This attribute will not be inherited by child bean definitions. + Hence, it needs to be specified per concrete bean definition. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="autowire" default="default"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + Controls whether bean properties are "autowired". + This is an automagical process in which bean references don't need + to be coded explicitly in the XML bean definition file, but rather the + Spring container works out dependencies. + + There are 4 modes: + + 1. "no" + The traditional Spring default. No automagical wiring. Bean references + must be defined in the XML file via the <ref/> element (or "ref" + attribute). We recommend this in most cases as it makes documentation + more explicit. + + Note that this default mode also allows for annotation-driven autowiring, + if activated. "no" refers to externally driven autowiring only, not + affecting any autowiring demands that the bean class itself expresses. + + 2. "byName" + Autowiring by property name. If a bean of class Cat exposes a "dog" + property, Spring will try to set this to the value of the bean "dog" + in the current container. If there is no matching bean by name, nothing + special happens. + + 3. "byType" + Autowiring if there is exactly one bean of the property type in the + container. If there is more than one, a fatal error is raised, and + you cannot use byType autowiring for that bean. If there is none, + nothing special happens. + + 4. "constructor" + Analogous to "byType" for constructor arguments. If there is not exactly + one bean of the constructor argument type in the bean factory, a fatal + error is raised. + + Note that explicit dependencies, i.e. "property" and "constructor-arg" + elements, always override autowiring. + + Note: This attribute will not be inherited by child bean definitions. + Hence, it needs to be specified per concrete bean definition. + ]]></xsd:documentation> + </xsd:annotation> + <xsd:simpleType> + <xsd:restriction base="xsd:NMTOKEN"> + <xsd:enumeration value="default"/> + <xsd:enumeration value="no"/> + <xsd:enumeration value="byName"/> + <xsd:enumeration value="byType"/> + <xsd:enumeration value="constructor"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + <xsd:attribute name="depends-on" type="xsd:string"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The names of the beans that this bean depends on being initialized. + The bean factory will guarantee that these beans get initialized + before this bean. + + Note that dependencies are normally expressed through bean properties + or constructor arguments. This property should just be necessary for + other kinds of dependencies like statics (*ugh*) or database preparation + on startup. + + Note: This attribute will not be inherited by child bean definitions. + Hence, it needs to be specified per concrete bean definition. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="autowire-candidate" default="default" type="defaultable-boolean"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + Indicates whether or not this bean should be considered when looking + for matching candidates to satisfy another bean's autowiring requirements. + Note that this does not affect explicit references by name, which will get + resolved even if the specified bean is not marked as an autowire candidate. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="primary" type="xsd:boolean"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + Specifies that this bean should be given preference when multiple + candidates are qualified to autowire a single-valued dependency. + If exactly one 'primary' bean exists among the candidates, it + will be the autowired value. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="init-method" type="xsd:string"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The name of the custom initialization method to invoke after setting + bean properties. The method must have no arguments, but may throw any + exception. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="destroy-method" type="xsd:string"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The name of the custom destroy method to invoke on bean factory + shutdown. The method must have no arguments, but may throw any + exception. + + Note: Only invoked on beans whose lifecycle is under the full + control of the factory - which is always the case for singletons, + but not guaranteed for any other scope. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="factory-method" type="xsd:string"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The name of a factory method to use to create this object. Use + constructor-arg elements to specify arguments to the factory method, + if it takes arguments. Autowiring does not apply to factory methods. + + If the "class" attribute is present, the factory method will be a static + method on the class specified by the "class" attribute on this bean + definition. Often this will be the same class as that of the constructed + object - for example, when the factory method is used as an alternative + to a constructor. However, it may be on a different class. In that case, + the created object will *not* be of the class specified in the "class" + attribute. This is analogous to FactoryBean behavior. + + If the "factory-bean" attribute is present, the "class" attribute is not + used, and the factory method will be an instance method on the object + returned from a getBean call with the specified bean name. The factory + bean may be defined as a singleton or a prototype. + + The factory method can have any number of arguments. Autowiring is not + supported. Use indexed constructor-arg elements in conjunction with the + factory-method attribute. + + Setter Injection can be used in conjunction with a factory method. + Method Injection cannot, as the factory method returns an instance, + which will be used when the container creates the bean. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="factory-bean" type="xsd:string"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + Alternative to class attribute for factory-method usage. + If this is specified, no class attribute should be used. + This must be set to the name of a bean in the current or + ancestor factories that contains the relevant factory method. + This allows the factory itself to be configured using Dependency + Injection, and an instance (rather than static) method to be used. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:anyAttribute namespace="##other" processContents="lax"/> + </xsd:attributeGroup> + + <xsd:element name="meta" type="metaType"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + Arbitrary metadata attached to a bean definition. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:element> + + <xsd:complexType name="metaType"> + <xsd:attribute name="key" type="xsd:string" use="required"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The key name of the metadata attribute being defined. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="value" type="xsd:string" use="required"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The value of the metadata attribute being defined (as a simple String). + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + </xsd:complexType> + + <xsd:element name="bean"> + <xsd:annotation> + <xsd:documentation source="java:org.springframework.beans.factory.config.BeanDefinition"><![CDATA[ + Defines a single (usually named) bean. + + A bean definition may contain nested tags for constructor arguments, + property values, lookup methods, and replaced methods. Mixing constructor + injection and setter injection on the same bean is explicitly supported. + ]]></xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="identifiedType"> + <xsd:group ref="beanElements"/> + <xsd:attributeGroup ref="beanAttributes"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + + <xsd:element name="constructor-arg"> + <xsd:annotation> + <xsd:documentation source="java:org.springframework.beans.factory.config.ConstructorArgumentValues"> + <![CDATA[ + Bean definitions can specify zero or more constructor arguments. + This is an alternative to "autowire constructor". + Arguments correspond to either a specific index of the constructor + argument list or are supposed to be matched generically by type. + + Note: A single generic argument value will just be used once, rather + than potentially matched multiple times (as of Spring 1.1). + + constructor-arg elements are also used in conjunction with the + factory-method element to construct beans using static or instance + factory methods. + ]]></xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="description" minOccurs="0"/> + <xsd:choice minOccurs="0" maxOccurs="1"> + <xsd:element ref="bean"/> + <xsd:element ref="ref"/> + <xsd:element ref="idref"/> + <xsd:element ref="value"/> + <xsd:element ref="null"/> + <xsd:element ref="array"/> + <xsd:element ref="list"/> + <xsd:element ref="set"/> + <xsd:element ref="map"/> + <xsd:element ref="props"/> + <xsd:any namespace="##other" processContents="strict"/> + </xsd:choice> + </xsd:sequence> + <xsd:attribute name="index" type="xsd:string"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The exact index of the argument in the constructor argument list. + Only needed to avoid ambiguities, e.g. in case of 2 arguments of + the exact same type. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="type" type="xsd:string"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The exact type of the constructor argument. Only needed to avoid + ambiguities, e.g. in case of 2 single argument constructors + that can both be converted from a String. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="name" type="xsd:string"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The exact name of the argument in the constructor argument list. + Only needed to avoid ambiguities, e.g. in case of 2 arguments of + the exact same type. Note: This requires debug symbols to be + stored in the class file in order to introspect argument names! + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="ref" type="xsd:string"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + A short-cut alternative to a nested "<ref bean='...'/>" element. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="value" type="xsd:string"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + A short-cut alternative to a nested "<value>...<value/>" element. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + </xsd:complexType> + </xsd:element> + + <xsd:element name="property" type="propertyType"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + Bean definitions can have zero or more properties. + Property elements correspond to JavaBean setter methods exposed + by the bean classes. Spring supports primitives, references to other + beans in the same or related factories, lists, maps and properties. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:element> + + <xsd:element name="qualifier"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + Bean definitions can provide qualifiers to match against annotations + on a field or parameter for fine-grained autowire candidate resolution. + ]]></xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="attribute" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="type" type="xsd:string" default="org.springframework.beans.factory.annotation.Qualifier"/> + <xsd:attribute name="value" type="xsd:string"/> + </xsd:complexType> + </xsd:element> + + <xsd:element name="attribute" type="metaType"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + A qualifier element may contain attribute child elements as key-value + pairs. These will be available for matching against attributes of a + qualifier annotation on an autowired field or parameter if present. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:element> + + <xsd:element name="lookup-method"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + A lookup method causes the IoC container to override the given method + and return the bean with the name given in the bean attribute. This is + a form of Method Injection. It is particularly useful as an alternative + to implementing the BeanFactoryAware interface, in order to be able to + make getBean() calls for non-singleton instances at runtime. In this + case, Method Injection is a less invasive alternative. + ]]></xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:complexContent> + <xsd:restriction base="xsd:anyType"> + <xsd:attribute name="name" type="xsd:string"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The name of the lookup method. This method must take no arguments. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="bean" type="xsd:string"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The name of the bean in the current or ancestor factories that + the lookup method should resolve to. Often this bean will be a + prototype, in which case the lookup method will return a distinct + instance on every invocation. This is useful for single-threaded objects. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + + <xsd:element name="replaced-method"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + Similar to the lookup method mechanism, the replaced-method element + is used to control IoC container method overriding: Method Injection. + This mechanism allows the overriding of a method with arbitrary code. + ]]></xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:sequence> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element ref="arg-type"/> + </xsd:choice> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The name of the method whose implementation must be replaced by the + IoC container. If this method is not overloaded, there is no need + to use arg-type subelements. If this method is overloaded, arg-type + subelements must be used for all override definitions for the method. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="replacer" type="xsd:string"> + <xsd:annotation> + <xsd:documentation source="java:org.springframework.beans.factory.support.MethodReplacer"><![CDATA[ + Bean name of an implementation of the MethodReplacer interface in the + current or ancestor factories. This may be a singleton or prototype + bean. If it is a prototype, a new instance will be used for each + method replacement. Singleton usage is the norm. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + </xsd:complexType> + </xsd:element> + + <xsd:element name="arg-type"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + Identifies an argument for a replaced method in the event of + method overloading. + ]]></xsd:documentation> + </xsd:annotation> + <xsd:complexType mixed="true"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"/> + <xsd:attribute name="match" type="xsd:string"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + Specification of the type of an overloaded method argument as a String. + For convenience, this may be a substring of the FQN. E.g. all the + following would match "java.lang.String": + - java.lang.String + - String + - Str + + As the number of arguments will be checked also, this convenience + can often be used to save typing. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + </xsd:complexType> + </xsd:element> + + <xsd:element name="ref"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + Defines a reference to another bean in this factory or an external + factory (parent or included factory). + ]]></xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:complexContent> + <xsd:restriction base="xsd:anyType"> + <xsd:attribute name="bean" type="xsd:string"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The name of the referenced bean. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="local" type="xsd:IDREF"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The name of the referenced bean. The value must be a bean ID and thus can + be checked by the XML parser. This is therefore the preferred technique + for referencing beans within the same bean factory XML file. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="parent" type="xsd:string"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The name of the referenced bean in a parent factory. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + + <xsd:element name="idref"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The id of another bean in this factory or an external factory + (parent or included factory). + While a regular 'value' element could instead be used for the + same effect, using idref in this case allows validation of local + bean ids by the XML parser, and name completion by supporting tools. + ]]></xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:complexContent> + <xsd:restriction base="xsd:anyType"> + <xsd:attribute name="bean" type="xsd:string"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The name of the referenced bean. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="local" type="xsd:IDREF"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The name of the referenced bean. The value must be a bean ID and thus can + be checked by the XML parser. This is therefore the preferred technique + for referencing beans within the same bean factory XML file. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + + <xsd:element name="value"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + Contains a string representation of a property value. + The property may be a string, or may be converted to the required + type using the JavaBeans PropertyEditor machinery. This makes it + possible for application developers to write custom PropertyEditor + implementations that can convert strings to arbitrary target objects. + + Note that this is recommended for simple objects only. Configure + more complex objects by populating JavaBean properties with + references to other beans. + ]]></xsd:documentation> + </xsd:annotation> + <xsd:complexType mixed="true"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"/> + <xsd:attribute name="type" type="xsd:string"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The exact type that the value should be converted to. Only needed + if the type of the target property or constructor argument is + too generic: for example, in case of a collection element. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + </xsd:complexType> + </xsd:element> + + <xsd:element name="null"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + Denotes a Java null value. Necessary because an empty "value" tag + will resolve to an empty String, which will not be resolved to a + null value unless a special PropertyEditor does so. + ]]></xsd:documentation> + </xsd:annotation> + <xsd:complexType mixed="true"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"/> + </xsd:complexType> + </xsd:element> + + <!-- Collection Elements --> + <xsd:group name="collectionElements"> + <xsd:sequence> + <xsd:element ref="description" minOccurs="0"/> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element ref="bean"/> + <xsd:element ref="ref"/> + <xsd:element ref="idref"/> + <xsd:element ref="value"/> + <xsd:element ref="null"/> + <xsd:element ref="array"/> + <xsd:element ref="list"/> + <xsd:element ref="set"/> + <xsd:element ref="map"/> + <xsd:element ref="props"/> + <xsd:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + </xsd:sequence> + </xsd:group> + + <xsd:element name="array"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + An array can contain multiple inner bean, ref, collection, or value elements. + This configuration element will always result in an array, even when being + defined e.g. as a value for a map with value type Object. + ]]></xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="listOrSetType"> + <xsd:attribute name="merge" default="default" type="defaultable-boolean"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + Enables/disables merging for collections when using parent/child beans. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + + <xsd:element name="list"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + A list can contain multiple inner bean, ref, collection, or value elements. + A list can also map to an array type; the necessary conversion is performed + automatically. + ]]></xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="listOrSetType"> + <xsd:attribute name="merge" default="default" type="defaultable-boolean"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + Enables/disables merging for collections when using parent/child beans. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + + <xsd:element name="set"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + A set can contain multiple inner bean, ref, collection, or value elements. + ]]></xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="listOrSetType"> + <xsd:attribute name="merge" default="default" type="defaultable-boolean"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + Enables/disables merging for collections when using parent/child beans. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + + <xsd:element name="map"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + A mapping from a key to an object. Maps may be empty. + ]]></xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="mapType"> + <xsd:attribute name="merge" default="default" type="defaultable-boolean"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + Enables/disables merging for collections when using parent/child beans. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + + <xsd:element name="entry" type="entryType"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + A map entry can be an inner bean, ref, value, or collection. + The key of the entry is given by the "key" attribute or child element. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:element> + + <xsd:element name="props"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + Props elements differ from map elements in that values must be strings. + Props may be empty. + ]]></xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="propsType"> + <xsd:attribute name="merge" default="default" type="defaultable-boolean"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + Enables/disables merging for collections when using parent/child beans. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + + <xsd:element name="key"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + A key element can contain an inner bean, ref, value, or collection. + ]]></xsd:documentation> + </xsd:annotation> + <xsd:complexType> + <xsd:group ref="collectionElements"/> + </xsd:complexType> + </xsd:element> + + <xsd:element name="prop"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The string value of the property. Note that whitespace is trimmed + off to avoid unwanted whitespace caused by typical XML formatting. + ]]></xsd:documentation> + </xsd:annotation> + <xsd:complexType mixed="true"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"/> + <xsd:attribute name="key" type="xsd:string" use="required"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The key of the property entry. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + </xsd:complexType> + </xsd:element> + + <xsd:complexType name="propertyType"> + <xsd:sequence> + <xsd:element ref="description" minOccurs="0"/> + <xsd:choice minOccurs="0" maxOccurs="1"> + <xsd:element ref="meta"/> + <xsd:element ref="bean"/> + <xsd:element ref="ref"/> + <xsd:element ref="idref"/> + <xsd:element ref="value"/> + <xsd:element ref="null"/> + <xsd:element ref="array"/> + <xsd:element ref="list"/> + <xsd:element ref="set"/> + <xsd:element ref="map"/> + <xsd:element ref="props"/> + <xsd:any namespace="##other" processContents="strict"/> + </xsd:choice> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + The name of the property, following JavaBean naming conventions. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="ref" type="xsd:string"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + A short-cut alternative to a nested "<ref bean='...'/>". + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="value" type="xsd:string"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + A short-cut alternative to a nested "<value>...</value>" element. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + </xsd:complexType> + + <!-- Collection Types --> + + <!-- base type for collections that have (possibly) typed nested values --> + <xsd:complexType name="collectionType"> + <xsd:attribute name="value-type" type="xsd:string"> + <xsd:annotation> + <xsd:documentation source="java:java.lang.Class"><![CDATA[ + The default Java type for nested values. Must be a fully qualified + class name. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + </xsd:complexType> + + <!-- 'list' and 'set' collection type --> + <xsd:complexType name="listOrSetType"> + <xsd:complexContent> + <xsd:extension base="collectionType"> + <xsd:group ref="collectionElements"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <!-- 'map' element type --> + <xsd:complexType name="mapType"> + <xsd:complexContent> + <xsd:extension base="collectionType"> + <xsd:sequence> + <xsd:element ref="description" minOccurs="0"/> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element ref="entry"/> + </xsd:choice> + </xsd:sequence> + <xsd:attribute name="key-type" type="xsd:string"> + <xsd:annotation> + <xsd:documentation source="java:java.lang.Class"><![CDATA[ + The default Java type for nested entry keys. Must be a fully qualified + class name. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <!-- 'entry' element type --> + <xsd:complexType name="entryType"> + <xsd:sequence> + <xsd:element ref="key" minOccurs="0"/> + <xsd:group ref="collectionElements"/> + </xsd:sequence> + <xsd:attribute name="key" type="xsd:string"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + Each map element must specify its key as attribute or as child element. + A key attribute is always a String value. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="key-ref" type="xsd:string"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + A short-cut alternative to a to a "key" element with a nested + "<ref bean='...'/>". + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="value" type="xsd:string"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + A short-cut alternative to a nested "<value>...</value>" + element. + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="value-ref" type="xsd:string"> + <xsd:annotation> + <xsd:documentation><![CDATA[ + A short-cut alternative to a nested "<ref bean='...'/>". + ]]></xsd:documentation> + </xsd:annotation> + </xsd:attribute> + </xsd:complexType> + + <!-- 'props' collection type --> + <xsd:complexType name="propsType"> + <xsd:complexContent> + <xsd:extension base="collectionType"> + <xsd:sequence> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element ref="prop"/> + </xsd:choice> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <!-- simple internal types --> + <xsd:simpleType name="defaultable-boolean"> + <xsd:restriction base="xsd:NMTOKEN"> + <xsd:enumeration value="default"/> + <xsd:enumeration value="true"/> + <xsd:enumeration value="false"/> + </xsd:restriction> + </xsd:simpleType> + +</xsd:schema> Modified: trunk/interfaces/src/test/java/org/dllearner/cli/FatherCLITest.java =================================================================== --- trunk/interfaces/src/test/java/org/dllearner/cli/FatherCLITest.java 2011-08-30 09:53:50 UTC (rev 3168) +++ trunk/interfaces/src/test/java/org/dllearner/cli/FatherCLITest.java 2011-08-30 12:12:45 UTC (rev 3169) @@ -1,13 +1,15 @@ package org.dllearner.cli; import junit.framework.Assert; +import org.apache.xmlbeans.XmlObject; import org.dllearner.algorithms.ocel.OCEL; import org.dllearner.configuration.IConfiguration; import org.dllearner.configuration.spring.ApplicationContextBuilder; import org.dllearner.configuration.spring.DefaultApplicationContextBuilder; +import org.dllearner.configuration.util.ConfigurationXMLBeanConverter; +import org.dllearner.configuration.util.SpringConfigurationXMLBeanConverter; import org.dllearner.confparser3.ConfParserConfiguration; import org.dllearner.learningproblems.PosNegLPStandard; -import org.junit.BeforeClass; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.core.io.FileSystemResource; @@ -35,6 +37,10 @@ //DL-Learner Configuration Object IConfiguration configuration = new ConfParserConfiguration(confFile); + + ConfigurationXMLBeanConverter converter = new SpringConfigurationXMLBeanConverter(); + XmlObject object = converter.convert(configuration); + System.out.println(object.toString()); //Build The Application Context ApplicationContext context = builder.buildApplicationContext(configuration, springConfigResources); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |