*/
import javax.xml.bind.annotation.XmlRootElement;
+import java.io.Serializable;
/**
* AdminRepositoryConsumer
*/
@XmlRootElement( name = "adminRepositoryConsumer" )
public class AdminRepositoryConsumer
+ implements Serializable
{
private boolean enabled = false;
*/
import javax.xml.bind.annotation.XmlRootElement;
+import java.io.Serializable;
import java.util.Date;
/**
*/
@XmlRootElement( name = "archivaRepositoryStatistics" )
public class ArchivaRepositoryStatistics
+ implements Serializable
{
private Date scanEndTime;
*/
import javax.xml.bind.annotation.XmlRootElement;
+import java.io.Serializable;
import java.util.Collections;
import java.util.List;
*/
@XmlRootElement( name = "browseResult" )
public class BrowseResult
+ implements Serializable
{
private List<BrowseResultEntry> browseResultEntries;
*/
import javax.xml.bind.annotation.XmlRootElement;
+import java.io.Serializable;
/**
* @author Olivier Lamy
*/
@XmlRootElement( name = "browseResultEntry" )
public class BrowseResultEntry
- implements Comparable<BrowseResultEntry>
+ implements Comparable<BrowseResultEntry>, Serializable
{
private String name;
*/
import javax.xml.bind.annotation.XmlRootElement;
+import java.io.Serializable;
import java.util.List;
/**
*/
@XmlRootElement( name = "policyInformation" )
public class PolicyInformation
+ implements Serializable
{
private List<String> options;
package org.apache.archiva.rest.api.model;
import javax.xml.bind.annotation.XmlRootElement;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
*/
@XmlRootElement( name = "searchRequest" )
public class SearchRequest
+ implements Serializable
{
/**
*/
import javax.xml.bind.annotation.XmlRootElement;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
*/
@XmlRootElement( name = "stringList" )
public class StringList
+ implements Serializable
{
private List<String> strings;
*/
import javax.xml.bind.annotation.XmlRootElement;
+import java.io.Serializable;
import java.util.List;
/**
*/
@XmlRootElement( name = "versionsList" )
public class VersionsList
+ implements Serializable
{
private List<String> versions;
* under the License.
*/
+import org.apache.archiva.rest.api.model.QueueEntry;
import org.apache.archiva.security.common.ArchivaRoleConstants;
import org.codehaus.plexus.redback.authorization.RedbackAuthorization;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
+import java.util.List;
/**
* @author Olivier Lamy
String getCurrentServerTime( @PathParam( "locale" ) String locale )
throws ArchivaRestServiceException;
+ @Path( "queueEntries" )
+ @GET
+ @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
+ @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
+ List<QueueEntry> getQueueEntries()
+ throws ArchivaRestServiceException;
+
}
* under the License.
*/
+import org.apache.archiva.rest.api.model.QueueEntry;
import org.apache.archiva.rest.api.services.ArchivaRestServiceException;
import org.apache.archiva.rest.api.services.SystemStatusService;
+import org.codehaus.plexus.taskqueue.TaskQueue;
+import org.codehaus.plexus.taskqueue.TaskQueueException;
+import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Service;
+import javax.inject.Inject;
+import javax.ws.rs.core.Response;
import java.text.SimpleDateFormat;
+import java.util.ArrayList;
import java.util.Date;
+import java.util.List;
import java.util.Locale;
+import java.util.Map;
/**
* @author Olivier Lamy
*/
@Service( "systemStatusService#rest" )
public class DefaultSystemStatusService
+ extends AbstractRestService
implements SystemStatusService
{
+
+ private ApplicationContext applicationContext;
+
+ Map<String, TaskQueue> queues = null;
+
+ @Inject
+ public DefaultSystemStatusService( ApplicationContext applicationContext )
+ {
+ this.applicationContext = applicationContext;
+ queues = getBeansOfType( applicationContext, TaskQueue.class );
+ }
+
public String getMemoryStatus()
throws ArchivaRestServiceException
{
SimpleDateFormat sdf = new SimpleDateFormat( "EEE, d MMM yyyy HH:mm:ss Z", new Locale( locale ) );
return sdf.format( new Date() );
}
+
+ public List<QueueEntry> getQueueEntries()
+ throws ArchivaRestServiceException
+ {
+ try
+ {
+ List<QueueEntry> queueEntries = new ArrayList<QueueEntry>( queues.size() );
+ for ( Map.Entry<String, TaskQueue> entry : queues.entrySet() )
+ {
+ queueEntries.add( new QueueEntry( entry.getKey(), entry.getValue().getQueueSnapshot().size() ) );
+ }
+
+ return queueEntries;
+ }
+ catch ( TaskQueueException e )
+ {
+ log.error( e.getMessage(), e );
+ throw new ArchivaRestServiceException( e.getMessage(),
+ Response.Status.INTERNAL_SERVER_ERROR.getStatusCode() );
+ }
+ }
}
system-status.header.version.timestampStr=Build Timestamp
system-status.header.scanning=Repository Scans Currently in Progress
system-status.header.scanning.inprogress.none=No scans in progress.
+system-status.queues.grid.header.key=Queue
+system-status.queues.grid.header.number=Size
// system status part
//---------------------------
+ QueueEntry=function(key,entriesNumber){
+ this.key=key;
+ this.entriesNumber=entriesNumber;
+ }
+
+
+ mapQueueEntries=function(data){
+ if (data!=null){
+ return $.map(data,function(item){
+ return new QueueEntry(item.key,item.entriesNumber);
+ })
+ }
+ return null;
+ }
+
displaySystemStatus=function(){
screenChange();
var mainContent=$("#main-content");
mainContent.html($("#system-status-main").tmpl());
+
+ var versionInfo=$.i18n.prop('system-status.header.version.buildNumber')+": "+window.archivaRuntimeInfo.buildNumber
+ +" - "+$.i18n.prop('system-status.header.version.timestampStr')+": "+window.archivaRuntimeInfo.timestampStr;
+ mainContent.find("#status_version_info").html(versionInfo);
+
$.ajax("restServices/archivaServices/systemStatusService/memoryStatus", {
type: "GET",
dataType: "text",
}
});
- var versionInfo=$.i18n.prop('system-status.header.version.buildNumber')+": "+window.archivaRuntimeInfo.buildNumber
- +" - "+$.i18n.prop('system-status.header.version.timestampStr')+": "+window.archivaRuntimeInfo.timestampStr;
- mainContent.find("#status_version_info").html(versionInfo);
+ $.ajax("restServices/archivaServices/systemStatusService/queueEntries", {
+ type: "GET",
+ success: function(data){
+ var queueEntries=mapQueueEntries(data);
+ mainContent.find("#status_queues").html($("#status_queues_tmpl" ).tmpl({queueEntries: queueEntries}));
+ }
+ });
}
</script>
+<script id="status_queues_tmpl" type="text/html">
+ <table class="table table-condensed">
+ <thead>
+ <tr>
+ <th>${$.i18n.prop('system-status.queues.grid.header.key')}</th>
+ <th>${$.i18n.prop('system-status.queues.grid.header.number')}</th>
+ </tr>
+ </thead>
+ <tbody>
+ {{each(i,queueEntry) queueEntries}}
+ <tr>
+ <td>${queueEntry.key}</td>
+ <td>${queueEntry.entriesNumber}</td>
+ </tr>
+ {{/each}}
+ </tbody>
+ </table>
+</script>
+