Skip to content

Commit 02fe80c

Browse files
committed
add new DTOs to support pagination
Signed-off-by: Harsh Modi <hmodi@redhat.com>
1 parent 54a0800 commit 02fe80c

File tree

9 files changed

+162
-27
lines changed

9 files changed

+162
-27
lines changed

src/main/java/org/commonjava/indy/service/repository/controller/AdminController.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.commonjava.indy.service.repository.model.RemoteRepository;
3131
import org.commonjava.indy.service.repository.model.StoreKey;
3232
import org.commonjava.indy.service.repository.model.StoreType;
33+
import org.commonjava.indy.service.repository.model.dto.ListArtifactStoreDTO;
3334
import org.eclipse.microprofile.context.ManagedExecutor;
3435
import org.eclipse.microprofile.rest.client.inject.RestClient;
3536
import org.slf4j.Logger;
@@ -39,6 +40,7 @@
3940
import jakarta.inject.Inject;
4041
import jakarta.ws.rs.core.Response;
4142
import java.util.ArrayList;
43+
import java.util.HashSet;
4244
import java.util.List;
4345

4446
import static jakarta.ws.rs.core.Response.Status.FORBIDDEN;
@@ -114,19 +116,20 @@ public List<ArtifactStore> getAllOfType( final StoreType type )
114116
}
115117

116118

