/*******************************************************************************
* Copyright (c) 2010-2014 SAP AG and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* SAP AG - initial API and implementation
*******************************************************************************/
package org.eclipse.skalli.core.validation;
import java.io.IOException;
import java.util.Queue;
import org.eclipse.skalli.core.rest.monitor.MonitorConverterBase;
import org.eclipse.skalli.model.EntityBase;
import org.eclipse.skalli.services.validation.ValidationService;
import com.thoughtworks.xstream.converters.MarshallingContext;
import com.thoughtworks.xstream.converters.UnmarshallingContext;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
class QueueConverter extends MonitorConverterBase {
public static final String API_VERSION = "1.0"; //$NON-NLS-1$
public QueueConverter(String serviceComponentName, String resourceName) {
super(serviceComponentName, resourceName);
}
@SuppressWarnings("nls")
@Override
protected void marshal(Object obj) throws IOException {
writer.object(resourceName);
namespaces();
apiVersion();
ValidationComponent service = getServiceInstance(ValidationService.class, ValidationComponent.class);
if (service != null) {
Queue<QueuedEntity<? extends EntityBase>> queuedEntities = service.getQueuedEntities();
writer.pair("queueSize", queuedEntities.size());
writer.array("queuedEntities", "queuedEntity");
for (QueuedEntity<?> queuedEntity: queuedEntities) {
writer
.object()
.pair("entityClass", queuedEntity.getEntityClass().getName())
.pair("entityId", queuedEntity.getEntityId())
.pair("minSeverity", queuedEntity.getMinSeverity().toString())
.pair("userId", queuedEntity.getUserId())
.pair("priority", queuedEntity.priorityAsString())
.datetime("queuedAt", queuedEntity.getQueuedAt())
.datetime("startedAt", queuedEntity.getStartedAt())
.end();
}
writer.end();
}
writer.end();
}
@Deprecated
public QueueConverter(String serviceComponentName, String resourceName, String host) {
super(serviceComponentName, resourceName, host);
}
@Override
public String getApiVersion() {
return API_VERSION;
}
@SuppressWarnings("nls")
@Override
public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) {
ValidationComponent serviceInstance = getServiceInstance(ValidationService.class, ValidationComponent.class);
if (serviceInstance != null) {
marshalNSAttributes(writer);
marshalApiVersion(writer);
Queue<QueuedEntity<? extends EntityBase>> queuedEntities = serviceInstance.getQueuedEntities();
writeNode(writer, "queueSize", queuedEntities.size());
writer.startNode("queuedEntities");
for (QueuedEntity<?> queuedEntity: queuedEntities) {
writer.startNode("queuedEntity");
writeNode(writer, "entityClass", queuedEntity.getEntityClass().getName());
writeNode(writer, "entityId", queuedEntity.getEntityId().toString());
writeNode(writer, "minSeverity", queuedEntity.getMinSeverity().toString());
writeNode(writer, "userId", queuedEntity.getUserId());
writeNode(writer, "priority", queuedEntity.priorityAsString());
writeDateTime(writer, "queuedAt", queuedEntity.getQueuedAt());
writeDateTime(writer, "startedAt", queuedEntity.getStartedAt());
writer.endNode();
}
writer.endNode();
}
}
@Override
public Object unmarshal(HierarchicalStreamReader arg0, UnmarshallingContext arg1) {
// not supported yet
return null;
}
}