<?xml version="1.0"?>

<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements.  See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership.  The ASF licenses this file
  ~ to you 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.
  -->

<model>
  <id>plexus-security-keys-jdo</id>
  <name>PlexusSecurityKeyManagementJdo</name>
  <version>0.9.0</version>
  <description>Plexus Security :: Key Management JDO Store.</description>
  <defaults>
    <default>
      <key>package</key>
      <value>org.codehaus.plexus.security.keys.jdo</value>
    </default>
  </defaults>

  <classes>
    <class stash.storable="false" rootElement="true">
      <name>AuthenticationKeyDatabase</name>
      <version>0.9.0</version>
      <fields>
        <field jpox.column="AUTH_KEYS">
          <name>keys</name>
          <version>0.9.0</version>
          <association>
            <type>JdoAuthenticationKey</type>
            <multiplicity>*</multiplicity>
          </association>
        </field>
      </fields>
    </class>
    <class stash.storable="true" jpox.use-identifiers-as-primary-key="false">
      <name>JdoAuthenticationKey</name>
      <version>0.9.0</version>
      <interfaces>
        <interface>org.codehaus.plexus.security.keys.AuthenticationKey</interface>
      </interfaces>
      <description>
        @plexus.component role="org.codehaus.plexus.security.keys.AuthenticationKey"
        role-hint="jdo"
      </description>
      <fields>
        <field jpox.primary-key="true"
               jpox.value-strategy="off"
               jpox.persistence-modifier="persistent"
               jpox.column="AUTHKEY">
          <name>key</name>
          <version>0.9.0</version>
          <type>String</type>
          <identifier>true</identifier>
        </field>
        <field>
          <name>forPrincipal</name>
          <version>0.9.0</version>
          <type>String</type>
          <identifier>true</identifier>
        </field>
        <field>
          <name>purpose</name>
          <version>0.9.0</version>
          <type>String</type>
        </field>
        <field>
          <name>dateCreated</name>
          <version>0.9.0</version>
          <type>Date</type>
        </field>
        <field>
          <name>dateExpires</name>
          <version>0.9.0</version>
          <type>Date</type>
        </field>
      </fields>
    </class>
  </classes>
</model>