117-
public List<ArtifactStore> getAllOfType( final String packageType, final StoreType type, String page )
119+
public ListArtifactStoreDTO getAllOfType( final String packageType, final StoreType type, String page )
118120
throws IndyWorkflowException
119121
{
120122
try
121123
{
122124
ArtifactStoreQuery<ArtifactStore> query = storeManager.query().storeTypes( type );
123125
if ( !ALL_PACKAGE_TYPES.equals( packageType ) )
124126
{
125-
return new ArrayList<>( storeManager.getArtifactStoresByPkgAndType( packageType, type, page ) );
127+
return storeManager.getArtifactStoresByPkgAndType( packageType, type, page );
126128
}
127129
else
128130
{
129-
return query.getAllByDefaultPackageTypes();
131+
List<ArtifactStore> result = query.getAllByDefaultPackageTypes();
132+
return new ListArtifactStoreDTO( new HashSet<>(result) );
130133
}
131134
}
132135
catch ( final IndyDataException e )
@@ -140,7 +143,8 @@ public List<ArtifactStore> getAllOfType( final String packageType, final StoreTy
140143
public List<ArtifactStore> getAllOfType( final String packageType, final StoreType type )
141144
throws IndyWorkflowException
142145
{
143-
return getAllOfType( packageType, type, "" );
146+
ListArtifactStoreDTO result = getAllOfType( packageType, type, "" );
147+
return new ArrayList<>(result.getItems());
144148
}
145149

146150
public List<ArtifactStore> getAllStores()

src/main/java/org/commonjava/indy/service/repository/data/StoreDataManager.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.commonjava.indy.service.repository.model.StoreType;
2424
import org.commonjava.indy.service.repository.audit.ChangeSummary;
2525
import org.commonjava.indy.service.repository.exception.IndyDataException;
26+
import org.commonjava.indy.service.repository.model.dto.ListArtifactStoreDTO;
2627

2728
import java.util.Collection;
2829
import java.util.Map;
@@ -165,6 +166,6 @@ Set<Group> affectedBy( Collection<StoreKey> keys )
165166

166167
Set<ArtifactStore> getArtifactStoresByPkgAndType( String packageType, StoreType storeType );
167168

168-
Set<ArtifactStore> getArtifactStoresByPkgAndType( String packageType, StoreType storeType, String page );
169+
ListArtifactStoreDTO getArtifactStoresByPkgAndType( String packageType, StoreType storeType, String page );
169170

170171
}

src/main/java/org/commonjava/indy/service/repository/data/cassandra/CassandraStoreDataManager.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
import org.commonjava.indy.service.repository.model.RemoteRepository;
3232
import org.commonjava.indy.service.repository.model.StoreKey;
3333
import org.commonjava.indy.service.repository.model.StoreType;
34+
import org.commonjava.indy.service.repository.model.dto.ListArtifactStoreDTO;
35+
import org.commonjava.indy.service.repository.model.dto.ListDtxArtifactStoreDTO;
3436
import org.slf4j.Logger;
3537
import org.slf4j.LoggerFactory;
3638

@@ -184,22 +186,22 @@ public Set<StoreKey> getStoreKeysByPkgAndType( final String pkg, final StoreType
184186
}
185187

186188
@Override
187-
public Set<ArtifactStore> getArtifactStoresByPkgAndType( final String pkg, final StoreType type, String page )
189+
public ListArtifactStoreDTO getArtifactStoresByPkgAndType( final String pkg, final StoreType type, String page )
188190
{
189191

190192
logger.trace( "Get stores: {}/{}", pkg, type );
191-
192-
Set<DtxArtifactStore> dtxArtifactStoreSet = storeQuery.getArtifactStoresByPkgAndType( pkg, type, page );
193+
ListDtxArtifactStoreDTO result = storeQuery.getArtifactStoresByPkgAndType( pkg, type, page );
194+
Set<DtxArtifactStore> dtxArtifactStoreSet = result.getItems();
193195
Set<ArtifactStore> storeSet = new HashSet<>();
194196
dtxArtifactStoreSet.forEach( dtxArtifactStore -> storeSet.add( toArtifactStore( dtxArtifactStore ) ) );
195-
return storeSet;
197+
return new ListArtifactStoreDTO( storeSet, result.getCurrentPage(), result.getNextPage());
196198
}
197199

198200
@Override
199201
public Set<ArtifactStore> getArtifactStoresByPkgAndType( final String pkg, final StoreType type )
200202
{
201-
202-
return getArtifactStoresByPkgAndType( pkg, type, "" );
203+
ListArtifactStoreDTO result = getArtifactStoresByPkgAndType( pkg, type, "" );
204+
return result.getItems();
203205
}
204206

205207
@Override

src/main/java/org/commonjava/indy/service/repository/data/cassandra/CassandraStoreQuery.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.datastax.driver.mapping.MappingManager;
2626
import org.commonjava.indy.service.repository.model.StoreKey;
2727
import org.commonjava.indy.service.repository.model.StoreType;
28+
import org.commonjava.indy.service.repository.model.dto.ListDtxArtifactStoreDTO;
2829
import org.slf4j.Logger;
2930
import org.slf4j.LoggerFactory;
3031

@@ -143,7 +144,7 @@ public DtxArtifactStore getArtifactStore( String packageType, StoreType type, St
143144
return toDtxArtifactStore( result.one() );
144145
}
145146

146-
public Set<DtxArtifactStore> getArtifactStoresByPkgAndType( String packageType, StoreType type, String page )
147+
public ListDtxArtifactStoreDTO getArtifactStoresByPkgAndType( String packageType, StoreType type, String page )
147148
{
148149
BoundStatement bound =
149150
preparedArtifactStoresQueryByKeys.bind( CassandraStoreUtil.getTypeKey( packageType, type.name() ) );
@@ -171,12 +172,13 @@ public Set<DtxArtifactStore> getArtifactStoresByPkgAndType( String packageType,
171172
}
172173
}
173174

174-
return dtxArtifactStoreSet;
175+
return new ListDtxArtifactStoreDTO( dtxArtifactStoreSet, page, nextPage.toString() );
175176
}
176177

177178
public Set<DtxArtifactStore> getArtifactStoresByPkgAndType( String packageType, StoreType type )
178179
{
179-
return getArtifactStoresByPkgAndType( packageType, type, "" );
180+
ListDtxArtifactStoreDTO result = getArtifactStoresByPkgAndType( packageType, type, "" );
181+
return result.getItems();
180182
}
181183

182184
public Set<DtxArtifactStore> getAllArtifactStores()

src/main/java/org/commonjava/indy/service/repository/data/mem/MemoryStoreDataManager.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.commonjava.indy.service.repository.model.ArtifactStore;
2424
import org.commonjava.indy.service.repository.model.StoreKey;
2525
import org.commonjava.indy.service.repository.model.StoreType;
26+
import org.commonjava.indy.service.repository.model.dto.ListArtifactStoreDTO;
2627
import org.slf4j.Logger;
2728
import org.slf4j.LoggerFactory;
2829

