@@ -1,48 +0,0 @@ | |||
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; | |||
} | |||
} |
@@ -1,48 +0,0 @@ | |||
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; | |||
} | |||
} |
@@ -1,48 +0,0 @@ | |||
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; | |||
} | |||
} |
@@ -1,48 +0,0 @@ | |||
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,7 +28,6 @@ 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) | |||
@@ -48,9 +47,9 @@ public interface CommonServices | |||
*/ | |||
@Path( "getI18nResources" ) | |||
@GET | |||
@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } ) | |||
@Produces( { MediaType.TEXT_PLAIN } ) | |||
@RedbackAuthorization( noRestriction = true ) | |||
Map<String,String> getI18nResources( @QueryParam( "locale" ) String locale ) | |||
String getI18nResources( @QueryParam( "locale" ) String locale ) | |||
throws ArchivaRestServiceException; | |||
/** | |||
@@ -61,9 +60,9 @@ public interface CommonServices | |||
*/ | |||
@Path( "getAllI18nResources" ) | |||
@GET | |||
@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } ) | |||
@Produces( { MediaType.TEXT_PLAIN } ) | |||
@RedbackAuthorization( noRestriction = true ) | |||
Map<String,String> getAllI18nResources( @QueryParam( "locale" ) String locale ) | |||
String getAllI18nResources( @QueryParam( "locale" ) String locale ) | |||
throws ArchivaRestServiceException; | |||
@@ -26,7 +26,6 @@ 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; | |||
@@ -117,9 +116,9 @@ public interface ManagedRepositoriesService | |||
*/ | |||
@Path( "getPomSnippet/{repositoryId}" ) | |||
@GET | |||
@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } ) | |||
@Produces( { MediaType.TEXT_PLAIN } ) | |||
@RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) | |||
PomSnippet getPomSnippet( @PathParam( "repositoryId" ) String repositoryId ) | |||
String getPomSnippet( @PathParam( "repositoryId" ) String repositoryId ) | |||
throws ArchivaRestServiceException; | |||
@@ -21,7 +21,6 @@ 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; | |||
@@ -46,7 +45,7 @@ public interface PingService | |||
@GET | |||
@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } ) | |||
@RedbackAuthorization( noRestriction = true ) | |||
PingResult ping(); | |||
String ping(); | |||
/** | |||
* same as #ping but check authz | |||
@@ -57,6 +56,6 @@ public interface PingService | |||
@GET | |||
@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } ) | |||
@RedbackAuthorization( noRestriction = false, noPermission = true ) | |||
PingResult pingWithAuthz(); | |||
String pingWithAuthz(); | |||
} |
@@ -22,8 +22,6 @@ 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; | |||
@@ -45,16 +43,16 @@ public interface SystemStatusService | |||
{ | |||
@Path( "memoryStatus" ) | |||
@GET | |||
@Produces( {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } ) | |||
@Produces( MediaType.TEXT_PLAIN ) | |||
@RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) | |||
MemoryStatus getMemoryStatus() | |||
String getMemoryStatus() | |||
throws ArchivaRestServiceException; | |||
@Path( "currentServerTime/{locale}" ) | |||
@GET | |||
@Produces( {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML} ) | |||
@Produces( MediaType.TEXT_PLAIN ) | |||
@RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ) | |||
Timestamp getCurrentServerTime( @PathParam( "locale" ) String locale ) | |||
String getCurrentServerTime( @PathParam( "locale" ) String locale ) | |||
throws ArchivaRestServiceException; | |||
@Path( "queueEntries" ) |
@@ -40,7 +40,6 @@ 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 | |||
@@ -57,7 +56,7 @@ public class DefaultCommonServices | |||
@Inject | |||
private UtilServices utilServices; | |||
private Map<String, Map<String,String>> cachei18n = new ConcurrentHashMap<String, Map<String,String>>(); | |||
private Map<String, String> cachei18n = new ConcurrentHashMap<String, String>(); | |||
@Inject | |||
protected CronExpressionValidator cronExpressionValidator; | |||
@@ -73,7 +72,7 @@ public class DefaultCommonServices | |||
} | |||
@Override | |||
public Map<String,String> getI18nResources( String locale ) | |||
public String getI18nResources( String locale ) | |||
throws ArchivaRestServiceException | |||
{ | |||
Properties properties = new Properties(); | |||
@@ -90,14 +89,7 @@ public class DefaultCommonServices | |||
log.warn( "skip error loading properties {}", resourceName ); | |||
} | |||
return properties.entrySet().stream().collect( | |||
Collectors.toMap( | |||
e -> e.getKey().toString(), | |||
e -> e.getValue().toString() | |||
) | |||
); | |||
return fromProperties( properties ); | |||
} | |||
private void loadResource( Properties properties, StringBuilder resourceName, String locale ) | |||
@@ -150,11 +142,11 @@ public class DefaultCommonServices | |||
} | |||
@Override | |||
public Map<String,String> getAllI18nResources( String locale ) | |||
public String getAllI18nResources( String locale ) | |||
throws ArchivaRestServiceException | |||
{ | |||
Map<String,String> cachedi18n = cachei18n.get( StringUtils.isEmpty( locale ) ? "en" : StringUtils.lowerCase( locale ) ); | |||
String cachedi18n = cachei18n.get( StringUtils.isEmpty( locale ) ? "en" : StringUtils.lowerCase( locale ) ); | |||
if ( cachedi18n != null ) | |||
{ | |||
return cachedi18n; | |||
@@ -166,14 +158,10 @@ public class DefaultCommonServices | |||
Properties all = utilServices.getI18nProperties( locale ); | |||
StringBuilder resourceName = new StringBuilder( RESOURCE_NAME ); | |||
loadResource( all, resourceName, locale ); | |||
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; | |||
String i18n = fromProperties( all ); | |||
cachei18n.put( StringUtils.isEmpty( locale ) ? "en" : StringUtils.lowerCase( locale ), i18n ); | |||
return i18n; | |||
} | |||
catch ( IOException e ) | |||
{ |
@@ -30,7 +30,6 @@ 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; | |||
@@ -212,10 +211,10 @@ public class DefaultManagedRepositoriesService | |||
} | |||
@Override | |||
public PomSnippet getPomSnippet( String repositoryId ) | |||
public String getPomSnippet( String repositoryId ) | |||
throws ArchivaRestServiceException | |||
{ | |||
return new PomSnippet( createSnippet( getManagedRepository( repositoryId ) ) ); | |||
return createSnippet( getManagedRepository( repositoryId ) ); | |||
} | |||
private String createSnippet( ManagedRepository repo ) |
@@ -19,7 +19,6 @@ 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; | |||
@@ -32,13 +31,13 @@ public class DefaultPingService | |||
implements PingService | |||
{ | |||
@Override | |||
public PingResult ping() | |||
public String ping() | |||
{ | |||
return new PingResult( "Yeah Baby It rocks!" ); | |||
return "Yeah Baby It rocks!"; | |||
} | |||
@Override | |||
public PingResult pingWithAuthz() | |||
public String pingWithAuthz() | |||
{ | |||
return ping(); | |||
} |
@@ -29,10 +29,8 @@ 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; | |||
@@ -88,7 +86,7 @@ public class DefaultSystemStatusService | |||
} | |||
@Override | |||
public MemoryStatus getMemoryStatus() | |||
public String getMemoryStatus() | |||
throws ArchivaRestServiceException | |||
{ | |||
Runtime runtime = Runtime.getRuntime(); | |||
@@ -96,7 +94,7 @@ public class DefaultSystemStatusService | |||
long total = runtime.totalMemory(); | |||
long used = total - runtime.freeMemory(); | |||
long max = runtime.maxMemory(); | |||
return new MemoryStatus( formatMemory( used ) + "/" + formatMemory( total ) + " (Max: " + formatMemory( max ) + ")" ); | |||
return formatMemory( used ) + "/" + formatMemory( total ) + " (Max: " + formatMemory( max ) + ")"; | |||
} | |||
private static String formatMemory( long l ) | |||
@@ -105,11 +103,11 @@ public class DefaultSystemStatusService | |||
} | |||
@Override | |||
public Timestamp getCurrentServerTime( String locale ) | |||
public String getCurrentServerTime( String locale ) | |||
throws ArchivaRestServiceException | |||
{ | |||
SimpleDateFormat sdf = new SimpleDateFormat( "EEE, d MMM yyyy HH:mm:ss Z", new Locale( locale ) ); | |||
return new Timestamp( sdf.format( new Date( ) ) ); | |||
return sdf.format( new Date() ); | |||
} | |||
@Override |
@@ -19,7 +19,6 @@ 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; | |||
@@ -43,8 +42,8 @@ public class PingServiceTest | |||
// 1000000L | |||
//WebClient.getConfig( userService ).getHttpConduit().getClient().setReceiveTimeout(3000); | |||
PingResult res = getPingService().ping(); | |||
assertEquals( "Yeah Baby It rocks!", res.getOutput() ); | |||
String res = getPingService().ping(); | |||
assertEquals( "Yeah Baby It rocks!", res ); | |||
} | |||
@Test( expected = ForbiddenException.class ) | |||
@@ -54,7 +53,7 @@ public class PingServiceTest | |||
try | |||
{ | |||
PingResult res = getPingService().pingWithAuthz(); | |||
String res = getPingService().pingWithAuthz(); | |||
fail( "not in exception" ); | |||
} | |||
catch ( ForbiddenException e ) | |||
@@ -72,8 +71,8 @@ public class PingServiceTest | |||
PingService service = getPingService(); | |||
WebClient.getConfig( service ).getHttpConduit().getClient().setReceiveTimeout( 300000 ); | |||
WebClient.client( service ).header( "Authorization", authorizationHeader ); | |||
PingResult res = service.pingWithAuthz(); | |||
assertEquals( "Yeah Baby It rocks!", res.getOutput() ); | |||
String res = service.pingWithAuthz(); | |||
assertEquals( "Yeah Baby It rocks!", res ); | |||
} | |||
@Ignore( "FIXME guest failed ???" ) | |||
@@ -84,7 +83,7 @@ public class PingServiceTest | |||
PingService service = getPingService(); | |||
WebClient.getConfig( service ).getHttpConduit().getClient().setReceiveTimeout( 300000 ); | |||
WebClient.client( service ).header( "Authorization", guestAuthzHeader ); | |||
PingResult res = service.pingWithAuthz(); | |||
assertEquals( "Yeah Baby It rocks!", res.getOutput() ); | |||
String res = service.pingWithAuthz(); | |||
assertEquals( "Yeah Baby It rocks!", res ); | |||
} | |||
} |