<!--
Copyright 2004 The Apache Software Foundation

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

<descriptor-repository version="1.0">

	<!--
	   - S E C U R I T Y  U S E R
	-->	
	<class-descriptor
	    class="org.apache.jetspeed.security.om.impl.InternalUserPrincipalImpl"
	    proxy="dynamic"
	    table="SECURITY_PRINCIPAL"
	>
	    <documentation>Represents a user principal.</documentation>
	    <field-descriptor
	        name="principalId"
	        column="principal_id"
	        jdbc-type="BIGINT"
	        primarykey="true"
	        indexed="true"
	        autoincrement="true"
	    >
	    </field-descriptor>
	    <field-descriptor
	        name="classname"
	        column="classname"
	        jdbc-type="VARCHAR"
	        nullable="false"
	        length="254"
	    >
	    </field-descriptor>
	    <field-descriptor
	        name="isMappingOnly"
	        column="is_mapping_only"
	        jdbc-type="BIT"
	        nullable="false"
	    >
	    </field-descriptor>
	    <field-descriptor
	        name="fullPath"
	        column="full_path"
	        jdbc-type="VARCHAR"
	        nullable="false"
	        length="254"
	    >
	    </field-descriptor>
	    <field-descriptor
	        name="creationDate"
	        column="creation_date"
	        jdbc-type="TIMESTAMP"
	        nullable="false"
	    >
	    </field-descriptor>
	    <field-descriptor
	        name="modifiedDate"
	        column="modified_date"
	        jdbc-type="TIMESTAMP"
	        nullable="false"
	    >
	    </field-descriptor>
      <field-descriptor
          name="enabled"
          column="is_enabled"
          jdbc-type="BIT"
          nullable="false"
      >
      </field-descriptor>      
	    <collection-descriptor
	        name="credentials"
	        element-class-ref="org.apache.jetspeed.security.om.impl.InternalCredentialImpl"
          proxy="true"
          refresh="true"          
	        auto-retrieve="true"
	        auto-update="object"
	        auto-delete="object"
	    >
	        <documentation>This is the reference to security credentials.</documentation>
	        <inverse-foreignkey field-ref="principalId"/>
	    </collection-descriptor>
	    <collection-descriptor
	        name="rolePrincipals"
	        element-class-ref="org.apache.jetspeed.security.om.impl.InternalRolePrincipalImpl"
	        proxy="true"
	        refresh="true"
	        auto-retrieve="true"
	        auto-update="link"
	        auto-delete="link"
	        indirection-table="SECURITY_USER_ROLE"
	    >
	        <documentation>This is the reference to role principals.</documentation>
	        <fk-pointing-to-this-class column="USER_ID"/>
	        <fk-pointing-to-element-class column="ROLE_ID"/>
	    </collection-descriptor>
	    <collection-descriptor
	        name="groupPrincipals"
	        element-class-ref="org.apache.jetspeed.security.om.impl.InternalGroupPrincipalImpl"
	        proxy="true"
	        refresh="true"
	        auto-retrieve="true"
	        auto-update="link"
	        auto-delete="link"
	        indirection-table="SECURITY_USER_GROUP"
	    >
	        <documentation>This is the reference to group principals.</documentation>
	        <fk-pointing-to-this-class column="USER_ID"/>
	        <fk-pointing-to-element-class column="GROUP_ID"/>
	    </collection-descriptor>
	    <collection-descriptor
	        name="permissions"
	        element-class-ref="org.apache.jetspeed.security.om.impl.InternalPermissionImpl"
	        proxy="true"
	        refresh="true"
	        auto-retrieve="true"
	        auto-update="link"
	        auto-delete="link"
	        indirection-table="PRINCIPAL_PERMISSION"
	    >
	        <documentation>This is the reference to a policy permission.</documentation>
	        <fk-pointing-to-this-class column="PRINCIPAL_ID"/>
	        <fk-pointing-to-element-class column="PERMISSION_ID"/>
	    </collection-descriptor>
	</class-descriptor>
	
	<!--
	   - S E C U R I T Y  C R E D E N T I A L
	-->
	<class-descriptor
	    class="org.apache.jetspeed.security.om.impl.InternalCredentialImpl"
	    proxy="dynamic"
	    table="SECURITY_CREDENTIAL"
	>
	    <field-descriptor
	        name="credentialId"
	        column="credential_id"
	        jdbc-type="BIGINT"
	        primarykey="true"
	        indexed="true"
	        autoincrement="true"
	    >
	    </field-descriptor>
	    <field-descriptor
	        name="principalId"
	        column="principal_id"
	        jdbc-type="BIGINT"
	    >
	    </field-descriptor>
	    <field-descriptor
	        name="value"
	        column="value"
	        jdbc-type="VARCHAR"
	        nullable="false"
	        length="150"
	    >
	    </field-descriptor>
	     <field-descriptor
	        name="type"
	        column="type"
	        jdbc-type="SMALLINT"
	        nullable="false"
	    >
	    </field-descriptor>
	    <field-descriptor
	        name="classname"
	        column="classname"
	        jdbc-type="VARCHAR"
	        nullable="true"
	        length="254"
	    >
	    </field-descriptor>
	    <field-descriptor
	        name="creationDate"
	        column="creation_date"
	        jdbc-type="TIMESTAMP"
	        nullable="false"
	    >
	    </field-descriptor>
	    <field-descriptor
	        name="modifiedDate"
	        column="modified_date"
	        jdbc-type="TIMESTAMP"
	        nullable="false"
	    >
	    </field-descriptor>
      <field-descriptor
          name="previousAuthenticationDate"
          column="prev_auth_date"
          jdbc-type="TIMESTAMP"
          nullable="true"
      >
      </field-descriptor>
      <field-descriptor
          name="lastAuthenticationDate"
          column="last_auth_date"
          jdbc-type="TIMESTAMP"
          nullable="true"
      >
      </field-descriptor>
      <field-descriptor
          name="updateRequired"
          column="update_required"
          jdbc-type="BIT"
          nullable="false"
      >
      </field-descriptor>      
      <field-descriptor
          name="encoded"
          column="is_encoded"
          jdbc-type="BIT"
          nullable="false"
      >
      </field-descriptor>      
      <field-descriptor
          name="enabled"
          column="is_enabled"
          jdbc-type="BIT"
          nullable="false"
      >
      </field-descriptor>      
      <field-descriptor
          name="authenticationFailures"
          column="auth_failures"
          jdbc-type="SMALLINT"
          nullable="false"
      >
      </field-descriptor>
      <field-descriptor
          name="expired"
          column="is_expired"
          jdbc-type="BIT"
          nullable="false"
      >
      </field-descriptor>                  
      <field-descriptor
          name="expirationDate"
          column="expiration_date"
          jdbc-type="DATE"
          nullable="true"
      >
      </field-descriptor>      
	</class-descriptor>
	
	<!--
	   - S E C U R I T Y  R O L E
	-->	
	<class-descriptor
	    class="org.apache.jetspeed.security.om.impl.InternalRolePrincipalImpl"
	    proxy="dynamic"
	    table="SECURITY_PRINCIPAL"
	>
	    <documentation>Represents a role principal.</documentation>
		<field-descriptor
	        name="principalId"
	        column="principal_id"
	        jdbc-type="BIGINT"
	        primarykey="true"
	        indexed="true"
	        autoincrement="true"
	    >
	    </field-descriptor>
	    <field-descriptor
	        name="classname"
	        column="classname"
	        jdbc-type="VARCHAR"
	        nullable="false"
	        length="254"
	    >
	    </field-descriptor>
	    <field-descriptor
	        name="isMappingOnly"
	        column="is_mapping_only"
	        jdbc-type="BIT"
	        nullable="false"
	    >
	    </field-descriptor>
	    <field-descriptor
	        name="fullPath"
	        column="full_path"
	        jdbc-type="VARCHAR"
	        nullable="false"
	        length="254"
	    >
	    </field-descriptor>
	    <field-descriptor
	        name="creationDate"
	        column="creation_date"
	        jdbc-type="TIMESTAMP"
	        nullable="false"
	    >
	    </field-descriptor>
	    <field-descriptor
	        name="modifiedDate"
	        column="modified_date"
	        jdbc-type="TIMESTAMP"
	        nullable="false"
	    >
	    </field-descriptor>
      <field-descriptor
          name="enabled"
          column="is_enabled"
          jdbc-type="BIT"
          nullable="false"
      >
      </field-descriptor>      
	    <collection-descriptor
	        name="userPrincipals"
	        element-class-ref="org.apache.jetspeed.security.om.impl.InternalUserPrincipalImpl"
	        proxy="true"
	        refresh="true"
	        auto-retrieve="true"
	        auto-update="link"
	        auto-delete="link"
	        indirection-table="SECURITY_USER_ROLE"
	    >
	        <documentation>This is the reference to user principals.</documentation>
	        <fk-pointing-to-this-class column="ROLE_ID"/>
	        <fk-pointing-to-element-class column="USER_ID"/>
	    </collection-descriptor>
	    <collection-descriptor
	        name="groupPrincipals"
	        element-class-ref="org.apache.jetspeed.security.om.impl.InternalGroupPrincipalImpl"
	        proxy="true"
	        refresh="true"
	        auto-retrieve="true"
	        auto-update="link"
	        auto-delete="link"
	        indirection-table="SECURITY_GROUP_ROLE"
	    >
	        <documentation>This is the reference to group principals.</documentation>
	        <fk-pointing-to-this-class column="ROLE_ID"/>
	        <fk-pointing-to-element-class column="GROUP_ID"/>
	    </collection-descriptor>
	    <collection-descriptor
	        name="permissions"
	        element-class-ref="org.apache.jetspeed.security.om.impl.InternalPermissionImpl"
	        proxy="false"
	        refresh="false"
	        auto-retrieve="false"
	        auto-update="link"
	        auto-delete="link"
	        indirection-table="PRINCIPAL_PERMISSION"
	    >
	        <documentation>This is the reference to a policy permission.</documentation>
	        <fk-pointing-to-this-class column="PRINCIPAL_ID"/>
	        <fk-pointing-to-element-class column="PERMISSION_ID"/>
	    </collection-descriptor>
	</class-descriptor>
	
	<!--
	   - S E C U R I T Y  G R O U P
	-->	
	<class-descriptor
	    class="org.apache.jetspeed.security.om.impl.InternalGroupPrincipalImpl"
	    proxy="dynamic"
	    table="SECURITY_PRINCIPAL"
	>
	    <documentation>Represents a group principal.</documentation>
		<field-descriptor
	        name="principalId"
	        column="principal_id"
	        jdbc-type="BIGINT"
	        primarykey="true"
	        indexed="true"
	        autoincrement="true"
	    >
	    </field-descriptor>
	    <field-descriptor
	        name="classname"
	        column="classname"
	        jdbc-type="VARCHAR"
	        nullable="false"
	        length="254"
	    >
	    </field-descriptor>
	    <field-descriptor
	        name="isMappingOnly"
	        column="is_mapping_only"
	        jdbc-type="BIT"
	        nullable="false"
	    >
	    </field-descriptor>
	    <field-descriptor
	        name="fullPath"
	        column="full_path"
	        jdbc-type="VARCHAR"
	        nullable="false"
	        length="254"
	    >
	    </field-descriptor>
	    <field-descriptor
	        name="creationDate"
	        column="creation_date"
	        jdbc-type="TIMESTAMP"
	        nullable="false"
	    >
	    </field-descriptor>
	    <field-descriptor
	        name="modifiedDate"
	        column="modified_date"
	        jdbc-type="TIMESTAMP"
	        nullable="false"
	    >
	    </field-descriptor>
      <field-descriptor
          name="enabled"
          column="is_enabled"
          jdbc-type="BIT"
          nullable="false"
      >
      </field-descriptor>      
	    <collection-descriptor
	        name="userPrincipals"
	        element-class-ref="org.apache.jetspeed.security.om.impl.InternalUserPrincipalImpl"
	        proxy="true"
	        refresh="true"
	        auto-retrieve="true"
	        auto-update="link"
	        auto-delete="link"
	        indirection-table="SECURITY_USER_GROUP"
	    >
	        <documentation>This is the reference to user principals.</documentation>
	        <fk-pointing-to-this-class column="GROUP_ID"/>
	        <fk-pointing-to-element-class column="USER_ID"/>
	    </collection-descriptor>
	    <collection-descriptor
	        name="rolePrincipals"
	        element-class-ref="org.apache.jetspeed.security.om.impl.InternalRolePrincipalImpl"
	        proxy="true"
	        refresh="true"
	        auto-retrieve="true"
	        auto-update="link"
	        auto-delete="link"
	        indirection-table="SECURITY_GROUP_ROLE"
	    >
	        <documentation>This is the reference to group principals.</documentation>
	        <fk-pointing-to-this-class column="GROUP_ID"/>
	        <fk-pointing-to-element-class column="ROLE_ID"/>
	    </collection-descriptor>
	    <collection-descriptor
	        name="permissions"
	        element-class-ref="org.apache.jetspeed.security.om.impl.InternalPermissionImpl"
	        proxy="false"
	        refresh="false"
	        auto-retrieve="false"
	        auto-update="link"
	        auto-delete="link"
	        indirection-table="PRINCIPAL_PERMISSION"
	    >
	        <documentation>This is the reference to a policy permission.</documentation>
	        <fk-pointing-to-this-class column="PRINCIPAL_ID"/>
	        <fk-pointing-to-element-class column="PERMISSION_ID"/>
	    </collection-descriptor>
	</class-descriptor>
	
	<!--
	   - S E C U R I T Y  P R I N C I P A L
	-->	
	<class-descriptor
	    class="org.apache.jetspeed.security.om.impl.InternalPrincipalImpl"
	    proxy="dynamic"
	    table="SECURITY_PRINCIPAL"
	>
	    <documentation>Represents a security principal in the security policy.</documentation>
	    <field-descriptor
	        name="principalId"
	        column="principal_id"
	        jdbc-type="BIGINT"
	        primarykey="true"
	        indexed="true"
	        autoincrement="true"
	    >
	    </field-descriptor>
	    <field-descriptor
	        name="classname"
	        column="classname"
	        jdbc-type="VARCHAR"
	        nullable="false"
	        length="254"
	    >
	    </field-descriptor>
	    <field-descriptor
	        name="isMappingOnly"
	        column="is_mapping_only"
	        jdbc-type="BIT"
	        nullable="false"
	    >
	    </field-descriptor>
	    <field-descriptor
	        name="fullPath"
	        column="full_path"
	        jdbc-type="VARCHAR"
	        nullable="false"
	        length="254"
	    >
	    </field-descriptor>
	    <field-descriptor
	        name="creationDate"
	        column="creation_date"
	        jdbc-type="TIMESTAMP"
	        nullable="false"
	    >
	    </field-descriptor>
	    <field-descriptor
	        name="modifiedDate"
	        column="modified_date"
	        jdbc-type="TIMESTAMP"
	        nullable="false"
	    >
	    </field-descriptor>
      <field-descriptor
          name="enabled"
          column="is_enabled"
          jdbc-type="BIT"
          nullable="false"
      >
      </field-descriptor>      
	    <collection-descriptor
	        name="permissions"
	        element-class-ref="org.apache.jetspeed.security.om.impl.InternalPermissionImpl"
	        proxy="true"
	        refresh="true"
	        auto-retrieve="true"
	        auto-update="link"
	        auto-delete="link"
	        indirection-table="PRINCIPAL_PERMISSION"
	    >
	        <documentation>This is the reference to a policy permission.</documentation>
	        <fk-pointing-to-this-class column="PRINCIPAL_ID"/>
	        <fk-pointing-to-element-class column="PERMISSION_ID"/>
	    </collection-descriptor>
	</class-descriptor>
	
	<!--
	   - S E C U R I T Y  P E R M I S S I O N
	-->	
	<class-descriptor
	    class="org.apache.jetspeed.security.om.impl.InternalPermissionImpl"
	    proxy="dynamic"
	    table="SECURITY_PERMISSION"
	>
	    <documentation>Represents a security permission in the security policy.</documentation>
	    <field-descriptor
	        name="permissionId"
	        column="permission_id"
	        jdbc-type="BIGINT"
	        primarykey="true"
	        indexed="true"
	        autoincrement="true"
	    >
	    </field-descriptor>
	    <field-descriptor
	        name="classname"
	        column="classname"
	        jdbc-type="VARCHAR"
	        nullable="false"
	        length="254"
	    >
	    </field-descriptor>
	    <field-descriptor
	        name="name"
	        column="name"
	        jdbc-type="VARCHAR"
	        nullable="false"
	        length="254"
	    >
	    </field-descriptor>
	    <field-descriptor
	        name="actions"
	        column="actions"
	        jdbc-type="VARCHAR"
	        nullable="false"
	        length="254"
	    >
	    </field-descriptor>
	    <field-descriptor
	        name="creationDate"
	        column="creation_date"
	        jdbc-type="TIMESTAMP"
	        nullable="false"
	    >
	    </field-descriptor>
	    <field-descriptor
	        name="modifiedDate"
	        column="modified_date"
	        jdbc-type="TIMESTAMP"
	        nullable="false"
	    >
	    </field-descriptor>
	        <collection-descriptor
	        name="principals"
	        element-class-ref="org.apache.jetspeed.security.om.impl.InternalPrincipalImpl"
	        proxy="true"
	        refresh="true"
	        auto-retrieve="true"
	        auto-update="link"
	        auto-delete="link"
	        indirection-table="PRINCIPAL_PERMISSION"
	    >
	        <documentation>This is the reference to a permission principals.</documentation>
	        <fk-pointing-to-this-class column="PERMISSION_ID"/>
	        <fk-pointing-to-element-class column="PRINCIPAL_ID"/>
	    </collection-descriptor>
	</class-descriptor>

</descriptor-repository>