@@ -156,19 +157,21 @@ public Stream<StoreKey> streamArtifactStoreKeys()
156157
}
157158

158159
@Override
159-
public Set<ArtifactStore> getArtifactStoresByPkgAndType( String packageType, StoreType storeType, String page )
160+
public ListArtifactStoreDTO getArtifactStoresByPkgAndType( String packageType, StoreType storeType, String page )
160161
{
161-
return stores.values()
162-
.stream()
163-
.filter( item -> packageType.equals( item.getPackageType() ) && storeType.equals(
164-
item.getType() ) )
165-
.collect( Collectors.toSet() );
162+
Set<ArtifactStore> resultStores = stores.values()
163+
.stream()
164+
.filter( item -> packageType.equals( item.getPackageType() ) && storeType.equals(
165+
item.getType() ) )
166+
.collect( Collectors.toSet() );
167+
return new ListArtifactStoreDTO( resultStores);
166168
}
167169

168170
@Override
169171
public Set<ArtifactStore> getArtifactStoresByPkgAndType( String packageType, StoreType storeType )
170172
{
171-
return getArtifactStoresByPkgAndType( packageType, storeType, "" );
173+
ListArtifactStoreDTO result = getArtifactStoresByPkgAndType( packageType, storeType, "" );
174+
return result.getItems();
172175
}
173176

174177
@Override

