aboutsummaryrefslogtreecommitdiffstats
path: root/archiva-base/archiva-model
diff options
context:
space:
mode:
authorJoakim Erdfelt <joakime@apache.org>2007-04-03 15:21:33 +0000
committerJoakim Erdfelt <joakime@apache.org>2007-04-03 15:21:33 +0000
commit74cb10586cf7f1c415930d5ab1d59a6e44b253ee (patch)
treea6c5079ac724479adc4d6eabfb7144e38f713732 /archiva-base/archiva-model
parent54e1d8c6083cd552d9b8d3ee2d2ced20e9a6f460 (diff)
downloadarchiva-74cb10586cf7f1c415930d5ab1d59a6e44b253ee.tar.gz
archiva-74cb10586cf7f1c415930d5ab1d59a6e44b253ee.zip
Updating branch with latest work towards database refactor.
git-svn-id: https://svn.apache.org/repos/asf/maven/archiva/branches/archiva-jpox-database-refactor@525176 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'archiva-base/archiva-model')
-rw-r--r--archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaArtifact.java264
-rw-r--r--archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaArtifactPlatformDetails.java31
-rw-r--r--archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaRepository.java134
-rw-r--r--archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/DependencyScope.java46
-rw-r--r--archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/RepositoryURL.java156
-rw-r--r--archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/platform/JavaArtifactHelper.java44
-rw-r--r--archiva-base/archiva-model/src/main/mdo/archiva-base.xml153
7 files changed, 810 insertions, 18 deletions
diff --git a/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaArtifact.java b/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaArtifact.java
new file mode 100644
index 000000000..8e4f2c4ac
--- /dev/null
+++ b/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaArtifact.java
@@ -0,0 +1,264 @@
+package org.apache.maven.archiva.model;
+
+/*
+ * 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.
+ */
+
+import org.apache.maven.archiva.common.utils.VersionUtil;
+import org.codehaus.plexus.util.StringUtils;
+
+/**
+ * ArchivaArtifact - Mutable artifact object.
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class ArchivaArtifact
+{
+ private ArchivaArtifactModel model;
+
+ private ArchivaArtifactPlatformDetails platformDetails;
+
+ private String baseVersion;
+
+ private boolean snapshot = false;
+
+ public ArchivaArtifact( String groupId, String artifactId, String version, String classifier, String type )
+ {
+ this( null, groupId, artifactId, version, classifier, type );
+ }
+
+ public ArchivaArtifact( ArchivaRepository repository, String groupId, String artifactId, String version,
+ String classifier, String type )
+ {
+ if ( empty( groupId ) )
+ {
+ throw new IllegalArgumentException( "Unable to create ArchivaArtifact with empty groupId." );
+ }
+
+ if ( empty( artifactId ) )
+ {
+ throw new IllegalArgumentException( "Unable to create ArchivaArtifact with empty artifactId." );
+ }
+
+ if ( empty( version ) )
+ {
+ throw new IllegalArgumentException( "Unable to create ArchivaArtifact with empty version." );
+ }
+
+ if ( empty( type ) )
+ {
+ throw new IllegalArgumentException( "Unable to create ArchivaArtifact with empty type." );
+ }
+
+ model = new ArchivaArtifactModel();
+
+ if ( repository == null )
+ {
+ model.setContentKey( new RepositoryContent( groupId, artifactId, version ) );
+ }
+ else
+ {
+ model.setContentKey( new RepositoryContent( repository.getModel(), groupId, artifactId, version ) );
+ }
+ model.setClassifier( StringUtils.defaultString( classifier ) );
+ model.setType( type );
+
+ this.snapshot = VersionUtil.isSnapshot( version );
+ this.baseVersion = VersionUtil.getBaseVersion( version );
+ }
+
+ public ArchivaArtifactModel getModel()
+ {
+ return model;
+ }
+
+ public String getGroupId()
+ {
+ return model.getContentKey().getGroupId();
+ }
+
+ public String getArtifactId()
+ {
+ return model.getContentKey().getArtifactId();
+ }
+
+ public String getVersion()
+ {
+ return model.getContentKey().getVersion();
+ }
+
+ public String getBaseVersion()
+ {
+ return baseVersion;
+ }
+
+ public boolean isSnapshot()
+ {
+ return snapshot;
+ }
+
+ public String getClassifier()
+ {
+ return model.getClassifier();
+ }
+
+ public String getType()
+ {
+ return model.getType();
+ }
+
+ public boolean hasClassifier()
+ {
+ return StringUtils.isNotEmpty( model.getClassifier() );
+ }
+
+ public int hashCode()
+ {
+ final int PRIME = 31;
+ int result = 1;
+ if ( model != null )
+ {
+ RepositoryContent key = model.getContentKey();
+ if ( key != null )
+ {
+ result = PRIME * result + ( ( key.getGroupId() == null ) ? 0 : key.getGroupId().hashCode() );
+ result = PRIME * result + ( ( key.getArtifactId() == null ) ? 0 : key.getArtifactId().hashCode() );
+ result = PRIME * result + ( ( key.getVersion() == null ) ? 0 : key.getVersion().hashCode() );
+ result = PRIME * result + ( ( model.getClassifier() == null ) ? 0 : model.getClassifier().hashCode() );
+ result = PRIME * result + ( ( model.getType() == null ) ? 0 : model.getType().hashCode() );
+ }
+ }
+ return result;
+ }
+
+ public boolean equals( Object obj )
+ {
+ if ( this == obj )
+ {
+ return true;
+ }
+
+ if ( obj == null )
+ {
+ return false;
+ }
+
+ if ( getClass() != obj.getClass() )
+ {
+ return false;
+ }
+
+ final ArchivaArtifact other = (ArchivaArtifact) obj;
+
+ if ( model == null )
+ {
+ if ( other.model != null )
+ {
+ return false;
+ }
+ }
+ else
+ {
+ RepositoryContent key = model.getContentKey();
+ RepositoryContent otherkey = other.model.getContentKey();
+
+ if ( key == null )
+ {
+ if ( otherkey != null )
+ {
+ return false;
+ }
+ }
+ else
+ {
+ if ( !equals( key.getGroupId(), otherkey.getGroupId() )
+ || !equals( key.getArtifactId(), otherkey.getArtifactId() )
+ || !equals( key.getVersion(), otherkey.getVersion() )
+ || !equals( model.getClassifier(), other.model.getClassifier() )
+ || !equals( model.getType(), other.model.getType() ) )
+ {
+ return false;
+ }
+ }
+ }
+
+ return true;
+ }
+
+ private boolean equals( String left, String right )
+ {
+ if ( left == null )
+ {
+ if ( right != null )
+ {
+ return false;
+ }
+ }
+ else if ( !left.equals( right ) )
+ {
+ return false;
+ }
+ return true;
+ }
+
+ public String toString()
+ {
+ StringBuffer sb = new StringBuffer();
+ if ( model.getContentKey().getGroupId() != null )
+ {
+ sb.append( model.getContentKey().getGroupId() );
+ sb.append( ":" );
+ }
+ appendArtifactTypeClassifierString( sb );
+ sb.append( ":" );
+ if ( model.getContentKey().getVersion() != null )
+ {
+ sb.append( model.getContentKey().getVersion() );
+ }
+
+ return sb.toString();
+ }
+
+ private void appendArtifactTypeClassifierString( StringBuffer sb )
+ {
+ sb.append( model.getContentKey().getArtifactId() );
+ sb.append( ":" );
+ sb.append( getType() );
+ if ( hasClassifier() )
+ {
+ sb.append( ":" );
+ sb.append( getClassifier() );
+ }
+ }
+
+ private boolean empty( String value )
+ {
+ return ( value == null ) || ( value.trim().length() < 1 );
+ }
+
+ public ArchivaArtifactPlatformDetails getPlatformDetails()
+ {
+ return platformDetails;
+ }
+
+ public void setPlatformDetails( ArchivaArtifactPlatformDetails platformDetails )
+ {
+ this.platformDetails = platformDetails;
+ }
+}
diff --git a/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaArtifactPlatformDetails.java b/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaArtifactPlatformDetails.java
new file mode 100644
index 000000000..b63faf2fe
--- /dev/null
+++ b/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaArtifactPlatformDetails.java
@@ -0,0 +1,31 @@
+package org.apache.maven.archiva.model;
+
+/*
+ * 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.
+ */
+
+/**
+ * A tag for objects that are considered ArchivaArtifactPlatformDetails.
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public interface ArchivaArtifactPlatformDetails
+{
+ public String getPlatform();
+}
diff --git a/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaRepository.java b/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaRepository.java
new file mode 100644
index 000000000..78c4b6648
--- /dev/null
+++ b/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaRepository.java
@@ -0,0 +1,134 @@
+package org.apache.maven.archiva.model;
+
+/*
+ * 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.
+ */
+
+
+
+/**
+ * ArchivaRepository
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class ArchivaRepository
+{
+// protected ArtifactRepositoryPolicy releases;
+//
+// protected ArtifactRepositoryPolicy snapshots;
+
+ private ArchivaRepositoryModel model;
+
+ private RepositoryURL url;
+
+ protected boolean blacklisted;
+
+ /**
+ * Construct a Repository.
+ *
+ * @param id the unique identifier for this repository.
+ * @param name the name for this repository.
+ * @param url the base URL for this repository (this should point to the top level URL for the entire repository)
+ * @param layout the layout technique for this repository.
+ */
+ public ArchivaRepository( String id, String name, String url )
+ {
+ model = new ArchivaRepositoryModel();
+
+ model.setId( id );
+ model.setName( name );
+ setUrl( new RepositoryURL( url ) );
+ }
+
+ /**
+ * Construct a Repository.
+ *
+ * @param id the unique identifier for this repository.
+ * @param name the name for this repository.
+ * @param url the base URL for this repository (this should point to the top level URL for the entire repository)
+ * @param layout the layout technique for this repository.
+ */
+ public ArchivaRepository( ArchivaRepositoryModel model )
+ {
+ this.model = model;
+
+ this.url = new RepositoryURL( model.getUrl() );
+ }
+
+ public String getId()
+ {
+ return model.getId();
+ }
+
+ public void setUrl( RepositoryURL url )
+ {
+ this.url = url;
+ model.setUrl( url.getUrl() );
+ }
+
+ public RepositoryURL getUrl()
+ {
+ return this.url;
+ }
+
+ public ArchivaRepositoryModel getModel()
+ {
+ return this.model;
+ }
+
+ public boolean isBlacklisted()
+ {
+ return blacklisted;
+ }
+
+ public void setBlacklisted( boolean blacklisted )
+ {
+ this.blacklisted = blacklisted;
+ }
+
+// public ArtifactRepositoryPolicy getReleases()
+// {
+// return releases;
+// }
+//
+// public void setReleases( ArtifactRepositoryPolicy releases )
+// {
+// this.releases = releases;
+// }
+//
+// public ArtifactRepositoryPolicy getSnapshots()
+// {
+// return snapshots;
+// }
+//
+// public void setSnapshots( ArtifactRepositoryPolicy snapshots )
+// {
+// this.snapshots = snapshots;
+// }
+
+ public boolean isRemote()
+ {
+ return this.url.getProtocol().equals( "file" );
+ }
+
+ public boolean isManaged()
+ {
+ return this.url.getProtocol().equals( "file" );
+ }
+}
diff --git a/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/DependencyScope.java b/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/DependencyScope.java
new file mode 100644
index 000000000..03d62307c
--- /dev/null
+++ b/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/DependencyScope.java
@@ -0,0 +1,46 @@
+package org.apache.maven.archiva.model;
+
+/*
+ * 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.
+ */
+
+import org.apache.commons.lang.StringUtils;
+
+/**
+ * DependencyScope - utility methods and constants for working with scopes.
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class DependencyScope
+{
+ public static final String SYSTEM = "system";
+
+ public static final String COMPILE = "compile";
+
+ public static final String PROVIDED = "provided";
+
+ public static final String RUNTIME = "runtime";
+
+ public static final String TEST = "test";
+
+ public static boolean isSystemScoped( Dependency dep )
+ {
+ return StringUtils.equals( SYSTEM, dep.getScope() );
+ }
+}
diff --git a/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/RepositoryURL.java b/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/RepositoryURL.java
new file mode 100644
index 000000000..9141fcdc9
--- /dev/null
+++ b/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/RepositoryURL.java
@@ -0,0 +1,156 @@
+package org.apache.maven.archiva.model;
+
+/*
+ * 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.
+ */
+
+
+/**
+ * RepositoryURL - Mutable (and protocol forgiving) URL object.
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class RepositoryURL
+{
+ private String url;
+
+ private String protocol;
+
+ private String host;
+
+ private String port;
+
+ private String username;
+
+ private String password;
+
+ private String path;
+
+ public RepositoryURL( String url )
+ {
+ this.url = url;
+
+ // .\ Parse the URL \.____________________________________________
+
+ int pos;
+
+ pos = url.indexOf( "://" );
+ if ( pos == ( -1 ) )
+ {
+ throw new IllegalArgumentException( "Invalid URL, unable to parse protocol:// from " + url );
+ }
+
+ protocol = url.substring( 0, pos );
+
+ // attempt to find the start of the 'path'
+ pos = url.indexOf( "/", protocol.length() + 3 );
+
+ // no path specified - ex "http://localhost"
+ if ( pos == ( -1 ) )
+ {
+ // set pos to end of string. (needed for 'middle section')
+ pos = url.length();
+ // default path
+ path = "/";
+ }
+ else
+ {
+ // get actual path.
+ path = url.substring( pos );
+ }
+
+ // get the middle section ( username : password @ hostname : port )
+ String middle = url.substring( protocol.length() + 3, pos );
+
+ pos = middle.indexOf( '@' );
+
+ // we have an authentication section.
+ if ( pos > 0 )
+ {
+ String authentication = middle.substring( 0, pos );
+ middle = middle.substring( pos + 1 ); // lop off authentication for host:port search
+
+ pos = authentication.indexOf( ':' );
+
+ // we have a password.
+ if ( pos > 0 )
+ {
+ username = authentication.substring( 0, pos );
+ password = authentication.substring( pos + 1 );
+ }
+ else
+ {
+ username = authentication;
+ }
+ }
+
+ pos = middle.indexOf( ':' );
+
+ // we have a defined port
+ if ( pos > 0 )
+ {
+ host = middle.substring( 0, pos );
+ port = middle.substring( pos + 1 );
+ }
+ else
+ {
+ host = middle;
+ }
+ }
+
+ public String toString()
+ {
+ return url;
+ }
+
+ public String getUsername()
+ {
+ return username;
+ }
+
+ public String getPassword()
+ {
+ return password;
+ }
+
+ public String getHost()
+ {
+ return host;
+ }
+
+ public String getPath()
+ {
+ return path;
+ }
+
+ public String getPort()
+ {
+ return port;
+ }
+
+ public String getProtocol()
+ {
+ return protocol;
+ }
+
+ public String getUrl()
+ {
+ return url;
+ }
+}
diff --git a/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/platform/JavaArtifactHelper.java b/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/platform/JavaArtifactHelper.java
new file mode 100644
index 000000000..1c8ffc482
--- /dev/null
+++ b/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/platform/JavaArtifactHelper.java
@@ -0,0 +1,44 @@
+package org.apache.maven.archiva.model.platform;
+
+/*
+ * 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.
+ */
+
+import org.apache.maven.archiva.model.ArchivaArtifact;
+import org.apache.maven.archiva.model.ArchivaArtifactJavaDetails;
+
+/**
+ * Utility methods for working with java platform specific ArchivaArtifacts.
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class JavaArtifactHelper
+{
+ public static ArchivaArtifactJavaDetails getJavaDetails( ArchivaArtifact artifact )
+ {
+ ArchivaArtifactJavaDetails javaDetails = (ArchivaArtifactJavaDetails) artifact.getPlatformDetails();
+ if ( javaDetails == null )
+ {
+ javaDetails = new ArchivaArtifactJavaDetails();
+ artifact.setPlatformDetails( javaDetails );
+ }
+
+ return javaDetails;
+ }
+}
diff --git a/archiva-base/archiva-model/src/main/mdo/archiva-base.xml b/archiva-base/archiva-model/src/main/mdo/archiva-base.xml
index a6cc0fc40..101fde635 100644
--- a/archiva-base/archiva-model/src/main/mdo/archiva-base.xml
+++ b/archiva-base/archiva-model/src/main/mdo/archiva-base.xml
@@ -295,6 +295,13 @@
<name>ArchivaArtifactModel</name>
<version>1.0.0+</version>
<fields>
+ <!--
+ NOTE TO ARCHIVA DEVELOPERS....
+
+ The ArchivaArtifact object should contain no platform specifics!!
+ Put Java specifics in the ArchivaArtifactJavaDetails object.
+ Put .Net specifics in the ArchivaArtifactDotNetDetails object.
+ -->
<field>
<name>contentKey</name>
<identity>true</identity>
@@ -349,15 +356,35 @@
</description>
</field>
<field>
- <name>checksumBytecode</name>
+ <name>lastModified</name>
+ <identity>false</identity>
+ <version>1.0.0+</version>
+ <type>Date</type>
+ <required>true</required>
+ <description>
+ The Last Modified Timestamp of this artifact.
+ </description>
+ </field>
+ <field jpox.column="FILE_SIZE">
+ <name>size</name>
+ <identity>false</identity>
+ <version>1.0.0+</version>
+ <type>long</type>
+ <required>true</required>
+ <description>
+ The size of the artifact on disk.
+ </description>
+ </field>
+ <field>
+ <name>platform</name>
<identity>false</identity>
<version>1.0.0+</version>
<type>String</type>
- <required>false</required>
+ <required>true</required>
<description>
- The SHA1 checksum for the bytecode in the artifact file. (Can be empty if
- the artifact contains no bytecode)
+ The platform of this artifact. (default: "java")
</description>
+ <defaultValue>java</defaultValue>
</field>
<field>
<name>whenIndexed</name>
@@ -382,6 +409,66 @@
</fields>
</class>
<class stash.storable="true"
+ jpox.table="JAVA_ARTIFACT">
+ <name>ArchivaArtifactJavaDetails</name>
+ <interfaces>
+ <interface>org.apache.maven.archiva.model.ArchivaArtifactPlatformDetails</interface>
+ </interfaces>
+ <version>1.0.0+</version>
+ <fields>
+ <field>
+ <name>contentKey</name>
+ <identity>true</identity>
+ <version>1.0.0+</version>
+ <required>true</required>
+ <association>
+ <type>RepositoryContent</type>
+ <multiplicity>1</multiplicity>
+ </association>
+ <description>
+ The content key for this java artifact details.
+ </description>
+ </field>
+ <field>
+ <name>checksumBytecode</name>
+ <identity>false</identity>
+ <version>1.0.0+</version>
+ <type>String</type>
+ <required>false</required>
+ <description>
+ The SHA1 checksum for the bytecode in the artifact file. (Can be empty if
+ the artifact contains no bytecode)
+ </description>
+ </field>
+ <field>
+ <name>jdk</name>
+ <identity>false</identity>
+ <version>1.0.0+</version>
+ <type>String</type>
+ <required>false</required>
+ <description>
+ The JDK revision of the bytecode. (Can be empty if the artifact contains no bytecode)
+ </description>
+ </field>
+ </fields>
+ <codeSegments>
+ <codeSegment>
+ <version>1.0.0+</version>
+ <code><![CDATA[
+ /**
+ * Identify this implementation as a set of java details.
+ *
+ * @return the Java platform string
+ */
+ public String getPlatform()
+ {
+ return "java";
+ }
+ ]]></code>
+ </codeSegment>
+ </codeSegments>
+ </class>
+ <class stash.storable="true"
jpox.table="REPOSITORY_METADATA">
<name>ArchivaRepositoryMetadata</name>
<version>1.0.0+</version>
@@ -423,23 +510,33 @@
</description>
</field>
<field>
- <name>whenIndexed</name>
+ <name>lastModified</name>
<identity>false</identity>
<version>1.0.0+</version>
<type>Date</type>
- <required>false</required>
+ <required>true</required>
<description>
- The timestamp when this artifact was indexed.
+ The Last Modified Timestamp of this artifact.
+ </description>
+ </field>
+ <field jpox.column="FILE_SIZE">
+ <name>size</name>
+ <identity>false</identity>
+ <version>1.0.0+</version>
+ <type>long</type>
+ <required>true</required>
+ <description>
+ The size of the artifact on disk.
</description>
</field>
<field>
- <name>lastUpdated</name>
+ <name>whenIndexed</name>
<identity>false</identity>
<version>1.0.0+</version>
<type>Date</type>
<required>false</required>
<description>
- the timestamp when this artifact was indexed.
+ The timestamp when this artifact was indexed.
</description>
</field>
<field>
@@ -506,6 +603,26 @@
</description>
</field>
<field>
+ <name>name</name>
+ <identity>false</identity>
+ <version>1.0.0+</version>
+ <required>false</required>
+ <type>String</type>
+ <description>
+ The name of this project.
+ </description>
+ </field>
+ <field>
+ <name>description</name>
+ <identity>false</identity>
+ <version>1.0.0+</version>
+ <required>false</required>
+ <type>String</type>
+ <description>
+ The description of this project.
+ </description>
+ </field>
+ <field>
<name>origin</name>
<identity>false</identity>
<version>1.0.0+</version>
@@ -953,14 +1070,14 @@
<fields>
<field>
<name>groupId</name>
- <version>4.0.0</version>
+ <version>1.0.0+</version>
<description><![CDATA[The group ID of the project to exclude.]]></description>
<type>String</type>
<required>true</required>
</field>
<field>
<name>artifactId</name>
- <version>4.0.0</version>
+ <version>1.0.0+</version>
<description><![CDATA[The artifact ID of the project to exclude.]]></description>
<type>String</type>
<required>true</required>
@@ -974,7 +1091,7 @@
<fields>
<field jpox.column="SCM_URL">
<name>connection</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<description><![CDATA[
The source control management system URL
that describes the repository and how to connect to the
@@ -987,7 +1104,7 @@
</field>
<field>
<name>developerConnection</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<description><![CDATA[
Just like <code>connection</code>, but for developers, i.e. this scm connection
will not be read only.
@@ -996,7 +1113,7 @@
</field>
<field>
<name>url</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<description>
<![CDATA[The URL to the project's browsable SCM repository, such as ViewVC or Fisheye.]]></description>
<type>String</type>
@@ -1010,7 +1127,7 @@
<fields>
<field>
<name>id</name>
- <version>4.0.0</version>
+ <version>1.0.0+</version>
<description><![CDATA[
A unique identifier for a repository. This is used to match the repository to configuration in
the <code>settings.xml</code> file, for example.
@@ -1019,7 +1136,7 @@
</field>
<field>
<name>name</name>
- <version>4.0.0</version>
+ <version>1.0.0+</version>
<description><![CDATA[
Human readable name of the repository.
]]></description>
@@ -1027,7 +1144,7 @@
</field>
<field>
<name>url</name>
- <version>4.0.0</version>
+ <version>1.0.0+</version>
<description><![CDATA[
The url of the repository, in the form <code>protocol://hostname/path</code>.
]]></description>
@@ -1035,7 +1152,7 @@
</field>
<field>
<name>layout</name>
- <version>4.0.0</version>
+ <version>1.0.0+</version>
<description><![CDATA[
The type of layout this repository uses for locating and storing artifacts - can be <code>legacy</code> or
<code>default</code>.