Author: jmcconnell
Date: Mon Feb 26 14:49:51 2007
New Revision: 512053
URL: http://svn.apache.org/viewvc?view=rev&rev=512053
Log:
a bit more realistic test using actual metadata objects and testing getting the
key from the key table, and we can actually directly influence performance by
monkeying in xml files for sql..ibatis is pretty slick
Modified:
maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/IbatisMetadataStore.java
maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/MetadataStore.java
maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/key/MetadataKey.java
maven/archiva/trunk/archiva-database/src/main/resources/org/apache/maven/archiva/database/CreateTables.xml
maven/archiva/trunk/archiva-database/src/main/resources/org/apache/maven/archiva/database/MetadataKey.xml
maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/IbatisMetadataStoreTest.java
Modified:
maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/IbatisMetadataStore.java
URL:
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/IbatisMetadataStore.java?view=diff&rev=512053&r1=512052&r2=512053
==============================================================================
---
maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/IbatisMetadataStore.java
(original)
+++
maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/IbatisMetadataStore.java
Mon Feb 26 14:49:51 2007
@@ -54,7 +54,7 @@
String tableName = rs.getString( "TABLE_NAME" );
// if it does then we are already initialized
- if ( tableName.toLowerCase().equals( "MetadataKeys" ) )
+ if ( tableName.toLowerCase().equals( "metadatakeys" ) )
{
return;
}
@@ -102,7 +102,7 @@
}
}
- public void addMetadataKey( MetadataKey metadataKey )
+ public void addMetadata( Metadata metadata )
throws MetadataStoreException
{
SqlMapClient sqlMap = ibatisHelper.getSqlMapClient();
@@ -112,7 +112,7 @@
sqlMap.startTransaction();
getLogger().info( "Adding metadata key" );
- sqlMap.update( "addMetadataKey", metadataKey );
+ sqlMap.update( "addMetadataKey", metadata );
sqlMap.commitTransaction();
}
@@ -141,5 +141,46 @@
}
}
}
+
+ public MetadataKey getMetadataKey( Metadata metadata )
+ throws MetadataStoreException
+ {
+ SqlMapClient sqlMap = ibatisHelper.getSqlMapClient();
+
+ try
+ {
+ sqlMap.startTransaction();
+
+ getLogger().info( "Getting metadata key" );
+ MetadataKey newMetadataKey = (MetadataKey) sqlMap.queryForObject(
"getMetadataKey", metadata );
+
+ return newMetadataKey;
+
+ }
+ catch ( SQLException e )
+ {
+ getLogger().error( "Error while adding metadata, showing all linked
exceptions in SQLException." );
+
+ while ( e != null )
+ {
+ getLogger().error( e.getMessage(), e );
+
+ e = e.getNextException();
+ }
+
+ throw new MetadataStoreException ( "Error while interacting with the
database.", e );
+ }
+ finally
+ {
+ try
+ {
+ sqlMap.endTransaction();
+ }
+ catch ( SQLException e )
+ {
+ e.printStackTrace();
+ }
+ }
+}
}
Modified:
maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/MetadataStore.java
URL:
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/MetadataStore.java?view=diff&rev=512053&r1=512052&r2=512053
==============================================================================
---
maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/MetadataStore.java
(original)
+++
maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/MetadataStore.java
Mon Feb 26 14:49:51 2007
@@ -7,6 +7,8 @@
{
public static final String ROLE = MetadataStore.class.getName();
- public void addMetadataKey( MetadataKey metadataKey ) throws
MetadataStoreException;
+ public void addMetadata( Metadata metadata ) throws MetadataStoreException;
+
+ public MetadataKey getMetadataKey( Metadata metadata ) throws
MetadataStoreException;
}
Modified:
maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/key/MetadataKey.java
URL:
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/key/MetadataKey.java?view=diff&rev=512053&r1=512052&r2=512053
==============================================================================
---
maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/key/MetadataKey.java
(original)
+++
maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/key/MetadataKey.java
Mon Feb 26 14:49:51 2007
@@ -5,7 +5,7 @@
private String groupId;
private String artifactId;
private String version;
- private long id;
+ private int metadataKey;
public String getArtifactId() {
return artifactId;
@@ -19,11 +19,11 @@
public void setGroupId(String groupId) {
this.groupId = groupId;
}
- public long getId() {
- return id;
+ public int getMetadataKey() {
+ return metadataKey;
}
- public void setId(long id) {
- this.id = id;
+ public void setMetadataKey(int id) {
+ this.metadataKey = id;
}
public String getVersion() {
return version;
Modified:
maven/archiva/trunk/archiva-database/src/main/resources/org/apache/maven/archiva/database/CreateTables.xml
URL:
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-database/src/main/resources/org/apache/maven/archiva/database/CreateTables.xml?view=diff&rev=512053&r1=512052&r2=512053
==============================================================================
---
maven/archiva/trunk/archiva-database/src/main/resources/org/apache/maven/archiva/database/CreateTables.xml
(original)
+++
maven/archiva/trunk/archiva-database/src/main/resources/org/apache/maven/archiva/database/CreateTables.xml
Mon Feb 26 14:49:51 2007
@@ -7,6 +7,8 @@
<!--
METADATA_KEYS is the index table for all other tables
+
+need to make the lookup on this table fast, perhaps by indexing the
combination of g:a:v in a lookup column
-->
<statement id="initializeMetadataKeyTable">
CREATE TABLE MetadataKeys (
Modified:
maven/archiva/trunk/archiva-database/src/main/resources/org/apache/maven/archiva/database/MetadataKey.xml
URL:
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-database/src/main/resources/org/apache/maven/archiva/database/MetadataKey.xml?view=diff&rev=512053&r1=512052&r2=512053
==============================================================================
---
maven/archiva/trunk/archiva-database/src/main/resources/org/apache/maven/archiva/database/MetadataKey.xml
(original)
+++
maven/archiva/trunk/archiva-database/src/main/resources/org/apache/maven/archiva/database/MetadataKey.xml
Mon Feb 26 14:49:51 2007
@@ -7,18 +7,18 @@
<select id="getMetadataKey"
resultClass="org.apache.maven.archiva.database.key.MetadataKey">
SELECT
- metadataKey as id
- groupId as groupId,
- artifactId as artifactId,
- version as version,
+ metadataKey,
+ groupId,
+ artifactId,
+ version
FROM MetadataKeys
- WHERE metadataKey = #value#
+ WHERE groupId = #groupId# and artifactId = #artifactId# and version =
#version#
</select>
-<insert id="addMetadataKey"
parameterClass="org.apache.maven.archiva.database.key.MetadataKey">
+<insert id="addMetadataKey"
parameterClass="org.apache.maven.artifact.repository.metadata.Metadata">
INSERT INTO
MetadataKeys ( groupId, artifactId, version )
- VALUES (#groupId#, #artifactId#, #version# )
+ VALUES ( #groupId#, #artifactId#, #version# )
</insert>
</sqlMap>
Modified:
maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/IbatisMetadataStoreTest.java
URL:
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/IbatisMetadataStoreTest.java?view=diff&rev=512053&r1=512052&r2=512053
==============================================================================
---
maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/IbatisMetadataStoreTest.java
(original)
+++
maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/IbatisMetadataStoreTest.java
Mon Feb 26 14:49:51 2007
@@ -1,6 +1,7 @@
package org.apache.maven.archiva.database;
import org.apache.maven.archiva.database.key.MetadataKey;
+import org.apache.maven.artifact.repository.metadata.Metadata;
import org.codehaus.plexus.PlexusTestCase;
public class IbatisMetadataStoreTest
@@ -18,13 +19,27 @@
{
MetadataStore store = (MetadataStore) lookup( MetadataStore.ROLE,
"ibatis" );
- MetadataKey testMetadataKey = new MetadataKey();
+ assertNotNull( store );
+ }
+
+ public void testMetadataKeyRetrieval() throws Exception
+ {
+ MetadataStore store = (MetadataStore) lookup( MetadataStore.ROLE,
"ibatis" );
+
+ Metadata metadata = new Metadata();
+ metadata.setArtifactId( "testArtifactId" );
+ metadata.setGroupId( "testGroupId" );
+ metadata.setVersion( "testVersion" );
+
+ store.addMetadata( metadata );
+
+ MetadataKey metadataKey = store.getMetadataKey( metadata );
- testMetadataKey.setArtifactId( "testArtfiactId" );
- testMetadataKey.setGroupId( "testGroupId" );
- testMetadataKey.setVersion( "testVersion" );
+ assertTrue( metadataKey.getMetadataKey() > 0 );
+ assertEquals( metadataKey.getArtifactId(), metadata.getArtifactId() );
+ assertEquals( metadataKey.getGroupId(), metadata.getGroupId() );
+ assertEquals( metadataKey.getVersion(), metadata.getVersion() );
- store.addMetadataKey( testMetadataKey );
}