/* All content copyright (c) 2003-2012 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.*/
package org.quartz.management.resource.services;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import javax.ws.rs.Path;
import javax.ws.rs.core.UriInfo;
import org.quartz.management.service.EntityResourceFactory;
import org.terracotta.management.ServiceLocator;
import org.terracotta.management.resource.AgentEntity;
import org.terracotta.management.resource.AgentMetadataEntity;
import org.terracotta.management.resource.Representable;
import org.terracotta.management.resource.services.AgentsResourceService;
import org.terracotta.management.resource.services.validator.RequestValidator;
/**
* An embedded implementation of {@link AgentsResourceService}.
* <p/>
*
* @author brandony
*/
@Path("/agents")
public final class AgentsResourceServiceImpl implements AgentsResourceService {
private final static Set<String> DFLT_ATTRS = new HashSet<String>(Arrays.asList(new String[] { "Name" }));
private final EntityResourceFactory entityResourceFactory;
private final RequestValidator validator;
public AgentsResourceServiceImpl() {
this.entityResourceFactory = ServiceLocator.locate(EntityResourceFactory.class);
validator = null;
}
/**
* {@inheritDoc}
*/
public Collection<AgentEntity> getAgents(UriInfo info) {
// validator.validateSafe(info);
return buildAgent();
}
/**
* {@inheritDoc}
*/
@Override
public Collection<AgentMetadataEntity> getAgentsMetadata(UriInfo info) {
// validator.validateSafe(info);
AgentMetadataEntity ame = new AgentMetadataEntity();
ame.setAgentId(AgentEntity.EMBEDDED_AGENT_ID);
// TODO: I imagine there is some specific ehcache naming detail we can
// discover to build up a more descriptive name.
// If this ends up being a static value then make it a static member.
ame.setAgencyOf("Quartz");
// Set the version from this package
ame.setVersion(this.getClass().getPackage().getImplementationVersion());
ame.setAvailable(true);
return Collections.singleton(ame);
}
private Collection<AgentEntity> buildAgent() {
throw new UnsupportedOperationException("Bitrot happened here!");
// AgentEntity e = new AgentEntity();
// e.setAgentId(AgentEntity.EMBEDDED_AGENT_ID);
//
// Collection<Representable> reps = new HashSet<Representable>();
// reps.addAll(entityResourceFactory.createSchedulerEntities(null, DFLT_ATTRS));
// e.setRootRepresentables(reps);
//
// return Collections.singleton(e);
}
}