/** * Copyright (C) 2010-14 diirt developers. See COPYRIGHT.TXT * All rights reserved. Use is subject to license terms. See LICENSE.TXT */ package org.diirt.service.exec; import java.io.File; import java.io.FileInputStream; import java.util.Collection; import java.util.Collections; import org.diirt.service.AbstractFileServiceProvider; import org.diirt.service.Service; import org.diirt.util.config.Configuration; /** * A service factory that crawls a directory for xml files, and creates an exec * service from each of them. * * @author carcassi */ public class ExecServiceProvider extends AbstractFileServiceProvider { private final boolean includeGenericExecService; /** * Creates a new factory that reads from the given directory. * <p> * If the directory does not exist, it simply returns an empty set. * * @param directory a directory * @param includeGenericExecService whether to include the general purpose * exec service */ public ExecServiceProvider(File directory, boolean includeGenericExecService) { super(directory); this.includeGenericExecService = includeGenericExecService; } /** * Creates a new factory using the default configuration directory. */ public ExecServiceProvider() { this(new File(Configuration.getDirectory(), "services/exec"), true); } @Override public String getName() { return "exec"; } @Override public Service createService(File file) throws Exception { if (file.getName().endsWith(".xml")) { return ExecServices.createFromXml(new FileInputStream(file)); } else { return null; } } @Override public Collection<Service> additionalServices() { if (includeGenericExecService) { return Collections.<Service>singleton(GenericExecService.createGenericExecService()); } else { return Collections.emptySet(); } } }