1 package org.apache.maven.archiva.database.jdo;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.File;
23 import java.util.ArrayList;
24 import java.util.Date;
25 import java.util.List;
26
27 import javax.jdo.JDOHelper;
28
29 import org.apache.commons.beanutils.PropertyUtils;
30 import org.apache.commons.lang.StringUtils;
31 import org.apache.maven.archiva.database.AbstractArchivaDatabaseTestCase;
32 import org.apache.maven.archiva.database.ProjectModelDAO;
33 import org.apache.maven.archiva.model.ArchivaProjectModel;
34 import org.apache.maven.archiva.repository.project.ProjectModelReader;
35 import org.apache.maven.archiva.repository.project.readers.ProjectModel400Reader;
36
37
38
39
40
41
42 public class JdoProjectModelDAOTest
43 extends AbstractArchivaDatabaseTestCase
44 {
45 public void testProjectModelCRUD()
46 throws Exception
47 {
48 ProjectModelDAO projectDao = dao.getProjectModelDAO();
49
50
51 ArchivaProjectModel model = projectDao.createProjectModel( "org.apache.maven.archiva", "archiva-test-module",
52 "1.0" );
53 assertNotNull( model );
54
55
56 model.setPackaging( "pom" );
57 model.setWhenIndexed( new Date() );
58 model.setOrigin( "test" );
59
60
61 ArchivaProjectModel savedModel = projectDao.saveProjectModel( model );
62 assertNotNull( savedModel );
63 String savedKeyId = JDOHelper.getObjectId( savedModel ).toString();
64 assertEquals( "org.apache.maven.archiva:archiva-test-module:1.0", savedKeyId );
65
66
67 List<ArchivaProjectModel> projects = projectDao.queryProjectModels( null );
68 assertNotNull( projects );
69 assertEquals( 1, projects.size() );
70
71
72 ArchivaProjectModel firstModel = (ArchivaProjectModel) projects.get( 0 );
73 assertNotNull( firstModel );
74 assertEquals( "org.apache.maven.archiva", firstModel.getGroupId() );
75 assertEquals( "archiva-test-module", firstModel.getArtifactId() );
76 assertEquals( "1.0", firstModel.getVersion() );
77
78
79 savedModel.setOrigin( "changed" );
80 projectDao.saveProjectModel( savedModel );
81
82
83 assertEquals( 1, projectDao.queryProjectModels( null ).size() );
84
85
86 ArchivaProjectModel actualModel = projectDao.getProjectModel( "org.apache.maven.archiva",
87 "archiva-test-module", "1.0" );
88 assertNotNull( actualModel );
89
90
91 assertEquals( "archiva-test-module", actualModel.getArtifactId() );
92 assertEquals( "changed", actualModel.getOrigin() );
93
94
95 assertEquals( 1, projectDao.queryProjectModels( null ).size() );
96
97
98 projectDao.deleteProjectModel( actualModel );
99 assertEquals( 0, projectDao.queryProjectModels( null ).size() );
100 }
101
102 public void testSaveGetRealProjectModel()
103 throws Exception
104 {
105 String groupId = "org.apache.maven.shared";
106 String artifactId = "maven-shared-jar";
107 String version = "1.0-SNAPSHOT";
108
109 ProjectModelDAO projectDao = dao.getProjectModelDAO();
110
111 ProjectModelReader modelReader = new ProjectModel400Reader();
112
113 File pomFile = getTestFile( "src/test/resources/projects/maven-shared-jar-1.0-SNAPSHOT.pom" );
114
115 assertTrue( "pom file should exist: " + pomFile.getAbsolutePath(), pomFile.exists() && pomFile.isFile() );
116
117 ArchivaProjectModel model = modelReader.read( pomFile );
118 assertNotNull( "Model should not be null.", model );
119
120
121
122
123
124
125
126 model.setGroupId( groupId );
127 model.setOrigin( "testcase" );
128
129 projectDao.saveProjectModel( model );
130
131 ArchivaProjectModel savedModel = projectDao.getProjectModel( groupId, artifactId, version );
132 assertNotNull( "Project model should not be null.", savedModel );
133
134
135 List<String> exprs = new ArrayList<String>();
136 exprs.add( "parentProject.groupId" );
137 exprs.add( "organization.name" );
138 exprs.add( "issueManagement.system" );
139 exprs.add( "ciManagement.system" );
140 exprs.add( "scm.url" );
141 exprs.add( "individuals[0].name" );
142 exprs.add( "dependencies[0].groupId" );
143 exprs.add( "dependencyManagement[0].artifactId" );
144 exprs.add( "repositories[0].id" );
145 exprs.add( "plugins[0].artifactId" );
146 exprs.add( "reports[0].artifactId" );
147 exprs.add( "buildExtensions[0].artifactId" );
148 exprs.add( "licenses[0].url" );
149 exprs.add( "mailingLists[0].name" );
150
151 for ( String expr : exprs )
152 {
153 try
154 {
155 Object obj = PropertyUtils.getProperty( model, expr );
156 assertNotNull( "Expr \"" + expr + "\" != null", obj );
157 assertTrue( "Expr \"" + expr + "\" should be a String.", ( obj instanceof String ) );
158 String value = (String) obj;
159 assertTrue( "Expr \"" + expr + "\" value should not be blank.", StringUtils.isNotBlank( value ) );
160 }
161 catch ( IndexOutOfBoundsException e )
162 {
163 fail( "Expr \"" + expr + "\" unable to get indexed property: " + e.getClass().getName() + ": "
164 + e.getMessage() );
165 }
166 }
167 }
168 }