mirror of https://github.com/apache/archiva.git
Migrating return values of rest services away from simple types
This commit is contained in:
parent
b9316745df
commit
bef02ef5b8
|
@ -0,0 +1,48 @@
|
|||
package org.apache.archiva.rest.api.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 javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
/**
|
||||
* @author Martin Stockhammer <martin_s@apache.org>
|
||||
*/
|
||||
@XmlRootElement(name="memoryStatus")
|
||||
public class MemoryStatus
|
||||
{
|
||||
String statusText;
|
||||
|
||||
public MemoryStatus() {
|
||||
|
||||
}
|
||||
|
||||
public MemoryStatus(String statusText) {
|
||||
this.statusText = statusText;
|
||||
}
|
||||
|
||||
public String getStatusText( )
|
||||
{
|
||||
return statusText;
|
||||
}
|
||||
|
||||
public void setStatusText( String statusText )
|
||||
{
|
||||
this.statusText = statusText;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
package org.apache.archiva.rest.api.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 javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
/**
|
||||
* @author Martin Stockhammer <martin_s@apache.org>
|
||||
*/
|
||||
@XmlRootElement(name="pingResult")
|
||||
public class PingResult
|
||||
{
|
||||
String output;
|
||||
|
||||
public PingResult() {
|
||||
|
||||
}
|
||||
|
||||
public PingResult(String output) {
|
||||
this.output = output;
|
||||
}
|
||||
|
||||
public String getOutput( )
|
||||
{
|
||||
return output;
|
||||
}
|
||||
|
||||
public void setOutput( String output )
|
||||
{
|
||||
this.output = output;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
package org.apache.archiva.rest.api.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 javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
/**
|
||||
* @author Martin Stockhammer <martin_s@apache.org>
|
||||
*/
|
||||
@XmlRootElement(name="pomSnippet")
|
||||
public class PomSnippet
|
||||
{
|
||||
String text;
|
||||
|
||||
public PomSnippet() {
|
||||
|
||||
}
|
||||
|
||||
public PomSnippet(String text) {
|
||||
this.text = text;
|
||||
}
|
||||
|
||||
public String getText( )
|
||||
{
|
||||
return text;
|
||||
}
|
||||
|
||||
public void setText( String text )
|
||||
{
|
||||
this.text = text;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
package org.apache.archiva.rest.api.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 javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
/**
|
||||
* @author Martin Stockhammer <martin_s@apache.org>
|
||||
*/
|
||||
@XmlRootElement(name="timestamp")
|
||||
public class Timestamp
|
||||
{
|
||||
String value;
|
||||
|
||||
public Timestamp() {
|
||||
|
||||
}
|
||||
|
||||
public Timestamp( String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public String getValue( )
|
||||
{
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setValue( String value )
|
||||
{
|
||||
this.value = value;
|
||||
}
|
||||
}
|
|
@ -28,6 +28,7 @@ import javax.ws.rs.Path;
|
|||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.QueryParam;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* contains some "free" services (i18n)
|
||||
|
@ -47,9 +48,9 @@ public interface CommonServices
|
|||
*/
|
||||
@Path( "getI18nResources" )
|
||||
@GET
|
||||
@Produces( { MediaType.TEXT_PLAIN } )
|
||||
@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
|
||||
@RedbackAuthorization( noRestriction = true )
|
||||
String getI18nResources( @QueryParam( "locale" ) String locale )
|
||||
Map<String,String> getI18nResources( @QueryParam( "locale" ) String locale )
|
||||
throws ArchivaRestServiceException;
|
||||
|
||||
/**
|
||||
|
@ -60,9 +61,9 @@ public interface CommonServices
|
|||
*/
|
||||
@Path( "getAllI18nResources" )
|
||||
@GET
|
||||
@Produces( { MediaType.TEXT_PLAIN } )
|
||||
@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
|
||||
@RedbackAuthorization( noRestriction = true )
|
||||
String getAllI18nResources( @QueryParam( "locale" ) String locale )
|
||||
Map<String,String> getAllI18nResources( @QueryParam( "locale" ) String locale )
|
||||
throws ArchivaRestServiceException;
|
||||
|
||||
|
||||
|
|
|
@ -26,6 +26,7 @@ import org.apache.archiva.redback.authorization.RedbackAuthorization;
|
|||
import org.apache.archiva.rest.api.model.ActionStatus;
|
||||
import org.apache.archiva.rest.api.model.ArchivaRepositoryStatistics;
|
||||
import org.apache.archiva.rest.api.model.FileStatus;
|
||||
import org.apache.archiva.rest.api.model.PomSnippet;
|
||||
import org.apache.archiva.security.common.ArchivaRoleConstants;
|
||||
|
||||
import javax.ws.rs.Consumes;
|
||||
|
@ -116,9 +117,9 @@ public interface ManagedRepositoriesService
|
|||
*/
|
||||
@Path( "getPomSnippet/{repositoryId}" )
|
||||
@GET
|
||||
@Produces( { MediaType.TEXT_PLAIN } )
|
||||
@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
|
||||
@RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
|
||||
String getPomSnippet( @PathParam( "repositoryId" ) String repositoryId )
|
||||
PomSnippet getPomSnippet( @PathParam( "repositoryId" ) String repositoryId )
|
||||
throws ArchivaRestServiceException;
|
||||
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@ package org.apache.archiva.rest.api.services;
|
|||
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.apache.archiva.redback.authorization.RedbackAuthorization;
|
||||
import org.apache.archiva.rest.api.model.PingResult;
|
||||
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.Path;
|
||||
|
@ -45,7 +46,7 @@ public interface PingService
|
|||
@GET
|
||||
@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
|
||||
@RedbackAuthorization( noRestriction = true )
|
||||
String ping();
|
||||
PingResult ping();
|
||||
|
||||
/**
|
||||
* same as #ping but check authz
|
||||
|
@ -56,6 +57,6 @@ public interface PingService
|
|||
@GET
|
||||
@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
|
||||
@RedbackAuthorization( noRestriction = false, noPermission = true )
|
||||
String pingWithAuthz();
|
||||
PingResult pingWithAuthz();
|
||||
|
||||
}
|
||||
|
|
|
@ -22,6 +22,8 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
|||
import org.apache.archiva.redback.authorization.RedbackAuthorization;
|
||||
import org.apache.archiva.rest.api.model.ActionStatus;
|
||||
import org.apache.archiva.rest.api.model.CacheEntry;
|
||||
import org.apache.archiva.rest.api.model.Timestamp;
|
||||
import org.apache.archiva.rest.api.model.MemoryStatus;
|
||||
import org.apache.archiva.rest.api.model.QueueEntry;
|
||||
import org.apache.archiva.rest.api.model.RepositoryScannerStatistics;
|
||||
import org.apache.archiva.security.common.ArchivaRoleConstants;
|
||||
|
@ -43,16 +45,16 @@ public interface SystemStatusService
|
|||
{
|
||||
@Path( "memoryStatus" )
|
||||
@GET
|
||||
@Produces( MediaType.TEXT_PLAIN )
|
||||
@Produces( {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
|
||||
@RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
|
||||
String getMemoryStatus()
|
||||
MemoryStatus getMemoryStatus()
|
||||
throws ArchivaRestServiceException;
|
||||
|
||||
@Path( "currentServerTime/{locale}" )
|
||||
@GET
|
||||
@Produces( MediaType.TEXT_PLAIN )
|
||||
@Produces( {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML} )
|
||||
@RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
|
||||
String getCurrentServerTime( @PathParam( "locale" ) String locale )
|
||||
Timestamp getCurrentServerTime( @PathParam( "locale" ) String locale )
|
||||
throws ArchivaRestServiceException;
|
||||
|
||||
@Path( "queueEntries" )
|
||||
|
|
|
@ -40,6 +40,7 @@ import java.io.InputStream;
|
|||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author Olivier Lamy
|
||||
|
@ -56,7 +57,7 @@ public class DefaultCommonServices
|
|||
@Inject
|
||||
private UtilServices utilServices;
|
||||
|
||||
private Map<String, String> cachei18n = new ConcurrentHashMap<String, String>();
|
||||
private Map<String, Map<String,String>> cachei18n = new ConcurrentHashMap<String, Map<String,String>>();
|
||||
|
||||
@Inject
|
||||
protected CronExpressionValidator cronExpressionValidator;
|
||||
|
@ -72,7 +73,7 @@ public class DefaultCommonServices
|
|||
}
|
||||
|
||||
@Override
|
||||
public String getI18nResources( String locale )
|
||||
public Map<String,String> getI18nResources( String locale )
|
||||
throws ArchivaRestServiceException
|
||||
{
|
||||
Properties properties = new Properties();
|
||||
|
@ -89,7 +90,14 @@ public class DefaultCommonServices
|
|||
log.warn( "skip error loading properties {}", resourceName );
|
||||
}
|
||||
|
||||
return fromProperties( properties );
|
||||
return properties.entrySet().stream().collect(
|
||||
Collectors.toMap(
|
||||
e -> e.getKey().toString(),
|
||||
e -> e.getValue().toString()
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void loadResource( Properties properties, StringBuilder resourceName, String locale )
|
||||
|
@ -142,11 +150,11 @@ public class DefaultCommonServices
|
|||
}
|
||||
|
||||
@Override
|
||||
public String getAllI18nResources( String locale )
|
||||
public Map<String,String> getAllI18nResources( String locale )
|
||||
throws ArchivaRestServiceException
|
||||
{
|
||||
|
||||
String cachedi18n = cachei18n.get( StringUtils.isEmpty( locale ) ? "en" : StringUtils.lowerCase( locale ) );
|
||||
Map<String,String> cachedi18n = cachei18n.get( StringUtils.isEmpty( locale ) ? "en" : StringUtils.lowerCase( locale ) );
|
||||
if ( cachedi18n != null )
|
||||
{
|
||||
return cachedi18n;
|
||||
|
@ -158,10 +166,14 @@ public class DefaultCommonServices
|
|||
Properties all = utilServices.getI18nProperties( locale );
|
||||
StringBuilder resourceName = new StringBuilder( RESOURCE_NAME );
|
||||
loadResource( all, resourceName, locale );
|
||||
|
||||
String i18n = fromProperties( all );
|
||||
cachei18n.put( StringUtils.isEmpty( locale ) ? "en" : StringUtils.lowerCase( locale ), i18n );
|
||||
return i18n;
|
||||
Map<String, String> allMap = all.entrySet().stream().collect(
|
||||
Collectors.toMap(
|
||||
e -> e.getKey().toString(),
|
||||
e -> e.getValue().toString()
|
||||
)
|
||||
);
|
||||
cachei18n.put( StringUtils.isEmpty( locale ) ? "en" : StringUtils.lowerCase( locale ), allMap );
|
||||
return allMap;
|
||||
}
|
||||
catch ( IOException e )
|
||||
{
|
||||
|
|
|
@ -30,6 +30,7 @@ import org.apache.archiva.metadata.repository.stats.model.RepositoryStatisticsMa
|
|||
import org.apache.archiva.rest.api.model.ActionStatus;
|
||||
import org.apache.archiva.rest.api.model.ArchivaRepositoryStatistics;
|
||||
import org.apache.archiva.rest.api.model.FileStatus;
|
||||
import org.apache.archiva.rest.api.model.PomSnippet;
|
||||
import org.apache.archiva.rest.api.services.ArchivaRestServiceException;
|
||||
import org.apache.archiva.rest.api.services.ManagedRepositoriesService;
|
||||
import org.apache.commons.lang3.StringEscapeUtils;
|
||||
|
@ -211,10 +212,10 @@ public class DefaultManagedRepositoriesService
|
|||
}
|
||||
|
||||
@Override
|
||||
public String getPomSnippet( String repositoryId )
|
||||
public PomSnippet getPomSnippet( String repositoryId )
|
||||
throws ArchivaRestServiceException
|
||||
{
|
||||
return createSnippet( getManagedRepository( repositoryId ) );
|
||||
return new PomSnippet( createSnippet( getManagedRepository( repositoryId ) ) );
|
||||
}
|
||||
|
||||
private String createSnippet( ManagedRepository repo )
|
||||
|
|
|
@ -19,6 +19,7 @@ package org.apache.archiva.rest.services;
|
|||
* under the License.
|
||||
*/
|
||||
|
||||
import org.apache.archiva.rest.api.model.PingResult;
|
||||
import org.apache.archiva.rest.api.services.PingService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
|
@ -31,13 +32,13 @@ public class DefaultPingService
|
|||
implements PingService
|
||||
{
|
||||
@Override
|
||||
public String ping()
|
||||
public PingResult ping()
|
||||
{
|
||||
return "Yeah Baby It rocks!";
|
||||
return new PingResult( "Yeah Baby It rocks!" );
|
||||
}
|
||||
|
||||
@Override
|
||||
public String pingWithAuthz()
|
||||
public PingResult pingWithAuthz()
|
||||
{
|
||||
return ping();
|
||||
}
|
||||
|
|
|
@ -29,8 +29,10 @@ import org.apache.archiva.repository.scanner.RepositoryScannerInstance;
|
|||
import org.apache.archiva.rest.api.model.ActionStatus;
|
||||
import org.apache.archiva.rest.api.model.CacheEntry;
|
||||
import org.apache.archiva.rest.api.model.ConsumerScanningStatistics;
|
||||
import org.apache.archiva.rest.api.model.MemoryStatus;
|
||||
import org.apache.archiva.rest.api.model.QueueEntry;
|
||||
import org.apache.archiva.rest.api.model.RepositoryScannerStatistics;
|
||||
import org.apache.archiva.rest.api.model.Timestamp;
|
||||
import org.apache.archiva.rest.api.services.ArchivaRestServiceException;
|
||||
import org.apache.archiva.rest.api.services.SystemStatusService;
|
||||
import org.apache.archiva.rest.services.utils.ConsumerScanningStatisticsComparator;
|
||||
|
@ -86,7 +88,7 @@ public class DefaultSystemStatusService
|
|||
}
|
||||
|
||||
@Override
|
||||
public String getMemoryStatus()
|
||||
public MemoryStatus getMemoryStatus()
|
||||
throws ArchivaRestServiceException
|
||||
{
|
||||
Runtime runtime = Runtime.getRuntime();
|
||||
|
@ -94,7 +96,7 @@ public class DefaultSystemStatusService
|
|||
long total = runtime.totalMemory();
|
||||
long used = total - runtime.freeMemory();
|
||||
long max = runtime.maxMemory();
|
||||
return formatMemory( used ) + "/" + formatMemory( total ) + " (Max: " + formatMemory( max ) + ")";
|
||||
return new MemoryStatus( formatMemory( used ) + "/" + formatMemory( total ) + " (Max: " + formatMemory( max ) + ")" );
|
||||
}
|
||||
|
||||
private static String formatMemory( long l )
|
||||
|
@ -103,11 +105,11 @@ public class DefaultSystemStatusService
|
|||
}
|
||||
|
||||
@Override
|
||||
public String getCurrentServerTime( String locale )
|
||||
public Timestamp getCurrentServerTime( String locale )
|
||||
throws ArchivaRestServiceException
|
||||
{
|
||||
SimpleDateFormat sdf = new SimpleDateFormat( "EEE, d MMM yyyy HH:mm:ss Z", new Locale( locale ) );
|
||||
return sdf.format( new Date() );
|
||||
return new Timestamp( sdf.format( new Date( ) ) );
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -19,6 +19,7 @@ package org.apache.archiva.rest.services;
|
|||
* under the License.
|
||||
*/
|
||||
|
||||
import org.apache.archiva.rest.api.model.PingResult;
|
||||
import org.apache.archiva.rest.api.services.PingService;
|
||||
import org.apache.cxf.jaxrs.client.WebClient;
|
||||
import org.junit.Ignore;
|
||||
|
@ -42,8 +43,8 @@ public class PingServiceTest
|
|||
// 1000000L
|
||||
//WebClient.getConfig( userService ).getHttpConduit().getClient().setReceiveTimeout(3000);
|
||||
|
||||
String res = getPingService().ping();
|
||||
assertEquals( "Yeah Baby It rocks!", res );
|
||||
PingResult res = getPingService().ping();
|
||||
assertEquals( "Yeah Baby It rocks!", res.getOutput() );
|
||||
}
|
||||
|
||||
@Test( expected = ForbiddenException.class )
|
||||
|
@ -53,7 +54,7 @@ public class PingServiceTest
|
|||
|
||||
try
|
||||
{
|
||||
String res = getPingService().pingWithAuthz();
|
||||
PingResult res = getPingService().pingWithAuthz();
|
||||
fail( "not in exception" );
|
||||
}
|
||||
catch ( ForbiddenException e )
|
||||
|
@ -71,8 +72,8 @@ public class PingServiceTest
|
|||
PingService service = getPingService();
|
||||
WebClient.getConfig( service ).getHttpConduit().getClient().setReceiveTimeout( 300000 );
|
||||
WebClient.client( service ).header( "Authorization", authorizationHeader );
|
||||
String res = service.pingWithAuthz();
|
||||
assertEquals( "Yeah Baby It rocks!", res );
|
||||
PingResult res = service.pingWithAuthz();
|
||||
assertEquals( "Yeah Baby It rocks!", res.getOutput() );
|
||||
}
|
||||
|
||||
@Ignore( "FIXME guest failed ???" )
|
||||
|
@ -83,7 +84,7 @@ public class PingServiceTest
|
|||
PingService service = getPingService();
|
||||
WebClient.getConfig( service ).getHttpConduit().getClient().setReceiveTimeout( 300000 );
|
||||
WebClient.client( service ).header( "Authorization", guestAuthzHeader );
|
||||
String res = service.pingWithAuthz();
|
||||
assertEquals( "Yeah Baby It rocks!", res );
|
||||
PingResult res = service.pingWithAuthz();
|
||||
assertEquals( "Yeah Baby It rocks!", res.getOutput() );
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue