<faces-config>
	<faces-config-extension>
   		<namespace-uri>http://www.openntf.org/xsp/xpt</namespace-uri>
   		<default-prefix>xpt</default-prefix>
	</faces-config-extension>

	<complex-type>
        <description>Object Data as java.util.List for Tabular Sources</description>
        <display-name>ObjectListDataSource</display-name>
        <complex-class>org.openntf.xpt.objectlist.datasource.ObjectListDataSource</complex-class>
        <complex-id>org.openntf.xpt.objectlist.datasource.ObjectListDataSource</complex-id>
		<property>
			<description>Triggered to create the java.util.List Object</description>
			<display-name>Create a java.util.List object for export</display-name>
			<property-name>buildValues</property-name>
			<property-class>javax.faces.el.MethodBinding</property-class>
			<property-extension>
				<method-binding-property>true</method-binding-property>
			</property-extension>
		</property>
		<property>
			<description>Attribute on a object to sort</description>
			<display-name>SortAttribute</display-name>
			<property-name>sortAttribute</property-name>
			<property-class>java.lang.String</property-class>
			<property-extension>
			</property-extension>
		</property>
		<property>
			<description>Defines the field containing the id. Must be accessible by a getter</description>
			<display-name>IdAttribute</display-name>
			<property-name>idAttribute</property-name>
			<property-class>java.lang.String</property-class>
			<property-extension>
			</property-extension>
		</property>
		<property>
			<description>The sort order</description>
			<display-name>Ascending</display-name>
			<property-name>ascending</property-name>
			<property-class>boolean</property-class>
			<property-extension>
			</property-extension>
		</property>
		<property>
      		<property-name>sortableAttributes</property-name>
      		<property-class>java.util.List</property-class>
      		<property-extension>
        		<property-item-class>string</property-item-class>
        		<collection-property>true</collection-property>
        		<property-add-method>addSortableAttribute</property-add-method>
      		</property-extension>
    	</property>
		
		
  		<group-type-ref>com.ibm.xsp.model.group.DataSource</group-type-ref>
    	<complex-extension>
    		<tag-name>objectlistSource</tag-name>
    		<base-complex-id>dataInterface</base-complex-id>
    	</complex-extension>
    </complex-type>
    
    <complex-type>
        <description>Single Object representation for CRUD operations</description>
        <display-name>DSSObject</display-name>
        <complex-class>org.openntf.xpt.objectlist.datasource.DSSObjectDataSource</complex-class>
        <complex-id>org.openntf.xpt.objectlist.datasource.dssobjectdatasource</complex-id>
		<property>
			<description>Function to create a SingleObjectStorage</description>
			<display-name>SingleObjectStorageService</display-name>
			<property-name>objectStorageService</property-name>
			<property-class>javax.faces.el.MethodBinding</property-class>
			<property-extension>
				<method-binding-property>true</method-binding-property>
			</property-extension>
		</property>
		<property>
			<description>Name of the database</description>
			<display-name>databaseName</display-name>
			<property-name>databaseName</property-name>
			<property-class>java.lang.String</property-class>
			<property-extension>
			</property-extension>
		</property>
		<property>
			<description>ID of the object</description>
			<display-name>objectId</display-name>
			<property-name>objectId</property-name>
			<property-class>java.lang.String</property-class>
			<property-extension>
			</property-extension>
		</property>
		
		<property>
			<description>Action -> newObject, readObject or editObject</description>
			<display-name>action</display-name>
			<property-name>action</property-name>
			<property-class>java.lang.String</property-class>
			<property-extension>
			</property-extension>
		</property>
		
		<property>
			<description>Method is execute before save. cDSSObject is the current object</description>
			<display-name>querySave</display-name>
			<property-name>querySave</property-name>
			<property-class>javax.faces.el.MethodBinding</property-class>
			<property-extension>
				<method-binding-property>true</method-binding-property>
			</property-extension>
		</property>
		<property>
			<description>Method is execute after save. cDSSObject is the current object</description>
			<display-name>postSave</display-name>
			<property-name>postSave</property-name>
			<property-class>javax.faces.el.MethodBinding</property-class>
			<property-extension>
				<method-binding-property>true</method-binding-property>
			</property-extension>
		</property>
		
		<property>
			<description>Method is execute after creating a new Object. cDSSObject is the new object</description>
			<display-name>postNew</display-name>
			<property-name>postNew</property-name>
			<property-class>javax.faces.el.MethodBinding</property-class>
			<property-extension>
				<method-binding-property>true</method-binding-property>
			</property-extension>
		</property>
		
		<property>
			<description>Method is execute after reading the object. cDSSObject is the current object</description>
			<display-name>postOpen</display-name>
			<property-name>postOpen</property-name>
			<property-class>javax.faces.el.MethodBinding</property-class>
			<property-extension>
				<method-binding-property>true</method-binding-property>
			</property-extension>
		</property>
		
  		<group-type-ref>com.ibm.xsp.model.group.DataSource</group-type-ref>
    	<complex-extension>
    		<tag-name>dssObjectSource</tag-name>
    		<base-complex-id>dataInterface</base-complex-id>
    	</complex-extension>
    </complex-type>
    
</faces-config>