src/main/java/org/commonjava/indy/service/repository/jaxrs/RepositoryAdminResources.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.commonjava.indy.service.repository.model.RemoteRepository;
2626
import org.commonjava.indy.service.repository.model.StoreKey;
2727
import org.commonjava.indy.service.repository.model.StoreType;
28+
import org.commonjava.indy.service.repository.model.dto.ListArtifactStoreDTO;
2829
import org.commonjava.indy.service.repository.model.dto.StoreListingDTO;
2930
import org.commonjava.indy.service.repository.util.jackson.MapperUtil;
3031
import org.commonjava.indy.service.security.common.SecurityManager;
@@ -59,6 +60,7 @@
5960
import java.io.IOException;
6061
import java.net.URI;
6162
import java.nio.charset.Charset;
63+
import java.util.ArrayList;
6264
import java.util.HashMap;
6365
import java.util.List;
6466
import java.util.Map;
@@ -326,11 +328,13 @@ public Response getAll( final @Parameter(
326328
Response response;
327329
try
328330
{
329-
final List<ArtifactStore> stores = adminController.getAllOfType( packageType, st, page );
331+
final ListArtifactStoreDTO result = adminController.getAllOfType( packageType, st, page );
330332

331-
logger.info( "Returning listing containing stores:\n\t{}", new JoinString( "\n\t", stores ) );
333+
logger.info( "Returning listing for page {} containing stores:\n\t{}", result.getCurrentPage(),
334+
new JoinString( "\n\t", result.getItems() ) );
332335

333-
final StoreListingDTO<ArtifactStore> dto = new StoreListingDTO<>( stores );
336+
final StoreListingDTO<ArtifactStore> dto = new StoreListingDTO<>( new ArrayList<>(result.getItems()), result.getCurrentPage(),
337+
result.getNextPage() );
334338

335339
response = responseHelper.formatOkResponseWithJsonEntity( dto );
336340
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package org.commonjava.indy.service.repository.model.dto;
2+
3+
import org.commonjava.indy.service.repository.model.ArtifactStore;
4+
5+
import java.util.Set;
6+
7+
public class ListArtifactStoreDTO
8+
{
9+
private Set<ArtifactStore> items;
10+
11+
private String currentPage;
12+
13+
private String nextPage;
14+
15+
public ListArtifactStoreDTO()
16+
{
17+
18+
}
19+
20+
public ListArtifactStoreDTO( Set<ArtifactStore> items, String currentPage, String nextPage )
21+
{
22+
this.items = items;
23+
this.currentPage = currentPage;
24+
this.nextPage = nextPage;
25+
}
26+
27+
public ListArtifactStoreDTO( Set<ArtifactStore> items )
28+
{
29+
this.items = items;
30+
}
31+
32+
public Set<ArtifactStore> getItems()
33+
{
34+
return items;
35+
}
36+
37+
public void setItems( Set<ArtifactStore> items )
38+
{
39+
this.items = items;
40+
}
41+
42+
public String getCurrentPage()
43+
{
44+
return currentPage;
45+
}
46+
47+
public void setCurrentPage( String currentPage )
48+
{
49+
this.currentPage = currentPage;
50+
}
51+
52+
public String getNextPage()
53+
{
54+
return nextPage;
55+
}
56+
57+
public void setNextPage( String nextPage )
58+
{
59+
this.nextPage = nextPage;
60+
}
61+
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package org.commonjava.indy.service.repository.model.dto;
2+
3+
import org.commonjava.indy.service.repository.data.cassandra.DtxArtifactStore;
4+
5+
import java.util.Set;
6+
7+
public class ListDtxArtifactStoreDTO
8+
{
9+
private Set<DtxArtifactStore> items;
10+
11+
private String currentPage;
12+
13+
private String nextPage;
14+
15+
public ListDtxArtifactStoreDTO()
16+
{
17+
18+
}
19+
20+
public ListDtxArtifactStoreDTO( Set<DtxArtifactStore> items, String currentPage, String nextPage )
21+
{
22+
this.items = items;
23+
this.currentPage = currentPage;
24+
this.nextPage = nextPage;
25+
}
26+
27+
public Set<DtxArtifactStore> getItems()
28+
{
29+
return items;
30+
}
31+
32+
public void setItems( Set<DtxArtifactStore> items )
33+
{
34+
this.items = items;
35+
}
36+
37+
public String getCurrentPage()
38+
{
39+
return currentPage;
40+
}
41+
42+
public void setCurrentPage( String currentPage )
43+
{
44+
this.currentPage = currentPage;
45+
}
46+
47+
public String getNextPage()
48+
{
49+
return nextPage;
50+
}
51+
52+
public void setNextPage( String nextPage )
53+
{
54+
this.nextPage = nextPage;
55+
}
56+
}

src/test/java/org/commonjava/indy/service/repository/jaxrs/mock/MockAdminController.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,15 @@
2424
import org.commonjava.indy.service.repository.model.RemoteRepository;
2525
import org.commonjava.indy.service.repository.model.StoreKey;
2626
import org.commonjava.indy.service.repository.model.StoreType;
27+
import org.commonjava.indy.service.repository.model.dto.ListArtifactStoreDTO;
2728
import org.junit.jupiter.api.Test;
2829

2930
import jakarta.enterprise.context.ApplicationScoped;
3031
import jakarta.enterprise.inject.Alternative;
3132
import jakarta.ws.rs.core.Response;
3233
import java.util.Arrays;
3334
import java.util.Collections;
35+
import java.util.HashSet;
3436
import java.util.List;
3537

3638
import static org.commonjava.indy.service.repository.model.pkg.MavenPackageTypeDescriptor.MAVEN_PKG_KEY;
@@ -67,7 +69,7 @@ public List<ArtifactStore> getAllOfType( final String packageType, final StoreTy
6769
}
6870

6971
@Override
70-
public List<ArtifactStore> getAllOfType( final String packageType, final StoreType type, String page )
72+
public ListArtifactStoreDTO getAllOfType( final String packageType, final StoreType type, String page )
7173
throws IndyWorkflowException
7274
{
7375
if ( MAVEN_PKG_KEY.equals( packageType ) )
@@ -76,11 +78,11 @@ public List<ArtifactStore> getAllOfType( final String packageType, final StoreTy
7678
{
7779
RemoteRepository repo1 = new RemoteRepository( MAVEN_PKG_KEY, "test1", "http://repo.test1" );
7880
RemoteRepository repo2 = new RemoteRepository( MAVEN_PKG_KEY, "test2", "http://repo.test2" );
79-
return Arrays.asList( repo1, repo2 );
81+
return new ListArtifactStoreDTO( new HashSet<>(Arrays.asList( repo1, repo2 )));
8082
}
8183
if ( type == StoreType.hosted )
8284
{
83-
return Collections.emptyList();
85+
return new ListArtifactStoreDTO( new HashSet<>(Collections.emptyList()));
8486
}
8587
}
8688
throw new IndyWorkflowException( Response.Status.NOT_FOUND.getStatusCode(), "Not found" );

0 commit comments

Comments
 (0)