/*******************************************************************************
* Copyright 2011 iovation
*
* Licensed 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.
******************************************************************************/
package org.javadrop.runner.impl;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
/**
* This implementation of the service strategy is designed to support stand-alone
* services that have their own 'main(..)'. (Not jetty based web services)
*
* @author gcooperpdx
*
*/
public class MainServiceStrategy extends BaseRunnerStrategy {
@Override
public Map<File, File> getConversionFiles(File outputDirectory) {
Map<File,File> conversionFiles = new HashMap<File, File>(); //super.getConversionFiles(outputDirectory, serviceName);
conversionFiles.put(new File(getPrefix() + File.separator + "bin" + File.separator + "service_sh.vm"),
new File(outputDirectory + File.separator + "runners" + File.separator + "bin" + File.separator + getServiceName() + ".sh"));
conversionFiles.put(new File(getPrefix() + File.separator + "init.d" + File.separator + "service_template_main.vm"),
new File(outputDirectory + File.separator + "runners" + File.separator + "init.d" + File.separator + getServiceName()));
conversionFiles.put(new File("conf" + File.separator + getServiceName() + ".properties"),
new File(outputDirectory + File.separator + "runners" + File.separator + "conf" + File.separator + getServiceName() + ".properties"));
// Grabs the log4j from the claspath
conversionFiles.put(new File("conf" + File.separator + getServiceName() + "-log4j.xml"),
new File(outputDirectory + File.separator + "runners" + File.separator + "conf" + File.separator +
getServiceName() + "-log4j.xml"));
// Grabs artifacts and puts them in lib
Collection<File> buildFiles = getDirFiles(outputDirectory,
new JarFilenameFilter());
for (File artifact : buildFiles) {
conversionFiles.put(artifact,
new File(outputDirectory + File.separator + "lib" + File.separator + artifact.getName()));
}
return conversionFiles;
}
@Override
public Map<File, Collection<File>> getInstallSet(File workingDirectory) {
Map<File, Collection<File>> installSet = super.getInstallSet(workingDirectory);
Collection<File> installFiles = new ArrayList<File>();
installFiles.add(new File(getServiceName() + ".sh"));
installSet.put(new File("runners" + File.separator + "bin"), installFiles);
installFiles = new ArrayList<File>();
installFiles.add(new File(getServiceName()));
installSet.put(new File("runners" + File.separator + "init.d"), installFiles);
installFiles = new ArrayList<File>();
installFiles.add(new File(getServiceName()+ ".properties"));
installFiles.add(new File(getServiceName() + "-log4j.xml"));
installSet.put(new File("runners" + File.separator + "conf"), installFiles);
// Lib files
Collection<File> libFiles = getDirFiles(new File(workingDirectory.getAbsolutePath() + File.separator + "lib"),
new JarFilenameFilter());
if (libFiles.size() > 0) installSet.put(new File("lib"), libFiles);
return installSet;
}
@Override
protected void applyDefaults() {
super.applyDefaults();
requiredVariables.add("SVC_MAIN_CLASS");
runnerVariables.put("PKG_STANDALONE", getServiceName());
runnerVariables.put("JTY_NAME", "notused");
}
private String getPrefix() {
return "org" + File.separator + "javadrop" + File.separator + "runnerstrategy" + File.separator + "services";
}
protected String getServiceName() {
return runnerVariables.get("SVC_NAME");
}
}