<groupId>org.argeo.slc</groupId>
<artifactId>argeo-slc</artifactId>
<version>0.11.2-SNAPSHOT</version>
- <relativePath>../org.argeo.slc</relativePath>
+ <relativePath>../../org.argeo.slc</relativePath>
</parent>
+ <groupId>org.argeo.slc.runtime</groupId>
<artifactId>org.argeo.slc.detached</artifactId>
<name>Argeo SLC Detached</name>
<packaging>jar</packaging>
-<?xml version="1.0" encoding="UTF-8"?>\r
-<classpath>\r
- <classpathentry kind="src" output="target/classes" path="src/main/java"/>\r
- <classpathentry kind="src" output="target/classes" path="src/main/resources"/>\r
- <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>\r
- <classpathentry kind="src" output="target/test-classes" path="src/test/resources"/>\r
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>\r
- <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>\r
- <classpathentry kind="output" path="target/classes"/>\r
-</classpath>\r
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" output="target/classes" path="src/main/java"/>
+ <classpathentry kind="src" output="target/classes" path="src/main/resources"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
- <name>org.argeo.slc.agent</name>
+ <name>org.argeo.slc.launcher</name>
<comment></comment>
<projects>
</projects>
<groupId>org.argeo.slc</groupId>
<artifactId>argeo-slc</artifactId>
<version>0.11.2-SNAPSHOT</version>
- <relativePath>../org.argeo.slc</relativePath>
+ <relativePath>../../org.argeo.slc</relativePath>
</parent>
- <artifactId>org.argeo.slc.agent</artifactId>
+ <groupId>org.argeo.slc.runtime</groupId>
+ <artifactId>org.argeo.slc.launcher</artifactId>
<packaging>jar</packaging>
- <name>Argeo SLC Agent</name>
- <scm>
- <connection>
- scm:svn:https://www.argeo.org/svn/slc/trunk/org.argeo.slc.agent
- </connection>
- <url>
- https://www.argeo.org/svn/slc/trunk/org.argeo.slc.agent
- </url>
- </scm>
+ <name>Argeo SLC Launcher</name>
<build>
<plugins>
- <!-- Look to parent pom for inheritances -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
</build>
<dependencies>
<dependency>
- <groupId>org.argeo.slc</groupId>
- <artifactId>org.argeo.slc.core</artifactId>
+ <groupId>org.argeo.slc.runtime</groupId>
+ <artifactId>org.argeo.slc.specs</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
- <groupId>org.argeo.slc</groupId>
- <artifactId>org.argeo.slc.detached</artifactId>
+ <groupId>org.argeo.slc.runtime</groupId>
+ <artifactId>org.argeo.slc.support.simple</artifactId>
<version>${project.version}</version>
</dependency>
- <dependency>
- <groupId>org.springframework.ws</groupId>
- <artifactId>org.springframework.ws</artifactId>
- </dependency>
-
- <dependency>
- <groupId>javax.xml.soap</groupId>
- <artifactId>com.springsource.javax.xml.soap</artifactId>
- </dependency>
- <dependency>
- <groupId>com.sun.xml</groupId>
- <artifactId>
- com.springsource.com.sun.xml.messaging.saaj
- </artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.argeo.dep.osgi</groupId>
- <artifactId>org.argeo.dep.osgi.ant</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>com.springsource.org.apache.commons.net</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.oro</groupId>
- <artifactId>com.springsource.org.apache.oro</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.bsf</groupId>
- <artifactId>com.springsource.org.apache.bsf</artifactId>
- </dependency>
- <dependency>
- <groupId>org.beanshell</groupId>
- <artifactId>com.springsource.bsh</artifactId>
- </dependency>
-
<!--
<dependency> <groupId>org.apache.maven</groupId>
<artifactId>maven-embedder</artifactId> </dependency> <dependency>
+++ /dev/null
-package org.argeo.slc.ant;
-
-public interface AntConstants {
- // ANT
- /** The Ant reference to the Spring application context used. */
- public static final String REF_ROOT_CONTEXT = "slcApplicationContext";
- /** The Ant reference to the SLC structure registry used. */
- public static final String REF_STRUCTURE_REGISTRY = "slcStructureRegistry";
- /** The Ant reference to the <code>TreePath</code> of the current project */
- public static final String REF_PROJECT_PATH = "slcProjectPath";
- /**
- * Resource path to the property file listing the SLC specific Ant tasks:
- * /org/argeo/slc/ant/taskdefs.properties
- */
- public static final String SLC_TASKDEFS_RESOURCE_PATH = "/org/argeo/slc/ant/taskdefs.properties";
- /**
- * Resource path to the property file listing the SLC specific Ant types:
- * /org/argeo/slc/ant/typedefs.properties
- */
- public static final String SLC_TYPEDEFS_RESOURCE_PATH = "/org/argeo/slc/ant/typedefs.properties";
- public static final String REF_SLC_EXECUTION = "slcExecution";
-
- // SLC EXECUTION
- public static final String EXECTYPE_ANT = "org.apache.tools.ant";
- public static final String EXECTYPE_SLC_ANT = "org.argeo.slc.ant";
-
- public final static String EXECATTR_RUNTIME = "slc.runtime";
- public final static String EXECATTR_ANT_FILE = "ant.file";
- public final static String EXECATTR_ANT_TARGETS = "ant.targets";
-
- // PROPERTIES
- /** Property for the root dir (SLC root property file). */
- public final static String ROOT_DIR_PROPERTY = "slc.rootDir";
- /** Property for the conf dir (SLC root property file). */
- public final static String CONF_DIR_PROPERTY = "slc.confDir";
- /** Property for the work dir (SLC root property file). */
- public final static String WORK_DIR_PROPERTY = "slc.workDir";
- /** Name of the Spring bean used by default */
- public final static String DEFAULT_TEST_RUN_PROPERTY = "slc.defaultTestRun";
-
- /** Property for the runtime to use. */
- public final static String RUNTIME_PROPERTY = "slc.runtime";
-
- // LOG4J
- public final static String MDC_ANT_PROJECT = "slc.ant.project";
-
-}
+++ /dev/null
-package org.argeo.slc.ant;
-
-import org.apache.tools.ant.Project;
-import org.argeo.slc.core.process.SlcExecution;
-import org.argeo.slc.runtime.SlcExecutionContext;
-import org.springframework.context.ApplicationContext;
-
-public class AntExecutionContext implements SlcExecutionContext {
- private final Project project;
-
- public AntExecutionContext(Project project) {
- this.project = project;
- }
-
- public <T> T getBean(String name) {
- ApplicationContext context = (ApplicationContext) project
- .getReference(AntConstants.REF_ROOT_CONTEXT);
- return (T) context.getBean(name);
- }
-
- public <T> T getAntRef(String antId) {
- return (T) project.getReference(antId);
- }
-
- public SlcExecution getSlcExecution() {
- return (SlcExecution) project
- .getReference(AntConstants.REF_SLC_EXECUTION);
- }
-
- public Project getProject() {
- return project;
- }
-}
+++ /dev/null
-package org.argeo.slc.ant;\r
-\r
-import java.io.File;\r
-import java.net.URL;\r
-import java.util.Arrays;\r
-import java.util.Map;\r
-import java.util.Properties;\r
-import java.util.Vector;\r
-\r
-import org.apache.tools.ant.Project;\r
-import org.apache.tools.ant.ProjectHelper;\r
-import org.apache.tools.ant.helper.ProjectHelper2;\r
-import org.argeo.slc.core.SlcException;\r
-\r
-/** Run regular Ant script (that is, not SLC instrumented) */\r
-public class AntRunner {\r
- private URL buildFile;\r
- private String[] targets;\r
- private Properties properties;\r
-\r
- public AntRunner() {\r
-\r
- }\r
-\r
- public AntRunner(URL buildFile, String target, Properties properties) {\r
- this(buildFile, new String[] { target }, properties);\r
- }\r
-\r
- public AntRunner(URL buildFile, String[] targets, Properties properties) {\r
- this.buildFile = buildFile;\r
- this.targets = targets;\r
- this.properties = properties;\r
- }\r
-\r
- public void run() {\r
- Project p = new Project();\r
-\r
- String path = buildFile.getFile();\r
- p.setUserProperty("ant.file", path);\r
- p.setBaseDir(extractBaseDir(path));\r
-\r
- p.init();\r
- ProjectHelper projectHelper = new ProjectHelper2();\r
- p.addReference(ProjectHelper.PROJECTHELPER_REFERENCE, projectHelper);\r
- projectHelper.parse(p, buildFile);\r
-\r
- if (properties != null) {\r
- for (Map.Entry<Object, Object> entry : properties.entrySet()) {\r
- p.setUserProperty(entry.getKey().toString(), entry.getValue()\r
- .toString());\r
- }\r
- }\r
-\r
- p.fireBuildStarted();\r
- Throwable exception = null;\r
- try {\r
- if (targets == null) {\r
- p.executeTarget(p.getDefaultTarget());\r
- } else {\r
- p.executeTargets(new Vector<String>(Arrays.asList(targets)));\r
- }\r
- } catch (Throwable e) {\r
- exception = e;\r
- throw new SlcException("Could not run Ant script " + buildFile, e);\r
- } finally {\r
- p.fireBuildFinished(exception);\r
- }\r
-\r
- }\r
-\r
- private File extractBaseDir(String path) {\r
- String baseDir = null;\r
- if (path.length() > 1) {\r
- int indx = path.lastIndexOf('/', path.length() - 1);\r
- if (indx == -1 || indx == 0) {\r
- baseDir = "/";\r
- } else {\r
- baseDir = path.substring(0, indx) + "/";\r
- }\r
- } else {\r
- baseDir = "/";\r
- }\r
- File file = new File(baseDir);\r
- if (file.exists()) {\r
- return file;\r
- } else {\r
- return new File(System.getProperty("user.dir"));\r
- }\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.StringTokenizer;
-import java.util.Vector;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.log4j.Appender;
-import org.apache.log4j.LogManager;
-import org.apache.log4j.MDC;
-import org.apache.tools.ant.BuildListener;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.ProjectHelper;
-import org.apache.tools.ant.helper.ProjectHelper2;
-import org.argeo.slc.core.SlcException;
-import org.argeo.slc.core.process.SlcExecution;
-import org.argeo.slc.core.structure.SimpleSElement;
-import org.argeo.slc.core.structure.StructureRegistry;
-import org.argeo.slc.core.structure.tree.TreeSPath;
-import org.argeo.slc.core.structure.tree.TreeSRegistry;
-import org.argeo.slc.logging.Log4jUtils;
-import org.argeo.slc.runtime.SlcExecutionOutput;
-import org.springframework.beans.factory.BeanFactoryUtils;
-import org.springframework.beans.factory.ListableBeanFactory;
-import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
-import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
-import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.context.support.GenericApplicationContext;
-import org.springframework.core.io.DefaultResourceLoader;
-import org.springframework.core.io.Resource;
-import org.springframework.core.io.ResourceLoader;
-import org.springframework.util.SystemPropertyUtils;
-
-public class AntSlcApplication {
- private final static String DEFAULT_APP_LOG4J_PROPERTIES = "org/argeo/slc/ant/defaultAppLog4j.properties";
-
- private final static Log log = LogFactory.getLog(AntSlcApplication.class);
-
- private Resource contextLocation;
- private ConfigurableApplicationContext parentContext;
-
- private Resource rootDir;
- private Resource confDir;
- private File workDir;
-
- public void execute(SlcExecution slcExecution, Properties properties,
- Map<String, Object> references,
- SlcExecutionOutput<AntExecutionContext> executionOutput) {
-
- // Properties and application logging initialization
- initSystemProperties(properties);
- Log4jUtils.initLog4j("classpath:" + DEFAULT_APP_LOG4J_PROPERTIES);
-
- log.info("\n###\n### Start SLC execution " + slcExecution.getUuid()
- + "\n###\n");
- if (log.isDebugEnabled()) {
- log.debug("rootDir=" + rootDir);
- log.debug("confDir=" + confDir);
- log.debug("workDir=" + workDir);
- }
-
- // Ant coordinates
- String scriptRelativePath = findAntScript(slcExecution);
- List<String> targets = findAntTargets(slcExecution);
-
- // Spring initialization
- ConfigurableApplicationContext ctx = createExecutionContext(slcExecution);
-
- // Ant project initialization
- Project project = new Project();
- AntExecutionContext executionContext = new AntExecutionContext(project);
- project.addReference(AntConstants.REF_ROOT_CONTEXT, ctx);
- project.addReference(AntConstants.REF_SLC_EXECUTION, slcExecution);
-
- try {
- initProject(project, properties, references);
- parseProject(project, scriptRelativePath);
-
- // Execute project
- initStructure(project, scriptRelativePath);
- runProject(project, targets);
-
- if (executionOutput != null)
- executionOutput.postExecution(executionContext);
- } finally {
- ctx.close();
- }
- }
-
- protected void initSystemProperties(Properties userProperties) {
- // Set user properties as system properties so that Spring can access
- // them
- if (userProperties != null) {
- for (Object key : userProperties.keySet()) {
- System.setProperty(key.toString(), userProperties
- .getProperty(key.toString()));
- }
- }
-
- if (System.getProperty(AntConstants.DEFAULT_TEST_RUN_PROPERTY) == null) {
- System.setProperty(AntConstants.DEFAULT_TEST_RUN_PROPERTY,
- "defaultTestRun");
- }
-
- try {
- if (rootDir != null)
- setSystemPropertyForRes(AntConstants.ROOT_DIR_PROPERTY, rootDir);
- if (confDir != null)
- setSystemPropertyForRes(AntConstants.CONF_DIR_PROPERTY, confDir);
- if (workDir != null)
- System.setProperty(AntConstants.WORK_DIR_PROPERTY, workDir
- .getCanonicalPath());
-
- // Additional properties in slc.properties file. Already set sytem
- // properties (such as the various directories) can be resolved in
- // placeholders.
- if (confDir != null) {
- Resource slcPropertiesRes = confDir
- .createRelative("slc.properties");
- if (slcPropertiesRes.exists()) {
- Properties slcProperties = new Properties();
- InputStream in = slcPropertiesRes.getInputStream();
- try {
- slcProperties.load(in);
- } finally {
- IOUtils.closeQuietly(in);
- }
-
- for (Object obj : slcProperties.keySet()) {
- String key = obj.toString();
- if (!System.getProperties().containsKey(key)) {
- String value = SystemPropertyUtils
- .resolvePlaceholders(slcProperties
- .getProperty(key));
- System.setProperty(key, value);
- }
- }
- }
- }
- } catch (Exception e) {
- throw new SlcException("Cannot init system properties.", e);
- }
- }
-
- /**
- * Set property as an absolute file path if the resource can be located on
- * the file system, or as an url.
- */
- private void setSystemPropertyForRes(String key, Resource res)
- throws IOException {
- String value = null;
- try {
- value = res.getFile().getCanonicalPath();
- } catch (IOException e) {
- value = res.getURL().toString();
- }
- System.setProperty(key, value);
- }
-
- protected ConfigurableApplicationContext createExecutionContext(
- SlcExecution slcExecution) {
- try {
-
- // Find runtime definition
- Resource runtimeRes = null;
- String runtimeStr = slcExecution.getAttributes().get(
- AntConstants.EXECATTR_RUNTIME);
- if (runtimeStr == null)
- runtimeStr = System.getProperty(AntConstants.RUNTIME_PROPERTY,
- "default");
-
- ResourceLoader rl = new DefaultResourceLoader(getClass()
- .getClassLoader());
- try {// tries absolute reference
- runtimeRes = rl.getResource(runtimeStr);
- } catch (Exception e) {
- // silent
- }
- if (runtimeRes == null || !runtimeRes.exists()) {
- if (confDir != null)
- runtimeRes = confDir.createRelative("runtime/" + runtimeStr
- + ".xml");
- }
-
- // Find runtime independent application context definition
- if (confDir != null && contextLocation == null) {
- contextLocation = confDir
- .createRelative("applicationContext.xml");
- }
-
- GenericApplicationContext ctx = new GenericApplicationContext(
- parentContext);
- ctx.setDisplayName("SLC Execution #" + slcExecution.getUuid());
-
- XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader(ctx);
- if (runtimeRes != null && runtimeRes.exists())
- xmlReader.loadBeanDefinitions(runtimeRes);
- else
- log.warn("No runtime context defined");
-
- if (contextLocation != null && contextLocation.exists())
- xmlReader.loadBeanDefinitions(contextLocation);
- else
- log.warn("No runtime independent application context defined");
-
- // Add property place holder
- PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer();
- ppc.setIgnoreUnresolvablePlaceholders(true);
- ctx.addBeanFactoryPostProcessor(ppc);
-
- ctx.refresh();
- return ctx;
- } catch (Exception e) {
- throw new SlcException(
- "Cannot create SLC execution application context.", e);
- }
- }
-
- protected String findAntScript(SlcExecution slcExecution) {
- String scriptStr = slcExecution.getAttributes().get(
- AntConstants.EXECATTR_ANT_FILE);
- if (scriptStr == null)
- throw new SlcException("No Ant script provided");
-
- return scriptStr;
- }
-
- protected List<String> findAntTargets(SlcExecution slcExecution) {
- String targetList = slcExecution.getAttributes().get(
- AntConstants.EXECATTR_ANT_TARGETS);
- List<String> targets = new Vector<String>();
- if (targetList != null) {
- StringTokenizer stTargets = new StringTokenizer(targetList, ",");
- while (stTargets.hasMoreTokens()) {
- targets.add(stTargets.nextToken());
- }
- }
- return targets;
- }
-
- protected void initProject(Project project, Properties properties,
- Map<String, Object> references) {
- if (properties != null) {
- for (Map.Entry<Object, Object> entry : properties.entrySet()) {
- project.setUserProperty(entry.getKey().toString(), entry
- .getValue().toString());
- }
- }
-
- if (references != null) {
- for (Map.Entry<String, Object> entry : references.entrySet()) {
- project.addReference(entry.getKey(), entry.getValue());
- }
- }
-
- //project.addBuildListener(new CommonsLoggingListener());
-
- ListableBeanFactory context = (ListableBeanFactory) project
- .getReference(AntConstants.REF_ROOT_CONTEXT);
- // Register build listeners
- Map<String, BuildListener> listeners = BeanFactoryUtils
- .beansOfTypeIncludingAncestors(context, BuildListener.class,
- false, false);
- for (BuildListener listener : listeners.values()) {
- project.addBuildListener(listener);
- }
-
- // Register log4j appenders from context
- MDC.put(AntConstants.MDC_ANT_PROJECT, project);
- Map<String, Appender> appenders = context.getBeansOfType(
- Appender.class, false, true);
- for (Appender appender : appenders.values()) {
- LogManager.getRootLogger().addAppender(appender);
- }
-
- project.init();
- addCustomTaskAndTypes(project);
- }
-
- /** Loads the SLC specific Ant tasks. */
- protected void addCustomTaskAndTypes(Project project) {
- Properties taskdefs = getDefs(project,
- AntConstants.SLC_TASKDEFS_RESOURCE_PATH);
- for (Object o : taskdefs.keySet()) {
- String name = o.toString();
- try {
- project.addTaskDefinition(name, Class.forName(taskdefs
- .getProperty(name)));
- } catch (ClassNotFoundException e) {
- log.error("Unknown class for task " + name, e);
- }
- }
- Properties typedefs = getDefs(project,
- AntConstants.SLC_TYPEDEFS_RESOURCE_PATH);
- for (Object o : typedefs.keySet()) {
- String name = o.toString();
- try {
- project.addDataTypeDefinition(name, Class.forName(typedefs
- .getProperty(name)));
- } catch (ClassNotFoundException e) {
- log.error("Unknown class for type " + name, e);
- }
- }
- }
-
- private Properties getDefs(Project project, String path) {
- Properties defs = new Properties();
- try {
- InputStream in = project.getClass().getResourceAsStream(path);
- defs.load(in);
- in.close();
- } catch (IOException e) {
- throw new SlcException("Cannot load task definitions", e);
- }
- return defs;
- }
-
- protected void initStructure(Project project, String scriptRelativePath) {
- // Init structure registry
- StructureRegistry<TreeSPath> registry = new TreeSRegistry();
- project.addReference(AntConstants.REF_STRUCTURE_REGISTRY, registry);
-
- // Lowest levels
- StringTokenizer st = new StringTokenizer(scriptRelativePath, "/");
- TreeSPath currPath = null;
- while (st.hasMoreTokens()) {
- String name = st.nextToken();
- if (currPath == null) {
- currPath = TreeSPath.createRootPath(name);
- } else {
- if (st.hasMoreTokens())// don't register project file
- currPath = currPath.createChild(name);
- }
- registry.register(currPath, new SimpleSElement(name));
- }
-
- // Project level
- String projectName = project.getName() != null
- && !project.getName().equals("") ? project.getName()
- : "project";
- TreeSPath projectPath = currPath.createChild(projectName);
-
- String projectDesc = project.getDescription() != null
- && !project.getDescription().equals("") ? project
- .getDescription() : projectPath.getName();
-
- registry.register(projectPath, new SimpleSElement(projectDesc));
- project.addReference(AntConstants.REF_PROJECT_PATH, projectPath);
-
- if (log.isDebugEnabled())
- log.debug("Project path: " + projectPath);
- }
-
- protected void parseProject(Project project, String scriptRelativePath) {
- try {
- Resource script = rootDir.createRelative(scriptRelativePath);
- File baseDir = null;
- try {
- File scriptFile = script.getFile();
- baseDir = scriptFile.getParentFile();
- } catch (IOException e) {// resource is not a file
- baseDir = new File(System.getProperty("user.dir"));
- }
- project.setBaseDir(baseDir);
- // Reset basedir property, in order to avoid base dir override when
- // running in Maven
- project.setProperty("basedir", baseDir.getAbsolutePath());
-
- ProjectHelper2 projectHelper = new ProjectHelper2();
- project.addReference(ProjectHelper.PROJECTHELPER_REFERENCE,
- projectHelper);
- projectHelper.parse(project, script.getURL());
- } catch (Exception e) {
- throw new SlcException("Could not parse project for script "
- + scriptRelativePath, e);
- }
-
- }
-
- protected void runProject(Project p, List<String> targets) {
- p.fireBuildStarted();
- Throwable exception = null;
- try {
- if (targets.size() == 0) {// no target defined
- p.executeTarget(p.getDefaultTarget());
- } else {
- p.executeTargets(new Vector<String>(targets));
- }
- } catch (Throwable e) {
- exception = e;
- throw new SlcException("SLC Ant execution failed", exception);
- } finally {
- p.fireBuildFinished(exception);
- }
- }
-
- public void setContextLocation(Resource contextLocation) {
- this.contextLocation = contextLocation;
- }
-
- public void setRootDir(Resource rootDir) {
- this.rootDir = rootDir;
- }
-
- public void setConfDir(Resource confDir) {
- this.confDir = confDir;
- }
-
- public void setWorkDir(File workDir) {
- this.workDir = workDir;
- }
-
- public void setParentContext(ConfigurableApplicationContext runtimeContext) {
- this.parentContext = runtimeContext;
- }
-
-}
+++ /dev/null
-package org.argeo.slc.ant;
-
-import java.util.StringTokenizer;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.tools.ant.util.FileNameMapper;
-
-public class RemoveRootDirMapper implements FileNameMapper {
- private Log log = LogFactory.getLog(RemoveRootDirMapper.class);
- private String to = "enabled";
-
- public String[] mapFileName(String sourceFileName) {
- StringTokenizer st = new StringTokenizer(sourceFileName, "/");
- boolean first = true;
- boolean skipRoot = !to.equals("disabled");
- StringBuffer buf = new StringBuffer("");
- while (st.hasMoreTokens()) {
- if (first && skipRoot) { // skip
- st.nextToken();
- first = false;
- } else {
- buf.append(st.nextToken()).append('/');
- }
- }
-
- if (log.isTraceEnabled()) {
- log.trace("Source: " + sourceFileName + " - out: " + buf);
- }
- return new String[] { buf.toString() };
- }
-
- public void setFrom(String from) {
- }
-
- public void setTo(String to) {
- this.to = to;
- }
-
-}
+++ /dev/null
-package org.argeo.slc.ant;\r
-\r
-import java.util.List;\r
-import java.util.Vector;\r
-\r
-import org.apache.log4j.AppenderSkeleton;\r
-import org.apache.log4j.Level;\r
-import org.apache.log4j.MDC;\r
-import org.apache.log4j.spi.LoggingEvent;\r
-import org.apache.tools.ant.BuildEvent;\r
-import org.apache.tools.ant.BuildListener;\r
-import org.apache.tools.ant.Project;\r
-import org.argeo.slc.core.SlcException;\r
-import org.argeo.slc.core.process.SlcExecution;\r
-import org.argeo.slc.core.process.SlcExecutionNotifier;\r
-import org.argeo.slc.core.process.SlcExecutionStep;\r
-\r
-public class SlcExecutionBuildListener extends AppenderSkeleton implements\r
- BuildListener {\r
- private List<SlcExecutionNotifier> notifiers = new Vector<SlcExecutionNotifier>();\r
-\r
- private boolean currentStepNotified = true;\r
-\r
- // CUSTOMIZATIONS\r
- /**\r
- * Whether to log Ant initialization stuff before the first target has been\r
- * called.\r
- */\r
- private boolean logBeforeFirstTarget = false;\r
- /** Whether the first target has been called. */\r
- private boolean firstTargetStarted = false;\r
-\r
- private boolean logTaskStartFinish = true;\r
-\r
- public SlcExecutionBuildListener() {\r
- // Default log level\r
- setThreshold(Level.INFO);\r
- }\r
-\r
- public void buildStarted(BuildEvent event) {\r
- SlcExecution slcExecution = getSlcExecution(event);\r
- for (SlcExecutionNotifier notifier : notifiers) {\r
- notifier.newExecution(slcExecution);\r
- }\r
- }\r
-\r
- public void buildFinished(BuildEvent event) {\r
- SlcExecution slcExecution = getSlcExecution(event);\r
- String oldStatus = slcExecution.getStatus();\r
- slcExecution.setStatus(SlcExecution.STATUS_FINISHED);\r
-\r
- for (SlcExecutionNotifier notifier : notifiers) {\r
- notifier.updateStatus(slcExecution, oldStatus, slcExecution\r
- .getStatus());\r
- }\r
- }\r
-\r
- public void messageLogged(BuildEvent event) {\r
- if (!shouldLog())\r
- return;\r
-\r
- SlcExecution slcExecution = getSlcExecution(event);\r
- if (slcExecution != null) {\r
- if (currentStepNotified) {\r
- slcExecution.getSteps().add(\r
- new SlcExecutionStep(event.getMessage()));\r
- notifyStep(slcExecution, slcExecution.currentStep());\r
- currentStepNotified = true;\r
- } else {\r
- slcExecution.currentStep().addLog(event.getMessage());\r
- }\r
- } else {\r
- // TODO: log before initialization?\r
- }\r
- }\r
-\r
- public void targetStarted(BuildEvent event) {\r
- if (!firstTargetStarted)\r
- firstTargetStarted = true;\r
-\r
- addLogStep(event, "Target " + event.getTarget().getName() + " started");\r
- }\r
-\r
- public void targetFinished(BuildEvent event) {\r
- addLogStep(event, "Target " + event.getTarget().getName() + " finished");\r
- }\r
-\r
- public void taskStarted(BuildEvent event) {\r
- if (!shouldLog())\r
- return;\r
-\r
- SlcExecution slcExecution = getSlcExecution(event);\r
- if (!currentStepNotified) {\r
- notifyStep(slcExecution, slcExecution.currentStep());\r
- currentStepNotified = true;\r
- }\r
-\r
- String msg = null;\r
- if (logTaskStartFinish)\r
- msg = "Task " + event.getTask().getTaskName() + " started";\r
-\r
- slcExecution.getSteps().add(new SlcExecutionStep(msg));\r
-\r
- currentStepNotified = false;\r
- }\r
-\r
- public void taskFinished(BuildEvent event) {\r
- if (!shouldLog())\r
- return;\r
-\r
- SlcExecution slcExecution = getSlcExecution(event);\r
- if (!currentStepNotified) {\r
-\r
- if (logTaskStartFinish)\r
- slcExecution.currentStep().addLog(\r
- "Task " + event.getTask().getTaskName() + " finished");\r
-\r
- notifyStep(slcExecution, slcExecution.currentStep());\r
- currentStepNotified = true;\r
- }\r
- }\r
-\r
- public void setNotifiers(List<SlcExecutionNotifier> notifiers) {\r
- this.notifiers = notifiers;\r
- }\r
-\r
- protected SlcExecution getSlcExecution(BuildEvent event) {\r
- return getSlcExecution(event.getProject());\r
- }\r
-\r
- protected SlcExecution getSlcExecution(Project project) {\r
- SlcExecution slcExecution = (SlcExecution) project\r
- .getReference(AntConstants.REF_SLC_EXECUTION);\r
-\r
- if (slcExecution == null)\r
- throw new SlcException("No SLC Execution registered.");\r
- return slcExecution;\r
- }\r
-\r
- protected void addLogStep(BuildEvent event, String msg) {\r
- SlcExecution slcExecution = getSlcExecution(event);\r
- slcExecution.getSteps().add(new SlcExecutionStep(msg));\r
-\r
- notifyStep(slcExecution, slcExecution.currentStep());\r
- currentStepNotified = true;\r
- }\r
-\r
- protected void notifyStep(SlcExecution slcExecution, SlcExecutionStep step) {\r
- Vector<SlcExecutionStep> additionalSteps = new Vector<SlcExecutionStep>();\r
- additionalSteps.add(step);\r
- notifySteps(slcExecution, additionalSteps);\r
- }\r
-\r
- protected void notifySteps(SlcExecution slcExecution,\r
- List<SlcExecutionStep> additionalSteps) {\r
- for (SlcExecutionNotifier notifier : notifiers) {\r
- notifier.addSteps(slcExecution, additionalSteps);\r
- }\r
- }\r
-\r
- /* Log4j methods */\r
-\r
- @Override\r
- protected void append(LoggingEvent event) {\r
- Project project = (Project) MDC.get(AntConstants.MDC_ANT_PROJECT);\r
- if (project == null)\r
- throw new SlcException("No Ant project registered in Log4j MDC.");\r
-\r
- SlcExecution slcExecution = getSlcExecution(project);\r
- if (currentStepNotified) {\r
- slcExecution.getSteps().add(\r
- new SlcExecutionStep(event.getMessage().toString()));\r
- currentStepNotified = false;\r
- } else {\r
- slcExecution.currentStep().addLog(event.getMessage().toString());\r
- }\r
- }\r
-\r
- protected boolean shouldLog() {\r
- return logBeforeFirstTarget || firstTargetStarted;\r
- }\r
-\r
- public void close() {\r
- }\r
-\r
- public boolean requiresLayout() {\r
- return false;\r
- }\r
-\r
- public void setLogBeforeFirstTarget(boolean logBeforeFirstTarget) {\r
- this.logBeforeFirstTarget = logBeforeFirstTarget;\r
- }\r
-\r
- public void setLogTaskStartFinish(boolean logTaskStartFinish) {\r
- this.logTaskStartFinish = logTaskStartFinish;\r
- }\r
-\r
- public void setLogLevel(String logLevel) {\r
- setThreshold(Level.toLevel(logLevel));\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant.deploy;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-import org.apache.tools.ant.BuildException;\r
-import org.argeo.slc.ant.spring.SpringArg;\r
-import org.argeo.slc.ant.structure.SAwareTask;\r
-import org.argeo.slc.core.build.Distribution;\r
-import org.argeo.slc.core.deploy.Deployment;\r
-import org.argeo.slc.core.deploy.DeploymentData;\r
-import org.argeo.slc.core.deploy.TargetData;\r
-\r
-/** Ant task wrapping a deployment. */\r
-public class SlcDeployTask extends SAwareTask {\r
- private Log log = LogFactory.getLog(SlcDeployTask.class);\r
-\r
- private String deploymentBean = null;\r
-\r
- private SpringArg<DeploymentData> deploymentDataArg;\r
- private SpringArg<TargetData> targetDataArg;\r
- private SpringArg<Distribution> distributionArg;\r
-\r
- @Override\r
- public void executeActions(String mode) throws BuildException {\r
- Deployment deployment = (Deployment) getContext().getBean(\r
- deploymentBean);\r
-\r
- // set overridden references\r
- if (distributionArg != null) {\r
- deployment.setDistribution(distributionArg.getInstance());\r
- log.trace("Overrides distribution");\r
- }\r
-\r
- if (deploymentDataArg != null) {\r
- deployment.setDeploymentData(deploymentDataArg.getInstance());\r
- log.trace("Overrides deployment data");\r
- }\r
-\r
- if (targetDataArg != null) {\r
- deployment.setTargetData(targetDataArg.getInstance());\r
- log.trace("Overrides target data");\r
- }\r
-\r
- deployment.execute();\r
- }\r
-\r
- /**\r
- * The bean name of the test run to use. If not set the default is used.\r
- * \r
- * @see SlcAntConfig\r
- */\r
- public void setDeployment(String deploymentBean) {\r
- this.deploymentBean = deploymentBean;\r
- }\r
-\r
- /** Creates deployment data sub tag. */\r
- public SpringArg<DeploymentData> createDeploymentData() {\r
- deploymentDataArg = new SpringArg<DeploymentData>();\r
- return deploymentDataArg;\r
- }\r
-\r
- /** Creates target data sub tag. */\r
- public SpringArg<TargetData> createTargetData() {\r
- targetDataArg = new SpringArg<TargetData>();\r
- return targetDataArg;\r
- }\r
-\r
- public SpringArg<Distribution> createDistribution() {\r
- distributionArg = new SpringArg<Distribution>();\r
- return distributionArg;\r
- }\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant.deploy;
-
-import java.lang.reflect.Method;
-
-import org.argeo.slc.ant.structure.SAwareTask;
-import org.argeo.slc.core.SlcException;
-import org.argeo.slc.core.deploy.DeployedSystem;
-import org.argeo.slc.core.deploy.DeployedSystemManager;
-
-public class SlcManagerTask extends SAwareTask {
- private String action;
- private String manager;
-
- @Override
- protected void executeActions(String mode) {
- DeployedSystemManager<DeployedSystem> systemManager = getBean(manager);
-
- try {
- Method method = systemManager.getClass().getMethod(action, null);
- method.invoke(systemManager, null);
- } catch (Exception e) {
- throw new SlcException("Cannot execute action " + action
- + " for manager " + manager, e);
- }
- }
-
- public void setAction(String action) {
- this.action = action;
- }
-
- public void setManager(String manager) {
- this.manager = manager;
- }
-
-}
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-Integration of SLC Deploy in Ant.\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.ant.detached;
-
-import java.util.Properties;
-import java.util.UUID;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.ant.spring.MapArg;
-import org.argeo.slc.ant.structure.SAwareTask;
-import org.argeo.slc.core.SlcException;
-import org.argeo.slc.detached.DetachedAnswer;
-import org.argeo.slc.detached.DetachedClient;
-import org.argeo.slc.detached.DetachedRequest;
-import org.argeo.slc.spring.SpringUtils;
-
-public class SlcDetachedTask extends SAwareTask {
- private final static Log log = LogFactory.getLog(SlcDetachedTask.class);
-
- private String client;
- private String action;
-
- private MapArg properties;
-
- @Override
- protected void executeActions(String mode) {
- // Find detached client
- DetachedClient detachedClient = null;
- if (client != null)
- detachedClient = getBean(client);
- else
- detachedClient = SpringUtils.loadSingleFromContext(getContext(),
- DetachedClient.class);
-
- if (detachedClient == null)
- throw new SlcException("Could not find any detached client.");
-
- // Prepare and send request
- DetachedRequest request = new DetachedRequest(UUID.randomUUID()
- .toString());
- request.setRef(action);
-
- if (properties != null) {
- Properties props = new Properties();
- props.putAll(properties.getMap());
- request.setProperties(props);
- }
-
- try {
- detachedClient.sendRequest(request);
- DetachedAnswer answer = detachedClient.receiveAnswer();
- if (answer.getStatus() == DetachedAnswer.ERROR)
- throw new SlcException("Error when executing request "
- + answer.getUuid() + ": " + answer.getLog());
- else
- log.info("Admin answer: " + answer.getLog());
- } catch (Exception e) {
- throw new SlcException("Could not send request.", e);
- }
- }
-
- public void setClient(String driverBean) {
- this.client = driverBean;
- }
-
- public void setAction(String action) {
- this.action = action;
- }
-
- public MapArg createProperties() {
- if (properties == null)
- properties = new MapArg();
- else
- throw new SlcException("Properties already declared.");
- return properties;
- }
-}
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-Bases classes for SLC Ant extensions.\r
-<h2>Introduction</h2>\r
-SLC Ant allows to integrate Ant and Spring in order to run an\r
-application based on top of SLC. Sequence of actions are defined in Ant\r
-files with specific Ant tasks referencing Spring beans implementing the\r
-SLC interfaces. The properties of these beans can be overridden at\r
-runtime in the Ant scripts.\r
-<br />\r
-SLC Ant also provides a tree-based implementation of the SLC structure\r
-which allows to uniquely identify and reference the various actions.\r
-\r
-<h2>Installation</h2>\r
-The structure will be first defined by the directory tree where the Ant\r
-files are stored. In order to define the root of this tree, you need to\r
-place in the root directory an\r
-<b>SLC Ant root file</b>\r
-(default name: slcRoot.properties).\r
-<br />\r
-In this root file you can define a configuration directory and a work\r
-directory (default values are provided if they are not explicitly set).\r
-<br />\r
-Additional properties can then be defined in files stored under the\r
-configuration directory.\r
-<br />\r
-For details about the configuration and the various properties, please\r
-refer to {@link org.argeo.slc.ant.SlcAntConfig}.\r
-\r
-<h2>Running SLC Ant</h2>\r
-SLC Ant can be run either via pure Ant scripts or programmatically using\r
-{@link org.argeo.slc.ant.AntRegistryUtil}. In both cases, make sure that\r
-SLC and its dependencies are in the classpath (Spring (always), logging\r
-system such as log4j, Hibernate, etc.).\r
-\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.ant.spring;\r
-\r
-import org.springframework.context.ApplicationContext;\r
-\r
-import org.apache.tools.ant.Task;\r
-\r
-import org.argeo.slc.ant.AntConstants;\r
-import org.argeo.slc.core.process.SlcExecution;\r
-\r
-/** Abstract Ant task providing access to a Spring context. */\r
-public abstract class AbstractSpringTask extends Task {\r
-\r
- /** Gets the related Spring context. */\r
- protected ApplicationContext getContext() {\r
- return (ApplicationContext) getProject().getReference(\r
- AntConstants.REF_ROOT_CONTEXT);\r
- }\r
-\r
- /** Gets the related slc execution or null if not is registered. */\r
- protected SlcExecution getSlcExecution() {\r
- return (SlcExecution) getProject().getReference(\r
- AntConstants.REF_SLC_EXECUTION);\r
- }\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant.spring;
-
-import java.util.List;
-import java.util.Vector;
-
-import org.argeo.slc.core.SlcException;
-
-/** List of overrides */
-public class ListArg {
- private List<OverrideArg> list = new Vector<OverrideArg>();
-
- /** Creates override sub tag. */
- public OverrideArg createOverride() {
- OverrideArg overrideArg = new OverrideArg();
- list.add(overrideArg);
- return overrideArg;
- }
-
- /** Gets as list of objects. */
- public List<Object> getAsObjectList(List<Object> originalList) {
- if (originalList != null && originalList.size() != list.size()) {
- throw new SlcException("Cannot merge lists of different sizes.");
- }
-
- List<Object> objectList = new Vector<Object>(list.size());
-
- for (int i = 0; i < list.size(); i++) {
- OverrideArg arg = list.get(i);
-
- if (originalList != null)
- arg.setOriginal(originalList.get(i));
-
- objectList.add(arg.getObject());
- }
- return objectList;
- }
-}
+++ /dev/null
-package org.argeo.slc.ant.spring;\r
-\r
-import java.util.List;\r
-import java.util.Map;\r
-import java.util.TreeMap;\r
-import java.util.Vector;\r
-\r
-import org.apache.tools.ant.BuildException;\r
-\r
-import org.argeo.slc.core.SlcException;\r
-\r
-public class MapArg {\r
- private List<EntryArg> entries = new Vector<EntryArg>();\r
- private Map<String, Object> map = new TreeMap<String, Object>();\r
-\r
- public EntryArg createEntry() {\r
- EntryArg arg = new EntryArg();\r
- entries.add(arg);\r
- return arg;\r
- }\r
-\r
- public Map<String, Object> getAsObjectMap(Map<String, Object> originalMap) {\r
- Map<String, Object> objectMap = new TreeMap<String, Object>();\r
- for (EntryArg arg : entries) {\r
- String key = arg.getKey();\r
-\r
- if (objectMap.containsKey(key)) {\r
- throw new SlcException("Key '" + key + "' already set.");\r
- }\r
-\r
- if (originalMap != null && originalMap.containsKey(key)\r
- && arg.getOverrideArg() != null)\r
- arg.getOverrideArg().setOriginal(originalMap.get(key));\r
-\r
- objectMap.put(key, arg.getObject());\r
-\r
- }\r
- return objectMap;\r
- }\r
-\r
- /**\r
- * Returns a cached reference if it was already called. This reference could\r
- * have been modified externally and thus not anymore be in line with the\r
- * configuration.\r
- */\r
- public Map<String, Object> getMap() {\r
- if (map.size() == 0)\r
- map = getAsObjectMap(null);\r
- return map;\r
- }\r
-\r
- public static class EntryArg {\r
- private String key;\r
- private Object valueStr;\r
- private OverrideArg overrideArg;\r
-\r
- public String getKey() {\r
- return key;\r
- }\r
-\r
- public void setKey(String key) {\r
- this.key = key;\r
- }\r
-\r
- public Object getObject() {\r
- if (overrideArg != null) {\r
- return overrideArg.getObject();\r
- } else if (valueStr != null) {\r
- return valueStr;\r
- } else {\r
- throw new BuildException("Value not set.");\r
- }\r
- }\r
-\r
- public void setValue(String value) {\r
- check();\r
- this.valueStr = value;\r
- }\r
-\r
- public OverrideArg createOverride() {\r
- check();\r
- overrideArg = new OverrideArg();\r
- return overrideArg;\r
- }\r
-\r
- private void check() {\r
- if (valueStr != null || overrideArg != null) {\r
- throw new BuildException("Value already set");\r
- }\r
- }\r
-\r
- public OverrideArg getOverrideArg() {\r
- return overrideArg;\r
- }\r
-\r
- }\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant.spring;\r
-\r
-import java.util.List;\r
-import java.util.Map;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-import org.apache.tools.ant.BuildException;\r
-\r
-/** Ant type allowing to override bean properties. */\r
-public class OverrideArg extends SpringArg<Object> {\r
- private final static Log log = LogFactory.getLog(OverrideArg.class);\r
-\r
- private String name;\r
- private Object value;\r
- private ListArg overrideList;\r
- private MapArg overrideMap;\r
-\r
- private Boolean merge = false;\r
-\r
- /** The name of the property to override. */\r
- public String getName() {\r
- return name;\r
- }\r
-\r
- /** Sets the name. */\r
- public void setName(String name) {\r
- this.name = name;\r
- }\r
-\r
- /** Both value and bean cannot be set. */\r
- public void setValue(String value) {\r
- checkValueAlreadySet();\r
- this.value = value;\r
- }\r
-\r
- @Override\r
- public void setBean(String bean) {\r
- checkValueAlreadySet();\r
- super.setBean(bean);\r
- }\r
-\r
- /** Creates override list sub tag. */\r
- public ListArg createList() {\r
- checkValueAlreadySet();\r
- overrideList = new ListArg();\r
- return overrideList;\r
- }\r
-\r
- public MapArg createMap() {\r
- checkValueAlreadySet();\r
- overrideMap = new MapArg();\r
- return overrideMap;\r
- }\r
-\r
- /**\r
- * The related object: the value if a value had been set or an instance of\r
- * the bean if not.\r
- */\r
- public Object getObject() {\r
- if (value != null) {\r
- if (log.isTraceEnabled())\r
- log.trace(this + "\t: Returns override object as value");\r
- return value;\r
- } else if (getBean() != null\r
- || getAntref() != null\r
- // works on original if no collection is defined\r
- || (getOriginal() != null && overrideList == null && overrideMap == null)) {\r
- if (log.isTraceEnabled())\r
- log.trace(this + "\t: Returns override object as instance");\r
- return getInstance();\r
- } else if (overrideList != null) {\r
- if (log.isTraceEnabled())\r
- log.trace(this + "\t: Returns override object as list");\r
- return overrideList.getAsObjectList((List<Object>) getOriginal());\r
- } else if (overrideMap != null) {\r
- if (log.isTraceEnabled())\r
- log.trace(this + "\t: Returns override object as map");\r
- return overrideMap\r
- .getAsObjectMap((Map<String, Object>) getOriginal());\r
- } else {\r
- throw new BuildException("Value or bean not set.");\r
- }\r
- }\r
-\r
- protected void checkValueAlreadySet() {\r
- super.checkValueAlreadySet();\r
- if (value != null || overrideList != null || overrideMap != null) {\r
- if (!getMerge()) {\r
- throw new BuildException("Value already set.");\r
- }\r
- }\r
- }\r
-\r
- public Boolean getMerge() {\r
- return merge;\r
- }\r
-\r
- public void setMerge(Boolean merge) {\r
- this.merge = merge;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant.spring;\r
-\r
-import java.util.List;\r
-import java.util.Vector;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-import org.apache.tools.ant.types.DataType;\r
-import org.argeo.slc.ant.AntConstants;\r
-import org.argeo.slc.core.SlcException;\r
-import org.springframework.beans.BeanWrapper;\r
-import org.springframework.beans.BeanWrapperImpl;\r
-import org.springframework.beans.factory.InitializingBean;\r
-import org.springframework.context.ApplicationContext;\r
-\r
-/** Abstract Ant type wrapping a Spring bean. */\r
-public class SpringArg<T> extends DataType {\r
- private final static Log log = LogFactory.getLog(SpringArg.class);\r
-\r
- private List<OverrideArg> overrides = new Vector<OverrideArg>();\r
-\r
- private String bean;\r
- private String antref;\r
- /**\r
- * Reference to the original object, used to merge overrides. <b>this object\r
- * will be modified</b>.\r
- */\r
- private T original;\r
-\r
- // cache bean instance to avoid reading it twice if it is a prototype\r
- private T instance = null;\r
-\r
- /** The <u>name</u> of the underlying bean, as set through the attribute. */\r
- public String getBean() {\r
- return bean;\r
- }\r
-\r
- /** Setter for the bean name. */\r
- public void setBean(String bean) {\r
- checkValueAlreadySet();\r
- this.bean = bean;\r
- }\r
-\r
- public String getAntref() {\r
- return antref;\r
- }\r
-\r
- /** Sets a reference to an ant data type. */\r
- public void setAntref(String antref) {\r
- checkValueAlreadySet();\r
- this.antref = antref;\r
- }\r
-\r
- /**\r
- * Retrieve the instance of the bean, and sets the overridden properties.\r
- * <b>The value is cached.</b>\r
- */\r
- public T getInstance() {\r
- if (instance == null) {\r
- if (log.isTraceEnabled())\r
- log.trace(this + "\t: Creates instance");\r
-\r
- if (bean != null) {\r
- instance = (T) getContext().getBean(bean);\r
- if (instance == null)\r
- throw new SlcException("No object found for Spring bean "\r
- + bean);\r
- } else if (antref != null) {\r
- instance = (T) getProject().getReference(antref);\r
- if (instance == null)\r
- throw new SlcException("No object found for Ant reference "\r
- + antref);\r
- } else if (original != null) {\r
- instance = original;\r
- } else {\r
- throw new SlcException(\r
- "Don't know how to retrieve bean instance");\r
- }\r
-\r
- setOverridenProperties(instance);\r
-\r
- // FIXME: why are we doing this? Could not find any object using it\r
- if (instance instanceof InitializingBean) {\r
- try {\r
- ((InitializingBean) instance).afterPropertiesSet();\r
- } catch (Exception e) {\r
- throw new SlcException("Could not initialize bean", e);\r
- }\r
- }\r
- } else {\r
- if (log.isTraceEnabled())\r
- log.trace(this + "\t: Returns cached instance");\r
- }\r
- return instance;\r
- }\r
-\r
- protected void setOverridenProperties(Object obj) {\r
- BeanWrapper wrapper = new BeanWrapperImpl(obj);\r
- for (OverrideArg override : overrides) {\r
- if (override.getName() == null) {\r
- throw new SlcException(\r
- "The name of the property to override has to be set.");\r
- }\r
-\r
- if (log.isTraceEnabled())\r
- log.trace(this + "\t: Overrides property " + override.getName()\r
- + " with " + override);\r
-\r
- if (override.getMerge() == true) {\r
- // if override is marked as merged retrieve the value and set is\r
- // as original\r
- override.setOriginal(wrapper.getPropertyValue(override\r
- .getName()));\r
- }\r
- wrapper.setPropertyValue(override.getName(), override.getObject());\r
- }\r
-\r
- }\r
-\r
- /** Creates an override subtag. */\r
- public OverrideArg createOverride() {\r
- OverrideArg propertyArg = new OverrideArg();\r
- overrides.add(propertyArg);\r
- return propertyArg;\r
- }\r
-\r
- /** The related Spring application context. */\r
- protected ApplicationContext getContext() {\r
- return (ApplicationContext) getProject().getReference(\r
- AntConstants.REF_ROOT_CONTEXT);\r
- }\r
-\r
- protected void checkValueAlreadySet() {\r
- if (antref != null || bean != null || original != null) {\r
- throw new SlcException("Instance value already defined.");\r
- }\r
- }\r
-\r
- public void setOriginal(T original) {\r
- checkValueAlreadySet();\r
- this.original = original;\r
- }\r
-\r
- public T getOriginal() {\r
- return original;\r
- }\r
-\r
- @Override\r
- public String toString() {\r
- StringBuffer buf = new StringBuffer(getClass().getSimpleName());\r
- if (bean != null) {\r
- buf.append("#bean=").append(bean);\r
- } else if (antref != null) {\r
- buf.append("#antref=").append(antref);\r
- } else if (original != null) {\r
- buf.append("#orig=").append(original.hashCode());\r
- } else {\r
- buf.append("#noid");\r
- }\r
- buf.append("#").append(hashCode());\r
- return buf.toString();\r
- }\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant.spring;
-
-import java.util.List;
-import java.util.Vector;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.tools.ant.BuildException;
-
-public class SpringRegister extends AbstractSpringTask {
- private static final Log log = LogFactory.getLog(SpringRegister.class);
-
- private List<BeanArg> beans = new Vector<BeanArg>();
-
- @Override
- public void execute() throws BuildException {
- for (BeanArg bean : beans) {
- Object instance = bean.getInstance();
- if (bean.getAntid() != null) {
- getProject().addReference(bean.getAntid(), instance);
- } else {
- if (bean.getAntref() != null) {
- log
- .warn("Cannot register beans with antref (Ant reference "
- + bean.getAntref() + ")");
- } else {
- getProject().addReference(bean.getBean(), instance);
- }
- }
- }
- }
-
- public BeanArg createObject() {
- BeanArg bean = new BeanArg();
- beans.add(bean);
- return bean;
- }
-
- protected static class BeanArg extends SpringArg<Object> {
- private String antid;
-
- public String getAntid() {
- return antid;
- }
-
- public void setAntid(String antid) {
- this.antid = antid;
- }
-
- }
-}
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-Integration of Spring in Ant.\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.ant.structure;\r
-\r
-import java.util.List;\r
-import java.util.Vector;\r
-\r
-import org.apache.tools.ant.BuildException;\r
-import org.apache.tools.ant.Target;\r
-import org.argeo.slc.ant.AntConstants;\r
-import org.argeo.slc.ant.spring.AbstractSpringTask;\r
-import org.argeo.slc.ant.spring.SpringArg;\r
-import org.argeo.slc.core.SlcException;\r
-import org.argeo.slc.core.structure.SimpleSElement;\r
-import org.argeo.slc.core.structure.StructureAware;\r
-import org.argeo.slc.core.structure.StructureElement;\r
-import org.argeo.slc.core.structure.StructureRegistry;\r
-import org.argeo.slc.core.structure.tree.TreeSPath;\r
-\r
-/** Ant task that can be registered within a structure. */\r
-public abstract class SAwareTask extends AbstractSpringTask {\r
- private String path;\r
- private TreeSPath treeSPath;\r
- private final List<SpringArg> sAwareArgs = new Vector<SpringArg>();\r
-\r
- private StructureElementArg structureElementArg;\r
-\r
- @Override\r
- public void init() throws BuildException {\r
- StructureRegistry<TreeSPath> registry = getRegistry();\r
- Target target = getOwningTarget();\r
-\r
- TreeSPath targetPath = createTargetPath(target);\r
- SimpleSElement targetElement = (SimpleSElement) registry\r
- .getElement(createTargetPath(target));\r
-\r
- if (targetElement == null) {\r
- targetElement = new SimpleSElement(target.getDescription(),\r
- "<no target desc>");\r
- registry.register(targetPath, targetElement);\r
- }\r
- }\r
-\r
- /**\r
- * Includes this arg in the checks for propagation of structure related\r
- * information.\r
- */\r
- protected void addSAwareArg(SpringArg arg) {\r
- sAwareArgs.add(arg);\r
- }\r
-\r
- @Override\r
- /**\r
- * Called by Ant at runtime. Decides whether to call the actions depending\r
- * of the mode of the underlying structure registry.\r
- * \r
- * @see #executeActions\r
- * @see StructureRegistry\r
- */\r
- public final void execute() throws BuildException {\r
- if (path == null) {\r
- // register the task in the structure\r
- TreeSPath targetPath = createTargetPath(getOwningTarget());\r
- TreeSPath taskPath = targetPath.createChild(getTaskName()\r
- + targetPath.listChildren(getRegistry()).size());\r
-\r
- treeSPath = taskPath;\r
- } else {\r
- treeSPath = new TreeSPath(path);\r
- }\r
-\r
- if (getRegistry().getElement(treeSPath) == null) {\r
- // No structure element registered.\r
- if (structureElementArg != null) {\r
- getRegistry().register(treeSPath,\r
- structureElementArg.getStructureElement());\r
- } else {\r
- if (getDescription() != null) {\r
- getRegistry().register(treeSPath,\r
- new SimpleSElement(getDescription()));\r
- }\r
- }\r
- }\r
-\r
- // notify registered args\r
- for (SpringArg arg : sAwareArgs) {\r
- Object obj = arg.getInstance();\r
-\r
- if (obj instanceof StructureAware) {\r
- StructureAware<TreeSPath> sAwareT = (StructureAware<TreeSPath>) obj;\r
- sAwareT.notifyCurrentPath(getRegistry(), treeSPath);\r
- }\r
- }\r
-\r
- // execute depending on the registry mode\r
- String mode = getRegistry().getMode();\r
- if (mode.equals(StructureRegistry.ALL)) {\r
- executeActions(mode);\r
- } else if (mode.equals(StructureRegistry.ACTIVE)) {\r
- List<TreeSPath> activePaths = getRegistry().getActivePaths();\r
-\r
- if (activePaths.contains(treeSPath)) {\r
- if (activePaths.contains(treeSPath)) {\r
- executeActions(mode);\r
- }\r
- }\r
- }\r
-\r
- }\r
-\r
- /** Actions to be executed by the implementor. */\r
- protected abstract void executeActions(String mode);\r
-\r
- public <T> T getBean(String beanName) {\r
- return (T) getContext().getBean(beanName);\r
- }\r
-\r
- /** Create a reference to an external structure element. */\r
- public StructureElementArg createStructureElement() {\r
- if (structureElementArg != null)\r
- throw new SlcException("Arg already set.");\r
- structureElementArg = new StructureElementArg();\r
- return structureElementArg;\r
- }\r
-\r
- /** Gets the underlying structure registry. */\r
- protected StructureRegistry<TreeSPath> getRegistry() {\r
- return (StructureRegistry<TreeSPath>) getProject().getReference(\r
- AntConstants.REF_STRUCTURE_REGISTRY);\r
- }\r
-\r
- /** Creates the treeSPath for a given Ant target. */\r
- protected static TreeSPath createTargetPath(Target target) {\r
- TreeSPath projectPath = (TreeSPath) target.getProject().getReference(\r
- AntConstants.REF_PROJECT_PATH);\r
- return projectPath.createChild(target.getName());\r
- }\r
-\r
- /** Gets the treeSPath under which this task is registered. */\r
- public TreeSPath getTreeSPath() {\r
- return treeSPath;\r
- }\r
-\r
- public String getLabel() {\r
- String description = super.getDescription();\r
- if (description == null) {\r
- return "<no task def>";\r
- } else {\r
- return description;\r
- }\r
- }\r
-\r
- public void setPath(String path) {\r
- this.path = path;\r
- }\r
-}\r
-\r
-class StructureElementArg extends SpringArg {\r
- public StructureElement getStructureElement() {\r
- return (StructureElement) getInstance();\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-Integration of SLC Structure in Ant.\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.ant.test;\r
-\r
-import java.util.Collection;\r
-import java.util.List;\r
-import java.util.Map;\r
-import java.util.Vector;\r
-\r
-import org.apache.tools.ant.types.DataType;\r
-\r
-import org.argeo.slc.ant.spring.MapArg;\r
-import org.argeo.slc.core.SlcException;\r
-import org.argeo.slc.core.test.context.ContextAware;\r
-import org.argeo.slc.core.test.context.ContextUtils;\r
-import org.argeo.slc.core.test.context.ParentContextAware;\r
-\r
-public class ParentContextType extends DataType implements ParentContextAware {\r
- private MapArg values = null;\r
- private MapArg expectedValues = null;\r
-\r
- private String contextAnyFlag = DEFAULT_ANY_FLAG;\r
- private String contextSkipFlag = DEFAULT_SKIP_FLAG;\r
-\r
- private String basedon = null;\r
-\r
- private List<ContextAware> children = new Vector<ContextAware>();\r
-\r
- public MapArg createValues() {\r
- values = new MapArg();\r
- return values;\r
- }\r
-\r
- public MapArg createExpectedValues() {\r
- expectedValues = new MapArg();\r
- return expectedValues;\r
- }\r
-\r
- public void addChildContext(ContextAware contextAware) {\r
- children.add(contextAware);\r
- }\r
-\r
- public Collection<ContextAware> getChildContexts() {\r
- return children;\r
- }\r
-\r
- public String getContextAnyFlag() {\r
- return contextAnyFlag;\r
- }\r
-\r
- public void setContextAnyFlag(String contextAnyFlag) {\r
- this.contextAnyFlag = contextAnyFlag;\r
- }\r
-\r
- public String getContextSkipFlag() {\r
- return contextSkipFlag;\r
- }\r
-\r
- public void setContextSkipFlag(String contextSkipFlag) {\r
- this.contextSkipFlag = contextSkipFlag;\r
- }\r
-\r
- public Map<String, Object> getExpectedValues() {\r
- if (expectedValues == null)\r
- expectedValues = new MapArg();\r
- if (basedon != null) {\r
- Map<String, Object> map = getBaseContext().getExpectedValues();\r
- ContextUtils.putNotContained(expectedValues.getMap(), map);\r
- }\r
- return expectedValues.getMap();\r
- }\r
-\r
- public Map<String, Object> getValues() {\r
- if (values == null)\r
- values = new MapArg();\r
- if (basedon != null) {\r
- Map<String, Object> map = getBaseContext().getValues();\r
- ContextUtils.putNotContained(values.getMap(), map);\r
- }\r
- return values.getMap();\r
- }\r
-\r
- private ParentContextType getBaseContext() {\r
- return (ParentContextType) getProject().getReference(basedon);\r
- }\r
-\r
- public void setValues(Map<String, Object> values) {\r
- throw new SlcException("Cannot override values map.");\r
- }\r
-\r
- public void setUpdateValues(Map<String, Object> overrideValues) {\r
- getValues().putAll(overrideValues);\r
- }\r
-\r
- public void setUpdateExpectedValues(\r
- Map<String, Object> overrideExpectedValues) {\r
- getExpectedValues().putAll(overrideExpectedValues);\r
- }\r
-\r
- public void setBasedon(String basedon) {\r
- this.basedon = basedon;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant.test;\r
-\r
-import java.util.List;\r
-import java.util.Vector;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-import org.argeo.slc.ant.spring.SpringArg;\r
-import org.argeo.slc.ant.structure.SAwareTask;\r
-import org.argeo.slc.core.structure.StructureRegistry;\r
-import org.argeo.slc.core.test.TestResult;\r
-\r
-/** Ant tasks closing a given result. */\r
-public class SlcCloseTestResultTask extends SAwareTask {\r
- private final static Log log = LogFactory\r
- .getLog(SlcCloseTestResultTask.class);\r
-\r
- public List<SpringArg<TestResult>> results = new Vector<SpringArg<TestResult>>();\r
-\r
- @Override\r
- public void executeActions(String mode) {\r
- if (!mode.equals(StructureRegistry.READ)) {\r
- for (SpringArg<TestResult> result : results) {\r
- try {\r
- result.getInstance().close();\r
- } catch (RuntimeException e) {\r
- log.error("Could not close result "\r
- + (result.getBean() != null ? result.getBean()\r
- : result.getAntref()), e);\r
- }\r
- }\r
- }\r
- }\r
-\r
- public SpringArg<TestResult> createResult() {\r
- SpringArg<TestResult> result = new SpringArg<TestResult>();\r
- results.add(result);\r
- return result;\r
- }\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant.test;\r
-\r
-import org.argeo.slc.ant.structure.SAwareTask;\r
-import org.argeo.slc.core.structure.StructureAware;\r
-import org.argeo.slc.core.structure.StructureRegistry;\r
-import org.argeo.slc.core.test.TestReport;\r
-import org.argeo.slc.core.test.TestResult;\r
-\r
-/** Ant tasks generating a report. */\r
-public class SlcReportTask extends SAwareTask {\r
- private String result;\r
- private String report;\r
-\r
- @Override\r
- public void executeActions(String mode) {\r
- if (!mode.equals(StructureRegistry.READ)) {\r
- TestResult testResult = null;\r
- if (result != null) {\r
- testResult = (TestResult) getContext().getBean(result);\r
- }\r
- TestReport testReport = (TestReport) getContext().getBean(report);\r
- if (testReport instanceof StructureAware) {\r
- ((StructureAware) testReport).notifyCurrentPath(getRegistry(),\r
- null);\r
- }\r
- testReport.generateTestReport(testResult);\r
- }\r
- }\r
-\r
- /** Sets the bean name of the result to close. */\r
- public void setResult(String bean) {\r
- this.result = bean;\r
- }\r
-\r
- /** Sets the bean name of the report to generate. */\r
- public void setReport(String report) {\r
- this.report = report;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant.test;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-import org.apache.tools.ant.BuildException;\r
-import org.argeo.slc.ant.AntConstants;\r
-import org.argeo.slc.ant.spring.SpringArg;\r
-import org.argeo.slc.ant.structure.SAwareTask;\r
-import org.argeo.slc.core.deploy.DeployedSystem;\r
-import org.argeo.slc.core.process.SlcExecution;\r
-import org.argeo.slc.core.structure.StructureAware;\r
-import org.argeo.slc.core.structure.tree.TreeSPath;\r
-import org.argeo.slc.core.test.ExecutableTestRun;\r
-import org.argeo.slc.core.test.SimpleResultPart;\r
-import org.argeo.slc.core.test.SimpleTestResult;\r
-import org.argeo.slc.core.test.SimpleTestRun;\r
-import org.argeo.slc.core.test.TestData;\r
-import org.argeo.slc.core.test.TestDefinition;\r
-import org.argeo.slc.core.test.TestResult;\r
-import org.argeo.slc.core.test.TestResultPart;\r
-import org.argeo.slc.core.test.TestStatus;\r
-import org.argeo.slc.core.test.WritableTestRun;\r
-import org.argeo.slc.spring.SpringUtils;\r
-import org.springframework.beans.BeansException;\r
-\r
-/** Ant task wrapping a test run. */\r
-public class SlcTestTask extends SAwareTask {\r
- private Log log = LogFactory.getLog(SlcTestTask.class);\r
-\r
- private String testRunBean = null;\r
-\r
- private SpringArg<TestDefinition> testDefinitionArg;\r
- private SpringArg<TestData> testDataArg;\r
- private SpringArg<DeployedSystem> deployedSystemArg;\r
- private SpringArg<TestResult> testResultArg;\r
-\r
- @Override\r
- public void executeActions(String mode) throws BuildException {\r
- // find test run\r
- final String testRunBeanT;\r
- if (testRunBean != null) {\r
- testRunBeanT = testRunBean;\r
- } else {\r
- testRunBeanT = getProject().getProperty(\r
- AntConstants.DEFAULT_TEST_RUN_PROPERTY);\r
- }\r
- WritableTestRun testRun = null;\r
-\r
- if (testRunBeanT != null) {\r
- try {\r
- testRun = (WritableTestRun) getContext().getBean(testRunBeanT);\r
- if (log.isTraceEnabled())\r
- log.trace("Load test run bean from bean name "\r
- + testRunBeanT);\r
- } catch (BeansException e) {\r
- // silent, will try defaults\r
- }\r
- }\r
-\r
- if (testRun == null) {\r
- testRun = loadSingleFromContext(WritableTestRun.class);\r
- if (testRun == null) {\r
- testRun = new SimpleTestRun();\r
- log.trace("Created default simple test run");\r
- } else {\r
- if (log.isTraceEnabled())\r
- log.trace("Load test run from scanning Spring context");\r
- }\r
- }\r
-\r
- // set overridden references\r
- if (testDataArg != null) {\r
- testRun.setTestData(testDataArg.getInstance());\r
- log.trace("Overrides test data");\r
- }\r
-\r
- if (testDefinitionArg != null) {\r
- testRun.setTestDefinition(testDefinitionArg.getInstance());\r
- log.trace("Overrides test definition");\r
- }\r
-\r
- if (deployedSystemArg != null) {\r
- testRun.setDeployedSystem(deployedSystemArg.getInstance());\r
- log.trace("Overrides deployed system");\r
- }\r
-\r
- if (testResultArg != null) {\r
- testRun.setTestResult(testResultArg.getInstance());\r
- log.trace("Overrides test result");\r
- }\r
-\r
- // notify path to test result\r
- TestResult result = testRun.getTestResult();\r
- if (result == null) {\r
- result = loadSingleFromContext(TestResult.class);\r
- if (result == null) {\r
- result = new SimpleTestResult();\r
- log.warn("Created default simple test result");\r
- } else {\r
- if (log.isTraceEnabled())\r
- log.trace("Load test result from scanning Spring context");\r
- }\r
- testRun.setTestResult(result);\r
- }\r
-\r
- SlcExecution slcExecution = getSlcExecution();\r
- testRun.notifySlcExecution(slcExecution);\r
-\r
- if (result != null && result instanceof StructureAware) {\r
- ((StructureAware<TreeSPath>) result).notifyCurrentPath(\r
- getRegistry(), getTreeSPath());\r
- }\r
-\r
- try {\r
- ((ExecutableTestRun) testRun).execute();\r
- } catch (RuntimeException e) {\r
- if (result != null) {\r
- SimpleResultPart errorPart = new SimpleResultPart(\r
- TestStatus.ERROR,\r
- "Unexpected exception when running test", e);\r
- result.addResultPart(errorPart);\r
- }\r
- throw e;\r
- }\r
- }\r
-\r
- /**\r
- * The bean name of the test run to use. If not set the default is used.\r
- * \r
- * @see SlcAntConfig\r
- */\r
- public void setTestRun(String testRunBean) {\r
- this.testRunBean = testRunBean;\r
- }\r
-\r
- /** Creates sub tag. */\r
- public SpringArg<TestDefinition> createTestDefinition() {\r
- testDefinitionArg = new SpringArg<TestDefinition>();\r
- // only test definitions can add to path\r
- addSAwareArg(testDefinitionArg);\r
- return testDefinitionArg;\r
- }\r
-\r
- /** Creates sub tag. */\r
- public SpringArg<TestData> createTestData() {\r
- testDataArg = new SpringArg<TestData>();\r
- return testDataArg;\r
- }\r
-\r
- /** Creates sub tag. */\r
- public SpringArg<DeployedSystem> createDeployedSystem() {\r
- deployedSystemArg = new SpringArg<DeployedSystem>();\r
- return deployedSystemArg;\r
- }\r
-\r
- /** Creates sub tag. */\r
- public SpringArg<TestResult> createTestResult() {\r
- testResultArg = new SpringArg<TestResult>();\r
- return testResultArg;\r
- }\r
-\r
- protected <T> T loadSingleFromContext(Class<T> clss) {\r
- return SpringUtils.loadSingleFromContext(getContext(), clss);\r
- }\r
-}\r
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-Integration of SLC Test in Ant.\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.ant.unit;
-
-import junit.framework.TestCase;
-
-import org.argeo.slc.ant.AntExecutionContext;
-import org.argeo.slc.cli.DefaultSlcRuntime;
-import org.argeo.slc.runtime.SlcExecutionOutput;
-
-public abstract class AntSlcApplicationTestCase extends TestCase implements
- SlcExecutionOutput<AntExecutionContext> {
-
- /** To be overriden */
- public void postExecution(AntExecutionContext executionContext) {
-
- }
-
- protected String getRootDir() {
- return System.getProperty("slc.rootDir", "src/main/slc/root");
- }
-
- protected String getAbsoluteScript(String relative) {
- return getRootDir() + '/' + relative;
- }
-
- protected void execute(String relativeScript) {
- execute(relativeScript, null);
- }
-
- protected void execute(String relativeScript, String targets) {
- new DefaultSlcRuntime().executeScript(
- getAbsoluteScript(relativeScript), targets, this);
- }
-
-}
+++ /dev/null
-package org.argeo.slc.ant.unit;
-
-import java.io.File;
-import java.util.UUID;
-
-import org.argeo.slc.ant.AntConstants;
-import org.argeo.slc.ant.AntExecutionContext;
-import org.argeo.slc.ant.AntSlcApplication;
-import org.argeo.slc.core.process.SlcExecution;
-import org.argeo.slc.runtime.SlcExecutionOutput;
-import org.argeo.slc.unit.AbstractSpringTestCase;
-import org.springframework.core.io.FileSystemResource;
-
-public class MinimalAntClasspathTestCase extends AbstractSpringTestCase
- implements SlcExecutionOutput<AntExecutionContext> {
- protected void execute(String scriptPath) {
- AntSlcApplication slcApp = new AntSlcApplication();
- slcApp.setRootDir(new FileSystemResource(new File("src/test/resources")
- .getAbsolutePath()
- + File.separator));
- slcApp.setWorkDir(new File(System.getProperty("java.io.tmpdir")));
- slcApp.setParentContext(getContext());
-
- SlcExecution slcExecution = new SlcExecution();
- slcExecution.setUuid(UUID.randomUUID().toString());
- slcExecution.getAttributes().put(AntConstants.EXECATTR_ANT_FILE,
- scriptPath);
- slcExecution.setUser("user");
-
- slcApp.execute(slcExecution, null, null, this);
- }
-
- /** to be overridden */
- public void postExecution(AntExecutionContext executionContext) {
- }
-
-}
+++ /dev/null
-package org.argeo.slc.cli;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.Map;
-import java.util.Properties;
-import java.util.UUID;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.ant.AntExecutionContext;
-import org.argeo.slc.ant.AntSlcApplication;
-import org.argeo.slc.ant.AntConstants;
-import org.argeo.slc.core.SlcException;
-import org.argeo.slc.core.process.SlcExecution;
-import org.argeo.slc.runtime.SlcExecutionOutput;
-import org.argeo.slc.spring.SpringUtils;
-import org.springframework.core.io.DefaultResourceLoader;
-import org.springframework.core.io.FileSystemResource;
-import org.springframework.core.io.Resource;
-
-public class DefaultSlcRuntime {
- private final static Log log = LogFactory.getLog(DefaultSlcRuntime.class);
-
- public final static String SLC_ROOT_FILE_NAME = "slcRoot.properties";
-
- /**
- * Simplified execution with default runtime, default target, and no
- * properties/reference arguments.
- *
- * @param script
- * path to the script
- * @param executionOutput
- * output
- *
- * @see #executeScript(String, String, String, Properties, Map,
- * SlcExecutionOutput)
- */
- public void executeScript(String script,
- SlcExecutionOutput<AntExecutionContext> executionOutput) {
- executeScript(null, script, null, null, null, executionOutput);
- }
-
- /**
- * Simplified execution with default runtime, and no properties/reference
- * arguments.
- *
- * @param script
- * path to the script
- * @param targets
- * comma separated list of targets
- * @param executionOutput
- * output
- * @see #executeScript(String, String, String, Properties, Map,
- * SlcExecutionOutput)
- */
- public void executeScript(String script, String targets,
- SlcExecutionOutput<AntExecutionContext> executionOutput) {
- executeScript(null, script, targets, null, null, executionOutput);
- }
-
- public void executeScript(String runtime, String script, String targets,
- Properties properties, Map<String, Object> references,
- SlcExecutionOutput<AntExecutionContext> executionOutput) {
-
- Resource scriptRes = findScript(script);
- Resource slcRootFile = findSlcRootFile(scriptRes);
- if (slcRootFile == null)
- throw new SlcException(
- "Could not find any SLC root file, "
- + "please configure one at the root of your scripts hierarchy.");
-
- SlcExecution slcExecution = createSlcExecution(runtime, slcRootFile,
- scriptRes, targets);
-
- AntSlcApplication application = getApplication(slcRootFile);
- application.execute(slcExecution, properties, references,
- executionOutput);
- }
-
- protected Resource findScript(String scriptStr) {
- Resource scriptRes;
- if (new File(scriptStr).exists()) {
- scriptRes = new FileSystemResource(scriptStr);
- } else {
- scriptRes = new DefaultResourceLoader(SlcMain.class
- .getClassLoader()).getResource(scriptStr);
- }
- return scriptRes;
- }
-
- protected SlcExecution createSlcExecution(String runtimeStr,
- Resource slcRootFile, Resource script, String targets) {
- SlcExecution slcExecution = new SlcExecution();
- slcExecution.setUuid(UUID.randomUUID().toString());
- try {
- slcExecution.setHost(InetAddress.getLocalHost().getHostName());
- } catch (UnknownHostException e) {
- slcExecution.setHost(SlcExecution.UNKOWN_HOST);
- }
-
- slcExecution.setType(AntConstants.EXECTYPE_SLC_ANT);
-
- slcExecution.setUser(System.getProperty("user.name"));
-
- if (runtimeStr != null)
- slcExecution.getAttributes().put(AntConstants.EXECATTR_RUNTIME,
- runtimeStr);
- String scriptRelativePath = SpringUtils.extractRelativePath(SpringUtils
- .getParent(slcRootFile), script);
-
- slcExecution.getAttributes().put(AntConstants.EXECATTR_ANT_FILE,
- scriptRelativePath);
- if (targets != null)
- slcExecution.getAttributes().put(AntConstants.EXECATTR_ANT_TARGETS,
- targets);
-
- slcExecution.setStatus(SlcExecution.STATUS_SCHEDULED);
- return slcExecution;
- }
-
- protected AntSlcApplication getApplication(Resource slcRootFile) {
- AntSlcApplication application = new AntSlcApplication();
- InputStream inRootFile = null;
- try {
- // Remove basedir property in order to avoid conflict with Maven
- // if (all.containsKey("basedir"))
- // all.remove("basedir");
-
- inRootFile = slcRootFile.getInputStream();
- Properties rootProps = loadFile(inRootFile);
-
- Resource confDir = null;
- File workDir = null;
- // Root dir
- final Resource rootDir = SpringUtils.getParent(slcRootFile);
-
- // Conf dir
- String confDirStr = rootProps
- .getProperty(AntConstants.CONF_DIR_PROPERTY);
- if (confDirStr != null)
- confDir = new DefaultResourceLoader(application.getClass()
- .getClassLoader()).getResource(confDirStr);
-
- if (confDir == null || !confDir.exists()) {
- // confDir = rootDir.createRelative("../conf");
- confDir = SpringUtils.getParent(rootDir)
- .createRelative("conf/");
- }
-
- // Work dir
- String workDirStr = rootProps
- .getProperty(AntConstants.WORK_DIR_PROPERTY);
- if (workDirStr != null) {
- workDir = new File(workDirStr);
- }
-
- if (workDir == null || !workDir.exists()) {
- try {
- File rootDirAsFile = rootDir.getFile();
- workDir = new File(rootDirAsFile.getParent()
- + File.separator + "work").getCanonicalFile();
- } catch (IOException e) {
- workDir = new File(System.getProperty("java.io.tmpdir")
- + File.separator + "slcExecutions" + File.separator
- + slcRootFile.getURL().getPath());
- log.debug("Root dir is not a file: " + e.getMessage()
- + ", creating work dir in temp: " + workDir);
- }
- workDir.mkdirs();
- }
-
- application.setConfDir(confDir);
- application.setRootDir(rootDir);
- application.setWorkDir(workDir);
-
- return application;
- } catch (IOException e) {
- throw new SlcException(
- "Could not prepare SLC application for root file "
- + slcRootFile, e);
- } finally {
- IOUtils.closeQuietly(inRootFile);
- }
- }
-
- /**
- * Recursively scans directories downwards until it find a file name as
- * defined by {@link #SLC_ROOT_FILE_NAME}.
- */
- protected Resource findSlcRootFile(Resource currDir) {
- if (log.isTraceEnabled())
- log.trace("Look for SLC root file in " + currDir);
-
- try {
- Resource slcRootFile = currDir.createRelative(SLC_ROOT_FILE_NAME);
- if (slcRootFile.exists()) {
- if (log.isDebugEnabled())
- log.debug("Found SLC root file: " + slcRootFile);
- return slcRootFile;
- } else {
- String currPath = currDir.getURL().getPath();
- if (currPath.equals("/") || currPath.equals("")) {
- return null;
- } else {
- return findSlcRootFile(SpringUtils.getParent(currDir));
- }
- }
- } catch (IOException e) {
- throw new SlcException("Problem when looking in SLC root file in "
- + currDir, e);
- }
- }
-
- /** Loads the content of a file as <code>Properties</code>. */
- private Properties loadFile(InputStream in) {
- Properties p = new Properties();
- try {
- p.load(in);
- } catch (IOException e) {
- throw new SlcException("Cannot read SLC root file", e);
- }
- return p;
- }
-}
package org.argeo.slc.cli;
import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
import java.util.Properties;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.ant.AntConstants;
import org.argeo.slc.core.SlcException;
import org.argeo.slc.logging.Log4jUtils;
+import org.argeo.slc.runtime.SlcExecutionContext;
+import org.argeo.slc.runtime.SlcRuntime;
public class SlcMain {
public enum Mode {
// Execution
if (mode.equals(Mode.single)) {
try {
- DefaultSlcRuntime runtime = new DefaultSlcRuntime();
+ // DefaultSlcRuntime runtime = new DefaultSlcRuntime();
+ // FIXME: inject this more cleanly
+ ClassLoader cl = Thread.currentThread().getContextClassLoader();
+ Class clss = cl.loadClass("org.argeo.slc.ant.AntSlcRuntime");
+ SlcRuntime<? extends SlcExecutionContext> runtime = (SlcRuntime<? extends SlcExecutionContext>) clss
+ .newInstance();
runtime.executeScript(runtimeStr, script, targets, properties,
null, null);
- //System.exit(0);
- } catch (SlcException e) {
+ // System.exit(0);
+ } catch (Exception e) {
log.error("SLC client terminated with an error: ", e);
System.exit(1);
}
+++ /dev/null
-package org.argeo.slc.lib.detached;
-
-import org.argeo.slc.core.test.context.DefaultContextTestData;
-
-public class DetachedTestData extends DefaultContextTestData {
-
-}
+++ /dev/null
-package org.argeo.slc.lib.detached;
-
-import java.util.Map;
-import java.util.Properties;
-import java.util.UUID;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.core.SlcException;
-import org.argeo.slc.core.structure.tree.TreeSRelatedHelper;
-import org.argeo.slc.core.test.SimpleResultPart;
-import org.argeo.slc.core.test.TestDefinition;
-import org.argeo.slc.core.test.TestResult;
-import org.argeo.slc.core.test.TestRun;
-import org.argeo.slc.core.test.TestStatus;
-import org.argeo.slc.core.test.context.ContextUtils;
-import org.argeo.slc.detached.DetachedAnswer;
-import org.argeo.slc.detached.DetachedClient;
-import org.argeo.slc.detached.DetachedRequest;
-import org.argeo.slc.detached.DetachedStep;
-import org.argeo.slc.detached.ui.UiStep;
-import org.springframework.beans.BeansException;
-import org.springframework.beans.PropertyValue;
-import org.springframework.beans.factory.BeanFactory;
-import org.springframework.beans.factory.BeanFactoryAware;
-import org.springframework.beans.factory.BeanInitializationException;
-import org.springframework.beans.factory.BeanNameAware;
-import org.springframework.beans.factory.InitializingBean;
-import org.springframework.beans.factory.config.BeanDefinition;
-import org.springframework.beans.factory.config.BeanReference;
-import org.springframework.beans.factory.support.BeanDefinitionRegistry;
-
-public class DetachedTestDefinition extends TreeSRelatedHelper implements
- TestDefinition, BeanNameAware, BeanFactoryAware, InitializingBean {
- private final static Log log = LogFactory
- .getLog(DetachedTestDefinition.class);
-
- private DetachedStep step;
- private DetachedClient client;
-
- // Spring properties
- private String testDefBeanName = null;
- private BeanDefinitionRegistry beanDefinitionRegistry = null;
- private String stepRef = null;
-
- public void execute(TestRun testRun) {
- // Look for step bean name
- String stepBeanNameT = null;
- if (this.stepRef == null && step != null) {
- if (step instanceof UiStep) {
- stepBeanNameT = ((UiStep) step).getBeanName();
- } else {
- // Introspects bean factory in order to find step bean name
- BeanDefinition thisBeanDef = beanDefinitionRegistry
- .getBeanDefinition(testDefBeanName);
- PropertyValue propValue = thisBeanDef.getPropertyValues()
- .getPropertyValue("step");
- Object stepBeanRef = propValue.getValue();
- BeanReference ref = (BeanReference) stepBeanRef;
- stepBeanNameT = ref.getBeanName();
- }
- } else if (this.stepRef != null) {
- stepBeanNameT = this.stepRef;
- }
-
- // Execute
- DetachedRequest request = new DetachedRequest();
- request.setPath(getBasePath().toString());
- request.setUuid(UUID.randomUUID().toString());
- request.setRef(stepBeanNameT);
-
- DetachedTestData testData = testRun.getTestData();
- if (testData != null) {
- Map<String, Object> values = testData.getValues();
- Properties inputParameters = new Properties();
- inputParameters.putAll(values);// TODO: check conversions to string
- request.setProperties(inputParameters);
- }
-
- try {
- client.sendRequest(request);
- } catch (Exception e) {
- throw new SlcException("Could not send request for step "
- + stepBeanNameT, e);
- }
-
- try {
- DetachedAnswer answer = client.receiveAnswer();
- if (answer.getStatus() == DetachedAnswer.ERROR)
- throw new SlcException("Error when executing step "
- + answer.getUuid() + ": " + answer.getLog());
- else
- log.info("Received answer for '" + request.getRef() + "' ("
- + answer.getStatusAsString() + "):" + answer.getLog());
-
- if (testData != null) {
- Properties outputParameters = answer.getProperties();
- for (Object key : outputParameters.keySet())
- testData.getValues().put(key.toString(),
- outputParameters.get(key));
- }
- } catch (Exception e) {
- throw new SlcException("Could not receive answer #"
- + request.getUuid() + " for step " + stepBeanNameT, e);
- }
-
- if (testData != null) {
- ContextUtils.compareReachedExpected(testData, testRun
- .getTestResult(), this);
- } else {
- ((TestResult)testRun.getTestResult()).addResultPart(
- new SimpleResultPart(TestStatus.PASSED, "Step "
- + stepBeanNameT + " executed successfully"));
- }
- }
-
- public void setBeanName(String name) {
- this.testDefBeanName = name;
- }
-
- public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
- if (beanFactory instanceof BeanDefinitionRegistry)
- beanDefinitionRegistry = (BeanDefinitionRegistry) beanFactory;
- else
- throw new BeanInitializationException(
- "Require BeanDefinitionRegistry");
- }
-
- public void afterPropertiesSet() throws Exception {
- }
-
- public void setStep(DetachedStep step) {
- this.step = step;
- }
-
- public void setClient(DetachedClient client) {
- this.client = client;
- }
-
- public void setStepRef(String stepBeanName) {
- this.stepRef = stepBeanName;
- }
-
-}
+++ /dev/null
-package org.argeo.slc.lib.detached;
-
-import java.io.IOException;
-
-import javax.xml.transform.Result;
-import javax.xml.transform.Source;
-
-import org.argeo.slc.core.SlcException;
-import org.argeo.slc.detached.DetachedAnswer;
-import org.argeo.slc.detached.DetachedCommunication;
-import org.argeo.slc.detached.DetachedException;
-import org.argeo.slc.detached.DetachedRequest;
-import org.argeo.slc.detached.DetachedXmlConverter;
-import org.springframework.oxm.Marshaller;
-import org.springframework.oxm.Unmarshaller;
-import org.springframework.oxm.XmlMappingException;
-import org.springframework.xml.validation.XmlValidator;
-import org.xml.sax.InputSource;
-
-public class DetachedXmlConverterSpring implements DetachedXmlConverter {
- private Marshaller marshaller;
- private Unmarshaller unmarshaller;
-
- public void marshallCommunication(DetachedCommunication detCom,
- Result result) {
- if (detCom instanceof DetachedRequest) {
- marshallRequest((DetachedRequest) detCom, result);
- } else if (detCom instanceof DetachedAnswer) {
- marshallAnswer((DetachedAnswer) detCom, result);
- } else {
- throw new DetachedException("Unkown communication type "
- + detCom.getClass());
- }
- }
-
- public DetachedCommunication unmarshallCommunication(Source source) {
- try {
- return (DetachedCommunication) unmarshaller.unmarshal(source);
- } catch (Exception e) {
- throw new SlcException("Could not unmarshall", e);
- }
- }
-
- public void marshallRequest(DetachedRequest request, Result result) {
- try {
- marshaller.marshal(request, result);
- } catch (Exception e) {
- throw new SlcException("Could not marshall", e);
- }
- }
-
- public void marshallAnswer(DetachedAnswer answer, Result result) {
- try {
- marshaller.marshal(answer, result);
- } catch (Exception e) {
- throw new SlcException("Could not marshall", e);
- }
- }
-
- public void setMarshaller(Marshaller marshaller) {
- this.marshaller = marshaller;
- }
-
- public void setUnmarshaller(Unmarshaller unmarshaller) {
- this.unmarshaller = unmarshaller;
- }
-
-}
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.ant.AntRunner;
+//import org.argeo.slc.ant.AntRunner;
import org.argeo.slc.core.SlcException;
import org.argeo.slc.core.deploy.DeployEnvironment;
+++ /dev/null
-package org.argeo.slc.ws.client;\r
-\r
-import java.io.IOException;\r
-\r
-import javax.xml.transform.Source;\r
-\r
-import org.springframework.ws.client.WebServiceClientException;\r
-import org.springframework.ws.client.WebServiceIOException;\r
-import org.springframework.ws.client.support.interceptor.ClientInterceptor;\r
-import org.springframework.ws.context.MessageContext;\r
-import org.springframework.xml.validation.XmlValidator;\r
-import org.xml.sax.SAXParseException;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-\r
-public class ValidatingClientInterceptor implements ClientInterceptor {\r
- private final static Log log = LogFactory\r
- .getLog(ValidatingClientInterceptor.class);\r
-\r
- private Boolean validateRequest = true;\r
- private Boolean validateResponse = false;\r
- private XmlValidator validator = null;\r
-\r
- public boolean handleFault(MessageContext messageContext)\r
- throws WebServiceClientException {\r
- return true;\r
- }\r
-\r
- public boolean handleRequest(MessageContext messageContext)\r
- throws WebServiceClientException {\r
- if (validateRequest) {\r
- if (messageContext.getRequest() == null)\r
- return true;\r
-\r
- Source source = messageContext.getRequest().getPayloadSource();\r
- try {\r
- return validate(source);\r
- } catch (IOException e) {\r
- throw new WebServiceIOException("Cannot validate request", e);\r
- }\r
- } else {\r
- return true;\r
- }\r
- }\r
-\r
- public boolean handleResponse(MessageContext messageContext)\r
- throws WebServiceClientException {\r
- if (validateResponse) {\r
- if (messageContext.getResponse() == null)\r
- return true;\r
-\r
- Source source = messageContext.getResponse().getPayloadSource();\r
- try {\r
- return validate(source);\r
- } catch (IOException e) {\r
- throw new WebServiceIOException("Cannot validate response", e);\r
- }\r
- } else {\r
- return true;\r
- }\r
- }\r
-\r
- protected boolean validate(Source source) throws IOException {\r
- SAXParseException[] exceptions = validator.validate(source);\r
- if (exceptions.length != 0) {\r
- for (SAXParseException ex : exceptions) {\r
- log.error(ex.getMessage());\r
- }\r
- return false;\r
- } else {\r
- return true;\r
- }\r
- }\r
-\r
- public void setValidateRequest(Boolean validateRequest) {\r
- this.validateRequest = validateRequest;\r
- }\r
-\r
- public void setValidateResponse(Boolean validateResponse) {\r
- this.validateResponse = validateResponse;\r
- }\r
-\r
- public void setValidator(XmlValidator validator) {\r
- this.validator = validator;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ws.client;\r
-\r
-import java.util.Iterator;\r
-\r
-import javax.xml.transform.Source;\r
-import javax.xml.transform.dom.DOMSource;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-import org.springframework.ws.client.core.WebServiceTemplate;\r
-import org.springframework.ws.soap.SoapFaultDetail;\r
-import org.springframework.ws.soap.SoapFaultDetailElement;\r
-import org.springframework.ws.soap.client.SoapFaultClientException;\r
-import org.springframework.xml.transform.StringResult;\r
-import org.w3c.dom.Node;\r
-\r
-public abstract class WebServiceUtils {\r
- private final static Log log = LogFactory.getLog(WebServiceUtils.class);\r
-\r
- public static Object marshalSendAndReceiveSafe(WebServiceTemplate template,\r
- Object req) {\r
- try {\r
- Object resp = marshalSendAndReceive(template, req);\r
- return resp;\r
- } catch (Exception e) {\r
- log.error("Cannot send web servicerequest: " + e.getMessage());\r
- if (log.isDebugEnabled()) {\r
- log.debug("Webservice exception details: ", e);\r
- }\r
- return null;\r
- }\r
- }\r
-\r
- public static Object marshalSendAndReceive(WebServiceTemplate template,\r
- Object req) {\r
- if (log.isTraceEnabled()) {\r
- try {\r
- StringResult result = new StringResult();\r
- template.getMarshaller().marshal(req, result);\r
- log.trace("About to send " + result);\r
- } catch (Exception e) {\r
- log.error("Cannot marshall " + req + " for logging", e);\r
- }\r
- }\r
- Object resp = template.marshalSendAndReceive(req);\r
- return resp;\r
- }\r
-\r
- public static void manageSoapException(SoapFaultClientException e) {\r
- log\r
- .error("WS root cause: "\r
- + e.getSoapFault().getFaultStringOrReason());\r
- if (log.isTraceEnabled()) {\r
- StringBuffer stack = new StringBuffer("");\r
- SoapFaultDetail detail = e.getSoapFault().getFaultDetail();\r
- if (detail != null) {\r
- Iterator<SoapFaultDetailElement> it = (Iterator<SoapFaultDetailElement>) detail\r
- .getDetailEntries();\r
- while (it.hasNext()) {\r
- SoapFaultDetailElement elem = it.next();\r
- if (elem.getName().getLocalPart().equals("StackElement")) {\r
- Source source = elem.getSource();\r
- if (source instanceof DOMSource) {\r
- Node node = ((DOMSource) source).getNode();\r
- // stack.append(node.getTextContent()).append('\n');\r
- stack\r
- .append(\r
- node.getChildNodes().item(0)\r
- .getNodeValue()).append(\r
- '\n');\r
- }\r
- }\r
- }\r
-\r
- if (stack.length() > 0)\r
- log.error("WS root cause stack: " + stack);\r
- }\r
- }\r
- }\r
-\r
- private WebServiceUtils() {\r
-\r
- }\r
-}\r
+++ /dev/null
-package org.argeo.slc.ws.process;\r
-\r
-import java.util.List;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-import org.argeo.slc.core.process.SlcExecution;\r
-import org.argeo.slc.core.process.SlcExecutionNotifier;\r
-import org.argeo.slc.core.process.SlcExecutionStep;\r
-import org.argeo.slc.msg.process.SlcExecutionRequest;\r
-import org.argeo.slc.msg.process.SlcExecutionStatusRequest;\r
-import org.argeo.slc.msg.process.SlcExecutionStepsRequest;\r
-import org.argeo.slc.ws.client.WebServiceUtils;\r
-import org.springframework.ws.client.WebServiceIOException;\r
-import org.springframework.ws.client.core.WebServiceTemplate;\r
-import org.springframework.ws.soap.client.SoapFaultClientException;\r
-\r
-public class WebServiceSlcExecutionNotifier implements SlcExecutionNotifier {\r
- private WebServiceTemplate template;\r
-\r
- private Log log = LogFactory.getLog(getClass());\r
-\r
- private Boolean cannotConnect = false;\r
-\r
- public void newExecution(SlcExecution slcExecution) {\r
- if (cannotConnect)\r
- return;\r
-\r
- SlcExecutionRequest req = new SlcExecutionRequest();\r
- req.setSlcExecution(slcExecution);\r
- try {\r
- WebServiceUtils.marshalSendAndReceive(template, req);\r
- if (log.isTraceEnabled())\r
- log.trace("Notified creation of slc execution "\r
- + slcExecution.getUuid());\r
- } catch (SoapFaultClientException e) {\r
- WebServiceUtils.manageSoapException(e);\r
- } catch (WebServiceIOException e) {\r
- manageIoException(e);\r
- }\r
- }\r
-\r
- public void updateExecution(SlcExecution slcExecution) {\r
- if (cannotConnect)\r
- return;\r
-\r
- SlcExecutionRequest req = new SlcExecutionRequest();\r
- req.setSlcExecution(slcExecution);\r
- try {\r
- WebServiceUtils.marshalSendAndReceive(template, req);\r
- if (log.isTraceEnabled())\r
- log.trace("Notified update of slc execution "\r
- + slcExecution.getUuid());\r
- } catch (SoapFaultClientException e) {\r
- WebServiceUtils.manageSoapException(e);\r
- } catch (WebServiceIOException e) {\r
- manageIoException(e);\r
- }\r
- }\r
-\r
- public void updateStatus(SlcExecution slcExecution, String oldStatus,\r
- String newStatus) {\r
- if (cannotConnect)\r
- return;\r
-\r
- SlcExecutionStatusRequest req = new SlcExecutionStatusRequest(\r
- slcExecution.getUuid(), newStatus);\r
- try {\r
- WebServiceUtils.marshalSendAndReceive(template, req);\r
- if (log.isTraceEnabled())\r
- log.trace("Notified status update of slc execution "\r
- + slcExecution.getUuid());\r
- } catch (SoapFaultClientException e) {\r
- WebServiceUtils.manageSoapException(e);\r
- } catch (WebServiceIOException e) {\r
- manageIoException(e);\r
- }\r
- }\r
-\r
- public void addSteps(SlcExecution slcExecution,\r
- List<SlcExecutionStep> additionalSteps) {\r
- if (cannotConnect)\r
- return;\r
-\r
- SlcExecutionStepsRequest req = new SlcExecutionStepsRequest();\r
- req.setSlcExecutionUuid(slcExecution.getUuid());\r
- req.setSteps(additionalSteps);\r
- if (log.isTraceEnabled()) {\r
- for (SlcExecutionStep step : additionalSteps) {\r
- log.trace("Step " + step.getUuid() + ": " + step.logAsString());\r
- }\r
- }\r
-\r
- try {\r
- WebServiceUtils.marshalSendAndReceive(template, req);\r
- if (log.isTraceEnabled())\r
- log.trace("Added steps to slc execution "\r
- + slcExecution.getUuid());\r
- } catch (SoapFaultClientException e) {\r
- WebServiceUtils.manageSoapException(e);\r
- } catch (WebServiceIOException e) {\r
- manageIoException(e);\r
- }\r
- }\r
-\r
- public void setTemplate(WebServiceTemplate template) {\r
- this.template = template;\r
- }\r
-\r
- protected void manageIoException(WebServiceIOException e) {\r
- if (!cannotConnect) {\r
- log.error("Cannot connect to " + template.getDefaultUri()\r
- + ". Won't try again.", e);\r
- cannotConnect = true;\r
- }\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ws.test.tree;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-import org.argeo.slc.core.test.TestResultListener;\r
-import org.argeo.slc.core.test.TestResultPart;\r
-import org.argeo.slc.core.test.tree.TreeTestResult;\r
-import org.argeo.slc.msg.test.tree.CloseTreeTestResultRequest;\r
-import org.argeo.slc.msg.test.tree.CreateTreeTestResultRequest;\r
-import org.argeo.slc.msg.test.tree.ResultPartRequest;\r
-import org.argeo.slc.ws.client.WebServiceUtils;\r
-import org.springframework.ws.client.WebServiceIOException;\r
-import org.springframework.ws.client.core.WebServiceTemplate;\r
-import org.springframework.ws.soap.client.SoapFaultClientException;\r
-\r
-public class WebServiceTreeTestResultNotifier implements\r
- TestResultListener<TreeTestResult> {\r
- private WebServiceTemplate template;\r
- private Boolean onlyOnClose = false;\r
-\r
- private Log log = LogFactory.getLog(getClass());\r
-\r
- private Boolean cannotConnect = false;\r
-\r
- public void resultPartAdded(TreeTestResult testResult,\r
- TestResultPart testResultPart) {\r
- if (onlyOnClose)\r
- return;\r
-\r
- if (cannotConnect)\r
- return;\r
-\r
- try {\r
- if (testResult.getResultParts().size() == 1\r
- && testResult.getResultParts().values().iterator().next()\r
- .getParts().size() == 1) {\r
- CreateTreeTestResultRequest req = new CreateTreeTestResultRequest(\r
- testResult);\r
-\r
- if (log.isDebugEnabled())\r
- log.debug("Send create result request for result "\r
- + testResult.getUuid());\r
-\r
- WebServiceUtils.marshalSendAndReceive(template, req);\r
- } else {\r
- ResultPartRequest req = new ResultPartRequest(testResult);\r
-\r
- if (log.isDebugEnabled())\r
- log.debug("Send result parts for result "\r
- + testResult.getUuid());\r
-\r
- WebServiceUtils.marshalSendAndReceive(template, req);\r
- }\r
- } catch (SoapFaultClientException e) {\r
- WebServiceUtils.manageSoapException(e);\r
-\r
- } catch (WebServiceIOException e) {\r
- manageIoException(e);\r
- }\r
- }\r
-\r
- public void close(TreeTestResult testResult) {\r
- if (cannotConnect)\r
- return;\r
-\r
- try {\r
- if (onlyOnClose) {\r
- CreateTreeTestResultRequest req = new CreateTreeTestResultRequest(\r
- testResult);\r
-\r
- if (log.isDebugEnabled())\r
- log.debug("Send create result request for result "\r
- + testResult.getUuid());\r
-\r
- WebServiceUtils.marshalSendAndReceive(template, req);\r
- } else {\r
- CloseTreeTestResultRequest req = new CloseTreeTestResultRequest(\r
- testResult);\r
-\r
- if (log.isDebugEnabled())\r
- log.debug("Send close result request for result "\r
- + testResult.getUuid());\r
-\r
- WebServiceUtils.marshalSendAndReceive(template, req);\r
-\r
- }\r
- } catch (SoapFaultClientException e) {\r
- WebServiceUtils.manageSoapException(e);\r
- } catch (WebServiceIOException e) {\r
- manageIoException(e);\r
- }\r
- }\r
-\r
- public void setTemplate(WebServiceTemplate template) {\r
- this.template = template;\r
- }\r
-\r
- public void setOnlyOnClose(Boolean onlyOnClose) {\r
- this.onlyOnClose = onlyOnClose;\r
- }\r
-\r
- protected void manageIoException(WebServiceIOException e) {\r
- if (!cannotConnect) {\r
- log.error("Cannot connect to " + template.getDefaultUri()\r
- + ". Won't try again.", e);\r
- cannotConnect = true;\r
- }\r
- }\r
-}\r
Manifest-Version: 1.0\r
-Export-Package: org.argeo.slc.ws.client;uses:="org.springframework.ws.\r
- client.core,org.springframework.oxm,org.apache.commons.logging,org.sp\r
- ringframework.ws,org.springframework.ws.soap,org.springframework.ws.c\r
- ontext,org.springframework.xml.transform,org.springframework.ws.clien\r
- t,javax.xml.transform.dom,org.w3c.dom,org.springframework.xml.validat\r
- ion,javax.xml.namespace,org.xml.sax,javax.xml.transform,org.springfra\r
- mework.ws.soap.client,org.springframework.ws.client.support.intercept\r
- or";version="0.11.2.SNAPSHOT",org.argeo.slc.ws.client.spring;version=\r
- "0.11.2.SNAPSHOT",org.argeo.slc.ant.detached;uses:="org.argeo.slc.ant\r
- .spring,org.apache.commons.logging,org.argeo.slc.core,org.argeo.slc.s\r
- pring,org.springframework.context,org.argeo.slc.detached,org.argeo.sl\r
- c.ant.structure,org.springframework.beans.factory";version="0.11.2.SN\r
- APSHOT",org.argeo.slc.ws.test.tree;uses:="org.springframework.ws.clie\r
- nt.core,org.apache.commons.logging,org.argeo.slc.msg.test.tree,org.ar\r
- geo.slc.ws.client,org.springframework.ws.soap.client,org.springframew\r
- ork.ws.client,org.argeo.slc.core.test.tree,org.argeo.slc.core.test";v\r
- ersion="0.11.2.SNAPSHOT",org.argeo.slc.maven;uses:="org.argeo.slc.cor\r
- e.build,org.argeo.slc.core.deploy";version="0.11.2.SNAPSHOT",org.arge\r
- o.slc.ant.structure;uses:="org.argeo.slc.core.structure,org.argeo.slc\r
- .ant.spring,org.argeo.slc.core,org.springframework.context,org.apache\r
- .tools.ant,org.argeo.slc.core.structure.tree";version="0.11.2.SNAPSHO\r
- T",org.argeo.slc.ant.unit;uses:="org.argeo.slc.ant,junit.framework,or\r
- g.argeo.slc.unit,org.argeo.slc.runtime,org.argeo.slc.cli,org.springfr\r
- amework.core.io,org.springframework.context,org.argeo.slc.core.proces\r
- s";version="0.11.2.SNAPSHOT",org.argeo.slc.ant.deploy;uses:="org.arge\r
- o.slc.ant.spring,org.apache.commons.logging,org.argeo.slc.core,org.ar\r
- geo.slc.core.build,org.springframework.context,org.argeo.slc.core.dep\r
- loy,org.argeo.slc.ant.structure,org.apache.tools.ant";version="0.11.2\r
- .SNAPSHOT",org.argeo.slc.ant.spring;uses:="org.apache.commons.logging\r
- ,org.argeo.slc.core,org.springframework.beans,org.apache.tools.ant.ty\r
- pes,org.springframework.context,org.argeo.slc.core.process,org.apache\r
- .tools.ant,org.springframework.beans.factory";version="0.11.2.SNAPSHO\r
- T",org.argeo.slc.ant;uses:="org.apache.commons.logging,org.apache.log\r
- 4j,org.springframework.context.support,org.apache.log4j.spi,org.sprin\r
- gframework.beans.factory.config,org.springframework.beans.factory.sup\r
- port,org.argeo.slc.core.structure,org.argeo.slc.core,org.apache.tools\r
- .ant.util,org.apache.commons.io,org.argeo.slc.core.process,org.argeo.\r
- slc.core.structure.tree,org.springframework.beans.factory,org.apache.\r
- tools.ant.helper,org.springframework.util,org.springframework.core.io\r
- ,org.springframework.context,org.argeo.slc.logging,org.springframewor\r
- k.beans.factory.xml,org.apache.tools.ant,org.argeo.slc.runtime";versi\r
- on="0.11.2.SNAPSHOT",org.argeo.slc.lib.detached;uses:="org.springfram\r
- ework.oxm,org.apache.commons.logging,org.argeo.slc.detached.ui,org.sp\r
- ringframework.beans,org.argeo.slc.detached,org.springframework.beans.\r
- factory.config,org.argeo.slc.core.test,org.springframework.beans.fact\r
- ory.support,org.argeo.slc.core,org.argeo.slc.core.test.context,javax.\r
- xml.transform,org.argeo.slc.core.structure.tree,org.springframework.b\r
- eans.factory";version="0.11.2.SNAPSHOT",org.argeo.slc.ws.process;uses\r
- :="org.springframework.ws.client.core,org.apache.commons.logging,org.\r
- argeo.slc.ws.client,org.springframework.ws.client,org.springframework\r
- .ws.soap.client,org.argeo.slc.core.process,org.argeo.slc.msg.process"\r
- ;version="0.11.2.SNAPSHOT",org.argeo.slc.cli;uses:="org.apache.common\r
- s.logging,org.apache.commons.cli,org.springframework.core.io,org.arge\r
- o.slc.logging,org.argeo.slc.ant,org.argeo.slc.core,org.argeo.slc.spri\r
- ng,org.argeo.slc.runtime,org.apache.commons.io,org.argeo.slc.core.pro\r
- cess";version="0.11.2.SNAPSHOT",org.argeo.slc.ant.test;uses:="org.apa\r
- che.commons.logging,org.springframework.beans,org.springframework.con\r
- text,org.argeo.slc.ant.structure,org.apache.tools.ant,org.argeo.slc.c\r
- ore.test,org.argeo.slc.core.structure,org.argeo.slc.ant.spring,org.ar\r
- geo.slc.core,org.argeo.slc.core.test.context,org.argeo.slc.spring,org\r
- .apache.tools.ant.types,org.argeo.slc.core.deploy,org.argeo.slc.core.\r
- process,org.argeo.slc.core.structure.tree,org.springframework.beans.f\r
- actory";version="0.11.2.SNAPSHOT",org.argeo.slc.support.deploy.ant;ve\r
- rsion="0.11.2.SNAPSHOT"\r
+Export-Package: org.argeo.slc.cli;uses:="org.apache.commons.logging,or\r
+ g.argeo.slc.core,org.apache.commons.cli,org.argeo.slc.runtime,org.arg\r
+ eo.slc.logging,org.apache.commons.io";version="0.11.2.SNAPSHOT",org.a\r
+ rgeo.slc.maven;uses:="org.argeo.slc.core.build,org.argeo.slc.core.dep\r
+ loy";version="0.11.2.SNAPSHOT",org.argeo.slc.support.deploy.ant;versi\r
+ on="0.11.2.SNAPSHOT"\r
Tool: Bnd-0.0.255\r
-Bundle-Name: Argeo SLC Agent\r
+Bundle-Name: Argeo SLC Launcher\r
Created-By: 1.6.0 (Sun Microsystems Inc.)\r
Bundle-Vendor: Argeo\r
Bundle-Version: 0.11.2.SNAPSHOT\r
Bundle-ManifestVersion: 2\r
Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt\r
Bundle-Description: SLC Distribution\r
-Import-Package: javax.xml.namespace;version="1.3",javax.xml.transform;\r
- version="1.3",javax.xml.transform.dom;version="1.3",junit.framework;v\r
- ersion="3.8",org.apache.commons.cli;resolution:=optional;version="1.1\r
- ",org.apache.commons.io;version="1.4",org.apache.commons.logging;vers\r
- ion="1.1",org.apache.log4j;version="1.2",org.apache.log4j.spi;version\r
- ="1.2",org.apache.tools.ant;version="1.7",org.apache.tools.ant.helper\r
- ;version="1.7",org.apache.tools.ant.types;version="1.7",org.apache.to\r
- ols.ant.util;version="1.7",org.argeo.slc.ant;version="0.11.2.SNAPSHOT\r
- ",org.argeo.slc.ant.deploy;version="0.11.2.SNAPSHOT",org.argeo.slc.an\r
- t.detached;version="0.11.2.SNAPSHOT",org.argeo.slc.ant.spring;version\r
- ="0.11.2.SNAPSHOT",org.argeo.slc.ant.structure;version="0.11.2.SNAPSH\r
- OT",org.argeo.slc.ant.test;version="0.11.2.SNAPSHOT",org.argeo.slc.an\r
- t.unit;version="0.11.2.SNAPSHOT",org.argeo.slc.cli;version="0.11.2.SN\r
- APSHOT",org.argeo.slc.core;version="0.11.2.SNAPSHOT",org.argeo.slc.co\r
- re.build;version="0.11.2.SNAPSHOT",org.argeo.slc.core.deploy;version=\r
- "0.11.2.SNAPSHOT",org.argeo.slc.core.process;version="0.11.2.SNAPSHOT\r
- ",org.argeo.slc.core.structure;version="0.11.2.SNAPSHOT",org.argeo.sl\r
- c.core.structure.tree;version="0.11.2.SNAPSHOT",org.argeo.slc.core.te\r
- st;version="0.11.2.SNAPSHOT",org.argeo.slc.core.test.context;version=\r
- "0.11.2.SNAPSHOT",org.argeo.slc.core.test.spring;version="0.11.2.SNAP\r
- SHOT",org.argeo.slc.core.test.tree;version="0.11.2.SNAPSHOT",org.arge\r
- o.slc.detached;version="0.11.2.SNAPSHOT",org.argeo.slc.detached.ui;ve\r
- rsion="0.11.2.SNAPSHOT",org.argeo.slc.lib.detached;version="0.11.2.SN\r
- APSHOT",org.argeo.slc.logging;version="0.11.2.SNAPSHOT",org.argeo.slc\r
- .maven;version="0.11.2.SNAPSHOT",org.argeo.slc.msg.process;version="0\r
- .11.2.SNAPSHOT",org.argeo.slc.msg.test.tree;version="0.11.2.SNAPSHOT"\r
- ,org.argeo.slc.runtime;version="0.11.2.SNAPSHOT",org.argeo.slc.spring\r
- ;version="0.11.2.SNAPSHOT",org.argeo.slc.support.deploy.ant;version="\r
- 0.11.2.SNAPSHOT",org.argeo.slc.unit;version="0.11.2.SNAPSHOT",org.arg\r
- eo.slc.ws.client;version="0.11.2.SNAPSHOT",org.argeo.slc.ws.client.sp\r
- ring;version="0.11.2.SNAPSHOT",org.argeo.slc.ws.process;version="0.11\r
- .2.SNAPSHOT",org.argeo.slc.ws.test.tree;version="0.11.2.SNAPSHOT",org\r
- .springframework.beans;version="2.5.6.A",org.springframework.beans.fa\r
- ctory;version="2.5.6.A",org.springframework.beans.factory.config;vers\r
- ion="2.5.6.A",org.springframework.beans.factory.support;version="2.5.\r
- 6.A",org.springframework.beans.factory.xml;version="2.5.6.A",org.spri\r
- ngframework.context;version="2.5.6.A",org.springframework.context.sup\r
- port;version="2.5.6.A",org.springframework.core.io;version="2.5.6.A",\r
- org.springframework.oxm;version="1.5.5.A",org.springframework.util;ve\r
- rsion="2.5.6.A",org.springframework.ws;version="1.5.5.A",org.springfr\r
- amework.ws.client;version="1.5.5.A",org.springframework.ws.client.cor\r
- e;version="1.5.5.A",org.springframework.ws.client.support.interceptor\r
- ;version="1.5.5.A",org.springframework.ws.context;version="1.5.5.A",o\r
- rg.springframework.ws.soap;version="1.5.5.A",org.springframework.ws.s\r
- oap.client;version="1.5.5.A",org.springframework.xml.transform;versio\r
- n="1.5.5.A",org.springframework.xml.validation;version="1.5.5.A",org.\r
- w3c.dom;version="1.3",org.xml.sax;version="1.3"\r
-Bundle-SymbolicName: org.argeo.slc.agent\r
+Import-Package: org.apache.commons.cli;resolution:=optional;version="1\r
+ .1",org.apache.commons.io;version="1.4",org.apache.commons.logging;ve\r
+ rsion="1.1",org.argeo.slc.cli;version="0.11.2.SNAPSHOT",org.argeo.slc\r
+ .core;version="0.11.2.SNAPSHOT",org.argeo.slc.core.build;version="0.1\r
+ 1.2.SNAPSHOT",org.argeo.slc.core.deploy;version="0.11.2.SNAPSHOT",org\r
+ .argeo.slc.core.test.spring;version="0.11.2.SNAPSHOT",org.argeo.slc.l\r
+ ogging;version="0.11.2.SNAPSHOT",org.argeo.slc.maven;version="0.11.2.\r
+ SNAPSHOT",org.argeo.slc.runtime;version="0.11.2.SNAPSHOT",org.argeo.s\r
+ lc.support.deploy.ant;version="0.11.2.SNAPSHOT"\r
+Bundle-SymbolicName: org.argeo.slc.launcher\r
Bundle-DocURL: http://www.argeo.org\r
Originally-Created-By: 1.6.0 (Sun Microsystems Inc.)\r
\r
+++ /dev/null
-log4j.rootLogger=WARN, console, file
-
-## Levels
-log4j.logger.org.argeo=INFO
-
-## Ant (Ant error logging is to verbose)
-log4j.logger.org.apache.tools.ant.UnknownElement=OFF
-log4j.logger.org.apache.tools.ant.Target=OFF
-log4j.logger.org.apache.tools.ant.Project=OFF
-
-## Appenders
-# console uses PatternLayout.
-log4j.appender.console=org.apache.log4j.ConsoleAppender
-log4j.appender.console.layout=org.apache.log4j.PatternLayout
-log4j.appender.console.layout.ConversionPattern= %-5p %d{ISO8601} %m - %c%n
-
-# file uses PatternLayout
-log4j.appender.file=org.apache.log4j.RollingFileAppender
-log4j.appender.file.File=${slc.workDir}/log/slcApp.log
-log4j.appender.file.MaxFileSize=1MB
-log4j.appender.file.MaxBackupIndex=5
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern= %-5p %d{ISO8601} %m - %c%n
+++ /dev/null
-# Tasks\r
-slc.test=org.argeo.slc.ant.test.SlcTestTask\r
-slc.deploy=org.argeo.slc.ant.deploy.SlcDeployTask\r
-slc.manager=org.argeo.slc.ant.deploy.SlcManagerTask\r
-slc.closeResult=org.argeo.slc.ant.test.SlcCloseTestResultTask\r
-slc.report=org.argeo.slc.ant.test.SlcReportTask\r
-slc.register=org.argeo.slc.ant.spring.SpringRegister\r
-slc.detached=org.argeo.slc.ant.detached.SlcDetachedTask\r
+++ /dev/null
-# Types\r
-slc.context=org.argeo.slc.ant.test.ParentContextType\r
+++ /dev/null
-<?xml version="1.0"?>
-<!DOCTYPE doc [
-<!ENTITY slc-detached-namespace-uri "http://argeo.org/projects/slc/schemas/detached">
-<!ENTITY slc-detached-namespace-prefix "slc-det">
-]>
-
-<mapping>
- <description>Mapping of SLC detached types</description>
-
- <class name="org.argeo.slc.detached.DetachedRequest">
- <map-to ns-uri="&slc-detached-namespace-uri;"
- ns-prefix="&slc-detached-namespace-prefix;" />
- <field name="uuid" />
- <field name="ref" />
- <field name="path" />
- <field name="properties" collection="map">
- <bind-xml name="prop" location="properties">
- <class name="org.exolab.castor.mapping.MapItem">
- <map-to ns-uri="&slc-detached-namespace-uri;"
- ns-prefix="&slc-detached-namespace-prefix;" />
- <field name="key" type="string">
- <bind-xml name="key" node="attribute" />
- </field>
- <field name="value" type="string">
- <bind-xml node="text" />
- </field>
- </class>
- </bind-xml>
- </field>
- </class>
-
- <class name="org.argeo.slc.detached.DetachedAnswer">
- <map-to ns-uri="&slc-detached-namespace-uri;"
- ns-prefix="&slc-detached-namespace-prefix;" />
- <field name="uuid" />
- <field name="status" />
- <field name="log" />
- <field name="properties" collection="map">
- <bind-xml name="prop" location="properties">
- <class name="org.exolab.castor.mapping.MapItem">
- <map-to ns-uri="&slc-detached-namespace-uri;"
- ns-prefix="&slc-detached-namespace-prefix;" />
- <field name="key" type="string">
- <bind-xml name="key" node="attribute" />
- </field>
- <field name="value" type="string">
- <bind-xml node="text" />
- </field>
- </class>
- </bind-xml>
- </field>
- </class>
-</mapping>
\ No newline at end of file
+++ /dev/null
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
- default-lazy-init="true">
-
- <bean id="slcTemplate.detached.testDefinition"
- class="org.argeo.slc.lib.detached.DetachedTestDefinition"
- abstract="true">
- </bean>
-
- <bean id="slcDefault.detached.xmlConverterCastor"
- class="org.argeo.slc.lib.detached.DetachedXmlConverterSpring">
- <property name="marshaller"
- ref="slcDefault.detached.castor.marshaller" />
- <property name="unmarshaller"
- ref="slcDefault.detached.castor.marshaller" />
- </bean>
-
- <bean id="slcDefault.detached.castor.marshaller"
- class="org.springframework.oxm.castor.CastorMarshaller">
- <property name="mappingLocations">
- <list>
- <value>
- classpath:org/argeo/slc/lib/detached/castor.xml
- </value>
- </list>
- </property>
- <property name="whitespacePreserve" value="true" />
- </bean>
-
- <bean id="slcDefault.detached.xml.xsdValidator"
- factory-bean="slcDefault.detached.xml.xsdSchema"
- factory-method="createValidator" />
-
- <bean id="slcDefault.detached.xml.xsdSchema"
- class="org.springframework.xml.xsd.SimpleXsdSchema">
- <property name="xsd"
- value="classpath:/org/argeo/slc/detached/slc-detached.xsd" />
- </bean>
-
-</beans>
+++ /dev/null
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
- default-lazy-init="true">
-
- <import
- resource="classpath:/org/argeo/slc/castor/spring/applicationContext.xml" />
- <import
- resource="classpath:/org/argeo/slc/xml/spring/applicationContext.xml" />
-
- <bean id="slcDefault.ws.client.webServiceTemplate"
- parent="slcTemplate.ws.client.webServiceTemplate">
- <constructor-arg ref="slcDefault.ws.client.messageFactory" />
- <property name="defaultUri" value="${slc.ws.uri}" />
- </bean>
-
- <bean
- class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
- lazy-init="false">
- <property name="systemPropertiesModeName"
- value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
- <property name="ignoreUnresolvablePlaceholders" value="true" />
- <property name="properties">
- <props>
- <prop key="slc.ws.uri">
- http://localhost:9090/org.argeo.slc.webapp/slcService/
- </prop>
- </props>
- </property>
- </bean>
-
- <bean id="slcTemplate.ws.client.webServiceTemplate"
- class="org.springframework.ws.client.core.WebServiceTemplate"
- abstract="true">
- <property name="marshaller" ref="slcDefault.castor.marshaller" />
- <property name="unmarshaller"
- ref="slcDefault.castor.marshaller" />
- <property name="interceptors">
- <list>
- <bean
- class="org.argeo.slc.ws.client.ValidatingClientInterceptor">
- <property name="validator"
- ref="slcDefault.xml.xsdValidator" />
- </bean>
- </list>
- </property>
- </bean>
-
- <bean id="slcDefault.ws.client.messageFactory"
- class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory" />
-
- <bean name="slcDefault.ws.client.treeTestResultWsNotfier"
- class="org.argeo.slc.ws.test.tree.WebServiceTreeTestResultNotifier">
- <property name="template"
- ref="slcDefault.ws.client.webServiceTemplate" />
- <property name="onlyOnClose" value="false" />
- </bean>
-
- <bean name="slcDefault.ws.client.slcExecutionNotifier"
- class="org.argeo.slc.ws.process.WebServiceSlcExecutionNotifier">
- <property name="template"
- ref="slcDefault.ws.client.webServiceTemplate" />
- </bean>
-
-</beans>
+++ /dev/null
-package org.argeo.slc.ant;
-
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-import java.util.Vector;
-
-public class DummyObject {
- private String name;
- private Long value;
- private DummyObject other;
- private List<DummyObject> children = new Vector<DummyObject>();
- private Map<String, DummyObject> map = new TreeMap<String, DummyObject>();
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public Long getValue() {
- return value;
- }
-
- public void setValue(Long value) {
- this.value = value;
- }
-
- public DummyObject getOther() {
- return other;
- }
-
- public void setOther(DummyObject other) {
- this.other = other;
- }
-
- public List<DummyObject> getChildren() {
- return children;
- }
-
- public void setChildren(List<DummyObject> children) {
- this.children = children;
- }
-
- public Map<String, DummyObject> getMap() {
- return map;
- }
-
- public void setMap(Map<String, DummyObject> map) {
- this.map = map;
- }
-
-}
+++ /dev/null
-package org.argeo.slc.ant;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.ant.unit.MinimalAntClasspathTestCase;
-
-public class OverrideTest extends MinimalAntClasspathTestCase {
- private Log log = LogFactory.getLog(getClass());
-
- public void testSimpleRun() {
- execute("/org/argeo/slc/ant/buildOverride.xml");
- }
-
- @Override
- public void postExecution(AntExecutionContext executionContext) {
- log.info("Analyzing context after execution...");
-
- DummyObject dummy1UnModified = executionContext
- .getAntRef("dummy1.unmodified");
- assertEquals("dummy2", dummy1UnModified.getOther().getName());
- assertEquals(2, dummy1UnModified.getChildren().size());
- assertEquals(2, dummy1UnModified.getMap().size());
-
- DummyObject dummy1Modif1 = executionContext.getAntRef("dummy1.modif1");
- assertEquals("dummy1.modif1", dummy1Modif1.getName());
- assertEquals("dummy3", dummy1Modif1.getOther().getName());
-
- DummyObject dummy1Modif2 = executionContext.getAntRef("dummy1.modif2");
- assertEquals(1, dummy1Modif2.getChildren().size());
- assertEquals("dummy3", dummy1Modif2.getChildren().get(0).getName());
-
- DummyObject dummy1Modif3 = executionContext.getAntRef("dummy1.modif3");
- assertEquals(2, dummy1Modif3.getChildren().size());
- assertEquals("dummy3", dummy1Modif3.getChildren().get(0).getName());
- assertEquals("dummy2", dummy1Modif3.getChildren().get(1).getName());
-
- DummyObject dummy1Modif4 = executionContext.getAntRef("dummy1.modif4");
- assertEquals(2, dummy1Modif4.getChildren().size());
- assertEquals("dummy3", dummy1Modif4.getChildren().get(0).getName());
- assertEquals("dummy1.modif1", dummy1Modif4.getChildren().get(0)
- .getOther().getName());
- assertEquals("dummy2", dummy1Modif4.getChildren().get(1).getName());
- assertEquals(1, dummy1Modif4.getChildren().get(1).getChildren().size());
- assertEquals("dummy3", dummy1Modif4.getChildren().get(1).getChildren()
- .get(0).getName());
-
- DummyObject dummy1Modif5 = executionContext.getAntRef("dummy1.modif5");
- assertEquals(2, dummy1Modif5.getMap().size());
- assertEquals("dummy3", dummy1Modif5.getMap().get("key1").getName());
- assertEquals("dummy2", dummy1Modif5.getMap().get("key2").getName());
-
- DummyObject dummy1Modif6 = executionContext.getAntRef("dummy1.modif6");
- assertEquals(2, dummy1Modif6.getMap().size());
- assertEquals("dummy2.merged", dummy1Modif6.getMap().get("key1").getName());
- assertEquals("dummy3.merged", dummy1Modif6.getMap().get("key2").getName());
-
- }
-
- @Override
- protected String getApplicationContextLocation() {
- return inPackage("acOverride.xml");
- }
-
-}
+++ /dev/null
-package org.argeo.slc.ant;\r
-\r
-import org.argeo.slc.ant.unit.MinimalAntClasspathTestCase;\r
-\r
-public class SlcAntTest extends MinimalAntClasspathTestCase {\r
- // private Log log = LogFactory.getLog(getClass());\r
-\r
- public void testSimpleRun() {\r
- execute("/org/argeo/slc/ant/build.xml");\r
- }\r
-}\r
+++ /dev/null
-package org.argeo.slc.lib.detached;
-
-import java.util.Enumeration;
-import java.util.Properties;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.detached.DetachedAnswer;
-import org.argeo.slc.detached.DetachedRequest;
-import org.argeo.slc.detached.DetachedXmlConverter;
-import org.argeo.slc.detached.DetachedXmlConverterCompat;
-import org.argeo.slc.unit.AbstractSpringTestCase;
-import org.argeo.slc.unit.UnitXmlUtils;
-import org.springframework.xml.transform.StringResult;
-import org.springframework.xml.transform.StringSource;
-import org.springframework.xml.validation.XmlValidator;
-
-public class DetachedCastorTest extends AbstractSpringTestCase {
- private final Log log = LogFactory.getLog(getClass());
-
- private DetachedXmlConverter converter = null;
- private XmlValidator validator = null;
- private DetachedXmlConverter converterCompat = null;
-
- public void setUp() {
- converter = getBean("slcDefault.detached.xmlConverterCastor");
- validator = getBean("slcDefault.detached.xml.xsdValidator");
- converterCompat = new DetachedXmlConverterCompat();
- }
-
- public void testRequest() throws Exception {
- DetachedRequest request = createTestRequest();
-
- StringResult result = new StringResult();
- converter.marshallCommunication(request, result);
- String xml = result.toString();
- log.debug(xml + "\n");
-
- UnitXmlUtils.assertXmlValidation(validator, new StringSource(xml));
- DetachedRequest requestUnm = (DetachedRequest) converter
- .unmarshallCommunication(new StringSource(xml));
- assertDetachedRequest(request, requestUnm);
- }
-
- public void testRequestCompat() throws Exception {
- DetachedRequest request = createTestRequest();
-
- StringResult result = new StringResult();
- converter.marshallCommunication(request, result);
- String xml = result.toString();
- log.debug(xml + "\n");
-
- UnitXmlUtils.assertXmlValidation(validator, new StringSource(xml));
- DetachedRequest requestUnm = (DetachedRequest) converterCompat
- .unmarshallCommunication(new StringSource(xml));
- assertDetachedRequest(request, requestUnm);
- }
-
- public void testAnswer() throws Exception {
- DetachedAnswer answer = createTestAnswer();
- StringResult result = new StringResult();
- converter.marshallCommunication(answer, result);
- String xml = result.toString();
- log.debug(xml + "\n");
-
- UnitXmlUtils.assertXmlValidation(validator, new StringSource(xml));
- DetachedAnswer answerUnm = (DetachedAnswer) converter
- .unmarshallCommunication(new StringSource(xml));
- assertDetachedAnswer(answer, answerUnm);
- }
-
- public void testAnswerCompat() throws Exception {
- DetachedAnswer answer = createTestAnswer();
- StringResult result = new StringResult();
- converterCompat.marshallCommunication(answer, result);
- String xml = result.toString();
- log.debug(xml + "\n");
-
- UnitXmlUtils.assertXmlValidation(validator, new StringSource(xml));
- DetachedAnswer answerUnm = (DetachedAnswer) converter
- .unmarshallCommunication(new StringSource(xml));
- assertDetachedAnswer(answer, answerUnm);
- }
-
- public static DetachedRequest createTestRequest() {
- DetachedRequest request = new DetachedRequest();
- request.setUuid("12345");
- request.setPath("/root/test");
- request.setRef("testRef");
- Properties properties = new Properties();
- properties.setProperty("key1", "value1");
- properties.setProperty("key2", "value2");
- request.setProperties(properties);
- return request;
- }
-
- public static DetachedAnswer createTestAnswer() {
- DetachedAnswer answer = new DetachedAnswer();
- answer.setUuid("12345");
- answer.setStatus(DetachedAnswer.PROCESSED);
- answer.setLog("my log\nline break.");
- Properties properties = new Properties();
- properties.setProperty("key1", "value1");
- properties.setProperty("key2", "value2");
- answer.setProperties(properties);
- return answer;
- }
-
- public static void assertDetachedRequest(DetachedRequest expected,
- DetachedRequest reached) {
- assertEquals(expected.getUuid(), reached.getUuid());
- assertEquals(expected.getPath(), reached.getPath());
- assertEquals(expected.getRef(), reached.getRef());
- Properties expectedProps = expected.getProperties();
- Properties reachedProps = reached.getProperties();
- assertEquals(expectedProps.size(), reachedProps.size());
- Enumeration<Object> keys = expectedProps.keys();
- while (keys.hasMoreElements()) {
- String key = (String) keys.nextElement();
- assertTrue(reachedProps.containsKey(key));
- assertEquals(expectedProps.getProperty(key), reachedProps
- .getProperty(key));
- }
- }
-
- public static void assertDetachedAnswer(DetachedAnswer expected,
- DetachedAnswer reached) {
- assertEquals(expected.getUuid(), reached.getUuid());
- assertEquals(expected.getStatus(), reached.getStatus());
- assertEquals(expected.getLog(), reached.getLog());
- Properties expectedProps = expected.getProperties();
- Properties reachedProps = reached.getProperties();
- assertEquals(expectedProps.size(), reachedProps.size());
- Enumeration<Object> keys = expectedProps.keys();
- while (keys.hasMoreElements()) {
- String key = (String) keys.nextElement();
- assertTrue(reachedProps.containsKey(key));
- assertEquals(expectedProps.getProperty(key), reachedProps
- .getProperty(key));
- }
- }
-}
+++ /dev/null
-# Set root logger level to DEBUG and its only appender to A1.\r
-log4j.rootLogger=WARN, console\r
-\r
-## Levels\r
-# Slc\r
-log4j.logger.org.argeo=DEBUG\r
-\r
-# Castor\r
-log4j.logger.org.exolab.castor=WARN\r
-\r
-# Spring\r
-log4j.logger.org.springframework=WARN\r
-\r
-## Appenders\r
-# A1 is set to be a ConsoleAppender.\r
-log4j.appender.console=org.apache.log4j.ConsoleAppender\r
-\r
-# A1 uses PatternLayout.\r
-log4j.appender.console.layout=org.apache.log4j.PatternLayout\r
-log4j.appender.console.layout.ConversionPattern= %-5p %d{ISO8601} %m - %c%n\r
-\r
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
-
-
- <bean id="dummy1" parent="template.dummy" scope="prototype">
- <property name="name" value="dummy1" />
- <property name="other" ref="dummy2" />
- <property name="children">
- <list>
- <ref bean="dummy2" />
- <ref bean="dummy3" />
- </list>
- </property>
- <property name="map">
- <map>
- <entry key="key1">
- <ref bean="dummy2" />
- </entry>
- <entry key="key2">
- <ref bean="dummy3" />
- </entry>
- </map>
- </property>
- </bean>
-
- <bean id="dummy2" parent="template.dummy" scope="prototype">
- <property name="name" value="dummy2" />
- </bean>
-
- <bean id="dummy3" parent="template.dummy" scope="prototype">
- <property name="name" value="dummy3" />
- </bean>
-
- <!-- Templates -->
- <bean id="template.dummy" class="org.argeo.slc.ant.DummyObject"
- abstract="true">
- </bean>
-
-
-
-</beans>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<beans xmlns="http://www.springframework.org/schema/beans"\r
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
-\r
- <import resource="classpath:/org/argeo/slc/ant/nonDepContext.xml" />\r
-\r
- <bean id="testResult"\r
- parent="slcDefault.test.basicTreeTestResult">\r
- </bean>\r
-\r
-</beans>
\ No newline at end of file
+++ /dev/null
-<project default="test">\r
-\r
- <target name="test">\r
- <echo message="Hello World!" />\r
-\r
- <slc.test>\r
- <testDefinition bean="testDef" />\r
- <testData bean="testData1" />\r
- </slc.test>\r
-\r
- <slc.test>
- <testDefinition bean="testDef" />
- <testData bean="testData.context1" />
- </slc.test>
-
- <slc.test path="/testRoot/testContext">
- <testDefinition bean="testDef" />
- <testData bean="testData.context1" />
- </slc.test>
-
- <slc.closeResult>
- <result bean="testResult" />
- </slc.closeResult>\r
- </target>\r
-</project>
\ No newline at end of file
+++ /dev/null
-<project default="test">\r
-\r
- <target name="test">\r
- <slc.register>
- <object antid="dummy1.unmodified" bean="dummy1" />
- <object antid="dummy1.modif1" bean="dummy1">
- <override name="name" value="dummy1.modif1" />
- <override name="other" bean="dummy3" />
- </object>
- <object antid="dummy1.modif2" bean="dummy1">
- <override name="children">
- <list>
- <override bean="dummy3" />
- </list>
- </override>
- </object>
- <object antid="dummy1.modif3" bean="dummy1">
- <override name="children" merge="true">
- <list>
- <override>
- <override name="name" value="dummy3" />
- </override>
- <override>
- <override name="name" value="dummy2" />
- </override>
- </list>
- </override>
- </object>
- <object antid="dummy1.modif4" bean="dummy1">
- <override name="children" merge="true">
- <list>
- <override>
- <override name="name" value="dummy3" />
- <override name="other" antref="dummy1.modif1" />
- </override>
- <override>
- <override name="name" value="dummy2" />
- <override name="children">
- <list>
- <override bean="dummy3" />
- </list>
- </override>
- </override>
- </list>
- </override>
- </object>
- <object antid="dummy1.modif5" bean="dummy1">
- <override name="map">
- <map>
- <entry key="key1">
- <override bean="dummy3" />
- </entry>
- <entry key="key2">
- <override bean="dummy2" />
- </entry>
- </map>
- </override>
- </object>
- <object antid="dummy1.modif6" bean="dummy1">
- <override name="map" merge="true">
- <map>
- <entry key="key1">
- <override>
- <override name="name" value="dummy2.merged" />
- </override>
- </entry>
- <entry key="key2">
- <override>
- <override name="name" value="dummy3.merged" />
- </override>
- </entry>
- </map>
- </override>
- </object>
- </slc.register>\r
- </target>\r
-</project>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<beans xmlns="http://www.springframework.org/schema/beans"\r
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
-\r
- <import\r
- resource="classpath:/org/argeo/slc/core/test/spring/applicationContext.xml" />\r
-\r
- <bean name="testDef"\r
- class="org.argeo.slc.core.test.BasicTestDefinition" scope="prototype" />\r
-\r
- <bean name="testData1"\r
- class="org.argeo.slc.core.test.BasicTestData">\r
- <property name="expected">\r
- <value>toto</value>\r
- </property>\r
- <property name="reached">\r
- <value>toto</value>\r
- </property>\r
- </bean>\r
-\r
- <bean id="testData.context1" parent="context.template">\r
- <property name="values">\r
- <map>\r
- <entry key="reference" value="20" />\r
- <entry key="varIntern" value="60" />\r
- </map>\r
- </property>\r
- <property name="expectedValues">\r
- <map>\r
- <entry key="reference" value="21" />\r
- <entry key="varIntern" value="60" />\r
- </map>\r
- </property>\r
- </bean>\r
-\r
- <bean id="context.template"\r
- class="org.argeo.slc.core.test.context.DefaultContextTestData"\r
- abstract="true">\r
- </bean>\r
-\r
-</beans>
\ No newline at end of file
+++ /dev/null
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
-
- <import resource="classpath:/org/argeo/slc/lib/detached/spring.xml" />
-
-</beans>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
- <name>org.argeo.slc.agent</name>
+ <name>org.argeo.slc.lib.detached</name>
<comment></comment>
<projects>
</projects>
+++ /dev/null
-<project xmlns:artifact="urn:maven-artifact-ant" default="deploy">\r
-\r
- <path id="maven-ant-tasks.classpath"\r
- path="D:\dev\tools\maven-2.0.7\lib\maven-ant-tasks-2.0.7.jar" />\r
- <typedef resource="org/apache/maven/artifact/ant/antlib.xml"\r
- uri="urn:maven-artifact-ant"\r
- classpathref="maven-ant-tasks.classpath" />\r
-\r
- <property name="local" location="D:/dev/mavenLocal/" />\r
- <property name="local.argeo" location="${local}/org/argeo/slc/" />\r
- <property name="repo.argeo"\r
- value="file:///D:/dev/test/mavenArgeoLocalRep/" />\r
-\r
- <target name="deploy">\r
- <deploy artifact="argeo-slc-core" version="0.6.0" />\r
- </target>\r
-\r
- <!-- Macrodefs -->\r
- <macrodef name="deploy">\r
- <attribute name="artifact" />\r
- <attribute name="version" />\r
- <sequential>\r
- <artifact:install-provider artifactId="wagon-file"\r
- version="1.0-beta-2" />\r
- <artifact:deploy file="${local.argeo}/@{artifact}/@{version}/@{artifact}-@{version}.jar">\r
- <artifact:pom file="pom.xml" />\r
- <remoterepository url="${repo.argeo}" />\r
- <attach classifier="sources"\r
- file="${local.argeo}/@{artifact}/@{version}/@{artifact}-@{version}-sources.jar" />\r
- <attach classifier="javadoc"\r
- file="${local.argeo}/@{artifact}/@{version}/@{artifact}-@{version}-javadoc.jar" />\r
- </artifact:deploy>\r
- </sequential>\r
- </macrodef>\r
-</project>
\ No newline at end of file
<groupId>org.argeo.slc</groupId>
<artifactId>argeo-slc</artifactId>
<version>0.11.2-SNAPSHOT</version>
- <relativePath>../org.argeo.slc</relativePath>
+ <relativePath>../../org.argeo.slc</relativePath>
</parent>
- <artifactId>org.argeo.slc.agent</artifactId>
+ <groupId>org.argeo.slc.runtime</groupId>
+ <artifactId>org.argeo.slc.lib.detached</artifactId>
<packaging>jar</packaging>
<name>Argeo SLC Agent</name>
- <scm>
- <connection>
- scm:svn:https://www.argeo.org/svn/slc/trunk/org.argeo.slc.agent
- </connection>
- <url>
- https://www.argeo.org/svn/slc/trunk/org.argeo.slc.agent
- </url>
- </scm>
<build>
<plugins>
<!-- Look to parent pom for inheritances -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
</plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-assembly-plugin</artifactId>
- <configuration>
- <descriptors>
- <descriptor>src/assembly/base.xml</descriptor>
- </descriptors>
- </configuration>
- <executions>
- <execution>
- <id>assembly-base</id>
- <phase>package</phase>
- <goals>
- <goal>single</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<Export-Package>
org.argeo.slc.*
</Export-Package>
- <Import-Package>*,org.argeo.slc.core.test.spring,org.apache.commons.cli;resolution:=optional</Import-Package>
</instructions>
</configuration>
</plugin>
</build>
<dependencies>
<dependency>
- <groupId>org.argeo.slc</groupId>
- <artifactId>org.argeo.slc.core</artifactId>
+ <groupId>org.argeo.slc.runtime</groupId>
+ <artifactId>org.argeo.slc.specs</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
- <groupId>org.argeo.slc</groupId>
- <artifactId>org.argeo.slc.detached</artifactId>
+ <groupId>org.argeo.slc.runtime</groupId>
+ <artifactId>org.argeo.slc.support.simple</artifactId>
<version>${project.version}</version>
</dependency>
-
- <dependency>
- <groupId>org.springframework.ws</groupId>
- <artifactId>org.springframework.ws</artifactId>
- </dependency>
-
- <dependency>
- <groupId>javax.xml.soap</groupId>
- <artifactId>com.springsource.javax.xml.soap</artifactId>
- </dependency>
- <dependency>
- <groupId>com.sun.xml</groupId>
- <artifactId>
- com.springsource.com.sun.xml.messaging.saaj
- </artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.argeo.dep.osgi</groupId>
- <artifactId>org.argeo.dep.osgi.ant</artifactId>
- </dependency>
-
<dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>com.springsource.org.apache.commons.net</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.oro</groupId>
- <artifactId>com.springsource.org.apache.oro</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.bsf</groupId>
- <artifactId>com.springsource.org.apache.bsf</artifactId>
+ <groupId>org.argeo.slc.runtime</groupId>
+ <artifactId>org.argeo.slc.support.ant</artifactId>
+ <version>${project.version}</version>
</dependency>
<dependency>
- <groupId>org.beanshell</groupId>
- <artifactId>com.springsource.bsh</artifactId>
+ <groupId>org.argeo.slc.runtime</groupId>
+ <artifactId>org.argeo.slc.detached</artifactId>
+ <version>${project.version}</version>
</dependency>
-
- <!--
- <dependency> <groupId>org.apache.maven</groupId>
- <artifactId>maven-embedder</artifactId> </dependency> <dependency>
- <groupId>org.apache.maven</groupId>
- <artifactId>maven-settings</artifactId> </dependency>
- -->
<dependency>
- <groupId>org.argeo.dep.osgi</groupId>
- <artifactId>org.argeo.dep.osgi.commons.cli</artifactId>
+ <groupId>org.argeo.slc.runtime</groupId>
+ <artifactId>org.argeo.slc.support.castor</artifactId>
+ <version>${project.version}</version>
</dependency>
-
</dependencies>
</project>
\ No newline at end of file
+++ /dev/null
-<assembly xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/assembly-1.1.0-SNAPSHOT.xsd">
- <id>base</id>
- <includeBaseDirectory>false</includeBaseDirectory>
- <formats>
- <format>tar.gz</format>
- </formats>
- <fileSets>
- <fileSet>
- <directory>src/base</directory>
- <outputDirectory></outputDirectory>
- <fileMode>0755</fileMode>
- </fileSet>
- </fileSets>
-</assembly>
\ No newline at end of file
+++ /dev/null
-#!/bin/sh
-
-# Find home
-if [ -z "$ARGEO_SLC_HOME" -o ! -d "$ARGEO_SLC_HOME" ] ; then
- ## resolve links - $0 may be a link to home
- PRG="$0"
- progname=`basename "$0"`
-
- # need this for relative symlinks
- while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
- done
-
- ARGEO_SLC_HOME=`dirname "$PRG"`/..
-
- # make it fully qualified
- ARGEO_SLC_HOME=`cd "$ARGEO_SLC_HOME" && pwd`
-fi
-
-echo ARGEO_SLC_HOME=$ARGEO_SLC_HOME
-
-for i in "${ARGEO_SLC_HOME}"/lib/*.jar
- do
- CLASSPATH="$CLASSPATH:$i"
- done
-
-#echo CLASSPATH=$CLASSPATH
-
-java -cp $CLASSPATH org.argeo.slc.cli.SlcMain "$@"
+++ /dev/null
-package org.argeo.slc.ant;
-
-public interface AntConstants {
- // ANT
- /** The Ant reference to the Spring application context used. */
- public static final String REF_ROOT_CONTEXT = "slcApplicationContext";
- /** The Ant reference to the SLC structure registry used. */
- public static final String REF_STRUCTURE_REGISTRY = "slcStructureRegistry";
- /** The Ant reference to the <code>TreePath</code> of the current project */
- public static final String REF_PROJECT_PATH = "slcProjectPath";
- /**
- * Resource path to the property file listing the SLC specific Ant tasks:
- * /org/argeo/slc/ant/taskdefs.properties
- */
- public static final String SLC_TASKDEFS_RESOURCE_PATH = "/org/argeo/slc/ant/taskdefs.properties";
- /**
- * Resource path to the property file listing the SLC specific Ant types:
- * /org/argeo/slc/ant/typedefs.properties
- */
- public static final String SLC_TYPEDEFS_RESOURCE_PATH = "/org/argeo/slc/ant/typedefs.properties";
- public static final String REF_SLC_EXECUTION = "slcExecution";
-
- // SLC EXECUTION
- public static final String EXECTYPE_ANT = "org.apache.tools.ant";
- public static final String EXECTYPE_SLC_ANT = "org.argeo.slc.ant";
-
- public final static String EXECATTR_RUNTIME = "slc.runtime";
- public final static String EXECATTR_ANT_FILE = "ant.file";
- public final static String EXECATTR_ANT_TARGETS = "ant.targets";
-
- // PROPERTIES
- /** Property for the root dir (SLC root property file). */
- public final static String ROOT_DIR_PROPERTY = "slc.rootDir";
- /** Property for the conf dir (SLC root property file). */
- public final static String CONF_DIR_PROPERTY = "slc.confDir";
- /** Property for the work dir (SLC root property file). */
- public final static String WORK_DIR_PROPERTY = "slc.workDir";
- /** Name of the Spring bean used by default */
- public final static String DEFAULT_TEST_RUN_PROPERTY = "slc.defaultTestRun";
-
- /** Property for the runtime to use. */
- public final static String RUNTIME_PROPERTY = "slc.runtime";
-
- // LOG4J
- public final static String MDC_ANT_PROJECT = "slc.ant.project";
-
-}
+++ /dev/null
-package org.argeo.slc.ant;
-
-import org.apache.tools.ant.Project;
-import org.argeo.slc.core.process.SlcExecution;
-import org.argeo.slc.runtime.SlcExecutionContext;
-import org.springframework.context.ApplicationContext;
-
-public class AntExecutionContext implements SlcExecutionContext {
- private final Project project;
-
- public AntExecutionContext(Project project) {
- this.project = project;
- }
-
- public <T> T getBean(String name) {
- ApplicationContext context = (ApplicationContext) project
- .getReference(AntConstants.REF_ROOT_CONTEXT);
- return (T) context.getBean(name);
- }
-
- public <T> T getAntRef(String antId) {
- return (T) project.getReference(antId);
- }
-
- public SlcExecution getSlcExecution() {
- return (SlcExecution) project
- .getReference(AntConstants.REF_SLC_EXECUTION);
- }
-
- public Project getProject() {
- return project;
- }
-}
+++ /dev/null
-package org.argeo.slc.ant;\r
-\r
-import java.io.File;\r
-import java.net.URL;\r
-import java.util.Arrays;\r
-import java.util.Map;\r
-import java.util.Properties;\r
-import java.util.Vector;\r
-\r
-import org.apache.tools.ant.Project;\r
-import org.apache.tools.ant.ProjectHelper;\r
-import org.apache.tools.ant.helper.ProjectHelper2;\r
-import org.argeo.slc.core.SlcException;\r
-\r
-/** Run regular Ant script (that is, not SLC instrumented) */\r
-public class AntRunner {\r
- private URL buildFile;\r
- private String[] targets;\r
- private Properties properties;\r
-\r
- public AntRunner() {\r
-\r
- }\r
-\r
- public AntRunner(URL buildFile, String target, Properties properties) {\r
- this(buildFile, new String[] { target }, properties);\r
- }\r
-\r
- public AntRunner(URL buildFile, String[] targets, Properties properties) {\r
- this.buildFile = buildFile;\r
- this.targets = targets;\r
- this.properties = properties;\r
- }\r
-\r
- public void run() {\r
- Project p = new Project();\r
-\r
- String path = buildFile.getFile();\r
- p.setUserProperty("ant.file", path);\r
- p.setBaseDir(extractBaseDir(path));\r
-\r
- p.init();\r
- ProjectHelper projectHelper = new ProjectHelper2();\r
- p.addReference(ProjectHelper.PROJECTHELPER_REFERENCE, projectHelper);\r
- projectHelper.parse(p, buildFile);\r
-\r
- if (properties != null) {\r
- for (Map.Entry<Object, Object> entry : properties.entrySet()) {\r
- p.setUserProperty(entry.getKey().toString(), entry.getValue()\r
- .toString());\r
- }\r
- }\r
-\r
- p.fireBuildStarted();\r
- Throwable exception = null;\r
- try {\r
- if (targets == null) {\r
- p.executeTarget(p.getDefaultTarget());\r
- } else {\r
- p.executeTargets(new Vector<String>(Arrays.asList(targets)));\r
- }\r
- } catch (Throwable e) {\r
- exception = e;\r
- throw new SlcException("Could not run Ant script " + buildFile, e);\r
- } finally {\r
- p.fireBuildFinished(exception);\r
- }\r
-\r
- }\r
-\r
- private File extractBaseDir(String path) {\r
- String baseDir = null;\r
- if (path.length() > 1) {\r
- int indx = path.lastIndexOf('/', path.length() - 1);\r
- if (indx == -1 || indx == 0) {\r
- baseDir = "/";\r
- } else {\r
- baseDir = path.substring(0, indx) + "/";\r
- }\r
- } else {\r
- baseDir = "/";\r
- }\r
- File file = new File(baseDir);\r
- if (file.exists()) {\r
- return file;\r
- } else {\r
- return new File(System.getProperty("user.dir"));\r
- }\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.StringTokenizer;
-import java.util.Vector;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.log4j.Appender;
-import org.apache.log4j.LogManager;
-import org.apache.log4j.MDC;
-import org.apache.tools.ant.BuildListener;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.ProjectHelper;
-import org.apache.tools.ant.helper.ProjectHelper2;
-import org.argeo.slc.core.SlcException;
-import org.argeo.slc.core.process.SlcExecution;
-import org.argeo.slc.core.structure.SimpleSElement;
-import org.argeo.slc.core.structure.StructureRegistry;
-import org.argeo.slc.core.structure.tree.TreeSPath;
-import org.argeo.slc.core.structure.tree.TreeSRegistry;
-import org.argeo.slc.logging.Log4jUtils;
-import org.argeo.slc.runtime.SlcExecutionOutput;
-import org.springframework.beans.factory.BeanFactoryUtils;
-import org.springframework.beans.factory.ListableBeanFactory;
-import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
-import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
-import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.context.support.GenericApplicationContext;
-import org.springframework.core.io.DefaultResourceLoader;
-import org.springframework.core.io.Resource;
-import org.springframework.core.io.ResourceLoader;
-import org.springframework.util.SystemPropertyUtils;
-
-public class AntSlcApplication {
- private final static String DEFAULT_APP_LOG4J_PROPERTIES = "org/argeo/slc/ant/defaultAppLog4j.properties";
-
- private final static Log log = LogFactory.getLog(AntSlcApplication.class);
-
- private Resource contextLocation;
- private ConfigurableApplicationContext parentContext;
-
- private Resource rootDir;
- private Resource confDir;
- private File workDir;
-
- public void execute(SlcExecution slcExecution, Properties properties,
- Map<String, Object> references,
- SlcExecutionOutput<AntExecutionContext> executionOutput) {
-
- // Properties and application logging initialization
- initSystemProperties(properties);
- Log4jUtils.initLog4j("classpath:" + DEFAULT_APP_LOG4J_PROPERTIES);
-
- log.info("\n###\n### Start SLC execution " + slcExecution.getUuid()
- + "\n###\n");
- if (log.isDebugEnabled()) {
- log.debug("rootDir=" + rootDir);
- log.debug("confDir=" + confDir);
- log.debug("workDir=" + workDir);
- }
-
- // Ant coordinates
- String scriptRelativePath = findAntScript(slcExecution);
- List<String> targets = findAntTargets(slcExecution);
-
- // Spring initialization
- ConfigurableApplicationContext ctx = createExecutionContext(slcExecution);
-
- // Ant project initialization
- Project project = new Project();
- AntExecutionContext executionContext = new AntExecutionContext(project);
- project.addReference(AntConstants.REF_ROOT_CONTEXT, ctx);
- project.addReference(AntConstants.REF_SLC_EXECUTION, slcExecution);
-
- try {
- initProject(project, properties, references);
- parseProject(project, scriptRelativePath);
-
- // Execute project
- initStructure(project, scriptRelativePath);
- runProject(project, targets);
-
- if (executionOutput != null)
- executionOutput.postExecution(executionContext);
- } finally {
- ctx.close();
- }
- }
-
- protected void initSystemProperties(Properties userProperties) {
- // Set user properties as system properties so that Spring can access
- // them
- if (userProperties != null) {
- for (Object key : userProperties.keySet()) {
- System.setProperty(key.toString(), userProperties
- .getProperty(key.toString()));
- }
- }
-
- if (System.getProperty(AntConstants.DEFAULT_TEST_RUN_PROPERTY) == null) {
- System.setProperty(AntConstants.DEFAULT_TEST_RUN_PROPERTY,
- "defaultTestRun");
- }
-
- try {
- if (rootDir != null)
- setSystemPropertyForRes(AntConstants.ROOT_DIR_PROPERTY, rootDir);
- if (confDir != null)
- setSystemPropertyForRes(AntConstants.CONF_DIR_PROPERTY, confDir);
- if (workDir != null)
- System.setProperty(AntConstants.WORK_DIR_PROPERTY, workDir
- .getCanonicalPath());
-
- // Additional properties in slc.properties file. Already set sytem
- // properties (such as the various directories) can be resolved in
- // placeholders.
- if (confDir != null) {
- Resource slcPropertiesRes = confDir
- .createRelative("slc.properties");
- if (slcPropertiesRes.exists()) {
- Properties slcProperties = new Properties();
- InputStream in = slcPropertiesRes.getInputStream();
- try {
- slcProperties.load(in);
- } finally {
- IOUtils.closeQuietly(in);
- }
-
- for (Object obj : slcProperties.keySet()) {
- String key = obj.toString();
- if (!System.getProperties().containsKey(key)) {
- String value = SystemPropertyUtils
- .resolvePlaceholders(slcProperties
- .getProperty(key));
- System.setProperty(key, value);
- }
- }
- }
- }
- } catch (Exception e) {
- throw new SlcException("Cannot init system properties.", e);
- }
- }
-
- /**
- * Set property as an absolute file path if the resource can be located on
- * the file system, or as an url.
- */
- private void setSystemPropertyForRes(String key, Resource res)
- throws IOException {
- String value = null;
- try {
- value = res.getFile().getCanonicalPath();
- } catch (IOException e) {
- value = res.getURL().toString();
- }
- System.setProperty(key, value);
- }
-
- protected ConfigurableApplicationContext createExecutionContext(
- SlcExecution slcExecution) {
- try {
-
- // Find runtime definition
- Resource runtimeRes = null;
- String runtimeStr = slcExecution.getAttributes().get(
- AntConstants.EXECATTR_RUNTIME);
- if (runtimeStr == null)
- runtimeStr = System.getProperty(AntConstants.RUNTIME_PROPERTY,
- "default");
-
- ResourceLoader rl = new DefaultResourceLoader(getClass()
- .getClassLoader());
- try {// tries absolute reference
- runtimeRes = rl.getResource(runtimeStr);
- } catch (Exception e) {
- // silent
- }
- if (runtimeRes == null || !runtimeRes.exists()) {
- if (confDir != null)
- runtimeRes = confDir.createRelative("runtime/" + runtimeStr
- + ".xml");
- }
-
- // Find runtime independent application context definition
- if (confDir != null && contextLocation == null) {
- contextLocation = confDir
- .createRelative("applicationContext.xml");
- }
-
- GenericApplicationContext ctx = new GenericApplicationContext(
- parentContext);
- ctx.setDisplayName("SLC Execution #" + slcExecution.getUuid());
-
- XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader(ctx);
- if (runtimeRes != null && runtimeRes.exists())
- xmlReader.loadBeanDefinitions(runtimeRes);
- else
- log.warn("No runtime context defined");
-
- if (contextLocation != null && contextLocation.exists())
- xmlReader.loadBeanDefinitions(contextLocation);
- else
- log.warn("No runtime independent application context defined");
-
- // Add property place holder
- PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer();
- ppc.setIgnoreUnresolvablePlaceholders(true);
- ctx.addBeanFactoryPostProcessor(ppc);
-
- ctx.refresh();
- return ctx;
- } catch (Exception e) {
- throw new SlcException(
- "Cannot create SLC execution application context.", e);
- }
- }
-
- protected String findAntScript(SlcExecution slcExecution) {
- String scriptStr = slcExecution.getAttributes().get(
- AntConstants.EXECATTR_ANT_FILE);
- if (scriptStr == null)
- throw new SlcException("No Ant script provided");
-
- return scriptStr;
- }
-
- protected List<String> findAntTargets(SlcExecution slcExecution) {
- String targetList = slcExecution.getAttributes().get(
- AntConstants.EXECATTR_ANT_TARGETS);
- List<String> targets = new Vector<String>();
- if (targetList != null) {
- StringTokenizer stTargets = new StringTokenizer(targetList, ",");
- while (stTargets.hasMoreTokens()) {
- targets.add(stTargets.nextToken());
- }
- }
- return targets;
- }
-
- protected void initProject(Project project, Properties properties,
- Map<String, Object> references) {
- if (properties != null) {
- for (Map.Entry<Object, Object> entry : properties.entrySet()) {
- project.setUserProperty(entry.getKey().toString(), entry
- .getValue().toString());
- }
- }
-
- if (references != null) {
- for (Map.Entry<String, Object> entry : references.entrySet()) {
- project.addReference(entry.getKey(), entry.getValue());
- }
- }
-
- //project.addBuildListener(new CommonsLoggingListener());
-
- ListableBeanFactory context = (ListableBeanFactory) project
- .getReference(AntConstants.REF_ROOT_CONTEXT);
- // Register build listeners
- Map<String, BuildListener> listeners = BeanFactoryUtils
- .beansOfTypeIncludingAncestors(context, BuildListener.class,
- false, false);
- for (BuildListener listener : listeners.values()) {
- project.addBuildListener(listener);
- }
-
- // Register log4j appenders from context
- MDC.put(AntConstants.MDC_ANT_PROJECT, project);
- Map<String, Appender> appenders = context.getBeansOfType(
- Appender.class, false, true);
- for (Appender appender : appenders.values()) {
- LogManager.getRootLogger().addAppender(appender);
- }
-
- project.init();
- addCustomTaskAndTypes(project);
- }
-
- /** Loads the SLC specific Ant tasks. */
- protected void addCustomTaskAndTypes(Project project) {
- Properties taskdefs = getDefs(project,
- AntConstants.SLC_TASKDEFS_RESOURCE_PATH);
- for (Object o : taskdefs.keySet()) {
- String name = o.toString();
- try {
- project.addTaskDefinition(name, Class.forName(taskdefs
- .getProperty(name)));
- } catch (ClassNotFoundException e) {
- log.error("Unknown class for task " + name, e);
- }
- }
- Properties typedefs = getDefs(project,
- AntConstants.SLC_TYPEDEFS_RESOURCE_PATH);
- for (Object o : typedefs.keySet()) {
- String name = o.toString();
- try {
- project.addDataTypeDefinition(name, Class.forName(typedefs
- .getProperty(name)));
- } catch (ClassNotFoundException e) {
- log.error("Unknown class for type " + name, e);
- }
- }
- }
-
- private Properties getDefs(Project project, String path) {
- Properties defs = new Properties();
- try {
- InputStream in = project.getClass().getResourceAsStream(path);
- defs.load(in);
- in.close();
- } catch (IOException e) {
- throw new SlcException("Cannot load task definitions", e);
- }
- return defs;
- }
-
- protected void initStructure(Project project, String scriptRelativePath) {
- // Init structure registry
- StructureRegistry<TreeSPath> registry = new TreeSRegistry();
- project.addReference(AntConstants.REF_STRUCTURE_REGISTRY, registry);
-
- // Lowest levels
- StringTokenizer st = new StringTokenizer(scriptRelativePath, "/");
- TreeSPath currPath = null;
- while (st.hasMoreTokens()) {
- String name = st.nextToken();
- if (currPath == null) {
- currPath = TreeSPath.createRootPath(name);
- } else {
- if (st.hasMoreTokens())// don't register project file
- currPath = currPath.createChild(name);
- }
- registry.register(currPath, new SimpleSElement(name));
- }
-
- // Project level
- String projectName = project.getName() != null
- && !project.getName().equals("") ? project.getName()
- : "project";
- TreeSPath projectPath = currPath.createChild(projectName);
-
- String projectDesc = project.getDescription() != null
- && !project.getDescription().equals("") ? project
- .getDescription() : projectPath.getName();
-
- registry.register(projectPath, new SimpleSElement(projectDesc));
- project.addReference(AntConstants.REF_PROJECT_PATH, projectPath);
-
- if (log.isDebugEnabled())
- log.debug("Project path: " + projectPath);
- }
-
- protected void parseProject(Project project, String scriptRelativePath) {
- try {
- Resource script = rootDir.createRelative(scriptRelativePath);
- File baseDir = null;
- try {
- File scriptFile = script.getFile();
- baseDir = scriptFile.getParentFile();
- } catch (IOException e) {// resource is not a file
- baseDir = new File(System.getProperty("user.dir"));
- }
- project.setBaseDir(baseDir);
- // Reset basedir property, in order to avoid base dir override when
- // running in Maven
- project.setProperty("basedir", baseDir.getAbsolutePath());
-
- ProjectHelper2 projectHelper = new ProjectHelper2();
- project.addReference(ProjectHelper.PROJECTHELPER_REFERENCE,
- projectHelper);
- projectHelper.parse(project, script.getURL());
- } catch (Exception e) {
- throw new SlcException("Could not parse project for script "
- + scriptRelativePath, e);
- }
-
- }
-
- protected void runProject(Project p, List<String> targets) {
- p.fireBuildStarted();
- Throwable exception = null;
- try {
- if (targets.size() == 0) {// no target defined
- p.executeTarget(p.getDefaultTarget());
- } else {
- p.executeTargets(new Vector<String>(targets));
- }
- } catch (Throwable e) {
- exception = e;
- throw new SlcException("SLC Ant execution failed", exception);
- } finally {
- p.fireBuildFinished(exception);
- }
- }
-
- public void setContextLocation(Resource contextLocation) {
- this.contextLocation = contextLocation;
- }
-
- public void setRootDir(Resource rootDir) {
- this.rootDir = rootDir;
- }
-
- public void setConfDir(Resource confDir) {
- this.confDir = confDir;
- }
-
- public void setWorkDir(File workDir) {
- this.workDir = workDir;
- }
-
- public void setParentContext(ConfigurableApplicationContext runtimeContext) {
- this.parentContext = runtimeContext;
- }
-
-}
+++ /dev/null
-package org.argeo.slc.ant;
-
-import java.util.StringTokenizer;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.tools.ant.util.FileNameMapper;
-
-public class RemoveRootDirMapper implements FileNameMapper {
- private Log log = LogFactory.getLog(RemoveRootDirMapper.class);
- private String to = "enabled";
-
- public String[] mapFileName(String sourceFileName) {
- StringTokenizer st = new StringTokenizer(sourceFileName, "/");
- boolean first = true;
- boolean skipRoot = !to.equals("disabled");
- StringBuffer buf = new StringBuffer("");
- while (st.hasMoreTokens()) {
- if (first && skipRoot) { // skip
- st.nextToken();
- first = false;
- } else {
- buf.append(st.nextToken()).append('/');
- }
- }
-
- if (log.isTraceEnabled()) {
- log.trace("Source: " + sourceFileName + " - out: " + buf);
- }
- return new String[] { buf.toString() };
- }
-
- public void setFrom(String from) {
- }
-
- public void setTo(String to) {
- this.to = to;
- }
-
-}
+++ /dev/null
-package org.argeo.slc.ant;\r
-\r
-import java.util.List;\r
-import java.util.Vector;\r
-\r
-import org.apache.log4j.AppenderSkeleton;\r
-import org.apache.log4j.Level;\r
-import org.apache.log4j.MDC;\r
-import org.apache.log4j.spi.LoggingEvent;\r
-import org.apache.tools.ant.BuildEvent;\r
-import org.apache.tools.ant.BuildListener;\r
-import org.apache.tools.ant.Project;\r
-import org.argeo.slc.core.SlcException;\r
-import org.argeo.slc.core.process.SlcExecution;\r
-import org.argeo.slc.core.process.SlcExecutionNotifier;\r
-import org.argeo.slc.core.process.SlcExecutionStep;\r
-\r
-public class SlcExecutionBuildListener extends AppenderSkeleton implements\r
- BuildListener {\r
- private List<SlcExecutionNotifier> notifiers = new Vector<SlcExecutionNotifier>();\r
-\r
- private boolean currentStepNotified = true;\r
-\r
- // CUSTOMIZATIONS\r
- /**\r
- * Whether to log Ant initialization stuff before the first target has been\r
- * called.\r
- */\r
- private boolean logBeforeFirstTarget = false;\r
- /** Whether the first target has been called. */\r
- private boolean firstTargetStarted = false;\r
-\r
- private boolean logTaskStartFinish = true;\r
-\r
- public SlcExecutionBuildListener() {\r
- // Default log level\r
- setThreshold(Level.INFO);\r
- }\r
-\r
- public void buildStarted(BuildEvent event) {\r
- SlcExecution slcExecution = getSlcExecution(event);\r
- for (SlcExecutionNotifier notifier : notifiers) {\r
- notifier.newExecution(slcExecution);\r
- }\r
- }\r
-\r
- public void buildFinished(BuildEvent event) {\r
- SlcExecution slcExecution = getSlcExecution(event);\r
- String oldStatus = slcExecution.getStatus();\r
- slcExecution.setStatus(SlcExecution.STATUS_FINISHED);\r
-\r
- for (SlcExecutionNotifier notifier : notifiers) {\r
- notifier.updateStatus(slcExecution, oldStatus, slcExecution\r
- .getStatus());\r
- }\r
- }\r
-\r
- public void messageLogged(BuildEvent event) {\r
- if (!shouldLog())\r
- return;\r
-\r
- SlcExecution slcExecution = getSlcExecution(event);\r
- if (slcExecution != null) {\r
- if (currentStepNotified) {\r
- slcExecution.getSteps().add(\r
- new SlcExecutionStep(event.getMessage()));\r
- notifyStep(slcExecution, slcExecution.currentStep());\r
- currentStepNotified = true;\r
- } else {\r
- slcExecution.currentStep().addLog(event.getMessage());\r
- }\r
- } else {\r
- // TODO: log before initialization?\r
- }\r
- }\r
-\r
- public void targetStarted(BuildEvent event) {\r
- if (!firstTargetStarted)\r
- firstTargetStarted = true;\r
-\r
- addLogStep(event, "Target " + event.getTarget().getName() + " started");\r
- }\r
-\r
- public void targetFinished(BuildEvent event) {\r
- addLogStep(event, "Target " + event.getTarget().getName() + " finished");\r
- }\r
-\r
- public void taskStarted(BuildEvent event) {\r
- if (!shouldLog())\r
- return;\r
-\r
- SlcExecution slcExecution = getSlcExecution(event);\r
- if (!currentStepNotified) {\r
- notifyStep(slcExecution, slcExecution.currentStep());\r
- currentStepNotified = true;\r
- }\r
-\r
- String msg = null;\r
- if (logTaskStartFinish)\r
- msg = "Task " + event.getTask().getTaskName() + " started";\r
-\r
- slcExecution.getSteps().add(new SlcExecutionStep(msg));\r
-\r
- currentStepNotified = false;\r
- }\r
-\r
- public void taskFinished(BuildEvent event) {\r
- if (!shouldLog())\r
- return;\r
-\r
- SlcExecution slcExecution = getSlcExecution(event);\r
- if (!currentStepNotified) {\r
-\r
- if (logTaskStartFinish)\r
- slcExecution.currentStep().addLog(\r
- "Task " + event.getTask().getTaskName() + " finished");\r
-\r
- notifyStep(slcExecution, slcExecution.currentStep());\r
- currentStepNotified = true;\r
- }\r
- }\r
-\r
- public void setNotifiers(List<SlcExecutionNotifier> notifiers) {\r
- this.notifiers = notifiers;\r
- }\r
-\r
- protected SlcExecution getSlcExecution(BuildEvent event) {\r
- return getSlcExecution(event.getProject());\r
- }\r
-\r
- protected SlcExecution getSlcExecution(Project project) {\r
- SlcExecution slcExecution = (SlcExecution) project\r
- .getReference(AntConstants.REF_SLC_EXECUTION);\r
-\r
- if (slcExecution == null)\r
- throw new SlcException("No SLC Execution registered.");\r
- return slcExecution;\r
- }\r
-\r
- protected void addLogStep(BuildEvent event, String msg) {\r
- SlcExecution slcExecution = getSlcExecution(event);\r
- slcExecution.getSteps().add(new SlcExecutionStep(msg));\r
-\r
- notifyStep(slcExecution, slcExecution.currentStep());\r
- currentStepNotified = true;\r
- }\r
-\r
- protected void notifyStep(SlcExecution slcExecution, SlcExecutionStep step) {\r
- Vector<SlcExecutionStep> additionalSteps = new Vector<SlcExecutionStep>();\r
- additionalSteps.add(step);\r
- notifySteps(slcExecution, additionalSteps);\r
- }\r
-\r
- protected void notifySteps(SlcExecution slcExecution,\r
- List<SlcExecutionStep> additionalSteps) {\r
- for (SlcExecutionNotifier notifier : notifiers) {\r
- notifier.addSteps(slcExecution, additionalSteps);\r
- }\r
- }\r
-\r
- /* Log4j methods */\r
-\r
- @Override\r
- protected void append(LoggingEvent event) {\r
- Project project = (Project) MDC.get(AntConstants.MDC_ANT_PROJECT);\r
- if (project == null)\r
- throw new SlcException("No Ant project registered in Log4j MDC.");\r
-\r
- SlcExecution slcExecution = getSlcExecution(project);\r
- if (currentStepNotified) {\r
- slcExecution.getSteps().add(\r
- new SlcExecutionStep(event.getMessage().toString()));\r
- currentStepNotified = false;\r
- } else {\r
- slcExecution.currentStep().addLog(event.getMessage().toString());\r
- }\r
- }\r
-\r
- protected boolean shouldLog() {\r
- return logBeforeFirstTarget || firstTargetStarted;\r
- }\r
-\r
- public void close() {\r
- }\r
-\r
- public boolean requiresLayout() {\r
- return false;\r
- }\r
-\r
- public void setLogBeforeFirstTarget(boolean logBeforeFirstTarget) {\r
- this.logBeforeFirstTarget = logBeforeFirstTarget;\r
- }\r
-\r
- public void setLogTaskStartFinish(boolean logTaskStartFinish) {\r
- this.logTaskStartFinish = logTaskStartFinish;\r
- }\r
-\r
- public void setLogLevel(String logLevel) {\r
- setThreshold(Level.toLevel(logLevel));\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant.deploy;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-import org.apache.tools.ant.BuildException;\r
-import org.argeo.slc.ant.spring.SpringArg;\r
-import org.argeo.slc.ant.structure.SAwareTask;\r
-import org.argeo.slc.core.build.Distribution;\r
-import org.argeo.slc.core.deploy.Deployment;\r
-import org.argeo.slc.core.deploy.DeploymentData;\r
-import org.argeo.slc.core.deploy.TargetData;\r
-\r
-/** Ant task wrapping a deployment. */\r
-public class SlcDeployTask extends SAwareTask {\r
- private Log log = LogFactory.getLog(SlcDeployTask.class);\r
-\r
- private String deploymentBean = null;\r
-\r
- private SpringArg<DeploymentData> deploymentDataArg;\r
- private SpringArg<TargetData> targetDataArg;\r
- private SpringArg<Distribution> distributionArg;\r
-\r
- @Override\r
- public void executeActions(String mode) throws BuildException {\r
- Deployment deployment = (Deployment) getContext().getBean(\r
- deploymentBean);\r
-\r
- // set overridden references\r
- if (distributionArg != null) {\r
- deployment.setDistribution(distributionArg.getInstance());\r
- log.trace("Overrides distribution");\r
- }\r
-\r
- if (deploymentDataArg != null) {\r
- deployment.setDeploymentData(deploymentDataArg.getInstance());\r
- log.trace("Overrides deployment data");\r
- }\r
-\r
- if (targetDataArg != null) {\r
- deployment.setTargetData(targetDataArg.getInstance());\r
- log.trace("Overrides target data");\r
- }\r
-\r
- deployment.execute();\r
- }\r
-\r
- /**\r
- * The bean name of the test run to use. If not set the default is used.\r
- * \r
- * @see SlcAntConfig\r
- */\r
- public void setDeployment(String deploymentBean) {\r
- this.deploymentBean = deploymentBean;\r
- }\r
-\r
- /** Creates deployment data sub tag. */\r
- public SpringArg<DeploymentData> createDeploymentData() {\r
- deploymentDataArg = new SpringArg<DeploymentData>();\r
- return deploymentDataArg;\r
- }\r
-\r
- /** Creates target data sub tag. */\r
- public SpringArg<TargetData> createTargetData() {\r
- targetDataArg = new SpringArg<TargetData>();\r
- return targetDataArg;\r
- }\r
-\r
- public SpringArg<Distribution> createDistribution() {\r
- distributionArg = new SpringArg<Distribution>();\r
- return distributionArg;\r
- }\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant.deploy;
-
-import java.lang.reflect.Method;
-
-import org.argeo.slc.ant.structure.SAwareTask;
-import org.argeo.slc.core.SlcException;
-import org.argeo.slc.core.deploy.DeployedSystem;
-import org.argeo.slc.core.deploy.DeployedSystemManager;
-
-public class SlcManagerTask extends SAwareTask {
- private String action;
- private String manager;
-
- @Override
- protected void executeActions(String mode) {
- DeployedSystemManager<DeployedSystem> systemManager = getBean(manager);
-
- try {
- Method method = systemManager.getClass().getMethod(action, null);
- method.invoke(systemManager, null);
- } catch (Exception e) {
- throw new SlcException("Cannot execute action " + action
- + " for manager " + manager, e);
- }
- }
-
- public void setAction(String action) {
- this.action = action;
- }
-
- public void setManager(String manager) {
- this.manager = manager;
- }
-
-}
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-Integration of SLC Deploy in Ant.\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-Bases classes for SLC Ant extensions.\r
-<h2>Introduction</h2>\r
-SLC Ant allows to integrate Ant and Spring in order to run an\r
-application based on top of SLC. Sequence of actions are defined in Ant\r
-files with specific Ant tasks referencing Spring beans implementing the\r
-SLC interfaces. The properties of these beans can be overridden at\r
-runtime in the Ant scripts.\r
-<br />\r
-SLC Ant also provides a tree-based implementation of the SLC structure\r
-which allows to uniquely identify and reference the various actions.\r
-\r
-<h2>Installation</h2>\r
-The structure will be first defined by the directory tree where the Ant\r
-files are stored. In order to define the root of this tree, you need to\r
-place in the root directory an\r
-<b>SLC Ant root file</b>\r
-(default name: slcRoot.properties).\r
-<br />\r
-In this root file you can define a configuration directory and a work\r
-directory (default values are provided if they are not explicitly set).\r
-<br />\r
-Additional properties can then be defined in files stored under the\r
-configuration directory.\r
-<br />\r
-For details about the configuration and the various properties, please\r
-refer to {@link org.argeo.slc.ant.SlcAntConfig}.\r
-\r
-<h2>Running SLC Ant</h2>\r
-SLC Ant can be run either via pure Ant scripts or programmatically using\r
-{@link org.argeo.slc.ant.AntRegistryUtil}. In both cases, make sure that\r
-SLC and its dependencies are in the classpath (Spring (always), logging\r
-system such as log4j, Hibernate, etc.).\r
-\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.ant.spring;\r
-\r
-import org.springframework.context.ApplicationContext;\r
-\r
-import org.apache.tools.ant.Task;\r
-\r
-import org.argeo.slc.ant.AntConstants;\r
-import org.argeo.slc.core.process.SlcExecution;\r
-\r
-/** Abstract Ant task providing access to a Spring context. */\r
-public abstract class AbstractSpringTask extends Task {\r
-\r
- /** Gets the related Spring context. */\r
- protected ApplicationContext getContext() {\r
- return (ApplicationContext) getProject().getReference(\r
- AntConstants.REF_ROOT_CONTEXT);\r
- }\r
-\r
- /** Gets the related slc execution or null if not is registered. */\r
- protected SlcExecution getSlcExecution() {\r
- return (SlcExecution) getProject().getReference(\r
- AntConstants.REF_SLC_EXECUTION);\r
- }\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant.spring;
-
-import java.util.List;
-import java.util.Vector;
-
-import org.argeo.slc.core.SlcException;
-
-/** List of overrides */
-public class ListArg {
- private List<OverrideArg> list = new Vector<OverrideArg>();
-
- /** Creates override sub tag. */
- public OverrideArg createOverride() {
- OverrideArg overrideArg = new OverrideArg();
- list.add(overrideArg);
- return overrideArg;
- }
-
- /** Gets as list of objects. */
- public List<Object> getAsObjectList(List<Object> originalList) {
- if (originalList != null && originalList.size() != list.size()) {
- throw new SlcException("Cannot merge lists of different sizes.");
- }
-
- List<Object> objectList = new Vector<Object>(list.size());
-
- for (int i = 0; i < list.size(); i++) {
- OverrideArg arg = list.get(i);
-
- if (originalList != null)
- arg.setOriginal(originalList.get(i));
-
- objectList.add(arg.getObject());
- }
- return objectList;
- }
-}
+++ /dev/null
-package org.argeo.slc.ant.spring;\r
-\r
-import java.util.List;\r
-import java.util.Map;\r
-import java.util.TreeMap;\r
-import java.util.Vector;\r
-\r
-import org.apache.tools.ant.BuildException;\r
-\r
-import org.argeo.slc.core.SlcException;\r
-\r
-public class MapArg {\r
- private List<EntryArg> entries = new Vector<EntryArg>();\r
- private Map<String, Object> map = new TreeMap<String, Object>();\r
-\r
- public EntryArg createEntry() {\r
- EntryArg arg = new EntryArg();\r
- entries.add(arg);\r
- return arg;\r
- }\r
-\r
- public Map<String, Object> getAsObjectMap(Map<String, Object> originalMap) {\r
- Map<String, Object> objectMap = new TreeMap<String, Object>();\r
- for (EntryArg arg : entries) {\r
- String key = arg.getKey();\r
-\r
- if (objectMap.containsKey(key)) {\r
- throw new SlcException("Key '" + key + "' already set.");\r
- }\r
-\r
- if (originalMap != null && originalMap.containsKey(key)\r
- && arg.getOverrideArg() != null)\r
- arg.getOverrideArg().setOriginal(originalMap.get(key));\r
-\r
- objectMap.put(key, arg.getObject());\r
-\r
- }\r
- return objectMap;\r
- }\r
-\r
- /**\r
- * Returns a cached reference if it was already called. This reference could\r
- * have been modified externally and thus not anymore be in line with the\r
- * configuration.\r
- */\r
- public Map<String, Object> getMap() {\r
- if (map.size() == 0)\r
- map = getAsObjectMap(null);\r
- return map;\r
- }\r
-\r
- public static class EntryArg {\r
- private String key;\r
- private Object valueStr;\r
- private OverrideArg overrideArg;\r
-\r
- public String getKey() {\r
- return key;\r
- }\r
-\r
- public void setKey(String key) {\r
- this.key = key;\r
- }\r
-\r
- public Object getObject() {\r
- if (overrideArg != null) {\r
- return overrideArg.getObject();\r
- } else if (valueStr != null) {\r
- return valueStr;\r
- } else {\r
- throw new BuildException("Value not set.");\r
- }\r
- }\r
-\r
- public void setValue(String value) {\r
- check();\r
- this.valueStr = value;\r
- }\r
-\r
- public OverrideArg createOverride() {\r
- check();\r
- overrideArg = new OverrideArg();\r
- return overrideArg;\r
- }\r
-\r
- private void check() {\r
- if (valueStr != null || overrideArg != null) {\r
- throw new BuildException("Value already set");\r
- }\r
- }\r
-\r
- public OverrideArg getOverrideArg() {\r
- return overrideArg;\r
- }\r
-\r
- }\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant.spring;\r
-\r
-import java.util.List;\r
-import java.util.Map;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-import org.apache.tools.ant.BuildException;\r
-\r
-/** Ant type allowing to override bean properties. */\r
-public class OverrideArg extends SpringArg<Object> {\r
- private final static Log log = LogFactory.getLog(OverrideArg.class);\r
-\r
- private String name;\r
- private Object value;\r
- private ListArg overrideList;\r
- private MapArg overrideMap;\r
-\r
- private Boolean merge = false;\r
-\r
- /** The name of the property to override. */\r
- public String getName() {\r
- return name;\r
- }\r
-\r
- /** Sets the name. */\r
- public void setName(String name) {\r
- this.name = name;\r
- }\r
-\r
- /** Both value and bean cannot be set. */\r
- public void setValue(String value) {\r
- checkValueAlreadySet();\r
- this.value = value;\r
- }\r
-\r
- @Override\r
- public void setBean(String bean) {\r
- checkValueAlreadySet();\r
- super.setBean(bean);\r
- }\r
-\r
- /** Creates override list sub tag. */\r
- public ListArg createList() {\r
- checkValueAlreadySet();\r
- overrideList = new ListArg();\r
- return overrideList;\r
- }\r
-\r
- public MapArg createMap() {\r
- checkValueAlreadySet();\r
- overrideMap = new MapArg();\r
- return overrideMap;\r
- }\r
-\r
- /**\r
- * The related object: the value if a value had been set or an instance of\r
- * the bean if not.\r
- */\r
- public Object getObject() {\r
- if (value != null) {\r
- if (log.isTraceEnabled())\r
- log.trace(this + "\t: Returns override object as value");\r
- return value;\r
- } else if (getBean() != null\r
- || getAntref() != null\r
- // works on original if no collection is defined\r
- || (getOriginal() != null && overrideList == null && overrideMap == null)) {\r
- if (log.isTraceEnabled())\r
- log.trace(this + "\t: Returns override object as instance");\r
- return getInstance();\r
- } else if (overrideList != null) {\r
- if (log.isTraceEnabled())\r
- log.trace(this + "\t: Returns override object as list");\r
- return overrideList.getAsObjectList((List<Object>) getOriginal());\r
- } else if (overrideMap != null) {\r
- if (log.isTraceEnabled())\r
- log.trace(this + "\t: Returns override object as map");\r
- return overrideMap\r
- .getAsObjectMap((Map<String, Object>) getOriginal());\r
- } else {\r
- throw new BuildException("Value or bean not set.");\r
- }\r
- }\r
-\r
- protected void checkValueAlreadySet() {\r
- super.checkValueAlreadySet();\r
- if (value != null || overrideList != null || overrideMap != null) {\r
- if (!getMerge()) {\r
- throw new BuildException("Value already set.");\r
- }\r
- }\r
- }\r
-\r
- public Boolean getMerge() {\r
- return merge;\r
- }\r
-\r
- public void setMerge(Boolean merge) {\r
- this.merge = merge;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant.spring;\r
-\r
-import java.util.List;\r
-import java.util.Vector;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-import org.apache.tools.ant.types.DataType;\r
-import org.argeo.slc.ant.AntConstants;\r
-import org.argeo.slc.core.SlcException;\r
-import org.springframework.beans.BeanWrapper;\r
-import org.springframework.beans.BeanWrapperImpl;\r
-import org.springframework.beans.factory.InitializingBean;\r
-import org.springframework.context.ApplicationContext;\r
-\r
-/** Abstract Ant type wrapping a Spring bean. */\r
-public class SpringArg<T> extends DataType {\r
- private final static Log log = LogFactory.getLog(SpringArg.class);\r
-\r
- private List<OverrideArg> overrides = new Vector<OverrideArg>();\r
-\r
- private String bean;\r
- private String antref;\r
- /**\r
- * Reference to the original object, used to merge overrides. <b>this object\r
- * will be modified</b>.\r
- */\r
- private T original;\r
-\r
- // cache bean instance to avoid reading it twice if it is a prototype\r
- private T instance = null;\r
-\r
- /** The <u>name</u> of the underlying bean, as set through the attribute. */\r
- public String getBean() {\r
- return bean;\r
- }\r
-\r
- /** Setter for the bean name. */\r
- public void setBean(String bean) {\r
- checkValueAlreadySet();\r
- this.bean = bean;\r
- }\r
-\r
- public String getAntref() {\r
- return antref;\r
- }\r
-\r
- /** Sets a reference to an ant data type. */\r
- public void setAntref(String antref) {\r
- checkValueAlreadySet();\r
- this.antref = antref;\r
- }\r
-\r
- /**\r
- * Retrieve the instance of the bean, and sets the overridden properties.\r
- * <b>The value is cached.</b>\r
- */\r
- public T getInstance() {\r
- if (instance == null) {\r
- if (log.isTraceEnabled())\r
- log.trace(this + "\t: Creates instance");\r
-\r
- if (bean != null) {\r
- instance = (T) getContext().getBean(bean);\r
- if (instance == null)\r
- throw new SlcException("No object found for Spring bean "\r
- + bean);\r
- } else if (antref != null) {\r
- instance = (T) getProject().getReference(antref);\r
- if (instance == null)\r
- throw new SlcException("No object found for Ant reference "\r
- + antref);\r
- } else if (original != null) {\r
- instance = original;\r
- } else {\r
- throw new SlcException(\r
- "Don't know how to retrieve bean instance");\r
- }\r
-\r
- setOverridenProperties(instance);\r
-\r
- // FIXME: why are we doing this? Could not find any object using it\r
- if (instance instanceof InitializingBean) {\r
- try {\r
- ((InitializingBean) instance).afterPropertiesSet();\r
- } catch (Exception e) {\r
- throw new SlcException("Could not initialize bean", e);\r
- }\r
- }\r
- } else {\r
- if (log.isTraceEnabled())\r
- log.trace(this + "\t: Returns cached instance");\r
- }\r
- return instance;\r
- }\r
-\r
- protected void setOverridenProperties(Object obj) {\r
- BeanWrapper wrapper = new BeanWrapperImpl(obj);\r
- for (OverrideArg override : overrides) {\r
- if (override.getName() == null) {\r
- throw new SlcException(\r
- "The name of the property to override has to be set.");\r
- }\r
-\r
- if (log.isTraceEnabled())\r
- log.trace(this + "\t: Overrides property " + override.getName()\r
- + " with " + override);\r
-\r
- if (override.getMerge() == true) {\r
- // if override is marked as merged retrieve the value and set is\r
- // as original\r
- override.setOriginal(wrapper.getPropertyValue(override\r
- .getName()));\r
- }\r
- wrapper.setPropertyValue(override.getName(), override.getObject());\r
- }\r
-\r
- }\r
-\r
- /** Creates an override subtag. */\r
- public OverrideArg createOverride() {\r
- OverrideArg propertyArg = new OverrideArg();\r
- overrides.add(propertyArg);\r
- return propertyArg;\r
- }\r
-\r
- /** The related Spring application context. */\r
- protected ApplicationContext getContext() {\r
- return (ApplicationContext) getProject().getReference(\r
- AntConstants.REF_ROOT_CONTEXT);\r
- }\r
-\r
- protected void checkValueAlreadySet() {\r
- if (antref != null || bean != null || original != null) {\r
- throw new SlcException("Instance value already defined.");\r
- }\r
- }\r
-\r
- public void setOriginal(T original) {\r
- checkValueAlreadySet();\r
- this.original = original;\r
- }\r
-\r
- public T getOriginal() {\r
- return original;\r
- }\r
-\r
- @Override\r
- public String toString() {\r
- StringBuffer buf = new StringBuffer(getClass().getSimpleName());\r
- if (bean != null) {\r
- buf.append("#bean=").append(bean);\r
- } else if (antref != null) {\r
- buf.append("#antref=").append(antref);\r
- } else if (original != null) {\r
- buf.append("#orig=").append(original.hashCode());\r
- } else {\r
- buf.append("#noid");\r
- }\r
- buf.append("#").append(hashCode());\r
- return buf.toString();\r
- }\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant.spring;
-
-import java.util.List;
-import java.util.Vector;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.tools.ant.BuildException;
-
-public class SpringRegister extends AbstractSpringTask {
- private static final Log log = LogFactory.getLog(SpringRegister.class);
-
- private List<BeanArg> beans = new Vector<BeanArg>();
-
- @Override
- public void execute() throws BuildException {
- for (BeanArg bean : beans) {
- Object instance = bean.getInstance();
- if (bean.getAntid() != null) {
- getProject().addReference(bean.getAntid(), instance);
- } else {
- if (bean.getAntref() != null) {
- log
- .warn("Cannot register beans with antref (Ant reference "
- + bean.getAntref() + ")");
- } else {
- getProject().addReference(bean.getBean(), instance);
- }
- }
- }
- }
-
- public BeanArg createObject() {
- BeanArg bean = new BeanArg();
- beans.add(bean);
- return bean;
- }
-
- protected static class BeanArg extends SpringArg<Object> {
- private String antid;
-
- public String getAntid() {
- return antid;
- }
-
- public void setAntid(String antid) {
- this.antid = antid;
- }
-
- }
-}
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-Integration of Spring in Ant.\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.ant.structure;\r
-\r
-import java.util.List;\r
-import java.util.Vector;\r
-\r
-import org.apache.tools.ant.BuildException;\r
-import org.apache.tools.ant.Target;\r
-import org.argeo.slc.ant.AntConstants;\r
-import org.argeo.slc.ant.spring.AbstractSpringTask;\r
-import org.argeo.slc.ant.spring.SpringArg;\r
-import org.argeo.slc.core.SlcException;\r
-import org.argeo.slc.core.structure.SimpleSElement;\r
-import org.argeo.slc.core.structure.StructureAware;\r
-import org.argeo.slc.core.structure.StructureElement;\r
-import org.argeo.slc.core.structure.StructureRegistry;\r
-import org.argeo.slc.core.structure.tree.TreeSPath;\r
-\r
-/** Ant task that can be registered within a structure. */\r
-public abstract class SAwareTask extends AbstractSpringTask {\r
- private String path;\r
- private TreeSPath treeSPath;\r
- private final List<SpringArg> sAwareArgs = new Vector<SpringArg>();\r
-\r
- private StructureElementArg structureElementArg;\r
-\r
- @Override\r
- public void init() throws BuildException {\r
- StructureRegistry<TreeSPath> registry = getRegistry();\r
- Target target = getOwningTarget();\r
-\r
- TreeSPath targetPath = createTargetPath(target);\r
- SimpleSElement targetElement = (SimpleSElement) registry\r
- .getElement(createTargetPath(target));\r
-\r
- if (targetElement == null) {\r
- targetElement = new SimpleSElement(target.getDescription(),\r
- "<no target desc>");\r
- registry.register(targetPath, targetElement);\r
- }\r
- }\r
-\r
- /**\r
- * Includes this arg in the checks for propagation of structure related\r
- * information.\r
- */\r
- protected void addSAwareArg(SpringArg arg) {\r
- sAwareArgs.add(arg);\r
- }\r
-\r
- @Override\r
- /**\r
- * Called by Ant at runtime. Decides whether to call the actions depending\r
- * of the mode of the underlying structure registry.\r
- * \r
- * @see #executeActions\r
- * @see StructureRegistry\r
- */\r
- public final void execute() throws BuildException {\r
- if (path == null) {\r
- // register the task in the structure\r
- TreeSPath targetPath = createTargetPath(getOwningTarget());\r
- TreeSPath taskPath = targetPath.createChild(getTaskName()\r
- + targetPath.listChildren(getRegistry()).size());\r
-\r
- treeSPath = taskPath;\r
- } else {\r
- treeSPath = new TreeSPath(path);\r
- }\r
-\r
- if (getRegistry().getElement(treeSPath) == null) {\r
- // No structure element registered.\r
- if (structureElementArg != null) {\r
- getRegistry().register(treeSPath,\r
- structureElementArg.getStructureElement());\r
- } else {\r
- if (getDescription() != null) {\r
- getRegistry().register(treeSPath,\r
- new SimpleSElement(getDescription()));\r
- }\r
- }\r
- }\r
-\r
- // notify registered args\r
- for (SpringArg arg : sAwareArgs) {\r
- Object obj = arg.getInstance();\r
-\r
- if (obj instanceof StructureAware) {\r
- StructureAware<TreeSPath> sAwareT = (StructureAware<TreeSPath>) obj;\r
- sAwareT.notifyCurrentPath(getRegistry(), treeSPath);\r
- }\r
- }\r
-\r
- // execute depending on the registry mode\r
- String mode = getRegistry().getMode();\r
- if (mode.equals(StructureRegistry.ALL)) {\r
- executeActions(mode);\r
- } else if (mode.equals(StructureRegistry.ACTIVE)) {\r
- List<TreeSPath> activePaths = getRegistry().getActivePaths();\r
-\r
- if (activePaths.contains(treeSPath)) {\r
- if (activePaths.contains(treeSPath)) {\r
- executeActions(mode);\r
- }\r
- }\r
- }\r
-\r
- }\r
-\r
- /** Actions to be executed by the implementor. */\r
- protected abstract void executeActions(String mode);\r
-\r
- public <T> T getBean(String beanName) {\r
- return (T) getContext().getBean(beanName);\r
- }\r
-\r
- /** Create a reference to an external structure element. */\r
- public StructureElementArg createStructureElement() {\r
- if (structureElementArg != null)\r
- throw new SlcException("Arg already set.");\r
- structureElementArg = new StructureElementArg();\r
- return structureElementArg;\r
- }\r
-\r
- /** Gets the underlying structure registry. */\r
- protected StructureRegistry<TreeSPath> getRegistry() {\r
- return (StructureRegistry<TreeSPath>) getProject().getReference(\r
- AntConstants.REF_STRUCTURE_REGISTRY);\r
- }\r
-\r
- /** Creates the treeSPath for a given Ant target. */\r
- protected static TreeSPath createTargetPath(Target target) {\r
- TreeSPath projectPath = (TreeSPath) target.getProject().getReference(\r
- AntConstants.REF_PROJECT_PATH);\r
- return projectPath.createChild(target.getName());\r
- }\r
-\r
- /** Gets the treeSPath under which this task is registered. */\r
- public TreeSPath getTreeSPath() {\r
- return treeSPath;\r
- }\r
-\r
- public String getLabel() {\r
- String description = super.getDescription();\r
- if (description == null) {\r
- return "<no task def>";\r
- } else {\r
- return description;\r
- }\r
- }\r
-\r
- public void setPath(String path) {\r
- this.path = path;\r
- }\r
-}\r
-\r
-class StructureElementArg extends SpringArg {\r
- public StructureElement getStructureElement() {\r
- return (StructureElement) getInstance();\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-Integration of SLC Structure in Ant.\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.ant.test;\r
-\r
-import java.util.Collection;\r
-import java.util.List;\r
-import java.util.Map;\r
-import java.util.Vector;\r
-\r
-import org.apache.tools.ant.types.DataType;\r
-\r
-import org.argeo.slc.ant.spring.MapArg;\r
-import org.argeo.slc.core.SlcException;\r
-import org.argeo.slc.core.test.context.ContextAware;\r
-import org.argeo.slc.core.test.context.ContextUtils;\r
-import org.argeo.slc.core.test.context.ParentContextAware;\r
-\r
-public class ParentContextType extends DataType implements ParentContextAware {\r
- private MapArg values = null;\r
- private MapArg expectedValues = null;\r
-\r
- private String contextAnyFlag = DEFAULT_ANY_FLAG;\r
- private String contextSkipFlag = DEFAULT_SKIP_FLAG;\r
-\r
- private String basedon = null;\r
-\r
- private List<ContextAware> children = new Vector<ContextAware>();\r
-\r
- public MapArg createValues() {\r
- values = new MapArg();\r
- return values;\r
- }\r
-\r
- public MapArg createExpectedValues() {\r
- expectedValues = new MapArg();\r
- return expectedValues;\r
- }\r
-\r
- public void addChildContext(ContextAware contextAware) {\r
- children.add(contextAware);\r
- }\r
-\r
- public Collection<ContextAware> getChildContexts() {\r
- return children;\r
- }\r
-\r
- public String getContextAnyFlag() {\r
- return contextAnyFlag;\r
- }\r
-\r
- public void setContextAnyFlag(String contextAnyFlag) {\r
- this.contextAnyFlag = contextAnyFlag;\r
- }\r
-\r
- public String getContextSkipFlag() {\r
- return contextSkipFlag;\r
- }\r
-\r
- public void setContextSkipFlag(String contextSkipFlag) {\r
- this.contextSkipFlag = contextSkipFlag;\r
- }\r
-\r
- public Map<String, Object> getExpectedValues() {\r
- if (expectedValues == null)\r
- expectedValues = new MapArg();\r
- if (basedon != null) {\r
- Map<String, Object> map = getBaseContext().getExpectedValues();\r
- ContextUtils.putNotContained(expectedValues.getMap(), map);\r
- }\r
- return expectedValues.getMap();\r
- }\r
-\r
- public Map<String, Object> getValues() {\r
- if (values == null)\r
- values = new MapArg();\r
- if (basedon != null) {\r
- Map<String, Object> map = getBaseContext().getValues();\r
- ContextUtils.putNotContained(values.getMap(), map);\r
- }\r
- return values.getMap();\r
- }\r
-\r
- private ParentContextType getBaseContext() {\r
- return (ParentContextType) getProject().getReference(basedon);\r
- }\r
-\r
- public void setValues(Map<String, Object> values) {\r
- throw new SlcException("Cannot override values map.");\r
- }\r
-\r
- public void setUpdateValues(Map<String, Object> overrideValues) {\r
- getValues().putAll(overrideValues);\r
- }\r
-\r
- public void setUpdateExpectedValues(\r
- Map<String, Object> overrideExpectedValues) {\r
- getExpectedValues().putAll(overrideExpectedValues);\r
- }\r
-\r
- public void setBasedon(String basedon) {\r
- this.basedon = basedon;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant.test;\r
-\r
-import java.util.List;\r
-import java.util.Vector;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-import org.argeo.slc.ant.spring.SpringArg;\r
-import org.argeo.slc.ant.structure.SAwareTask;\r
-import org.argeo.slc.core.structure.StructureRegistry;\r
-import org.argeo.slc.core.test.TestResult;\r
-\r
-/** Ant tasks closing a given result. */\r
-public class SlcCloseTestResultTask extends SAwareTask {\r
- private final static Log log = LogFactory\r
- .getLog(SlcCloseTestResultTask.class);\r
-\r
- public List<SpringArg<TestResult>> results = new Vector<SpringArg<TestResult>>();\r
-\r
- @Override\r
- public void executeActions(String mode) {\r
- if (!mode.equals(StructureRegistry.READ)) {\r
- for (SpringArg<TestResult> result : results) {\r
- try {\r
- result.getInstance().close();\r
- } catch (RuntimeException e) {\r
- log.error("Could not close result "\r
- + (result.getBean() != null ? result.getBean()\r
- : result.getAntref()), e);\r
- }\r
- }\r
- }\r
- }\r
-\r
- public SpringArg<TestResult> createResult() {\r
- SpringArg<TestResult> result = new SpringArg<TestResult>();\r
- results.add(result);\r
- return result;\r
- }\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant.test;\r
-\r
-import org.argeo.slc.ant.structure.SAwareTask;\r
-import org.argeo.slc.core.structure.StructureAware;\r
-import org.argeo.slc.core.structure.StructureRegistry;\r
-import org.argeo.slc.core.test.TestReport;\r
-import org.argeo.slc.core.test.TestResult;\r
-\r
-/** Ant tasks generating a report. */\r
-public class SlcReportTask extends SAwareTask {\r
- private String result;\r
- private String report;\r
-\r
- @Override\r
- public void executeActions(String mode) {\r
- if (!mode.equals(StructureRegistry.READ)) {\r
- TestResult testResult = null;\r
- if (result != null) {\r
- testResult = (TestResult) getContext().getBean(result);\r
- }\r
- TestReport testReport = (TestReport) getContext().getBean(report);\r
- if (testReport instanceof StructureAware) {\r
- ((StructureAware) testReport).notifyCurrentPath(getRegistry(),\r
- null);\r
- }\r
- testReport.generateTestReport(testResult);\r
- }\r
- }\r
-\r
- /** Sets the bean name of the result to close. */\r
- public void setResult(String bean) {\r
- this.result = bean;\r
- }\r
-\r
- /** Sets the bean name of the report to generate. */\r
- public void setReport(String report) {\r
- this.report = report;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant.test;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-import org.apache.tools.ant.BuildException;\r
-import org.argeo.slc.ant.AntConstants;\r
-import org.argeo.slc.ant.spring.SpringArg;\r
-import org.argeo.slc.ant.structure.SAwareTask;\r
-import org.argeo.slc.core.deploy.DeployedSystem;\r
-import org.argeo.slc.core.process.SlcExecution;\r
-import org.argeo.slc.core.structure.StructureAware;\r
-import org.argeo.slc.core.structure.tree.TreeSPath;\r
-import org.argeo.slc.core.test.ExecutableTestRun;\r
-import org.argeo.slc.core.test.SimpleResultPart;\r
-import org.argeo.slc.core.test.SimpleTestResult;\r
-import org.argeo.slc.core.test.SimpleTestRun;\r
-import org.argeo.slc.core.test.TestData;\r
-import org.argeo.slc.core.test.TestDefinition;\r
-import org.argeo.slc.core.test.TestResult;\r
-import org.argeo.slc.core.test.TestResultPart;\r
-import org.argeo.slc.core.test.TestStatus;\r
-import org.argeo.slc.core.test.WritableTestRun;\r
-import org.argeo.slc.spring.SpringUtils;\r
-import org.springframework.beans.BeansException;\r
-\r
-/** Ant task wrapping a test run. */\r
-public class SlcTestTask extends SAwareTask {\r
- private Log log = LogFactory.getLog(SlcTestTask.class);\r
-\r
- private String testRunBean = null;\r
-\r
- private SpringArg<TestDefinition> testDefinitionArg;\r
- private SpringArg<TestData> testDataArg;\r
- private SpringArg<DeployedSystem> deployedSystemArg;\r
- private SpringArg<TestResult> testResultArg;\r
-\r
- @Override\r
- public void executeActions(String mode) throws BuildException {\r
- // find test run\r
- final String testRunBeanT;\r
- if (testRunBean != null) {\r
- testRunBeanT = testRunBean;\r
- } else {\r
- testRunBeanT = getProject().getProperty(\r
- AntConstants.DEFAULT_TEST_RUN_PROPERTY);\r
- }\r
- WritableTestRun testRun = null;\r
-\r
- if (testRunBeanT != null) {\r
- try {\r
- testRun = (WritableTestRun) getContext().getBean(testRunBeanT);\r
- if (log.isTraceEnabled())\r
- log.trace("Load test run bean from bean name "\r
- + testRunBeanT);\r
- } catch (BeansException e) {\r
- // silent, will try defaults\r
- }\r
- }\r
-\r
- if (testRun == null) {\r
- testRun = loadSingleFromContext(WritableTestRun.class);\r
- if (testRun == null) {\r
- testRun = new SimpleTestRun();\r
- log.trace("Created default simple test run");\r
- } else {\r
- if (log.isTraceEnabled())\r
- log.trace("Load test run from scanning Spring context");\r
- }\r
- }\r
-\r
- // set overridden references\r
- if (testDataArg != null) {\r
- testRun.setTestData(testDataArg.getInstance());\r
- log.trace("Overrides test data");\r
- }\r
-\r
- if (testDefinitionArg != null) {\r
- testRun.setTestDefinition(testDefinitionArg.getInstance());\r
- log.trace("Overrides test definition");\r
- }\r
-\r
- if (deployedSystemArg != null) {\r
- testRun.setDeployedSystem(deployedSystemArg.getInstance());\r
- log.trace("Overrides deployed system");\r
- }\r
-\r
- if (testResultArg != null) {\r
- testRun.setTestResult(testResultArg.getInstance());\r
- log.trace("Overrides test result");\r
- }\r
-\r
- // notify path to test result\r
- TestResult result = testRun.getTestResult();\r
- if (result == null) {\r
- result = loadSingleFromContext(TestResult.class);\r
- if (result == null) {\r
- result = new SimpleTestResult();\r
- log.warn("Created default simple test result");\r
- } else {\r
- if (log.isTraceEnabled())\r
- log.trace("Load test result from scanning Spring context");\r
- }\r
- testRun.setTestResult(result);\r
- }\r
-\r
- SlcExecution slcExecution = getSlcExecution();\r
- testRun.notifySlcExecution(slcExecution);\r
-\r
- if (result != null && result instanceof StructureAware) {\r
- ((StructureAware<TreeSPath>) result).notifyCurrentPath(\r
- getRegistry(), getTreeSPath());\r
- }\r
-\r
- try {\r
- ((ExecutableTestRun) testRun).execute();\r
- } catch (RuntimeException e) {\r
- if (result != null) {\r
- SimpleResultPart errorPart = new SimpleResultPart(\r
- TestStatus.ERROR,\r
- "Unexpected exception when running test", e);\r
- result.addResultPart(errorPart);\r
- }\r
- throw e;\r
- }\r
- }\r
-\r
- /**\r
- * The bean name of the test run to use. If not set the default is used.\r
- * \r
- * @see SlcAntConfig\r
- */\r
- public void setTestRun(String testRunBean) {\r
- this.testRunBean = testRunBean;\r
- }\r
-\r
- /** Creates sub tag. */\r
- public SpringArg<TestDefinition> createTestDefinition() {\r
- testDefinitionArg = new SpringArg<TestDefinition>();\r
- // only test definitions can add to path\r
- addSAwareArg(testDefinitionArg);\r
- return testDefinitionArg;\r
- }\r
-\r
- /** Creates sub tag. */\r
- public SpringArg<TestData> createTestData() {\r
- testDataArg = new SpringArg<TestData>();\r
- return testDataArg;\r
- }\r
-\r
- /** Creates sub tag. */\r
- public SpringArg<DeployedSystem> createDeployedSystem() {\r
- deployedSystemArg = new SpringArg<DeployedSystem>();\r
- return deployedSystemArg;\r
- }\r
-\r
- /** Creates sub tag. */\r
- public SpringArg<TestResult> createTestResult() {\r
- testResultArg = new SpringArg<TestResult>();\r
- return testResultArg;\r
- }\r
-\r
- protected <T> T loadSingleFromContext(Class<T> clss) {\r
- return SpringUtils.loadSingleFromContext(getContext(), clss);\r
- }\r
-}\r
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-Integration of SLC Test in Ant.\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.ant.unit;
-
-import junit.framework.TestCase;
-
-import org.argeo.slc.ant.AntExecutionContext;
-import org.argeo.slc.cli.DefaultSlcRuntime;
-import org.argeo.slc.runtime.SlcExecutionOutput;
-
-public abstract class AntSlcApplicationTestCase extends TestCase implements
- SlcExecutionOutput<AntExecutionContext> {
-
- /** To be overriden */
- public void postExecution(AntExecutionContext executionContext) {
-
- }
-
- protected String getRootDir() {
- return System.getProperty("slc.rootDir", "src/main/slc/root");
- }
-
- protected String getAbsoluteScript(String relative) {
- return getRootDir() + '/' + relative;
- }
-
- protected void execute(String relativeScript) {
- execute(relativeScript, null);
- }
-
- protected void execute(String relativeScript, String targets) {
- new DefaultSlcRuntime().executeScript(
- getAbsoluteScript(relativeScript), targets, this);
- }
-
-}
+++ /dev/null
-package org.argeo.slc.ant.unit;
-
-import java.io.File;
-import java.util.UUID;
-
-import org.argeo.slc.ant.AntConstants;
-import org.argeo.slc.ant.AntExecutionContext;
-import org.argeo.slc.ant.AntSlcApplication;
-import org.argeo.slc.core.process.SlcExecution;
-import org.argeo.slc.runtime.SlcExecutionOutput;
-import org.argeo.slc.unit.AbstractSpringTestCase;
-import org.springframework.core.io.FileSystemResource;
-
-public class MinimalAntClasspathTestCase extends AbstractSpringTestCase
- implements SlcExecutionOutput<AntExecutionContext> {
- protected void execute(String scriptPath) {
- AntSlcApplication slcApp = new AntSlcApplication();
- slcApp.setRootDir(new FileSystemResource(new File("src/test/resources")
- .getAbsolutePath()
- + File.separator));
- slcApp.setWorkDir(new File(System.getProperty("java.io.tmpdir")));
- slcApp.setParentContext(getContext());
-
- SlcExecution slcExecution = new SlcExecution();
- slcExecution.setUuid(UUID.randomUUID().toString());
- slcExecution.getAttributes().put(AntConstants.EXECATTR_ANT_FILE,
- scriptPath);
- slcExecution.setUser("user");
-
- slcApp.execute(slcExecution, null, null, this);
- }
-
- /** to be overridden */
- public void postExecution(AntExecutionContext executionContext) {
- }
-
-}
+++ /dev/null
-package org.argeo.slc.cli;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.Map;
-import java.util.Properties;
-import java.util.UUID;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.ant.AntExecutionContext;
-import org.argeo.slc.ant.AntSlcApplication;
-import org.argeo.slc.ant.AntConstants;
-import org.argeo.slc.core.SlcException;
-import org.argeo.slc.core.process.SlcExecution;
-import org.argeo.slc.runtime.SlcExecutionOutput;
-import org.argeo.slc.spring.SpringUtils;
-import org.springframework.core.io.DefaultResourceLoader;
-import org.springframework.core.io.FileSystemResource;
-import org.springframework.core.io.Resource;
-
-public class DefaultSlcRuntime {
- private final static Log log = LogFactory.getLog(DefaultSlcRuntime.class);
-
- public final static String SLC_ROOT_FILE_NAME = "slcRoot.properties";
-
- /**
- * Simplified execution with default runtime, default target, and no
- * properties/reference arguments.
- *
- * @param script
- * path to the script
- * @param executionOutput
- * output
- *
- * @see #executeScript(String, String, String, Properties, Map,
- * SlcExecutionOutput)
- */
- public void executeScript(String script,
- SlcExecutionOutput<AntExecutionContext> executionOutput) {
- executeScript(null, script, null, null, null, executionOutput);
- }
-
- /**
- * Simplified execution with default runtime, and no properties/reference
- * arguments.
- *
- * @param script
- * path to the script
- * @param targets
- * comma separated list of targets
- * @param executionOutput
- * output
- * @see #executeScript(String, String, String, Properties, Map,
- * SlcExecutionOutput)
- */
- public void executeScript(String script, String targets,
- SlcExecutionOutput<AntExecutionContext> executionOutput) {
- executeScript(null, script, targets, null, null, executionOutput);
- }
-
- public void executeScript(String runtime, String script, String targets,
- Properties properties, Map<String, Object> references,
- SlcExecutionOutput<AntExecutionContext> executionOutput) {
-
- Resource scriptRes = findScript(script);
- Resource slcRootFile = findSlcRootFile(scriptRes);
- if (slcRootFile == null)
- throw new SlcException(
- "Could not find any SLC root file, "
- + "please configure one at the root of your scripts hierarchy.");
-
- SlcExecution slcExecution = createSlcExecution(runtime, slcRootFile,
- scriptRes, targets);
-
- AntSlcApplication application = getApplication(slcRootFile);
- application.execute(slcExecution, properties, references,
- executionOutput);
- }
-
- protected Resource findScript(String scriptStr) {
- Resource scriptRes;
- if (new File(scriptStr).exists()) {
- scriptRes = new FileSystemResource(scriptStr);
- } else {
- scriptRes = new DefaultResourceLoader(SlcMain.class
- .getClassLoader()).getResource(scriptStr);
- }
- return scriptRes;
- }
-
- protected SlcExecution createSlcExecution(String runtimeStr,
- Resource slcRootFile, Resource script, String targets) {
- SlcExecution slcExecution = new SlcExecution();
- slcExecution.setUuid(UUID.randomUUID().toString());
- try {
- slcExecution.setHost(InetAddress.getLocalHost().getHostName());
- } catch (UnknownHostException e) {
- slcExecution.setHost(SlcExecution.UNKOWN_HOST);
- }
-
- slcExecution.setType(AntConstants.EXECTYPE_SLC_ANT);
-
- slcExecution.setUser(System.getProperty("user.name"));
-
- if (runtimeStr != null)
- slcExecution.getAttributes().put(AntConstants.EXECATTR_RUNTIME,
- runtimeStr);
- String scriptRelativePath = SpringUtils.extractRelativePath(SpringUtils
- .getParent(slcRootFile), script);
-
- slcExecution.getAttributes().put(AntConstants.EXECATTR_ANT_FILE,
- scriptRelativePath);
- if (targets != null)
- slcExecution.getAttributes().put(AntConstants.EXECATTR_ANT_TARGETS,
- targets);
-
- slcExecution.setStatus(SlcExecution.STATUS_SCHEDULED);
- return slcExecution;
- }
-
- protected AntSlcApplication getApplication(Resource slcRootFile) {
- AntSlcApplication application = new AntSlcApplication();
- InputStream inRootFile = null;
- try {
- // Remove basedir property in order to avoid conflict with Maven
- // if (all.containsKey("basedir"))
- // all.remove("basedir");
-
- inRootFile = slcRootFile.getInputStream();
- Properties rootProps = loadFile(inRootFile);
-
- Resource confDir = null;
- File workDir = null;
- // Root dir
- final Resource rootDir = SpringUtils.getParent(slcRootFile);
-
- // Conf dir
- String confDirStr = rootProps
- .getProperty(AntConstants.CONF_DIR_PROPERTY);
- if (confDirStr != null)
- confDir = new DefaultResourceLoader(application.getClass()
- .getClassLoader()).getResource(confDirStr);
-
- if (confDir == null || !confDir.exists()) {
- // confDir = rootDir.createRelative("../conf");
- confDir = SpringUtils.getParent(rootDir)
- .createRelative("conf/");
- }
-
- // Work dir
- String workDirStr = rootProps
- .getProperty(AntConstants.WORK_DIR_PROPERTY);
- if (workDirStr != null) {
- workDir = new File(workDirStr);
- }
-
- if (workDir == null || !workDir.exists()) {
- try {
- File rootDirAsFile = rootDir.getFile();
- workDir = new File(rootDirAsFile.getParent()
- + File.separator + "work").getCanonicalFile();
- } catch (IOException e) {
- workDir = new File(System.getProperty("java.io.tmpdir")
- + File.separator + "slcExecutions" + File.separator
- + slcRootFile.getURL().getPath());
- log.debug("Root dir is not a file: " + e.getMessage()
- + ", creating work dir in temp: " + workDir);
- }
- workDir.mkdirs();
- }
-
- application.setConfDir(confDir);
- application.setRootDir(rootDir);
- application.setWorkDir(workDir);
-
- return application;
- } catch (IOException e) {
- throw new SlcException(
- "Could not prepare SLC application for root file "
- + slcRootFile, e);
- } finally {
- IOUtils.closeQuietly(inRootFile);
- }
- }
-
- /**
- * Recursively scans directories downwards until it find a file name as
- * defined by {@link #SLC_ROOT_FILE_NAME}.
- */
- protected Resource findSlcRootFile(Resource currDir) {
- if (log.isTraceEnabled())
- log.trace("Look for SLC root file in " + currDir);
-
- try {
- Resource slcRootFile = currDir.createRelative(SLC_ROOT_FILE_NAME);
- if (slcRootFile.exists()) {
- if (log.isDebugEnabled())
- log.debug("Found SLC root file: " + slcRootFile);
- return slcRootFile;
- } else {
- String currPath = currDir.getURL().getPath();
- if (currPath.equals("/") || currPath.equals("")) {
- return null;
- } else {
- return findSlcRootFile(SpringUtils.getParent(currDir));
- }
- }
- } catch (IOException e) {
- throw new SlcException("Problem when looking in SLC root file in "
- + currDir, e);
- }
- }
-
- /** Loads the content of a file as <code>Properties</code>. */
- private Properties loadFile(InputStream in) {
- Properties p = new Properties();
- try {
- p.load(in);
- } catch (IOException e) {
- throw new SlcException("Cannot read SLC root file", e);
- }
- return p;
- }
-}
+++ /dev/null
-package org.argeo.slc.cli;
-
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.Properties;
-
-import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.CommandLineParser;
-import org.apache.commons.cli.GnuParser;
-import org.apache.commons.cli.HelpFormatter;
-import org.apache.commons.cli.Option;
-import org.apache.commons.cli.OptionBuilder;
-import org.apache.commons.cli.Options;
-import org.apache.commons.cli.ParseException;
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.ant.AntConstants;
-import org.argeo.slc.core.SlcException;
-import org.argeo.slc.logging.Log4jUtils;
-
-public class SlcMain {
- public enum Mode {
- single, agent
- }
-
- private static Log log = null;
-
- private final static String BOOTSTRAP_LOG4J_CONFIG = "org/argeo/slc/cli/bootstrapLog4j.properties";
-
- private final static Option modeOpt = OptionBuilder.withLongOpt("mode")
- .withArgName("mode").hasArg().withDescription(
- "SLC execution mode, one of: " + listModeValues()).create(
- 'm');
-
- private final static Option propertyOpt = OptionBuilder.withLongOpt(
- "property").withArgName("prop1=val1,prop2=val2").hasArgs()
- .withValueSeparator(',').withDescription(
- "use value for given property").create('p');
-
- private final static Option propertiesOpt = OptionBuilder.withLongOpt(
- "properties").withArgName("properties file").hasArgs()
- .withValueSeparator(',').withDescription(
- "load properties from file (-p has priority)").create('P');
-
- private final static Option scriptOpt = OptionBuilder.withLongOpt("script")
- .withArgName("script").hasArg().withDescription(
- "SLC script to execute").create('s');
-
- private final static Option targetsOpt = OptionBuilder.withLongOpt(
- "targets").withArgName("targets").hasArg().withDescription(
- "Targets to execute").create('t');
-
- private final static Option runtimeOpt = OptionBuilder.withLongOpt(
- "runtime").withArgName("runtime").hasArg().withDescription(
- "Runtime to use, either a full path or relative to slc app conf dir: "
- + "<conf dir>/runtime/<runtime>/.xml").create('r');
-
- private final static Options options;
-
- private final static String commandName = "slc";
-
- static {
- options = new Options();
- options.addOption(modeOpt);
- options.addOption(scriptOpt);
- options.addOption(targetsOpt);
- options.addOption(propertyOpt);
- options.addOption(propertiesOpt);
- options.addOption(runtimeOpt);
- }
-
- public static void main(String[] args) {
- Mode mode = null;
- Properties properties = new Properties();
- String script = null;
- String targets = null;
- String runtimeStr = null;
-
- try {
-
- CommandLineParser clParser = new GnuParser();
- CommandLine cl = clParser.parse(options, args);
-
- // Mode
- String modeStr = cl.getOptionValue(modeOpt.getOpt());
- if (modeStr == null) {
- mode = Mode.single;
- } else {
- try {
- mode = Mode.valueOf(modeStr);
- } catch (IllegalArgumentException e) {
- throw new SlcException("Unrecognized mode '" + modeStr
- + "'", e);
- }
- }
-
- // Script
- if (mode.equals(Mode.single)) {
- if (!cl.hasOption(scriptOpt.getOpt()))
- throw new SlcException("Mode " + Mode.single
- + " requires option '" + scriptOpt.getLongOpt()
- + "'");
- script = cl.getOptionValue(scriptOpt.getOpt());
-
- // Targets
- if (cl.hasOption(targetsOpt.getOpt()))
- targets = cl.getOptionValue(targetsOpt.getOpt());
- }
-
- // Properties
- if (cl.hasOption(propertiesOpt.getOpt())) {
- for (String propertyFile : cl.getOptionValues(propertiesOpt
- .getOpt())) {
- loadPropertyFile(properties, propertyFile);
- }
- }
- if (cl.hasOption(propertyOpt.getOpt())) {
- for (String property : cl.getOptionValues(propertyOpt.getOpt())) {
- addProperty(properties, property);
- }
- }
-
- // Runtime
- if (cl.hasOption(runtimeOpt.getOpt())) {
- runtimeStr = cl.getOptionValue(runtimeOpt.getOpt());
- }
- } catch (ParseException e) {
- System.err.println("Problem with command line arguments. "
- + e.getMessage());
- badExit();
- } catch (SlcException e) {
- System.err.println(e.getMessage());
- badExit();
- } catch (Exception e) {
- System.err.println("Unexpected exception when bootstrapping.");
- e.printStackTrace();
- badExit();
- }
-
- // Initializes logging and log arguments
- initLogging(properties);
- if (log.isDebugEnabled()) {
- log.debug("Mode: " + mode);
- if (runtimeStr != null)
- log.debug("Runtime: " + runtimeStr);
- log.debug("User properties: " + properties);
- if (script != null)
- log.debug("Script: " + script);
- if (targets != null)
- log.debug("Targets: " + targets);
- }
-
- // Execution
- if (mode.equals(Mode.single)) {
- try {
- DefaultSlcRuntime runtime = new DefaultSlcRuntime();
- runtime.executeScript(runtimeStr, script, targets, properties,
- null, null);
- //System.exit(0);
- } catch (SlcException e) {
- log.error("SLC client terminated with an error: ", e);
- System.exit(1);
- }
- }
- }
-
- public static void printUsage() {
- new HelpFormatter().printHelp(commandName, options, true);
- }
-
- private static String listModeValues() {
- StringBuffer buf = new StringBuffer("");
- for (Mode mode : Mode.values()) {
- buf.append(mode).append(", ");
- }
- String str = buf.toString();
- // unsafe, but there will be at least one value in the enum
- return str.substring(0, str.length() - 2);
- }
-
- protected static void addProperty(Properties properties, String property) {
- int eqIndex = property.indexOf('=');
- if (eqIndex == 0)
- throw new SlcException("Badly formatted property " + property);
-
- if (eqIndex > 0) {
- String key = property.substring(0, eqIndex);
- String value = property.substring(eqIndex + 1);
- properties.setProperty(key, value);
-
- } else {
- properties.setProperty(property, "true");
- }
- }
-
- protected static void loadPropertyFile(Properties properties,
- String propertyFile) {
- FileInputStream in = null;
- try {
- in = new FileInputStream(propertyFile);
- properties.load(in);
- } catch (Exception e) {
- throw new SlcException("Could not load proeprty file "
- + propertyFile);
- } finally {
- IOUtils.closeQuietly(in);
- }
- }
-
- private static void initLogging(Properties userProperties) {
- System.setProperty("log4j.defaultInitOverride", "true");
-
- // Add log4j user properties to System properties
- for (Object obj : userProperties.keySet()) {
- String key = obj.toString();
- if (key.startsWith("log4j.")) {
- System.setProperty(key, userProperties.getProperty(key));
- }
- }
- Log4jUtils.initLog4j(System.getProperty("log4j.configuration",
- "classpath:" + BOOTSTRAP_LOG4J_CONFIG));
- log = LogFactory.getLog(SlcMain.class);
-
- }
-
- private static void badExit() {
- printUsage();
- System.exit(1);
- }
-}
+++ /dev/null
-package org.argeo.slc.maven;
-
-import java.io.File;
-import java.net.URL;
-import java.util.Map;
-import java.util.Properties;
-import java.util.UUID;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.ant.AntRunner;
-import org.argeo.slc.core.SlcException;
-import org.argeo.slc.core.deploy.DeployEnvironment;
-
-public class MavenDeployEnvironment {/*implements DeployEnvironment {
- private static final Log log = LogFactory
- .getLog(MavenDeployEnvironment.class);
- private MavenManager mavenManager;
-
- public void unpackTo(Object packg, File targetLocation,
- Map<String, String> filter) {
- File packageLocation;
- String type = null;
- String removeRootDir = "enabled";
- if (packg instanceof MavenFile) {
- packageLocation = mavenManager
- .getPackageLocation((MavenFile) packg);
- type = ((MavenFile) packg).getType();
- } else if (packg instanceof File) {
- packageLocation = (File) packg;
- // TODO: type based on extension
- } else {
- throw new SlcException("Unrecognized package type "
- + packg.getClass());
- }
- if (log.isDebugEnabled()) {
- log.debug("Unpack " + packageLocation + " of type " + type + " to "
- + targetLocation);
- }
-
- try {
- File tempDir = new File("/tmp/" + UUID.randomUUID().toString());
- tempDir.mkdirs();
- targetLocation.mkdirs();
- Properties props = new Properties();
- props.setProperty("dest", targetLocation.getAbsolutePath());
- props.setProperty("src", packageLocation.getAbsolutePath());
- props.setProperty("tempDir", tempDir.getAbsolutePath());
- props.setProperty("removeRootDir", removeRootDir);
-
- URL antUrl = getClass().getClassLoader().getResource(
- "org/argeo/slc/support/deploy/ant/build.xml");
-
- if (type == null || type.equals("zip")) {
- new AntRunner(antUrl, "deployZip", props).run();
- } else if (type.equals("tar.gz")) {
- new AntRunner(antUrl, "deployTarGz", props).run();
- } else {
- throw new SlcException("Unknow package type " + type);
- }
- } catch (SlcException e) {
- throw e;
- } catch (Exception e) {
- throw new SlcException("Cannot unpack package " + packg + " to "
- + targetLocation, e);
- }
- }
-
- public void setMavenManager(MavenManager mavenManager) {
- this.mavenManager = mavenManager;
- }
-*/
-}
+++ /dev/null
-package org.argeo.slc.maven;\r
-\r
-import org.argeo.slc.core.build.Distribution;\r
-import org.argeo.slc.core.deploy.DeploymentData;\r
-\r
-public class MavenFile implements Distribution, DeploymentData {\r
- private String groupId;\r
- private String artifactId;\r
- private String version;\r
- private String type;\r
- private String classifier;\r
-\r
- private String distributionId;\r
-\r
- public String getDistributionId() {\r
- return distributionId;\r
- }\r
-\r
- public void setDistributionId(String distributionId) {\r
- this.distributionId = distributionId;\r
- }\r
-\r
- public String getGroupId() {\r
- return groupId;\r
- }\r
-\r
- public void setGroupId(String groupId) {\r
- this.groupId = groupId;\r
- }\r
-\r
- public String getArtifactId() {\r
- return artifactId;\r
- }\r
-\r
- public void setArtifactId(String artifactId) {\r
- this.artifactId = artifactId;\r
- }\r
-\r
- public String getVersion() {\r
- return version;\r
- }\r
-\r
- public void setVersion(String version) {\r
- this.version = version;\r
- }\r
-\r
- public String getType() {\r
- return type;\r
- }\r
-\r
- public void setType(String type) {\r
- this.type = type;\r
- }\r
-\r
- public String getClassifier() {\r
- return classifier;\r
- }\r
-\r
- public void setClassifier(String classifier) {\r
- this.classifier = classifier;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.maven;\r
-\r
-import java.io.File;\r
-import java.util.List;\r
-import java.util.Vector;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-//import org.apache.maven.artifact.Artifact;\r
-//import org.apache.maven.artifact.repository.ArtifactRepository;\r
-//import org.apache.maven.embedder.MavenEmbedder;\r
-//import org.apache.maven.embedder.MavenEmbedderException;\r
-\r
-import org.argeo.slc.core.SlcException;\r
-\r
-public class MavenManager {/* FIXME\r
- private final Log log = LogFactory.getLog(getClass());\r
-\r
- private String localRepositoryPath;\r
-\r
- private ArtifactRepository localRepository;\r
- private List<ArtifactRepository> remoteRepositoriesInternal;\r
- private List<RemoteRepository> remoteRepositories = new Vector<RemoteRepository>();\r
-\r
- private MavenEmbedder mavenEmbedder;\r
-\r
- public void init() {\r
- try {\r
- mavenEmbedder = new MavenEmbedder();\r
- mavenEmbedder.setOffline(true);\r
- mavenEmbedder.setClassLoader(Thread.currentThread()\r
- .getContextClassLoader());\r
- mavenEmbedder.start();\r
-\r
- mavenEmbedder.setLocalRepositoryDirectory(new File(\r
- localRepositoryPath));\r
-\r
- localRepository = mavenEmbedder.getLocalRepository();\r
-\r
- remoteRepositoriesInternal = new Vector<ArtifactRepository>();\r
- for (RemoteRepository remoteRepository : remoteRepositories) {\r
-\r
- ArtifactRepository repository = mavenEmbedder.createRepository(\r
- remoteRepository.getUrl(), remoteRepository.getId());\r
- remoteRepositoriesInternal.add(repository);\r
- }\r
-\r
- } catch (Exception e) {\r
- throw new SlcException("Cannot initialize Maven manager", e);\r
- }\r
- }\r
-\r
- private Artifact resolve(MavenFile mavenDistribution) {\r
- try {\r
- Artifact artifact;\r
- if (mavenDistribution.getClassifier() == null) {\r
- artifact = mavenEmbedder.createArtifact(mavenDistribution\r
- .getGroupId(), mavenDistribution.getArtifactId(),\r
- mavenDistribution.getVersion(),\r
- Artifact.SCOPE_PROVIDED, mavenDistribution.getType());\r
- } else {\r
- artifact = mavenEmbedder.createArtifactWithClassifier(\r
- mavenDistribution.getGroupId(), mavenDistribution\r
- .getArtifactId(), mavenDistribution\r
- .getVersion(), mavenDistribution.getType(),\r
- mavenDistribution.getClassifier());\r
- }\r
-\r
- mavenEmbedder.resolve(artifact, remoteRepositoriesInternal,\r
- localRepository);\r
-\r
- return artifact;\r
- } catch (Exception e) {\r
- throw new SlcException("Cannot resolve artifact.", e);\r
- }\r
- }\r
-\r
- public File getPackageLocation(MavenFile mavenDistribution) {\r
- return resolve(mavenDistribution).getFile();\r
- }\r
-\r
- public void destroy() {\r
- try {\r
- if (mavenEmbedder != null) {\r
- mavenEmbedder.stop();\r
- }\r
- } catch (MavenEmbedderException e) {\r
- log.error("Cannot destroy Maven manager", e);\r
- }\r
- }\r
-\r
- public void setLocalRepositoryPath(String localRepositoryPath) {\r
- this.localRepositoryPath = localRepositoryPath;\r
- }\r
-\r
- public List<RemoteRepository> getRemoteRepositories() {\r
- return remoteRepositories;\r
- }\r
-\r
- public void setRemoteRepositories(List<RemoteRepository> remoteRepositories) {\r
- this.remoteRepositories = remoteRepositories;\r
- }\r
-*/\r
-}\r
+++ /dev/null
-package org.argeo.slc.maven;
-
-public class RemoteRepository {
- private String id;
- private String url;
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getUrl() {
- return url;
- }
-
- public void setUrl(String url) {
- this.url = url;
- }
-
-}
+++ /dev/null
-package org.argeo.slc.ws.client;\r
-\r
-import java.io.IOException;\r
-\r
-import javax.xml.transform.Source;\r
-\r
-import org.springframework.ws.client.WebServiceClientException;\r
-import org.springframework.ws.client.WebServiceIOException;\r
-import org.springframework.ws.client.support.interceptor.ClientInterceptor;\r
-import org.springframework.ws.context.MessageContext;\r
-import org.springframework.xml.validation.XmlValidator;\r
-import org.xml.sax.SAXParseException;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-\r
-public class ValidatingClientInterceptor implements ClientInterceptor {\r
- private final static Log log = LogFactory\r
- .getLog(ValidatingClientInterceptor.class);\r
-\r
- private Boolean validateRequest = true;\r
- private Boolean validateResponse = false;\r
- private XmlValidator validator = null;\r
-\r
- public boolean handleFault(MessageContext messageContext)\r
- throws WebServiceClientException {\r
- return true;\r
- }\r
-\r
- public boolean handleRequest(MessageContext messageContext)\r
- throws WebServiceClientException {\r
- if (validateRequest) {\r
- if (messageContext.getRequest() == null)\r
- return true;\r
-\r
- Source source = messageContext.getRequest().getPayloadSource();\r
- try {\r
- return validate(source);\r
- } catch (IOException e) {\r
- throw new WebServiceIOException("Cannot validate request", e);\r
- }\r
- } else {\r
- return true;\r
- }\r
- }\r
-\r
- public boolean handleResponse(MessageContext messageContext)\r
- throws WebServiceClientException {\r
- if (validateResponse) {\r
- if (messageContext.getResponse() == null)\r
- return true;\r
-\r
- Source source = messageContext.getResponse().getPayloadSource();\r
- try {\r
- return validate(source);\r
- } catch (IOException e) {\r
- throw new WebServiceIOException("Cannot validate response", e);\r
- }\r
- } else {\r
- return true;\r
- }\r
- }\r
-\r
- protected boolean validate(Source source) throws IOException {\r
- SAXParseException[] exceptions = validator.validate(source);\r
- if (exceptions.length != 0) {\r
- for (SAXParseException ex : exceptions) {\r
- log.error(ex.getMessage());\r
- }\r
- return false;\r
- } else {\r
- return true;\r
- }\r
- }\r
-\r
- public void setValidateRequest(Boolean validateRequest) {\r
- this.validateRequest = validateRequest;\r
- }\r
-\r
- public void setValidateResponse(Boolean validateResponse) {\r
- this.validateResponse = validateResponse;\r
- }\r
-\r
- public void setValidator(XmlValidator validator) {\r
- this.validator = validator;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ws.client;\r
-\r
-import java.util.Iterator;\r
-\r
-import javax.xml.transform.Source;\r
-import javax.xml.transform.dom.DOMSource;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-import org.springframework.ws.client.core.WebServiceTemplate;\r
-import org.springframework.ws.soap.SoapFaultDetail;\r
-import org.springframework.ws.soap.SoapFaultDetailElement;\r
-import org.springframework.ws.soap.client.SoapFaultClientException;\r
-import org.springframework.xml.transform.StringResult;\r
-import org.w3c.dom.Node;\r
-\r
-public abstract class WebServiceUtils {\r
- private final static Log log = LogFactory.getLog(WebServiceUtils.class);\r
-\r
- public static Object marshalSendAndReceiveSafe(WebServiceTemplate template,\r
- Object req) {\r
- try {\r
- Object resp = marshalSendAndReceive(template, req);\r
- return resp;\r
- } catch (Exception e) {\r
- log.error("Cannot send web servicerequest: " + e.getMessage());\r
- if (log.isDebugEnabled()) {\r
- log.debug("Webservice exception details: ", e);\r
- }\r
- return null;\r
- }\r
- }\r
-\r
- public static Object marshalSendAndReceive(WebServiceTemplate template,\r
- Object req) {\r
- if (log.isTraceEnabled()) {\r
- try {\r
- StringResult result = new StringResult();\r
- template.getMarshaller().marshal(req, result);\r
- log.trace("About to send " + result);\r
- } catch (Exception e) {\r
- log.error("Cannot marshall " + req + " for logging", e);\r
- }\r
- }\r
- Object resp = template.marshalSendAndReceive(req);\r
- return resp;\r
- }\r
-\r
- public static void manageSoapException(SoapFaultClientException e) {\r
- log\r
- .error("WS root cause: "\r
- + e.getSoapFault().getFaultStringOrReason());\r
- if (log.isTraceEnabled()) {\r
- StringBuffer stack = new StringBuffer("");\r
- SoapFaultDetail detail = e.getSoapFault().getFaultDetail();\r
- if (detail != null) {\r
- Iterator<SoapFaultDetailElement> it = (Iterator<SoapFaultDetailElement>) detail\r
- .getDetailEntries();\r
- while (it.hasNext()) {\r
- SoapFaultDetailElement elem = it.next();\r
- if (elem.getName().getLocalPart().equals("StackElement")) {\r
- Source source = elem.getSource();\r
- if (source instanceof DOMSource) {\r
- Node node = ((DOMSource) source).getNode();\r
- // stack.append(node.getTextContent()).append('\n');\r
- stack\r
- .append(\r
- node.getChildNodes().item(0)\r
- .getNodeValue()).append(\r
- '\n');\r
- }\r
- }\r
- }\r
-\r
- if (stack.length() > 0)\r
- log.error("WS root cause stack: " + stack);\r
- }\r
- }\r
- }\r
-\r
- private WebServiceUtils() {\r
-\r
- }\r
-}\r
+++ /dev/null
-package org.argeo.slc.ws.process;\r
-\r
-import java.util.List;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-import org.argeo.slc.core.process.SlcExecution;\r
-import org.argeo.slc.core.process.SlcExecutionNotifier;\r
-import org.argeo.slc.core.process.SlcExecutionStep;\r
-import org.argeo.slc.msg.process.SlcExecutionRequest;\r
-import org.argeo.slc.msg.process.SlcExecutionStatusRequest;\r
-import org.argeo.slc.msg.process.SlcExecutionStepsRequest;\r
-import org.argeo.slc.ws.client.WebServiceUtils;\r
-import org.springframework.ws.client.WebServiceIOException;\r
-import org.springframework.ws.client.core.WebServiceTemplate;\r
-import org.springframework.ws.soap.client.SoapFaultClientException;\r
-\r
-public class WebServiceSlcExecutionNotifier implements SlcExecutionNotifier {\r
- private WebServiceTemplate template;\r
-\r
- private Log log = LogFactory.getLog(getClass());\r
-\r
- private Boolean cannotConnect = false;\r
-\r
- public void newExecution(SlcExecution slcExecution) {\r
- if (cannotConnect)\r
- return;\r
-\r
- SlcExecutionRequest req = new SlcExecutionRequest();\r
- req.setSlcExecution(slcExecution);\r
- try {\r
- WebServiceUtils.marshalSendAndReceive(template, req);\r
- if (log.isTraceEnabled())\r
- log.trace("Notified creation of slc execution "\r
- + slcExecution.getUuid());\r
- } catch (SoapFaultClientException e) {\r
- WebServiceUtils.manageSoapException(e);\r
- } catch (WebServiceIOException e) {\r
- manageIoException(e);\r
- }\r
- }\r
-\r
- public void updateExecution(SlcExecution slcExecution) {\r
- if (cannotConnect)\r
- return;\r
-\r
- SlcExecutionRequest req = new SlcExecutionRequest();\r
- req.setSlcExecution(slcExecution);\r
- try {\r
- WebServiceUtils.marshalSendAndReceive(template, req);\r
- if (log.isTraceEnabled())\r
- log.trace("Notified update of slc execution "\r
- + slcExecution.getUuid());\r
- } catch (SoapFaultClientException e) {\r
- WebServiceUtils.manageSoapException(e);\r
- } catch (WebServiceIOException e) {\r
- manageIoException(e);\r
- }\r
- }\r
-\r
- public void updateStatus(SlcExecution slcExecution, String oldStatus,\r
- String newStatus) {\r
- if (cannotConnect)\r
- return;\r
-\r
- SlcExecutionStatusRequest req = new SlcExecutionStatusRequest(\r
- slcExecution.getUuid(), newStatus);\r
- try {\r
- WebServiceUtils.marshalSendAndReceive(template, req);\r
- if (log.isTraceEnabled())\r
- log.trace("Notified status update of slc execution "\r
- + slcExecution.getUuid());\r
- } catch (SoapFaultClientException e) {\r
- WebServiceUtils.manageSoapException(e);\r
- } catch (WebServiceIOException e) {\r
- manageIoException(e);\r
- }\r
- }\r
-\r
- public void addSteps(SlcExecution slcExecution,\r
- List<SlcExecutionStep> additionalSteps) {\r
- if (cannotConnect)\r
- return;\r
-\r
- SlcExecutionStepsRequest req = new SlcExecutionStepsRequest();\r
- req.setSlcExecutionUuid(slcExecution.getUuid());\r
- req.setSteps(additionalSteps);\r
- if (log.isTraceEnabled()) {\r
- for (SlcExecutionStep step : additionalSteps) {\r
- log.trace("Step " + step.getUuid() + ": " + step.logAsString());\r
- }\r
- }\r
-\r
- try {\r
- WebServiceUtils.marshalSendAndReceive(template, req);\r
- if (log.isTraceEnabled())\r
- log.trace("Added steps to slc execution "\r
- + slcExecution.getUuid());\r
- } catch (SoapFaultClientException e) {\r
- WebServiceUtils.manageSoapException(e);\r
- } catch (WebServiceIOException e) {\r
- manageIoException(e);\r
- }\r
- }\r
-\r
- public void setTemplate(WebServiceTemplate template) {\r
- this.template = template;\r
- }\r
-\r
- protected void manageIoException(WebServiceIOException e) {\r
- if (!cannotConnect) {\r
- log.error("Cannot connect to " + template.getDefaultUri()\r
- + ". Won't try again.", e);\r
- cannotConnect = true;\r
- }\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ws.test.tree;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-import org.argeo.slc.core.test.TestResultListener;\r
-import org.argeo.slc.core.test.TestResultPart;\r
-import org.argeo.slc.core.test.tree.TreeTestResult;\r
-import org.argeo.slc.msg.test.tree.CloseTreeTestResultRequest;\r
-import org.argeo.slc.msg.test.tree.CreateTreeTestResultRequest;\r
-import org.argeo.slc.msg.test.tree.ResultPartRequest;\r
-import org.argeo.slc.ws.client.WebServiceUtils;\r
-import org.springframework.ws.client.WebServiceIOException;\r
-import org.springframework.ws.client.core.WebServiceTemplate;\r
-import org.springframework.ws.soap.client.SoapFaultClientException;\r
-\r
-public class WebServiceTreeTestResultNotifier implements\r
- TestResultListener<TreeTestResult> {\r
- private WebServiceTemplate template;\r
- private Boolean onlyOnClose = false;\r
-\r
- private Log log = LogFactory.getLog(getClass());\r
-\r
- private Boolean cannotConnect = false;\r
-\r
- public void resultPartAdded(TreeTestResult testResult,\r
- TestResultPart testResultPart) {\r
- if (onlyOnClose)\r
- return;\r
-\r
- if (cannotConnect)\r
- return;\r
-\r
- try {\r
- if (testResult.getResultParts().size() == 1\r
- && testResult.getResultParts().values().iterator().next()\r
- .getParts().size() == 1) {\r
- CreateTreeTestResultRequest req = new CreateTreeTestResultRequest(\r
- testResult);\r
-\r
- if (log.isDebugEnabled())\r
- log.debug("Send create result request for result "\r
- + testResult.getUuid());\r
-\r
- WebServiceUtils.marshalSendAndReceive(template, req);\r
- } else {\r
- ResultPartRequest req = new ResultPartRequest(testResult);\r
-\r
- if (log.isDebugEnabled())\r
- log.debug("Send result parts for result "\r
- + testResult.getUuid());\r
-\r
- WebServiceUtils.marshalSendAndReceive(template, req);\r
- }\r
- } catch (SoapFaultClientException e) {\r
- WebServiceUtils.manageSoapException(e);\r
-\r
- } catch (WebServiceIOException e) {\r
- manageIoException(e);\r
- }\r
- }\r
-\r
- public void close(TreeTestResult testResult) {\r
- if (cannotConnect)\r
- return;\r
-\r
- try {\r
- if (onlyOnClose) {\r
- CreateTreeTestResultRequest req = new CreateTreeTestResultRequest(\r
- testResult);\r
-\r
- if (log.isDebugEnabled())\r
- log.debug("Send create result request for result "\r
- + testResult.getUuid());\r
-\r
- WebServiceUtils.marshalSendAndReceive(template, req);\r
- } else {\r
- CloseTreeTestResultRequest req = new CloseTreeTestResultRequest(\r
- testResult);\r
-\r
- if (log.isDebugEnabled())\r
- log.debug("Send close result request for result "\r
- + testResult.getUuid());\r
-\r
- WebServiceUtils.marshalSendAndReceive(template, req);\r
-\r
- }\r
- } catch (SoapFaultClientException e) {\r
- WebServiceUtils.manageSoapException(e);\r
- } catch (WebServiceIOException e) {\r
- manageIoException(e);\r
- }\r
- }\r
-\r
- public void setTemplate(WebServiceTemplate template) {\r
- this.template = template;\r
- }\r
-\r
- public void setOnlyOnClose(Boolean onlyOnClose) {\r
- this.onlyOnClose = onlyOnClose;\r
- }\r
-\r
- protected void manageIoException(WebServiceIOException e) {\r
- if (!cannotConnect) {\r
- log.error("Cannot connect to " + template.getDefaultUri()\r
- + ". Won't try again.", e);\r
- cannotConnect = true;\r
- }\r
- }\r
-}\r
Manifest-Version: 1.0\r
-Export-Package: org.argeo.slc.ws.client;uses:="org.springframework.ws.\r
- client.core,org.springframework.oxm,org.apache.commons.logging,org.sp\r
- ringframework.ws,org.springframework.ws.soap,org.springframework.ws.c\r
- ontext,org.springframework.xml.transform,org.springframework.ws.clien\r
- t,javax.xml.transform.dom,org.w3c.dom,org.springframework.xml.validat\r
- ion,javax.xml.namespace,org.xml.sax,javax.xml.transform,org.springfra\r
- mework.ws.soap.client,org.springframework.ws.client.support.intercept\r
- or";version="0.11.2.SNAPSHOT",org.argeo.slc.ws.client.spring;version=\r
- "0.11.2.SNAPSHOT",org.argeo.slc.ant.detached;uses:="org.argeo.slc.ant\r
- .spring,org.apache.commons.logging,org.argeo.slc.core,org.argeo.slc.s\r
- pring,org.springframework.context,org.argeo.slc.detached,org.argeo.sl\r
- c.ant.structure,org.springframework.beans.factory";version="0.11.2.SN\r
- APSHOT",org.argeo.slc.ws.test.tree;uses:="org.springframework.ws.clie\r
- nt.core,org.apache.commons.logging,org.argeo.slc.msg.test.tree,org.ar\r
- geo.slc.ws.client,org.springframework.ws.soap.client,org.springframew\r
- ork.ws.client,org.argeo.slc.core.test.tree,org.argeo.slc.core.test";v\r
- ersion="0.11.2.SNAPSHOT",org.argeo.slc.maven;uses:="org.argeo.slc.cor\r
- e.build,org.argeo.slc.core.deploy";version="0.11.2.SNAPSHOT",org.arge\r
- o.slc.ant.structure;uses:="org.argeo.slc.core.structure,org.argeo.slc\r
- .ant.spring,org.argeo.slc.core,org.springframework.context,org.apache\r
- .tools.ant,org.argeo.slc.core.structure.tree";version="0.11.2.SNAPSHO\r
- T",org.argeo.slc.ant.unit;uses:="org.argeo.slc.ant,junit.framework,or\r
- g.argeo.slc.unit,org.argeo.slc.runtime,org.argeo.slc.cli,org.springfr\r
- amework.core.io,org.springframework.context,org.argeo.slc.core.proces\r
- s";version="0.11.2.SNAPSHOT",org.argeo.slc.ant.deploy;uses:="org.arge\r
- o.slc.ant.spring,org.apache.commons.logging,org.argeo.slc.core,org.ar\r
- geo.slc.core.build,org.springframework.context,org.argeo.slc.core.dep\r
- loy,org.argeo.slc.ant.structure,org.apache.tools.ant";version="0.11.2\r
- .SNAPSHOT",org.argeo.slc.ant.spring;uses:="org.apache.commons.logging\r
- ,org.argeo.slc.core,org.springframework.beans,org.apache.tools.ant.ty\r
- pes,org.springframework.context,org.argeo.slc.core.process,org.apache\r
- .tools.ant,org.springframework.beans.factory";version="0.11.2.SNAPSHO\r
- T",org.argeo.slc.ant;uses:="org.apache.commons.logging,org.apache.log\r
- 4j,org.springframework.context.support,org.apache.log4j.spi,org.sprin\r
- gframework.beans.factory.config,org.springframework.beans.factory.sup\r
- port,org.argeo.slc.core.structure,org.argeo.slc.core,org.apache.tools\r
- .ant.util,org.apache.commons.io,org.argeo.slc.core.process,org.argeo.\r
- slc.core.structure.tree,org.springframework.beans.factory,org.apache.\r
- tools.ant.helper,org.springframework.util,org.springframework.core.io\r
- ,org.springframework.context,org.argeo.slc.logging,org.springframewor\r
- k.beans.factory.xml,org.apache.tools.ant,org.argeo.slc.runtime";versi\r
- on="0.11.2.SNAPSHOT",org.argeo.slc.lib.detached;uses:="org.springfram\r
- ework.oxm,org.apache.commons.logging,org.argeo.slc.detached.ui,org.sp\r
- ringframework.beans,org.argeo.slc.detached,org.springframework.beans.\r
- factory.config,org.argeo.slc.core.test,org.springframework.beans.fact\r
- ory.support,org.argeo.slc.core,org.argeo.slc.core.test.context,javax.\r
- xml.transform,org.argeo.slc.core.structure.tree,org.springframework.b\r
- eans.factory";version="0.11.2.SNAPSHOT",org.argeo.slc.ws.process;uses\r
- :="org.springframework.ws.client.core,org.apache.commons.logging,org.\r
- argeo.slc.ws.client,org.springframework.ws.client,org.springframework\r
- .ws.soap.client,org.argeo.slc.core.process,org.argeo.slc.msg.process"\r
- ;version="0.11.2.SNAPSHOT",org.argeo.slc.cli;uses:="org.apache.common\r
- s.logging,org.apache.commons.cli,org.springframework.core.io,org.arge\r
- o.slc.logging,org.argeo.slc.ant,org.argeo.slc.core,org.argeo.slc.spri\r
- ng,org.argeo.slc.runtime,org.apache.commons.io,org.argeo.slc.core.pro\r
- cess";version="0.11.2.SNAPSHOT",org.argeo.slc.ant.test;uses:="org.apa\r
- che.commons.logging,org.springframework.beans,org.springframework.con\r
- text,org.argeo.slc.ant.structure,org.apache.tools.ant,org.argeo.slc.c\r
- ore.test,org.argeo.slc.core.structure,org.argeo.slc.ant.spring,org.ar\r
- geo.slc.core,org.argeo.slc.core.test.context,org.argeo.slc.spring,org\r
- .apache.tools.ant.types,org.argeo.slc.core.deploy,org.argeo.slc.core.\r
- process,org.argeo.slc.core.structure.tree,org.springframework.beans.f\r
- actory";version="0.11.2.SNAPSHOT",org.argeo.slc.support.deploy.ant;ve\r
+Export-Package: org.argeo.slc.lib.detached;uses:="org.springframework.\r
+ oxm,org.apache.commons.logging,org.argeo.slc.detached.ui,org.springfr\r
+ amework.beans,org.argeo.slc.detached,org.springframework.beans.factor\r
+ y.config,org.argeo.slc.core.test,org.springframework.beans.factory.su\r
+ pport,org.argeo.slc.core,org.argeo.slc.core.test.context,javax.xml.tr\r
+ ansform,org.argeo.slc.core.structure.tree,org.springframework.beans.f\r
+ actory";version="0.11.2.SNAPSHOT",org.argeo.slc.ant.detached;uses:="o\r
+ rg.argeo.slc.ant.spring,org.apache.commons.logging,org.argeo.slc.core\r
+ ,org.argeo.slc.spring,org.springframework.context,org.argeo.slc.detac\r
+ hed,org.argeo.slc.ant.structure,org.springframework.beans.factory";ve\r
rsion="0.11.2.SNAPSHOT"\r
Tool: Bnd-0.0.255\r
Bundle-Name: Argeo SLC Agent\r
Bundle-ManifestVersion: 2\r
Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt\r
Bundle-Description: SLC Distribution\r
-Import-Package: javax.xml.namespace;version="1.3",javax.xml.transform;\r
- version="1.3",javax.xml.transform.dom;version="1.3",junit.framework;v\r
- ersion="3.8",org.apache.commons.cli;resolution:=optional;version="1.1\r
- ",org.apache.commons.io;version="1.4",org.apache.commons.logging;vers\r
- ion="1.1",org.apache.log4j;version="1.2",org.apache.log4j.spi;version\r
- ="1.2",org.apache.tools.ant;version="1.7",org.apache.tools.ant.helper\r
- ;version="1.7",org.apache.tools.ant.types;version="1.7",org.apache.to\r
- ols.ant.util;version="1.7",org.argeo.slc.ant;version="0.11.2.SNAPSHOT\r
- ",org.argeo.slc.ant.deploy;version="0.11.2.SNAPSHOT",org.argeo.slc.an\r
- t.detached;version="0.11.2.SNAPSHOT",org.argeo.slc.ant.spring;version\r
- ="0.11.2.SNAPSHOT",org.argeo.slc.ant.structure;version="0.11.2.SNAPSH\r
- OT",org.argeo.slc.ant.test;version="0.11.2.SNAPSHOT",org.argeo.slc.an\r
- t.unit;version="0.11.2.SNAPSHOT",org.argeo.slc.cli;version="0.11.2.SN\r
- APSHOT",org.argeo.slc.core;version="0.11.2.SNAPSHOT",org.argeo.slc.co\r
- re.build;version="0.11.2.SNAPSHOT",org.argeo.slc.core.deploy;version=\r
- "0.11.2.SNAPSHOT",org.argeo.slc.core.process;version="0.11.2.SNAPSHOT\r
- ",org.argeo.slc.core.structure;version="0.11.2.SNAPSHOT",org.argeo.sl\r
- c.core.structure.tree;version="0.11.2.SNAPSHOT",org.argeo.slc.core.te\r
- st;version="0.11.2.SNAPSHOT",org.argeo.slc.core.test.context;version=\r
- "0.11.2.SNAPSHOT",org.argeo.slc.core.test.spring;version="0.11.2.SNAP\r
- SHOT",org.argeo.slc.core.test.tree;version="0.11.2.SNAPSHOT",org.arge\r
- o.slc.detached;version="0.11.2.SNAPSHOT",org.argeo.slc.detached.ui;ve\r
- rsion="0.11.2.SNAPSHOT",org.argeo.slc.lib.detached;version="0.11.2.SN\r
- APSHOT",org.argeo.slc.logging;version="0.11.2.SNAPSHOT",org.argeo.slc\r
- .maven;version="0.11.2.SNAPSHOT",org.argeo.slc.msg.process;version="0\r
- .11.2.SNAPSHOT",org.argeo.slc.msg.test.tree;version="0.11.2.SNAPSHOT"\r
- ,org.argeo.slc.runtime;version="0.11.2.SNAPSHOT",org.argeo.slc.spring\r
- ;version="0.11.2.SNAPSHOT",org.argeo.slc.support.deploy.ant;version="\r
- 0.11.2.SNAPSHOT",org.argeo.slc.unit;version="0.11.2.SNAPSHOT",org.arg\r
- eo.slc.ws.client;version="0.11.2.SNAPSHOT",org.argeo.slc.ws.client.sp\r
- ring;version="0.11.2.SNAPSHOT",org.argeo.slc.ws.process;version="0.11\r
- .2.SNAPSHOT",org.argeo.slc.ws.test.tree;version="0.11.2.SNAPSHOT",org\r
- .springframework.beans;version="2.5.6.A",org.springframework.beans.fa\r
- ctory;version="2.5.6.A",org.springframework.beans.factory.config;vers\r
- ion="2.5.6.A",org.springframework.beans.factory.support;version="2.5.\r
- 6.A",org.springframework.beans.factory.xml;version="2.5.6.A",org.spri\r
- ngframework.context;version="2.5.6.A",org.springframework.context.sup\r
- port;version="2.5.6.A",org.springframework.core.io;version="2.5.6.A",\r
- org.springframework.oxm;version="1.5.5.A",org.springframework.util;ve\r
- rsion="2.5.6.A",org.springframework.ws;version="1.5.5.A",org.springfr\r
- amework.ws.client;version="1.5.5.A",org.springframework.ws.client.cor\r
- e;version="1.5.5.A",org.springframework.ws.client.support.interceptor\r
- ;version="1.5.5.A",org.springframework.ws.context;version="1.5.5.A",o\r
- rg.springframework.ws.soap;version="1.5.5.A",org.springframework.ws.s\r
- oap.client;version="1.5.5.A",org.springframework.xml.transform;versio\r
- n="1.5.5.A",org.springframework.xml.validation;version="1.5.5.A",org.\r
- w3c.dom;version="1.3",org.xml.sax;version="1.3"\r
-Bundle-SymbolicName: org.argeo.slc.agent\r
+Import-Package: javax.xml.transform;version="1.3",org.apache.commons.l\r
+ ogging;version="1.1",org.argeo.slc.ant.detached;version="0.11.2.SNAPS\r
+ HOT",org.argeo.slc.ant.spring;version="0.11.2.SNAPSHOT",org.argeo.slc\r
+ .ant.structure;version="0.11.2.SNAPSHOT",org.argeo.slc.core;version="\r
+ 0.11.2.SNAPSHOT",org.argeo.slc.core.structure.tree;version="0.11.2.SN\r
+ APSHOT",org.argeo.slc.core.test;version="0.11.2.SNAPSHOT",org.argeo.s\r
+ lc.core.test.context;version="0.11.2.SNAPSHOT",org.argeo.slc.detached\r
+ ;version="0.11.2.SNAPSHOT",org.argeo.slc.detached.ui;version="0.11.2.\r
+ SNAPSHOT",org.argeo.slc.lib.detached;version="0.11.2.SNAPSHOT",org.ar\r
+ geo.slc.spring;version="0.11.2.SNAPSHOT",org.springframework.beans;ve\r
+ rsion="2.5.6.A",org.springframework.beans.factory;version="2.5.6.A",o\r
+ rg.springframework.beans.factory.config;version="2.5.6.A",org.springf\r
+ ramework.beans.factory.support;version="2.5.6.A",org.springframework.\r
+ context;version="2.5.6.A",org.springframework.oxm;version="1.5.5.A"\r
+Bundle-SymbolicName: org.argeo.slc.lib.detached\r
Bundle-DocURL: http://www.argeo.org\r
Originally-Created-By: 1.6.0 (Sun Microsystems Inc.)\r
\r
+++ /dev/null
-log4j.rootLogger=WARN, console, file
-
-## Levels
-log4j.logger.org.argeo=INFO
-
-## Ant (Ant error logging is to verbose)
-log4j.logger.org.apache.tools.ant.UnknownElement=OFF
-log4j.logger.org.apache.tools.ant.Target=OFF
-log4j.logger.org.apache.tools.ant.Project=OFF
-
-## Appenders
-# console uses PatternLayout.
-log4j.appender.console=org.apache.log4j.ConsoleAppender
-log4j.appender.console.layout=org.apache.log4j.PatternLayout
-log4j.appender.console.layout.ConversionPattern= %-5p %d{ISO8601} %m - %c%n
-
-# file uses PatternLayout
-log4j.appender.file=org.apache.log4j.RollingFileAppender
-log4j.appender.file.File=${slc.workDir}/log/slcApp.log
-log4j.appender.file.MaxFileSize=1MB
-log4j.appender.file.MaxBackupIndex=5
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern= %-5p %d{ISO8601} %m - %c%n
+++ /dev/null
-# Tasks\r
-slc.test=org.argeo.slc.ant.test.SlcTestTask\r
-slc.deploy=org.argeo.slc.ant.deploy.SlcDeployTask\r
-slc.manager=org.argeo.slc.ant.deploy.SlcManagerTask\r
-slc.closeResult=org.argeo.slc.ant.test.SlcCloseTestResultTask\r
-slc.report=org.argeo.slc.ant.test.SlcReportTask\r
-slc.register=org.argeo.slc.ant.spring.SpringRegister\r
-slc.detached=org.argeo.slc.ant.detached.SlcDetachedTask\r
+++ /dev/null
-# Types\r
-slc.context=org.argeo.slc.ant.test.ParentContextType\r
+++ /dev/null
-log4j.rootLogger=WARN, console\r
-\r
-## Levels\r
-log4j.logger.org.argeo=INFO\r
-\r
-## Appenders\r
-# console is set to be a ConsoleAppender.\r
-log4j.appender.console=org.apache.log4j.ConsoleAppender\r
-\r
-# console uses PatternLayout.\r
-log4j.appender.console.layout=org.apache.log4j.PatternLayout\r
-log4j.appender.console.layout.ConversionPattern= %-5p %d{ISO8601} %m - %c%n\r
-\r
+++ /dev/null
-<project>\r
-\r
- <target name="deployZip">
- <unzip src="${src}" dest="${tempDir}" />
- <copyFromTemp />
- </target>
-
- <target name="deployTarGz">
- <untar src="${src}" dest="${tempDir}" compression="gzip" />
- <copyFromTemp />
- </target>
-
- <macrodef name="copyFromTemp">
- <sequential>
- <copy todir="${dest}" includeemptydirs="true">
- <fileset dir="${tempDir}">
- <include name="**/*" />
- </fileset>
- <mapper classname="org.argeo.slc.ant.RemoveRootDirMapper" to="${removeRootDir}" />
- </copy>
- </sequential>
- </macrodef>
-</project>
\ No newline at end of file
+++ /dev/null
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
- default-lazy-init="true">
-
- <import
- resource="classpath:/org/argeo/slc/castor/spring/applicationContext.xml" />
- <import
- resource="classpath:/org/argeo/slc/xml/spring/applicationContext.xml" />
-
- <bean id="slcDefault.ws.client.webServiceTemplate"
- parent="slcTemplate.ws.client.webServiceTemplate">
- <constructor-arg ref="slcDefault.ws.client.messageFactory" />
- <property name="defaultUri" value="${slc.ws.uri}" />
- </bean>
-
- <bean
- class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
- lazy-init="false">
- <property name="systemPropertiesModeName"
- value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
- <property name="ignoreUnresolvablePlaceholders" value="true" />
- <property name="properties">
- <props>
- <prop key="slc.ws.uri">
- http://localhost:9090/org.argeo.slc.webapp/slcService/
- </prop>
- </props>
- </property>
- </bean>
-
- <bean id="slcTemplate.ws.client.webServiceTemplate"
- class="org.springframework.ws.client.core.WebServiceTemplate"
- abstract="true">
- <property name="marshaller" ref="slcDefault.castor.marshaller" />
- <property name="unmarshaller"
- ref="slcDefault.castor.marshaller" />
- <property name="interceptors">
- <list>
- <bean
- class="org.argeo.slc.ws.client.ValidatingClientInterceptor">
- <property name="validator"
- ref="slcDefault.xml.xsdValidator" />
- </bean>
- </list>
- </property>
- </bean>
-
- <bean id="slcDefault.ws.client.messageFactory"
- class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory" />
-
- <bean name="slcDefault.ws.client.treeTestResultWsNotfier"
- class="org.argeo.slc.ws.test.tree.WebServiceTreeTestResultNotifier">
- <property name="template"
- ref="slcDefault.ws.client.webServiceTemplate" />
- <property name="onlyOnClose" value="false" />
- </bean>
-
- <bean name="slcDefault.ws.client.slcExecutionNotifier"
- class="org.argeo.slc.ws.process.WebServiceSlcExecutionNotifier">
- <property name="template"
- ref="slcDefault.ws.client.webServiceTemplate" />
- </bean>
-
-</beans>
+++ /dev/null
-Argeo SLC Site
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.ant;
-
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-import java.util.Vector;
-
-public class DummyObject {
- private String name;
- private Long value;
- private DummyObject other;
- private List<DummyObject> children = new Vector<DummyObject>();
- private Map<String, DummyObject> map = new TreeMap<String, DummyObject>();
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public Long getValue() {
- return value;
- }
-
- public void setValue(Long value) {
- this.value = value;
- }
-
- public DummyObject getOther() {
- return other;
- }
-
- public void setOther(DummyObject other) {
- this.other = other;
- }
-
- public List<DummyObject> getChildren() {
- return children;
- }
-
- public void setChildren(List<DummyObject> children) {
- this.children = children;
- }
-
- public Map<String, DummyObject> getMap() {
- return map;
- }
-
- public void setMap(Map<String, DummyObject> map) {
- this.map = map;
- }
-
-}
+++ /dev/null
-package org.argeo.slc.ant;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.ant.unit.MinimalAntClasspathTestCase;
-
-public class OverrideTest extends MinimalAntClasspathTestCase {
- private Log log = LogFactory.getLog(getClass());
-
- public void testSimpleRun() {
- execute("/org/argeo/slc/ant/buildOverride.xml");
- }
-
- @Override
- public void postExecution(AntExecutionContext executionContext) {
- log.info("Analyzing context after execution...");
-
- DummyObject dummy1UnModified = executionContext
- .getAntRef("dummy1.unmodified");
- assertEquals("dummy2", dummy1UnModified.getOther().getName());
- assertEquals(2, dummy1UnModified.getChildren().size());
- assertEquals(2, dummy1UnModified.getMap().size());
-
- DummyObject dummy1Modif1 = executionContext.getAntRef("dummy1.modif1");
- assertEquals("dummy1.modif1", dummy1Modif1.getName());
- assertEquals("dummy3", dummy1Modif1.getOther().getName());
-
- DummyObject dummy1Modif2 = executionContext.getAntRef("dummy1.modif2");
- assertEquals(1, dummy1Modif2.getChildren().size());
- assertEquals("dummy3", dummy1Modif2.getChildren().get(0).getName());
-
- DummyObject dummy1Modif3 = executionContext.getAntRef("dummy1.modif3");
- assertEquals(2, dummy1Modif3.getChildren().size());
- assertEquals("dummy3", dummy1Modif3.getChildren().get(0).getName());
- assertEquals("dummy2", dummy1Modif3.getChildren().get(1).getName());
-
- DummyObject dummy1Modif4 = executionContext.getAntRef("dummy1.modif4");
- assertEquals(2, dummy1Modif4.getChildren().size());
- assertEquals("dummy3", dummy1Modif4.getChildren().get(0).getName());
- assertEquals("dummy1.modif1", dummy1Modif4.getChildren().get(0)
- .getOther().getName());
- assertEquals("dummy2", dummy1Modif4.getChildren().get(1).getName());
- assertEquals(1, dummy1Modif4.getChildren().get(1).getChildren().size());
- assertEquals("dummy3", dummy1Modif4.getChildren().get(1).getChildren()
- .get(0).getName());
-
- DummyObject dummy1Modif5 = executionContext.getAntRef("dummy1.modif5");
- assertEquals(2, dummy1Modif5.getMap().size());
- assertEquals("dummy3", dummy1Modif5.getMap().get("key1").getName());
- assertEquals("dummy2", dummy1Modif5.getMap().get("key2").getName());
-
- DummyObject dummy1Modif6 = executionContext.getAntRef("dummy1.modif6");
- assertEquals(2, dummy1Modif6.getMap().size());
- assertEquals("dummy2.merged", dummy1Modif6.getMap().get("key1").getName());
- assertEquals("dummy3.merged", dummy1Modif6.getMap().get("key2").getName());
-
- }
-
- @Override
- protected String getApplicationContextLocation() {
- return inPackage("acOverride.xml");
- }
-
-}
+++ /dev/null
-package org.argeo.slc.ant;\r
-\r
-import org.argeo.slc.ant.unit.MinimalAntClasspathTestCase;\r
-\r
-public class SlcAntTest extends MinimalAntClasspathTestCase {\r
- // private Log log = LogFactory.getLog(getClass());\r
-\r
- public void testSimpleRun() {\r
- execute("/org/argeo/slc/ant/build.xml");\r
- }\r
-}\r
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
-
-
- <bean id="dummy1" parent="template.dummy" scope="prototype">
- <property name="name" value="dummy1" />
- <property name="other" ref="dummy2" />
- <property name="children">
- <list>
- <ref bean="dummy2" />
- <ref bean="dummy3" />
- </list>
- </property>
- <property name="map">
- <map>
- <entry key="key1">
- <ref bean="dummy2" />
- </entry>
- <entry key="key2">
- <ref bean="dummy3" />
- </entry>
- </map>
- </property>
- </bean>
-
- <bean id="dummy2" parent="template.dummy" scope="prototype">
- <property name="name" value="dummy2" />
- </bean>
-
- <bean id="dummy3" parent="template.dummy" scope="prototype">
- <property name="name" value="dummy3" />
- </bean>
-
- <!-- Templates -->
- <bean id="template.dummy" class="org.argeo.slc.ant.DummyObject"
- abstract="true">
- </bean>
-
-
-
-</beans>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<beans xmlns="http://www.springframework.org/schema/beans"\r
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
-\r
- <import resource="classpath:/org/argeo/slc/ant/nonDepContext.xml" />\r
-\r
- <bean id="testResult"\r
- parent="slcDefault.test.basicTreeTestResult">\r
- </bean>\r
-\r
-</beans>
\ No newline at end of file
+++ /dev/null
-<project default="test">\r
-\r
- <target name="test">\r
- <echo message="Hello World!" />\r
-\r
- <slc.test>\r
- <testDefinition bean="testDef" />\r
- <testData bean="testData1" />\r
- </slc.test>\r
-\r
- <slc.test>
- <testDefinition bean="testDef" />
- <testData bean="testData.context1" />
- </slc.test>
-
- <slc.test path="/testRoot/testContext">
- <testDefinition bean="testDef" />
- <testData bean="testData.context1" />
- </slc.test>
-
- <slc.closeResult>
- <result bean="testResult" />
- </slc.closeResult>\r
- </target>\r
-</project>
\ No newline at end of file
+++ /dev/null
-<project default="test">\r
-\r
- <target name="test">\r
- <slc.register>
- <object antid="dummy1.unmodified" bean="dummy1" />
- <object antid="dummy1.modif1" bean="dummy1">
- <override name="name" value="dummy1.modif1" />
- <override name="other" bean="dummy3" />
- </object>
- <object antid="dummy1.modif2" bean="dummy1">
- <override name="children">
- <list>
- <override bean="dummy3" />
- </list>
- </override>
- </object>
- <object antid="dummy1.modif3" bean="dummy1">
- <override name="children" merge="true">
- <list>
- <override>
- <override name="name" value="dummy3" />
- </override>
- <override>
- <override name="name" value="dummy2" />
- </override>
- </list>
- </override>
- </object>
- <object antid="dummy1.modif4" bean="dummy1">
- <override name="children" merge="true">
- <list>
- <override>
- <override name="name" value="dummy3" />
- <override name="other" antref="dummy1.modif1" />
- </override>
- <override>
- <override name="name" value="dummy2" />
- <override name="children">
- <list>
- <override bean="dummy3" />
- </list>
- </override>
- </override>
- </list>
- </override>
- </object>
- <object antid="dummy1.modif5" bean="dummy1">
- <override name="map">
- <map>
- <entry key="key1">
- <override bean="dummy3" />
- </entry>
- <entry key="key2">
- <override bean="dummy2" />
- </entry>
- </map>
- </override>
- </object>
- <object antid="dummy1.modif6" bean="dummy1">
- <override name="map" merge="true">
- <map>
- <entry key="key1">
- <override>
- <override name="name" value="dummy2.merged" />
- </override>
- </entry>
- <entry key="key2">
- <override>
- <override name="name" value="dummy3.merged" />
- </override>
- </entry>
- </map>
- </override>
- </object>
- </slc.register>\r
- </target>\r
-</project>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<beans xmlns="http://www.springframework.org/schema/beans"\r
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
-\r
- <import\r
- resource="classpath:/org/argeo/slc/core/test/spring/applicationContext.xml" />\r
-\r
- <bean name="testDef"\r
- class="org.argeo.slc.core.test.BasicTestDefinition" scope="prototype" />\r
-\r
- <bean name="testData1"\r
- class="org.argeo.slc.core.test.BasicTestData">\r
- <property name="expected">\r
- <value>toto</value>\r
- </property>\r
- <property name="reached">\r
- <value>toto</value>\r
- </property>\r
- </bean>\r
-\r
- <bean id="testData.context1" parent="context.template">\r
- <property name="values">\r
- <map>\r
- <entry key="reference" value="20" />\r
- <entry key="varIntern" value="60" />\r
- </map>\r
- </property>\r
- <property name="expectedValues">\r
- <map>\r
- <entry key="reference" value="21" />\r
- <entry key="varIntern" value="60" />\r
- </map>\r
- </property>\r
- </bean>\r
-\r
- <bean id="context.template"\r
- class="org.argeo.slc.core.test.context.DefaultContextTestData"\r
- abstract="true">\r
- </bean>\r
-\r
-</beans>
\ No newline at end of file
--- /dev/null
+package org.argeo.slc.runtime;
+
+import java.util.Map;
+import java.util.Properties;
+
+import org.argeo.slc.runtime.SlcExecutionContext;
+import org.argeo.slc.runtime.SlcExecutionOutput;
+
+public interface SlcRuntime<T extends SlcExecutionContext> {
+ public void executeScript(String runtime, String script, String targets,
+ Properties properties, Map<String, Object> references,
+ SlcExecutionOutput<T> executionOutput);
+}
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
- <name>org.argeo.slc.agent</name>
+ <name>org.argeo.slc.support.ant</name>
<comment></comment>
<projects>
</projects>
+++ /dev/null
-<project xmlns:artifact="urn:maven-artifact-ant" default="deploy">\r
-\r
- <path id="maven-ant-tasks.classpath"\r
- path="D:\dev\tools\maven-2.0.7\lib\maven-ant-tasks-2.0.7.jar" />\r
- <typedef resource="org/apache/maven/artifact/ant/antlib.xml"\r
- uri="urn:maven-artifact-ant"\r
- classpathref="maven-ant-tasks.classpath" />\r
-\r
- <property name="local" location="D:/dev/mavenLocal/" />\r
- <property name="local.argeo" location="${local}/org/argeo/slc/" />\r
- <property name="repo.argeo"\r
- value="file:///D:/dev/test/mavenArgeoLocalRep/" />\r
-\r
- <target name="deploy">\r
- <deploy artifact="argeo-slc-core" version="0.6.0" />\r
- </target>\r
-\r
- <!-- Macrodefs -->\r
- <macrodef name="deploy">\r
- <attribute name="artifact" />\r
- <attribute name="version" />\r
- <sequential>\r
- <artifact:install-provider artifactId="wagon-file"\r
- version="1.0-beta-2" />\r
- <artifact:deploy file="${local.argeo}/@{artifact}/@{version}/@{artifact}-@{version}.jar">\r
- <artifact:pom file="pom.xml" />\r
- <remoterepository url="${repo.argeo}" />\r
- <attach classifier="sources"\r
- file="${local.argeo}/@{artifact}/@{version}/@{artifact}-@{version}-sources.jar" />\r
- <attach classifier="javadoc"\r
- file="${local.argeo}/@{artifact}/@{version}/@{artifact}-@{version}-javadoc.jar" />\r
- </artifact:deploy>\r
- </sequential>\r
- </macrodef>\r
-</project>
\ No newline at end of file
<groupId>org.argeo.slc</groupId>
<artifactId>argeo-slc</artifactId>
<version>0.11.2-SNAPSHOT</version>
- <relativePath>../org.argeo.slc</relativePath>
+ <relativePath>../../org.argeo.slc</relativePath>
</parent>
- <artifactId>org.argeo.slc.agent</artifactId>
+ <groupId>org.argeo.slc.runtime</groupId>
+ <artifactId>org.argeo.slc.support.ant</artifactId>
<packaging>jar</packaging>
- <name>Argeo SLC Agent</name>
- <scm>
- <connection>
- scm:svn:https://www.argeo.org/svn/slc/trunk/org.argeo.slc.agent
- </connection>
- <url>
- https://www.argeo.org/svn/slc/trunk/org.argeo.slc.agent
- </url>
- </scm>
+ <name>Argeo SLC Support Ant</name>
<build>
<plugins>
<!-- Look to parent pom for inheritances -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
</plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-assembly-plugin</artifactId>
- <configuration>
- <descriptors>
- <descriptor>src/assembly/base.xml</descriptor>
- </descriptors>
- </configuration>
- <executions>
- <execution>
- <id>assembly-base</id>
- <phase>package</phase>
- <goals>
- <goal>single</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<configuration>
<instructions>
<Export-Package>
- org.argeo.slc.*
+ org.argeo.slc.ant.*
</Export-Package>
- <Import-Package>*,org.argeo.slc.core.test.spring,org.apache.commons.cli;resolution:=optional</Import-Package>
</instructions>
</configuration>
</plugin>
</build>
<dependencies>
<dependency>
- <groupId>org.argeo.slc</groupId>
- <artifactId>org.argeo.slc.core</artifactId>
+ <groupId>org.argeo.slc.runtime</groupId>
+ <artifactId>org.argeo.slc.specs</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
- <groupId>org.argeo.slc</groupId>
- <artifactId>org.argeo.slc.detached</artifactId>
+ <groupId>org.argeo.slc.runtime</groupId>
+ <artifactId>org.argeo.slc.support.simple</artifactId>
<version>${project.version}</version>
</dependency>
- <dependency>
- <groupId>org.springframework.ws</groupId>
- <artifactId>org.springframework.ws</artifactId>
- </dependency>
-
- <dependency>
- <groupId>javax.xml.soap</groupId>
- <artifactId>com.springsource.javax.xml.soap</artifactId>
- </dependency>
- <dependency>
- <groupId>com.sun.xml</groupId>
- <artifactId>
- com.springsource.com.sun.xml.messaging.saaj
- </artifactId>
- </dependency>
-
<dependency>
<groupId>org.argeo.dep.osgi</groupId>
<artifactId>org.argeo.dep.osgi.ant</artifactId>
<groupId>org.beanshell</groupId>
<artifactId>com.springsource.bsh</artifactId>
</dependency>
-
- <!--
- <dependency> <groupId>org.apache.maven</groupId>
- <artifactId>maven-embedder</artifactId> </dependency> <dependency>
- <groupId>org.apache.maven</groupId>
- <artifactId>maven-settings</artifactId> </dependency>
- -->
- <dependency>
- <groupId>org.argeo.dep.osgi</groupId>
- <artifactId>org.argeo.dep.osgi.commons.cli</artifactId>
- </dependency>
-
</dependencies>
</project>
\ No newline at end of file
+++ /dev/null
-<assembly xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/assembly-1.1.0-SNAPSHOT.xsd">
- <id>base</id>
- <includeBaseDirectory>false</includeBaseDirectory>
- <formats>
- <format>tar.gz</format>
- </formats>
- <fileSets>
- <fileSet>
- <directory>src/base</directory>
- <outputDirectory></outputDirectory>
- <fileMode>0755</fileMode>
- </fileSet>
- </fileSets>
-</assembly>
\ No newline at end of file
+++ /dev/null
-#!/bin/sh
-
-# Find home
-if [ -z "$ARGEO_SLC_HOME" -o ! -d "$ARGEO_SLC_HOME" ] ; then
- ## resolve links - $0 may be a link to home
- PRG="$0"
- progname=`basename "$0"`
-
- # need this for relative symlinks
- while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
- done
-
- ARGEO_SLC_HOME=`dirname "$PRG"`/..
-
- # make it fully qualified
- ARGEO_SLC_HOME=`cd "$ARGEO_SLC_HOME" && pwd`
-fi
-
-echo ARGEO_SLC_HOME=$ARGEO_SLC_HOME
-
-for i in "${ARGEO_SLC_HOME}"/lib/*.jar
- do
- CLASSPATH="$CLASSPATH:$i"
- done
-
-#echo CLASSPATH=$CLASSPATH
-
-java -cp $CLASSPATH org.argeo.slc.cli.SlcMain "$@"
--- /dev/null
+package org.argeo.slc.ant;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.Map;
+import java.util.Properties;
+import java.util.UUID;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.argeo.slc.core.SlcException;
+import org.argeo.slc.core.process.SlcExecution;
+import org.argeo.slc.runtime.SlcExecutionOutput;
+import org.argeo.slc.runtime.SlcRuntime;
+import org.argeo.slc.spring.SpringUtils;
+import org.springframework.core.io.DefaultResourceLoader;
+import org.springframework.core.io.FileSystemResource;
+import org.springframework.core.io.Resource;
+
+public class AntSlcRuntime implements SlcRuntime<AntExecutionContext> {
+ private final static Log log = LogFactory.getLog(AntSlcRuntime.class);
+
+ public final static String SLC_ROOT_FILE_NAME = "slcRoot.properties";
+
+ /**
+ * Simplified execution with default runtime, default target, and no
+ * properties/reference arguments.
+ *
+ * @param script
+ * path to the script
+ * @param executionOutput
+ * output
+ *
+ * @see #executeScript(String, String, String, Properties, Map,
+ * SlcExecutionOutput)
+ */
+ public void executeScript(String script,
+ SlcExecutionOutput<AntExecutionContext> executionOutput) {
+ executeScript(null, script, null, null, null, executionOutput);
+ }
+
+ /**
+ * Simplified execution with default runtime, and no properties/reference
+ * arguments.
+ *
+ * @param script
+ * path to the script
+ * @param targets
+ * comma separated list of targets
+ * @param executionOutput
+ * output
+ * @see #executeScript(String, String, String, Properties, Map,
+ * SlcExecutionOutput)
+ */
+ public void executeScript(String script, String targets,
+ SlcExecutionOutput<AntExecutionContext> executionOutput) {
+ executeScript(null, script, targets, null, null, executionOutput);
+ }
+
+ public void executeScript(String runtime, String script, String targets,
+ Properties properties, Map<String, Object> references,
+ SlcExecutionOutput<AntExecutionContext> executionOutput) {
+
+ Resource scriptRes = findScript(script);
+ Resource slcRootFile = findSlcRootFile(scriptRes);
+ if (slcRootFile == null)
+ throw new SlcException(
+ "Could not find any SLC root file, "
+ + "please configure one at the root of your scripts hierarchy.");
+
+ SlcExecution slcExecution = createSlcExecution(runtime, slcRootFile,
+ scriptRes, targets);
+
+ AntSlcApplication application = getApplication(slcRootFile);
+ application.execute(slcExecution, properties, references,
+ executionOutput);
+ }
+
+ protected Resource findScript(String scriptStr) {
+ Resource scriptRes;
+ if (new File(scriptStr).exists()) {
+ scriptRes = new FileSystemResource(scriptStr);
+ } else {
+ scriptRes = new DefaultResourceLoader(Thread.currentThread()
+ .getContextClassLoader()).getResource(scriptStr);
+ }
+ return scriptRes;
+ }
+
+ protected SlcExecution createSlcExecution(String runtimeStr,
+ Resource slcRootFile, Resource script, String targets) {
+ SlcExecution slcExecution = new SlcExecution();
+ slcExecution.setUuid(UUID.randomUUID().toString());
+ try {
+ slcExecution.setHost(InetAddress.getLocalHost().getHostName());
+ } catch (UnknownHostException e) {
+ slcExecution.setHost(SlcExecution.UNKOWN_HOST);
+ }
+
+ slcExecution.setType(AntConstants.EXECTYPE_SLC_ANT);
+
+ slcExecution.setUser(System.getProperty("user.name"));
+
+ if (runtimeStr != null)
+ slcExecution.getAttributes().put(AntConstants.EXECATTR_RUNTIME,
+ runtimeStr);
+ String scriptRelativePath = SpringUtils.extractRelativePath(SpringUtils
+ .getParent(slcRootFile), script);
+
+ slcExecution.getAttributes().put(AntConstants.EXECATTR_ANT_FILE,
+ scriptRelativePath);
+ if (targets != null)
+ slcExecution.getAttributes().put(AntConstants.EXECATTR_ANT_TARGETS,
+ targets);
+
+ slcExecution.setStatus(SlcExecution.STATUS_SCHEDULED);
+ return slcExecution;
+ }
+
+ protected AntSlcApplication getApplication(Resource slcRootFile) {
+ AntSlcApplication application = new AntSlcApplication();
+ InputStream inRootFile = null;
+ try {
+ // Remove basedir property in order to avoid conflict with Maven
+ // if (all.containsKey("basedir"))
+ // all.remove("basedir");
+
+ inRootFile = slcRootFile.getInputStream();
+ Properties rootProps = loadFile(inRootFile);
+
+ Resource confDir = null;
+ File workDir = null;
+ // Root dir
+ final Resource rootDir = SpringUtils.getParent(slcRootFile);
+
+ // Conf dir
+ String confDirStr = rootProps
+ .getProperty(AntConstants.CONF_DIR_PROPERTY);
+ if (confDirStr != null)
+ confDir = new DefaultResourceLoader(application.getClass()
+ .getClassLoader()).getResource(confDirStr);
+
+ if (confDir == null || !confDir.exists()) {
+ // confDir = rootDir.createRelative("../conf");
+ confDir = SpringUtils.getParent(rootDir)
+ .createRelative("conf/");
+ }
+
+ // Work dir
+ String workDirStr = rootProps
+ .getProperty(AntConstants.WORK_DIR_PROPERTY);
+ if (workDirStr != null) {
+ workDir = new File(workDirStr);
+ }
+
+ if (workDir == null || !workDir.exists()) {
+ try {
+ File rootDirAsFile = rootDir.getFile();
+ workDir = new File(rootDirAsFile.getParent()
+ + File.separator + "work").getCanonicalFile();
+ } catch (IOException e) {
+ workDir = new File(System.getProperty("java.io.tmpdir")
+ + File.separator + "slcExecutions" + File.separator
+ + slcRootFile.getURL().getPath());
+ log.debug("Root dir is not a file: " + e.getMessage()
+ + ", creating work dir in temp: " + workDir);
+ }
+ workDir.mkdirs();
+ }
+
+ application.setConfDir(confDir);
+ application.setRootDir(rootDir);
+ application.setWorkDir(workDir);
+
+ return application;
+ } catch (IOException e) {
+ throw new SlcException(
+ "Could not prepare SLC application for root file "
+ + slcRootFile, e);
+ } finally {
+ IOUtils.closeQuietly(inRootFile);
+ }
+ }
+
+ /**
+ * Recursively scans directories downwards until it find a file name as
+ * defined by {@link #SLC_ROOT_FILE_NAME}.
+ */
+ protected Resource findSlcRootFile(Resource currDir) {
+ if (log.isTraceEnabled())
+ log.trace("Look for SLC root file in " + currDir);
+
+ try {
+ Resource slcRootFile = currDir.createRelative(SLC_ROOT_FILE_NAME);
+ if (slcRootFile.exists()) {
+ if (log.isDebugEnabled())
+ log.debug("Found SLC root file: " + slcRootFile);
+ return slcRootFile;
+ } else {
+ String currPath = currDir.getURL().getPath();
+ if (currPath.equals("/") || currPath.equals("")) {
+ return null;
+ } else {
+ return findSlcRootFile(SpringUtils.getParent(currDir));
+ }
+ }
+ } catch (IOException e) {
+ throw new SlcException("Problem when looking in SLC root file in "
+ + currDir, e);
+ }
+ }
+
+ /** Loads the content of a file as <code>Properties</code>. */
+ private Properties loadFile(InputStream in) {
+ Properties p = new Properties();
+ try {
+ p.load(in);
+ } catch (IOException e) {
+ throw new SlcException("Cannot read SLC root file", e);
+ }
+ return p;
+ }
+}
+++ /dev/null
-package org.argeo.slc.ant.detached;
-
-import java.util.Properties;
-import java.util.UUID;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.ant.spring.MapArg;
-import org.argeo.slc.ant.structure.SAwareTask;
-import org.argeo.slc.core.SlcException;
-import org.argeo.slc.detached.DetachedAnswer;
-import org.argeo.slc.detached.DetachedClient;
-import org.argeo.slc.detached.DetachedRequest;
-import org.argeo.slc.spring.SpringUtils;
-
-public class SlcDetachedTask extends SAwareTask {
- private final static Log log = LogFactory.getLog(SlcDetachedTask.class);
-
- private String client;
- private String action;
-
- private MapArg properties;
-
- @Override
- protected void executeActions(String mode) {
- // Find detached client
- DetachedClient detachedClient = null;
- if (client != null)
- detachedClient = getBean(client);
- else
- detachedClient = SpringUtils.loadSingleFromContext(getContext(),
- DetachedClient.class);
-
- if (detachedClient == null)
- throw new SlcException("Could not find any detached client.");
-
- // Prepare and send request
- DetachedRequest request = new DetachedRequest(UUID.randomUUID()
- .toString());
- request.setRef(action);
-
- if (properties != null) {
- Properties props = new Properties();
- props.putAll(properties.getMap());
- request.setProperties(props);
- }
-
- try {
- detachedClient.sendRequest(request);
- DetachedAnswer answer = detachedClient.receiveAnswer();
- if (answer.getStatus() == DetachedAnswer.ERROR)
- throw new SlcException("Error when executing request "
- + answer.getUuid() + ": " + answer.getLog());
- else
- log.info("Admin answer: " + answer.getLog());
- } catch (Exception e) {
- throw new SlcException("Could not send request.", e);
- }
- }
-
- public void setClient(String driverBean) {
- this.client = driverBean;
- }
-
- public void setAction(String action) {
- this.action = action;
- }
-
- public MapArg createProperties() {
- if (properties == null)
- properties = new MapArg();
- else
- throw new SlcException("Properties already declared.");
- return properties;
- }
-}
import junit.framework.TestCase;
import org.argeo.slc.ant.AntExecutionContext;
-import org.argeo.slc.cli.DefaultSlcRuntime;
+import org.argeo.slc.ant.AntSlcRuntime;
import org.argeo.slc.runtime.SlcExecutionOutput;
public abstract class AntSlcApplicationTestCase extends TestCase implements
}
protected void execute(String relativeScript, String targets) {
- new DefaultSlcRuntime().executeScript(
+ new AntSlcRuntime().executeScript(
getAbsoluteScript(relativeScript), targets, this);
}
+++ /dev/null
-package org.argeo.slc.cli;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.Map;
-import java.util.Properties;
-import java.util.UUID;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.ant.AntExecutionContext;
-import org.argeo.slc.ant.AntSlcApplication;
-import org.argeo.slc.ant.AntConstants;
-import org.argeo.slc.core.SlcException;
-import org.argeo.slc.core.process.SlcExecution;
-import org.argeo.slc.runtime.SlcExecutionOutput;
-import org.argeo.slc.spring.SpringUtils;
-import org.springframework.core.io.DefaultResourceLoader;
-import org.springframework.core.io.FileSystemResource;
-import org.springframework.core.io.Resource;
-
-public class DefaultSlcRuntime {
- private final static Log log = LogFactory.getLog(DefaultSlcRuntime.class);
-
- public final static String SLC_ROOT_FILE_NAME = "slcRoot.properties";
-
- /**
- * Simplified execution with default runtime, default target, and no
- * properties/reference arguments.
- *
- * @param script
- * path to the script
- * @param executionOutput
- * output
- *
- * @see #executeScript(String, String, String, Properties, Map,
- * SlcExecutionOutput)
- */
- public void executeScript(String script,
- SlcExecutionOutput<AntExecutionContext> executionOutput) {
- executeScript(null, script, null, null, null, executionOutput);
- }
-
- /**
- * Simplified execution with default runtime, and no properties/reference
- * arguments.
- *
- * @param script
- * path to the script
- * @param targets
- * comma separated list of targets
- * @param executionOutput
- * output
- * @see #executeScript(String, String, String, Properties, Map,
- * SlcExecutionOutput)
- */
- public void executeScript(String script, String targets,
- SlcExecutionOutput<AntExecutionContext> executionOutput) {
- executeScript(null, script, targets, null, null, executionOutput);
- }
-
- public void executeScript(String runtime, String script, String targets,
- Properties properties, Map<String, Object> references,
- SlcExecutionOutput<AntExecutionContext> executionOutput) {
-
- Resource scriptRes = findScript(script);
- Resource slcRootFile = findSlcRootFile(scriptRes);
- if (slcRootFile == null)
- throw new SlcException(
- "Could not find any SLC root file, "
- + "please configure one at the root of your scripts hierarchy.");
-
- SlcExecution slcExecution = createSlcExecution(runtime, slcRootFile,
- scriptRes, targets);
-
- AntSlcApplication application = getApplication(slcRootFile);
- application.execute(slcExecution, properties, references,
- executionOutput);
- }
-
- protected Resource findScript(String scriptStr) {
- Resource scriptRes;
- if (new File(scriptStr).exists()) {
- scriptRes = new FileSystemResource(scriptStr);
- } else {
- scriptRes = new DefaultResourceLoader(SlcMain.class
- .getClassLoader()).getResource(scriptStr);
- }
- return scriptRes;
- }
-
- protected SlcExecution createSlcExecution(String runtimeStr,
- Resource slcRootFile, Resource script, String targets) {
- SlcExecution slcExecution = new SlcExecution();
- slcExecution.setUuid(UUID.randomUUID().toString());
- try {
- slcExecution.setHost(InetAddress.getLocalHost().getHostName());
- } catch (UnknownHostException e) {
- slcExecution.setHost(SlcExecution.UNKOWN_HOST);
- }
-
- slcExecution.setType(AntConstants.EXECTYPE_SLC_ANT);
-
- slcExecution.setUser(System.getProperty("user.name"));
-
- if (runtimeStr != null)
- slcExecution.getAttributes().put(AntConstants.EXECATTR_RUNTIME,
- runtimeStr);
- String scriptRelativePath = SpringUtils.extractRelativePath(SpringUtils
- .getParent(slcRootFile), script);
-
- slcExecution.getAttributes().put(AntConstants.EXECATTR_ANT_FILE,
- scriptRelativePath);
- if (targets != null)
- slcExecution.getAttributes().put(AntConstants.EXECATTR_ANT_TARGETS,
- targets);
-
- slcExecution.setStatus(SlcExecution.STATUS_SCHEDULED);
- return slcExecution;
- }
-
- protected AntSlcApplication getApplication(Resource slcRootFile) {
- AntSlcApplication application = new AntSlcApplication();
- InputStream inRootFile = null;
- try {
- // Remove basedir property in order to avoid conflict with Maven
- // if (all.containsKey("basedir"))
- // all.remove("basedir");
-
- inRootFile = slcRootFile.getInputStream();
- Properties rootProps = loadFile(inRootFile);
-
- Resource confDir = null;
- File workDir = null;
- // Root dir
- final Resource rootDir = SpringUtils.getParent(slcRootFile);
-
- // Conf dir
- String confDirStr = rootProps
- .getProperty(AntConstants.CONF_DIR_PROPERTY);
- if (confDirStr != null)
- confDir = new DefaultResourceLoader(application.getClass()
- .getClassLoader()).getResource(confDirStr);
-
- if (confDir == null || !confDir.exists()) {
- // confDir = rootDir.createRelative("../conf");
- confDir = SpringUtils.getParent(rootDir)
- .createRelative("conf/");
- }
-
- // Work dir
- String workDirStr = rootProps
- .getProperty(AntConstants.WORK_DIR_PROPERTY);
- if (workDirStr != null) {
- workDir = new File(workDirStr);
- }
-
- if (workDir == null || !workDir.exists()) {
- try {
- File rootDirAsFile = rootDir.getFile();
- workDir = new File(rootDirAsFile.getParent()
- + File.separator + "work").getCanonicalFile();
- } catch (IOException e) {
- workDir = new File(System.getProperty("java.io.tmpdir")
- + File.separator + "slcExecutions" + File.separator
- + slcRootFile.getURL().getPath());
- log.debug("Root dir is not a file: " + e.getMessage()
- + ", creating work dir in temp: " + workDir);
- }
- workDir.mkdirs();
- }
-
- application.setConfDir(confDir);
- application.setRootDir(rootDir);
- application.setWorkDir(workDir);
-
- return application;
- } catch (IOException e) {
- throw new SlcException(
- "Could not prepare SLC application for root file "
- + slcRootFile, e);
- } finally {
- IOUtils.closeQuietly(inRootFile);
- }
- }
-
- /**
- * Recursively scans directories downwards until it find a file name as
- * defined by {@link #SLC_ROOT_FILE_NAME}.
- */
- protected Resource findSlcRootFile(Resource currDir) {
- if (log.isTraceEnabled())
- log.trace("Look for SLC root file in " + currDir);
-
- try {
- Resource slcRootFile = currDir.createRelative(SLC_ROOT_FILE_NAME);
- if (slcRootFile.exists()) {
- if (log.isDebugEnabled())
- log.debug("Found SLC root file: " + slcRootFile);
- return slcRootFile;
- } else {
- String currPath = currDir.getURL().getPath();
- if (currPath.equals("/") || currPath.equals("")) {
- return null;
- } else {
- return findSlcRootFile(SpringUtils.getParent(currDir));
- }
- }
- } catch (IOException e) {
- throw new SlcException("Problem when looking in SLC root file in "
- + currDir, e);
- }
- }
-
- /** Loads the content of a file as <code>Properties</code>. */
- private Properties loadFile(InputStream in) {
- Properties p = new Properties();
- try {
- p.load(in);
- } catch (IOException e) {
- throw new SlcException("Cannot read SLC root file", e);
- }
- return p;
- }
-}
+++ /dev/null
-package org.argeo.slc.cli;
-
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.Properties;
-
-import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.CommandLineParser;
-import org.apache.commons.cli.GnuParser;
-import org.apache.commons.cli.HelpFormatter;
-import org.apache.commons.cli.Option;
-import org.apache.commons.cli.OptionBuilder;
-import org.apache.commons.cli.Options;
-import org.apache.commons.cli.ParseException;
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.ant.AntConstants;
-import org.argeo.slc.core.SlcException;
-import org.argeo.slc.logging.Log4jUtils;
-
-public class SlcMain {
- public enum Mode {
- single, agent
- }
-
- private static Log log = null;
-
- private final static String BOOTSTRAP_LOG4J_CONFIG = "org/argeo/slc/cli/bootstrapLog4j.properties";
-
- private final static Option modeOpt = OptionBuilder.withLongOpt("mode")
- .withArgName("mode").hasArg().withDescription(
- "SLC execution mode, one of: " + listModeValues()).create(
- 'm');
-
- private final static Option propertyOpt = OptionBuilder.withLongOpt(
- "property").withArgName("prop1=val1,prop2=val2").hasArgs()
- .withValueSeparator(',').withDescription(
- "use value for given property").create('p');
-
- private final static Option propertiesOpt = OptionBuilder.withLongOpt(
- "properties").withArgName("properties file").hasArgs()
- .withValueSeparator(',').withDescription(
- "load properties from file (-p has priority)").create('P');
-
- private final static Option scriptOpt = OptionBuilder.withLongOpt("script")
- .withArgName("script").hasArg().withDescription(
- "SLC script to execute").create('s');
-
- private final static Option targetsOpt = OptionBuilder.withLongOpt(
- "targets").withArgName("targets").hasArg().withDescription(
- "Targets to execute").create('t');
-
- private final static Option runtimeOpt = OptionBuilder.withLongOpt(
- "runtime").withArgName("runtime").hasArg().withDescription(
- "Runtime to use, either a full path or relative to slc app conf dir: "
- + "<conf dir>/runtime/<runtime>/.xml").create('r');
-
- private final static Options options;
-
- private final static String commandName = "slc";
-
- static {
- options = new Options();
- options.addOption(modeOpt);
- options.addOption(scriptOpt);
- options.addOption(targetsOpt);
- options.addOption(propertyOpt);
- options.addOption(propertiesOpt);
- options.addOption(runtimeOpt);
- }
-
- public static void main(String[] args) {
- Mode mode = null;
- Properties properties = new Properties();
- String script = null;
- String targets = null;
- String runtimeStr = null;
-
- try {
-
- CommandLineParser clParser = new GnuParser();
- CommandLine cl = clParser.parse(options, args);
-
- // Mode
- String modeStr = cl.getOptionValue(modeOpt.getOpt());
- if (modeStr == null) {
- mode = Mode.single;
- } else {
- try {
- mode = Mode.valueOf(modeStr);
- } catch (IllegalArgumentException e) {
- throw new SlcException("Unrecognized mode '" + modeStr
- + "'", e);
- }
- }
-
- // Script
- if (mode.equals(Mode.single)) {
- if (!cl.hasOption(scriptOpt.getOpt()))
- throw new SlcException("Mode " + Mode.single
- + " requires option '" + scriptOpt.getLongOpt()
- + "'");
- script = cl.getOptionValue(scriptOpt.getOpt());
-
- // Targets
- if (cl.hasOption(targetsOpt.getOpt()))
- targets = cl.getOptionValue(targetsOpt.getOpt());
- }
-
- // Properties
- if (cl.hasOption(propertiesOpt.getOpt())) {
- for (String propertyFile : cl.getOptionValues(propertiesOpt
- .getOpt())) {
- loadPropertyFile(properties, propertyFile);
- }
- }
- if (cl.hasOption(propertyOpt.getOpt())) {
- for (String property : cl.getOptionValues(propertyOpt.getOpt())) {
- addProperty(properties, property);
- }
- }
-
- // Runtime
- if (cl.hasOption(runtimeOpt.getOpt())) {
- runtimeStr = cl.getOptionValue(runtimeOpt.getOpt());
- }
- } catch (ParseException e) {
- System.err.println("Problem with command line arguments. "
- + e.getMessage());
- badExit();
- } catch (SlcException e) {
- System.err.println(e.getMessage());
- badExit();
- } catch (Exception e) {
- System.err.println("Unexpected exception when bootstrapping.");
- e.printStackTrace();
- badExit();
- }
-
- // Initializes logging and log arguments
- initLogging(properties);
- if (log.isDebugEnabled()) {
- log.debug("Mode: " + mode);
- if (runtimeStr != null)
- log.debug("Runtime: " + runtimeStr);
- log.debug("User properties: " + properties);
- if (script != null)
- log.debug("Script: " + script);
- if (targets != null)
- log.debug("Targets: " + targets);
- }
-
- // Execution
- if (mode.equals(Mode.single)) {
- try {
- DefaultSlcRuntime runtime = new DefaultSlcRuntime();
- runtime.executeScript(runtimeStr, script, targets, properties,
- null, null);
- //System.exit(0);
- } catch (SlcException e) {
- log.error("SLC client terminated with an error: ", e);
- System.exit(1);
- }
- }
- }
-
- public static void printUsage() {
- new HelpFormatter().printHelp(commandName, options, true);
- }
-
- private static String listModeValues() {
- StringBuffer buf = new StringBuffer("");
- for (Mode mode : Mode.values()) {
- buf.append(mode).append(", ");
- }
- String str = buf.toString();
- // unsafe, but there will be at least one value in the enum
- return str.substring(0, str.length() - 2);
- }
-
- protected static void addProperty(Properties properties, String property) {
- int eqIndex = property.indexOf('=');
- if (eqIndex == 0)
- throw new SlcException("Badly formatted property " + property);
-
- if (eqIndex > 0) {
- String key = property.substring(0, eqIndex);
- String value = property.substring(eqIndex + 1);
- properties.setProperty(key, value);
-
- } else {
- properties.setProperty(property, "true");
- }
- }
-
- protected static void loadPropertyFile(Properties properties,
- String propertyFile) {
- FileInputStream in = null;
- try {
- in = new FileInputStream(propertyFile);
- properties.load(in);
- } catch (Exception e) {
- throw new SlcException("Could not load proeprty file "
- + propertyFile);
- } finally {
- IOUtils.closeQuietly(in);
- }
- }
-
- private static void initLogging(Properties userProperties) {
- System.setProperty("log4j.defaultInitOverride", "true");
-
- // Add log4j user properties to System properties
- for (Object obj : userProperties.keySet()) {
- String key = obj.toString();
- if (key.startsWith("log4j.")) {
- System.setProperty(key, userProperties.getProperty(key));
- }
- }
- Log4jUtils.initLog4j(System.getProperty("log4j.configuration",
- "classpath:" + BOOTSTRAP_LOG4J_CONFIG));
- log = LogFactory.getLog(SlcMain.class);
-
- }
-
- private static void badExit() {
- printUsage();
- System.exit(1);
- }
-}
+++ /dev/null
-package org.argeo.slc.lib.detached;
-
-import org.argeo.slc.core.test.context.DefaultContextTestData;
-
-public class DetachedTestData extends DefaultContextTestData {
-
-}
+++ /dev/null
-package org.argeo.slc.lib.detached;
-
-import java.util.Map;
-import java.util.Properties;
-import java.util.UUID;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.core.SlcException;
-import org.argeo.slc.core.structure.tree.TreeSRelatedHelper;
-import org.argeo.slc.core.test.SimpleResultPart;
-import org.argeo.slc.core.test.TestDefinition;
-import org.argeo.slc.core.test.TestResult;
-import org.argeo.slc.core.test.TestRun;
-import org.argeo.slc.core.test.TestStatus;
-import org.argeo.slc.core.test.context.ContextUtils;
-import org.argeo.slc.detached.DetachedAnswer;
-import org.argeo.slc.detached.DetachedClient;
-import org.argeo.slc.detached.DetachedRequest;
-import org.argeo.slc.detached.DetachedStep;
-import org.argeo.slc.detached.ui.UiStep;
-import org.springframework.beans.BeansException;
-import org.springframework.beans.PropertyValue;
-import org.springframework.beans.factory.BeanFactory;
-import org.springframework.beans.factory.BeanFactoryAware;
-import org.springframework.beans.factory.BeanInitializationException;
-import org.springframework.beans.factory.BeanNameAware;
-import org.springframework.beans.factory.InitializingBean;
-import org.springframework.beans.factory.config.BeanDefinition;
-import org.springframework.beans.factory.config.BeanReference;
-import org.springframework.beans.factory.support.BeanDefinitionRegistry;
-
-public class DetachedTestDefinition extends TreeSRelatedHelper implements
- TestDefinition, BeanNameAware, BeanFactoryAware, InitializingBean {
- private final static Log log = LogFactory
- .getLog(DetachedTestDefinition.class);
-
- private DetachedStep step;
- private DetachedClient client;
-
- // Spring properties
- private String testDefBeanName = null;
- private BeanDefinitionRegistry beanDefinitionRegistry = null;
- private String stepRef = null;
-
- public void execute(TestRun testRun) {
- // Look for step bean name
- String stepBeanNameT = null;
- if (this.stepRef == null && step != null) {
- if (step instanceof UiStep) {
- stepBeanNameT = ((UiStep) step).getBeanName();
- } else {
- // Introspects bean factory in order to find step bean name
- BeanDefinition thisBeanDef = beanDefinitionRegistry
- .getBeanDefinition(testDefBeanName);
- PropertyValue propValue = thisBeanDef.getPropertyValues()
- .getPropertyValue("step");
- Object stepBeanRef = propValue.getValue();
- BeanReference ref = (BeanReference) stepBeanRef;
- stepBeanNameT = ref.getBeanName();
- }
- } else if (this.stepRef != null) {
- stepBeanNameT = this.stepRef;
- }
-
- // Execute
- DetachedRequest request = new DetachedRequest();
- request.setPath(getBasePath().toString());
- request.setUuid(UUID.randomUUID().toString());
- request.setRef(stepBeanNameT);
-
- DetachedTestData testData = testRun.getTestData();
- if (testData != null) {
- Map<String, Object> values = testData.getValues();
- Properties inputParameters = new Properties();
- inputParameters.putAll(values);// TODO: check conversions to string
- request.setProperties(inputParameters);
- }
-
- try {
- client.sendRequest(request);
- } catch (Exception e) {
- throw new SlcException("Could not send request for step "
- + stepBeanNameT, e);
- }
-
- try {
- DetachedAnswer answer = client.receiveAnswer();
- if (answer.getStatus() == DetachedAnswer.ERROR)
- throw new SlcException("Error when executing step "
- + answer.getUuid() + ": " + answer.getLog());
- else
- log.info("Received answer for '" + request.getRef() + "' ("
- + answer.getStatusAsString() + "):" + answer.getLog());
-
- if (testData != null) {
- Properties outputParameters = answer.getProperties();
- for (Object key : outputParameters.keySet())
- testData.getValues().put(key.toString(),
- outputParameters.get(key));
- }
- } catch (Exception e) {
- throw new SlcException("Could not receive answer #"
- + request.getUuid() + " for step " + stepBeanNameT, e);
- }
-
- if (testData != null) {
- ContextUtils.compareReachedExpected(testData, testRun
- .getTestResult(), this);
- } else {
- ((TestResult)testRun.getTestResult()).addResultPart(
- new SimpleResultPart(TestStatus.PASSED, "Step "
- + stepBeanNameT + " executed successfully"));
- }
- }
-
- public void setBeanName(String name) {
- this.testDefBeanName = name;
- }
-
- public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
- if (beanFactory instanceof BeanDefinitionRegistry)
- beanDefinitionRegistry = (BeanDefinitionRegistry) beanFactory;
- else
- throw new BeanInitializationException(
- "Require BeanDefinitionRegistry");
- }
-
- public void afterPropertiesSet() throws Exception {
- }
-
- public void setStep(DetachedStep step) {
- this.step = step;
- }
-
- public void setClient(DetachedClient client) {
- this.client = client;
- }
-
- public void setStepRef(String stepBeanName) {
- this.stepRef = stepBeanName;
- }
-
-}
+++ /dev/null
-package org.argeo.slc.lib.detached;
-
-import java.io.IOException;
-
-import javax.xml.transform.Result;
-import javax.xml.transform.Source;
-
-import org.argeo.slc.core.SlcException;
-import org.argeo.slc.detached.DetachedAnswer;
-import org.argeo.slc.detached.DetachedCommunication;
-import org.argeo.slc.detached.DetachedException;
-import org.argeo.slc.detached.DetachedRequest;
-import org.argeo.slc.detached.DetachedXmlConverter;
-import org.springframework.oxm.Marshaller;
-import org.springframework.oxm.Unmarshaller;
-import org.springframework.oxm.XmlMappingException;
-import org.springframework.xml.validation.XmlValidator;
-import org.xml.sax.InputSource;
-
-public class DetachedXmlConverterSpring implements DetachedXmlConverter {
- private Marshaller marshaller;
- private Unmarshaller unmarshaller;
-
- public void marshallCommunication(DetachedCommunication detCom,
- Result result) {
- if (detCom instanceof DetachedRequest) {
- marshallRequest((DetachedRequest) detCom, result);
- } else if (detCom instanceof DetachedAnswer) {
- marshallAnswer((DetachedAnswer) detCom, result);
- } else {
- throw new DetachedException("Unkown communication type "
- + detCom.getClass());
- }
- }
-
- public DetachedCommunication unmarshallCommunication(Source source) {
- try {
- return (DetachedCommunication) unmarshaller.unmarshal(source);
- } catch (Exception e) {
- throw new SlcException("Could not unmarshall", e);
- }
- }
-
- public void marshallRequest(DetachedRequest request, Result result) {
- try {
- marshaller.marshal(request, result);
- } catch (Exception e) {
- throw new SlcException("Could not marshall", e);
- }
- }
-
- public void marshallAnswer(DetachedAnswer answer, Result result) {
- try {
- marshaller.marshal(answer, result);
- } catch (Exception e) {
- throw new SlcException("Could not marshall", e);
- }
- }
-
- public void setMarshaller(Marshaller marshaller) {
- this.marshaller = marshaller;
- }
-
- public void setUnmarshaller(Unmarshaller unmarshaller) {
- this.unmarshaller = unmarshaller;
- }
-
-}
+++ /dev/null
-package org.argeo.slc.maven;
-
-import java.io.File;
-import java.net.URL;
-import java.util.Map;
-import java.util.Properties;
-import java.util.UUID;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.ant.AntRunner;
-import org.argeo.slc.core.SlcException;
-import org.argeo.slc.core.deploy.DeployEnvironment;
-
-public class MavenDeployEnvironment {/*implements DeployEnvironment {
- private static final Log log = LogFactory
- .getLog(MavenDeployEnvironment.class);
- private MavenManager mavenManager;
-
- public void unpackTo(Object packg, File targetLocation,
- Map<String, String> filter) {
- File packageLocation;
- String type = null;
- String removeRootDir = "enabled";
- if (packg instanceof MavenFile) {
- packageLocation = mavenManager
- .getPackageLocation((MavenFile) packg);
- type = ((MavenFile) packg).getType();
- } else if (packg instanceof File) {
- packageLocation = (File) packg;
- // TODO: type based on extension
- } else {
- throw new SlcException("Unrecognized package type "
- + packg.getClass());
- }
- if (log.isDebugEnabled()) {
- log.debug("Unpack " + packageLocation + " of type " + type + " to "
- + targetLocation);
- }
-
- try {
- File tempDir = new File("/tmp/" + UUID.randomUUID().toString());
- tempDir.mkdirs();
- targetLocation.mkdirs();
- Properties props = new Properties();
- props.setProperty("dest", targetLocation.getAbsolutePath());
- props.setProperty("src", packageLocation.getAbsolutePath());
- props.setProperty("tempDir", tempDir.getAbsolutePath());
- props.setProperty("removeRootDir", removeRootDir);
-
- URL antUrl = getClass().getClassLoader().getResource(
- "org/argeo/slc/support/deploy/ant/build.xml");
-
- if (type == null || type.equals("zip")) {
- new AntRunner(antUrl, "deployZip", props).run();
- } else if (type.equals("tar.gz")) {
- new AntRunner(antUrl, "deployTarGz", props).run();
- } else {
- throw new SlcException("Unknow package type " + type);
- }
- } catch (SlcException e) {
- throw e;
- } catch (Exception e) {
- throw new SlcException("Cannot unpack package " + packg + " to "
- + targetLocation, e);
- }
- }
-
- public void setMavenManager(MavenManager mavenManager) {
- this.mavenManager = mavenManager;
- }
-*/
-}
+++ /dev/null
-package org.argeo.slc.maven;\r
-\r
-import org.argeo.slc.core.build.Distribution;\r
-import org.argeo.slc.core.deploy.DeploymentData;\r
-\r
-public class MavenFile implements Distribution, DeploymentData {\r
- private String groupId;\r
- private String artifactId;\r
- private String version;\r
- private String type;\r
- private String classifier;\r
-\r
- private String distributionId;\r
-\r
- public String getDistributionId() {\r
- return distributionId;\r
- }\r
-\r
- public void setDistributionId(String distributionId) {\r
- this.distributionId = distributionId;\r
- }\r
-\r
- public String getGroupId() {\r
- return groupId;\r
- }\r
-\r
- public void setGroupId(String groupId) {\r
- this.groupId = groupId;\r
- }\r
-\r
- public String getArtifactId() {\r
- return artifactId;\r
- }\r
-\r
- public void setArtifactId(String artifactId) {\r
- this.artifactId = artifactId;\r
- }\r
-\r
- public String getVersion() {\r
- return version;\r
- }\r
-\r
- public void setVersion(String version) {\r
- this.version = version;\r
- }\r
-\r
- public String getType() {\r
- return type;\r
- }\r
-\r
- public void setType(String type) {\r
- this.type = type;\r
- }\r
-\r
- public String getClassifier() {\r
- return classifier;\r
- }\r
-\r
- public void setClassifier(String classifier) {\r
- this.classifier = classifier;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.maven;\r
-\r
-import java.io.File;\r
-import java.util.List;\r
-import java.util.Vector;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-//import org.apache.maven.artifact.Artifact;\r
-//import org.apache.maven.artifact.repository.ArtifactRepository;\r
-//import org.apache.maven.embedder.MavenEmbedder;\r
-//import org.apache.maven.embedder.MavenEmbedderException;\r
-\r
-import org.argeo.slc.core.SlcException;\r
-\r
-public class MavenManager {/* FIXME\r
- private final Log log = LogFactory.getLog(getClass());\r
-\r
- private String localRepositoryPath;\r
-\r
- private ArtifactRepository localRepository;\r
- private List<ArtifactRepository> remoteRepositoriesInternal;\r
- private List<RemoteRepository> remoteRepositories = new Vector<RemoteRepository>();\r
-\r
- private MavenEmbedder mavenEmbedder;\r
-\r
- public void init() {\r
- try {\r
- mavenEmbedder = new MavenEmbedder();\r
- mavenEmbedder.setOffline(true);\r
- mavenEmbedder.setClassLoader(Thread.currentThread()\r
- .getContextClassLoader());\r
- mavenEmbedder.start();\r
-\r
- mavenEmbedder.setLocalRepositoryDirectory(new File(\r
- localRepositoryPath));\r
-\r
- localRepository = mavenEmbedder.getLocalRepository();\r
-\r
- remoteRepositoriesInternal = new Vector<ArtifactRepository>();\r
- for (RemoteRepository remoteRepository : remoteRepositories) {\r
-\r
- ArtifactRepository repository = mavenEmbedder.createRepository(\r
- remoteRepository.getUrl(), remoteRepository.getId());\r
- remoteRepositoriesInternal.add(repository);\r
- }\r
-\r
- } catch (Exception e) {\r
- throw new SlcException("Cannot initialize Maven manager", e);\r
- }\r
- }\r
-\r
- private Artifact resolve(MavenFile mavenDistribution) {\r
- try {\r
- Artifact artifact;\r
- if (mavenDistribution.getClassifier() == null) {\r
- artifact = mavenEmbedder.createArtifact(mavenDistribution\r
- .getGroupId(), mavenDistribution.getArtifactId(),\r
- mavenDistribution.getVersion(),\r
- Artifact.SCOPE_PROVIDED, mavenDistribution.getType());\r
- } else {\r
- artifact = mavenEmbedder.createArtifactWithClassifier(\r
- mavenDistribution.getGroupId(), mavenDistribution\r
- .getArtifactId(), mavenDistribution\r
- .getVersion(), mavenDistribution.getType(),\r
- mavenDistribution.getClassifier());\r
- }\r
-\r
- mavenEmbedder.resolve(artifact, remoteRepositoriesInternal,\r
- localRepository);\r
-\r
- return artifact;\r
- } catch (Exception e) {\r
- throw new SlcException("Cannot resolve artifact.", e);\r
- }\r
- }\r
-\r
- public File getPackageLocation(MavenFile mavenDistribution) {\r
- return resolve(mavenDistribution).getFile();\r
- }\r
-\r
- public void destroy() {\r
- try {\r
- if (mavenEmbedder != null) {\r
- mavenEmbedder.stop();\r
- }\r
- } catch (MavenEmbedderException e) {\r
- log.error("Cannot destroy Maven manager", e);\r
- }\r
- }\r
-\r
- public void setLocalRepositoryPath(String localRepositoryPath) {\r
- this.localRepositoryPath = localRepositoryPath;\r
- }\r
-\r
- public List<RemoteRepository> getRemoteRepositories() {\r
- return remoteRepositories;\r
- }\r
-\r
- public void setRemoteRepositories(List<RemoteRepository> remoteRepositories) {\r
- this.remoteRepositories = remoteRepositories;\r
- }\r
-*/\r
-}\r
+++ /dev/null
-package org.argeo.slc.maven;
-
-public class RemoteRepository {
- private String id;
- private String url;
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getUrl() {
- return url;
- }
-
- public void setUrl(String url) {
- this.url = url;
- }
-
-}
+++ /dev/null
-package org.argeo.slc.ws.client;\r
-\r
-import java.io.IOException;\r
-\r
-import javax.xml.transform.Source;\r
-\r
-import org.springframework.ws.client.WebServiceClientException;\r
-import org.springframework.ws.client.WebServiceIOException;\r
-import org.springframework.ws.client.support.interceptor.ClientInterceptor;\r
-import org.springframework.ws.context.MessageContext;\r
-import org.springframework.xml.validation.XmlValidator;\r
-import org.xml.sax.SAXParseException;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-\r
-public class ValidatingClientInterceptor implements ClientInterceptor {\r
- private final static Log log = LogFactory\r
- .getLog(ValidatingClientInterceptor.class);\r
-\r
- private Boolean validateRequest = true;\r
- private Boolean validateResponse = false;\r
- private XmlValidator validator = null;\r
-\r
- public boolean handleFault(MessageContext messageContext)\r
- throws WebServiceClientException {\r
- return true;\r
- }\r
-\r
- public boolean handleRequest(MessageContext messageContext)\r
- throws WebServiceClientException {\r
- if (validateRequest) {\r
- if (messageContext.getRequest() == null)\r
- return true;\r
-\r
- Source source = messageContext.getRequest().getPayloadSource();\r
- try {\r
- return validate(source);\r
- } catch (IOException e) {\r
- throw new WebServiceIOException("Cannot validate request", e);\r
- }\r
- } else {\r
- return true;\r
- }\r
- }\r
-\r
- public boolean handleResponse(MessageContext messageContext)\r
- throws WebServiceClientException {\r
- if (validateResponse) {\r
- if (messageContext.getResponse() == null)\r
- return true;\r
-\r
- Source source = messageContext.getResponse().getPayloadSource();\r
- try {\r
- return validate(source);\r
- } catch (IOException e) {\r
- throw new WebServiceIOException("Cannot validate response", e);\r
- }\r
- } else {\r
- return true;\r
- }\r
- }\r
-\r
- protected boolean validate(Source source) throws IOException {\r
- SAXParseException[] exceptions = validator.validate(source);\r
- if (exceptions.length != 0) {\r
- for (SAXParseException ex : exceptions) {\r
- log.error(ex.getMessage());\r
- }\r
- return false;\r
- } else {\r
- return true;\r
- }\r
- }\r
-\r
- public void setValidateRequest(Boolean validateRequest) {\r
- this.validateRequest = validateRequest;\r
- }\r
-\r
- public void setValidateResponse(Boolean validateResponse) {\r
- this.validateResponse = validateResponse;\r
- }\r
-\r
- public void setValidator(XmlValidator validator) {\r
- this.validator = validator;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ws.client;\r
-\r
-import java.util.Iterator;\r
-\r
-import javax.xml.transform.Source;\r
-import javax.xml.transform.dom.DOMSource;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-import org.springframework.ws.client.core.WebServiceTemplate;\r
-import org.springframework.ws.soap.SoapFaultDetail;\r
-import org.springframework.ws.soap.SoapFaultDetailElement;\r
-import org.springframework.ws.soap.client.SoapFaultClientException;\r
-import org.springframework.xml.transform.StringResult;\r
-import org.w3c.dom.Node;\r
-\r
-public abstract class WebServiceUtils {\r
- private final static Log log = LogFactory.getLog(WebServiceUtils.class);\r
-\r
- public static Object marshalSendAndReceiveSafe(WebServiceTemplate template,\r
- Object req) {\r
- try {\r
- Object resp = marshalSendAndReceive(template, req);\r
- return resp;\r
- } catch (Exception e) {\r
- log.error("Cannot send web servicerequest: " + e.getMessage());\r
- if (log.isDebugEnabled()) {\r
- log.debug("Webservice exception details: ", e);\r
- }\r
- return null;\r
- }\r
- }\r
-\r
- public static Object marshalSendAndReceive(WebServiceTemplate template,\r
- Object req) {\r
- if (log.isTraceEnabled()) {\r
- try {\r
- StringResult result = new StringResult();\r
- template.getMarshaller().marshal(req, result);\r
- log.trace("About to send " + result);\r
- } catch (Exception e) {\r
- log.error("Cannot marshall " + req + " for logging", e);\r
- }\r
- }\r
- Object resp = template.marshalSendAndReceive(req);\r
- return resp;\r
- }\r
-\r
- public static void manageSoapException(SoapFaultClientException e) {\r
- log\r
- .error("WS root cause: "\r
- + e.getSoapFault().getFaultStringOrReason());\r
- if (log.isTraceEnabled()) {\r
- StringBuffer stack = new StringBuffer("");\r
- SoapFaultDetail detail = e.getSoapFault().getFaultDetail();\r
- if (detail != null) {\r
- Iterator<SoapFaultDetailElement> it = (Iterator<SoapFaultDetailElement>) detail\r
- .getDetailEntries();\r
- while (it.hasNext()) {\r
- SoapFaultDetailElement elem = it.next();\r
- if (elem.getName().getLocalPart().equals("StackElement")) {\r
- Source source = elem.getSource();\r
- if (source instanceof DOMSource) {\r
- Node node = ((DOMSource) source).getNode();\r
- // stack.append(node.getTextContent()).append('\n');\r
- stack\r
- .append(\r
- node.getChildNodes().item(0)\r
- .getNodeValue()).append(\r
- '\n');\r
- }\r
- }\r
- }\r
-\r
- if (stack.length() > 0)\r
- log.error("WS root cause stack: " + stack);\r
- }\r
- }\r
- }\r
-\r
- private WebServiceUtils() {\r
-\r
- }\r
-}\r
+++ /dev/null
-package org.argeo.slc.ws.process;\r
-\r
-import java.util.List;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-import org.argeo.slc.core.process.SlcExecution;\r
-import org.argeo.slc.core.process.SlcExecutionNotifier;\r
-import org.argeo.slc.core.process.SlcExecutionStep;\r
-import org.argeo.slc.msg.process.SlcExecutionRequest;\r
-import org.argeo.slc.msg.process.SlcExecutionStatusRequest;\r
-import org.argeo.slc.msg.process.SlcExecutionStepsRequest;\r
-import org.argeo.slc.ws.client.WebServiceUtils;\r
-import org.springframework.ws.client.WebServiceIOException;\r
-import org.springframework.ws.client.core.WebServiceTemplate;\r
-import org.springframework.ws.soap.client.SoapFaultClientException;\r
-\r
-public class WebServiceSlcExecutionNotifier implements SlcExecutionNotifier {\r
- private WebServiceTemplate template;\r
-\r
- private Log log = LogFactory.getLog(getClass());\r
-\r
- private Boolean cannotConnect = false;\r
-\r
- public void newExecution(SlcExecution slcExecution) {\r
- if (cannotConnect)\r
- return;\r
-\r
- SlcExecutionRequest req = new SlcExecutionRequest();\r
- req.setSlcExecution(slcExecution);\r
- try {\r
- WebServiceUtils.marshalSendAndReceive(template, req);\r
- if (log.isTraceEnabled())\r
- log.trace("Notified creation of slc execution "\r
- + slcExecution.getUuid());\r
- } catch (SoapFaultClientException e) {\r
- WebServiceUtils.manageSoapException(e);\r
- } catch (WebServiceIOException e) {\r
- manageIoException(e);\r
- }\r
- }\r
-\r
- public void updateExecution(SlcExecution slcExecution) {\r
- if (cannotConnect)\r
- return;\r
-\r
- SlcExecutionRequest req = new SlcExecutionRequest();\r
- req.setSlcExecution(slcExecution);\r
- try {\r
- WebServiceUtils.marshalSendAndReceive(template, req);\r
- if (log.isTraceEnabled())\r
- log.trace("Notified update of slc execution "\r
- + slcExecution.getUuid());\r
- } catch (SoapFaultClientException e) {\r
- WebServiceUtils.manageSoapException(e);\r
- } catch (WebServiceIOException e) {\r
- manageIoException(e);\r
- }\r
- }\r
-\r
- public void updateStatus(SlcExecution slcExecution, String oldStatus,\r
- String newStatus) {\r
- if (cannotConnect)\r
- return;\r
-\r
- SlcExecutionStatusRequest req = new SlcExecutionStatusRequest(\r
- slcExecution.getUuid(), newStatus);\r
- try {\r
- WebServiceUtils.marshalSendAndReceive(template, req);\r
- if (log.isTraceEnabled())\r
- log.trace("Notified status update of slc execution "\r
- + slcExecution.getUuid());\r
- } catch (SoapFaultClientException e) {\r
- WebServiceUtils.manageSoapException(e);\r
- } catch (WebServiceIOException e) {\r
- manageIoException(e);\r
- }\r
- }\r
-\r
- public void addSteps(SlcExecution slcExecution,\r
- List<SlcExecutionStep> additionalSteps) {\r
- if (cannotConnect)\r
- return;\r
-\r
- SlcExecutionStepsRequest req = new SlcExecutionStepsRequest();\r
- req.setSlcExecutionUuid(slcExecution.getUuid());\r
- req.setSteps(additionalSteps);\r
- if (log.isTraceEnabled()) {\r
- for (SlcExecutionStep step : additionalSteps) {\r
- log.trace("Step " + step.getUuid() + ": " + step.logAsString());\r
- }\r
- }\r
-\r
- try {\r
- WebServiceUtils.marshalSendAndReceive(template, req);\r
- if (log.isTraceEnabled())\r
- log.trace("Added steps to slc execution "\r
- + slcExecution.getUuid());\r
- } catch (SoapFaultClientException e) {\r
- WebServiceUtils.manageSoapException(e);\r
- } catch (WebServiceIOException e) {\r
- manageIoException(e);\r
- }\r
- }\r
-\r
- public void setTemplate(WebServiceTemplate template) {\r
- this.template = template;\r
- }\r
-\r
- protected void manageIoException(WebServiceIOException e) {\r
- if (!cannotConnect) {\r
- log.error("Cannot connect to " + template.getDefaultUri()\r
- + ". Won't try again.", e);\r
- cannotConnect = true;\r
- }\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ws.test.tree;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-import org.argeo.slc.core.test.TestResultListener;\r
-import org.argeo.slc.core.test.TestResultPart;\r
-import org.argeo.slc.core.test.tree.TreeTestResult;\r
-import org.argeo.slc.msg.test.tree.CloseTreeTestResultRequest;\r
-import org.argeo.slc.msg.test.tree.CreateTreeTestResultRequest;\r
-import org.argeo.slc.msg.test.tree.ResultPartRequest;\r
-import org.argeo.slc.ws.client.WebServiceUtils;\r
-import org.springframework.ws.client.WebServiceIOException;\r
-import org.springframework.ws.client.core.WebServiceTemplate;\r
-import org.springframework.ws.soap.client.SoapFaultClientException;\r
-\r
-public class WebServiceTreeTestResultNotifier implements\r
- TestResultListener<TreeTestResult> {\r
- private WebServiceTemplate template;\r
- private Boolean onlyOnClose = false;\r
-\r
- private Log log = LogFactory.getLog(getClass());\r
-\r
- private Boolean cannotConnect = false;\r
-\r
- public void resultPartAdded(TreeTestResult testResult,\r
- TestResultPart testResultPart) {\r
- if (onlyOnClose)\r
- return;\r
-\r
- if (cannotConnect)\r
- return;\r
-\r
- try {\r
- if (testResult.getResultParts().size() == 1\r
- && testResult.getResultParts().values().iterator().next()\r
- .getParts().size() == 1) {\r
- CreateTreeTestResultRequest req = new CreateTreeTestResultRequest(\r
- testResult);\r
-\r
- if (log.isDebugEnabled())\r
- log.debug("Send create result request for result "\r
- + testResult.getUuid());\r
-\r
- WebServiceUtils.marshalSendAndReceive(template, req);\r
- } else {\r
- ResultPartRequest req = new ResultPartRequest(testResult);\r
-\r
- if (log.isDebugEnabled())\r
- log.debug("Send result parts for result "\r
- + testResult.getUuid());\r
-\r
- WebServiceUtils.marshalSendAndReceive(template, req);\r
- }\r
- } catch (SoapFaultClientException e) {\r
- WebServiceUtils.manageSoapException(e);\r
-\r
- } catch (WebServiceIOException e) {\r
- manageIoException(e);\r
- }\r
- }\r
-\r
- public void close(TreeTestResult testResult) {\r
- if (cannotConnect)\r
- return;\r
-\r
- try {\r
- if (onlyOnClose) {\r
- CreateTreeTestResultRequest req = new CreateTreeTestResultRequest(\r
- testResult);\r
-\r
- if (log.isDebugEnabled())\r
- log.debug("Send create result request for result "\r
- + testResult.getUuid());\r
-\r
- WebServiceUtils.marshalSendAndReceive(template, req);\r
- } else {\r
- CloseTreeTestResultRequest req = new CloseTreeTestResultRequest(\r
- testResult);\r
-\r
- if (log.isDebugEnabled())\r
- log.debug("Send close result request for result "\r
- + testResult.getUuid());\r
-\r
- WebServiceUtils.marshalSendAndReceive(template, req);\r
-\r
- }\r
- } catch (SoapFaultClientException e) {\r
- WebServiceUtils.manageSoapException(e);\r
- } catch (WebServiceIOException e) {\r
- manageIoException(e);\r
- }\r
- }\r
-\r
- public void setTemplate(WebServiceTemplate template) {\r
- this.template = template;\r
- }\r
-\r
- public void setOnlyOnClose(Boolean onlyOnClose) {\r
- this.onlyOnClose = onlyOnClose;\r
- }\r
-\r
- protected void manageIoException(WebServiceIOException e) {\r
- if (!cannotConnect) {\r
- log.error("Cannot connect to " + template.getDefaultUri()\r
- + ". Won't try again.", e);\r
- cannotConnect = true;\r
- }\r
- }\r
-}\r
Manifest-Version: 1.0\r
-Export-Package: org.argeo.slc.ws.client;uses:="org.springframework.ws.\r
- client.core,org.springframework.oxm,org.apache.commons.logging,org.sp\r
- ringframework.ws,org.springframework.ws.soap,org.springframework.ws.c\r
- ontext,org.springframework.xml.transform,org.springframework.ws.clien\r
- t,javax.xml.transform.dom,org.w3c.dom,org.springframework.xml.validat\r
- ion,javax.xml.namespace,org.xml.sax,javax.xml.transform,org.springfra\r
- mework.ws.soap.client,org.springframework.ws.client.support.intercept\r
- or";version="0.11.2.SNAPSHOT",org.argeo.slc.ws.client.spring;version=\r
- "0.11.2.SNAPSHOT",org.argeo.slc.ant.detached;uses:="org.argeo.slc.ant\r
- .spring,org.apache.commons.logging,org.argeo.slc.core,org.argeo.slc.s\r
- pring,org.springframework.context,org.argeo.slc.detached,org.argeo.sl\r
- c.ant.structure,org.springframework.beans.factory";version="0.11.2.SN\r
- APSHOT",org.argeo.slc.ws.test.tree;uses:="org.springframework.ws.clie\r
- nt.core,org.apache.commons.logging,org.argeo.slc.msg.test.tree,org.ar\r
- geo.slc.ws.client,org.springframework.ws.soap.client,org.springframew\r
- ork.ws.client,org.argeo.slc.core.test.tree,org.argeo.slc.core.test";v\r
- ersion="0.11.2.SNAPSHOT",org.argeo.slc.maven;uses:="org.argeo.slc.cor\r
- e.build,org.argeo.slc.core.deploy";version="0.11.2.SNAPSHOT",org.arge\r
- o.slc.ant.structure;uses:="org.argeo.slc.core.structure,org.argeo.slc\r
- .ant.spring,org.argeo.slc.core,org.springframework.context,org.apache\r
- .tools.ant,org.argeo.slc.core.structure.tree";version="0.11.2.SNAPSHO\r
- T",org.argeo.slc.ant.unit;uses:="org.argeo.slc.ant,junit.framework,or\r
- g.argeo.slc.unit,org.argeo.slc.runtime,org.argeo.slc.cli,org.springfr\r
- amework.core.io,org.springframework.context,org.argeo.slc.core.proces\r
- s";version="0.11.2.SNAPSHOT",org.argeo.slc.ant.deploy;uses:="org.arge\r
- o.slc.ant.spring,org.apache.commons.logging,org.argeo.slc.core,org.ar\r
- geo.slc.core.build,org.springframework.context,org.argeo.slc.core.dep\r
- loy,org.argeo.slc.ant.structure,org.apache.tools.ant";version="0.11.2\r
- .SNAPSHOT",org.argeo.slc.ant.spring;uses:="org.apache.commons.logging\r
- ,org.argeo.slc.core,org.springframework.beans,org.apache.tools.ant.ty\r
- pes,org.springframework.context,org.argeo.slc.core.process,org.apache\r
- .tools.ant,org.springframework.beans.factory";version="0.11.2.SNAPSHO\r
- T",org.argeo.slc.ant;uses:="org.apache.commons.logging,org.apache.log\r
- 4j,org.springframework.context.support,org.apache.log4j.spi,org.sprin\r
- gframework.beans.factory.config,org.springframework.beans.factory.sup\r
- port,org.argeo.slc.core.structure,org.argeo.slc.core,org.apache.tools\r
- .ant.util,org.apache.commons.io,org.argeo.slc.core.process,org.argeo.\r
- slc.core.structure.tree,org.springframework.beans.factory,org.apache.\r
- tools.ant.helper,org.springframework.util,org.springframework.core.io\r
- ,org.springframework.context,org.argeo.slc.logging,org.springframewor\r
- k.beans.factory.xml,org.apache.tools.ant,org.argeo.slc.runtime";versi\r
- on="0.11.2.SNAPSHOT",org.argeo.slc.lib.detached;uses:="org.springfram\r
- ework.oxm,org.apache.commons.logging,org.argeo.slc.detached.ui,org.sp\r
- ringframework.beans,org.argeo.slc.detached,org.springframework.beans.\r
- factory.config,org.argeo.slc.core.test,org.springframework.beans.fact\r
- ory.support,org.argeo.slc.core,org.argeo.slc.core.test.context,javax.\r
- xml.transform,org.argeo.slc.core.structure.tree,org.springframework.b\r
- eans.factory";version="0.11.2.SNAPSHOT",org.argeo.slc.ws.process;uses\r
- :="org.springframework.ws.client.core,org.apache.commons.logging,org.\r
- argeo.slc.ws.client,org.springframework.ws.client,org.springframework\r
- .ws.soap.client,org.argeo.slc.core.process,org.argeo.slc.msg.process"\r
- ;version="0.11.2.SNAPSHOT",org.argeo.slc.cli;uses:="org.apache.common\r
- s.logging,org.apache.commons.cli,org.springframework.core.io,org.arge\r
- o.slc.logging,org.argeo.slc.ant,org.argeo.slc.core,org.argeo.slc.spri\r
- ng,org.argeo.slc.runtime,org.apache.commons.io,org.argeo.slc.core.pro\r
- cess";version="0.11.2.SNAPSHOT",org.argeo.slc.ant.test;uses:="org.apa\r
- che.commons.logging,org.springframework.beans,org.springframework.con\r
- text,org.argeo.slc.ant.structure,org.apache.tools.ant,org.argeo.slc.c\r
- ore.test,org.argeo.slc.core.structure,org.argeo.slc.ant.spring,org.ar\r
- geo.slc.core,org.argeo.slc.core.test.context,org.argeo.slc.spring,org\r
- .apache.tools.ant.types,org.argeo.slc.core.deploy,org.argeo.slc.core.\r
- process,org.argeo.slc.core.structure.tree,org.springframework.beans.f\r
- actory";version="0.11.2.SNAPSHOT",org.argeo.slc.support.deploy.ant;ve\r
- rsion="0.11.2.SNAPSHOT"\r
+Export-Package: org.argeo.slc.ant.spring;uses:="org.apache.commons.log\r
+ ging,org.argeo.slc.core,org.springframework.beans,org.apache.tools.an\r
+ t.types,org.springframework.context,org.argeo.slc.core.process,org.ap\r
+ ache.tools.ant,org.springframework.beans.factory";version="0.11.2.SNA\r
+ PSHOT",org.argeo.slc.ant;uses:="org.apache.commons.logging,org.apache\r
+ .log4j,org.springframework.context.support,org.apache.log4j.spi,org.s\r
+ pringframework.beans.factory.config,org.springframework.beans.factory\r
+ .support,org.argeo.slc.core.structure,org.apache.tools.ant.util,org.a\r
+ rgeo.slc.core,org.apache.commons.io,org.argeo.slc.core.process,org.ar\r
+ geo.slc.core.structure.tree,org.springframework.beans.factory,org.apa\r
+ che.tools.ant.helper,org.springframework.util,org.springframework.cor\r
+ e.io,org.springframework.context,org.argeo.slc.logging,org.springfram\r
+ ework.beans.factory.xml,org.apache.tools.ant,org.argeo.slc.runtime,or\r
+ g.argeo.slc.spring";version="0.11.2.SNAPSHOT",org.argeo.slc.ant.test;\r
+ uses:="org.apache.commons.logging,org.springframework.beans,org.sprin\r
+ gframework.context,org.argeo.slc.ant.structure,org.apache.tools.ant,o\r
+ rg.argeo.slc.core.test,org.argeo.slc.core.structure,org.argeo.slc.ant\r
+ .spring,org.argeo.slc.core,org.argeo.slc.core.test.context,org.argeo.\r
+ slc.spring,org.apache.tools.ant.types,org.argeo.slc.core.deploy,org.a\r
+ rgeo.slc.core.process,org.argeo.slc.core.structure.tree,org.springfra\r
+ mework.beans.factory";version="0.11.2.SNAPSHOT",org.argeo.slc.ant.str\r
+ ucture;uses:="org.argeo.slc.core.structure,org.argeo.slc.ant.spring,o\r
+ rg.argeo.slc.core,org.springframework.context,org.apache.tools.ant,or\r
+ g.argeo.slc.core.structure.tree";version="0.11.2.SNAPSHOT",org.argeo.\r
+ slc.ant.unit;uses:="org.argeo.slc.ant,junit.framework,org.argeo.slc.u\r
+ nit,org.argeo.slc.runtime,org.springframework.core.io,org.springframe\r
+ work.context,org.argeo.slc.core.process";version="0.11.2.SNAPSHOT",or\r
+ g.argeo.slc.ant.deploy;uses:="org.argeo.slc.ant.spring,org.apache.com\r
+ mons.logging,org.argeo.slc.core,org.argeo.slc.core.build,org.springfr\r
+ amework.context,org.argeo.slc.core.deploy,org.argeo.slc.ant.structure\r
+ ,org.apache.tools.ant";version="0.11.2.SNAPSHOT"\r
Tool: Bnd-0.0.255\r
-Bundle-Name: Argeo SLC Agent\r
+Bundle-Name: Argeo SLC Support Ant\r
Created-By: 1.6.0 (Sun Microsystems Inc.)\r
Bundle-Vendor: Argeo\r
Bundle-Version: 0.11.2.SNAPSHOT\r
Bundle-ManifestVersion: 2\r
Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt\r
Bundle-Description: SLC Distribution\r
-Import-Package: javax.xml.namespace;version="1.3",javax.xml.transform;\r
- version="1.3",javax.xml.transform.dom;version="1.3",junit.framework;v\r
- ersion="3.8",org.apache.commons.cli;resolution:=optional;version="1.1\r
- ",org.apache.commons.io;version="1.4",org.apache.commons.logging;vers\r
- ion="1.1",org.apache.log4j;version="1.2",org.apache.log4j.spi;version\r
- ="1.2",org.apache.tools.ant;version="1.7",org.apache.tools.ant.helper\r
- ;version="1.7",org.apache.tools.ant.types;version="1.7",org.apache.to\r
- ols.ant.util;version="1.7",org.argeo.slc.ant;version="0.11.2.SNAPSHOT\r
- ",org.argeo.slc.ant.deploy;version="0.11.2.SNAPSHOT",org.argeo.slc.an\r
- t.detached;version="0.11.2.SNAPSHOT",org.argeo.slc.ant.spring;version\r
- ="0.11.2.SNAPSHOT",org.argeo.slc.ant.structure;version="0.11.2.SNAPSH\r
- OT",org.argeo.slc.ant.test;version="0.11.2.SNAPSHOT",org.argeo.slc.an\r
- t.unit;version="0.11.2.SNAPSHOT",org.argeo.slc.cli;version="0.11.2.SN\r
- APSHOT",org.argeo.slc.core;version="0.11.2.SNAPSHOT",org.argeo.slc.co\r
- re.build;version="0.11.2.SNAPSHOT",org.argeo.slc.core.deploy;version=\r
- "0.11.2.SNAPSHOT",org.argeo.slc.core.process;version="0.11.2.SNAPSHOT\r
- ",org.argeo.slc.core.structure;version="0.11.2.SNAPSHOT",org.argeo.sl\r
- c.core.structure.tree;version="0.11.2.SNAPSHOT",org.argeo.slc.core.te\r
- st;version="0.11.2.SNAPSHOT",org.argeo.slc.core.test.context;version=\r
- "0.11.2.SNAPSHOT",org.argeo.slc.core.test.spring;version="0.11.2.SNAP\r
- SHOT",org.argeo.slc.core.test.tree;version="0.11.2.SNAPSHOT",org.arge\r
- o.slc.detached;version="0.11.2.SNAPSHOT",org.argeo.slc.detached.ui;ve\r
- rsion="0.11.2.SNAPSHOT",org.argeo.slc.lib.detached;version="0.11.2.SN\r
- APSHOT",org.argeo.slc.logging;version="0.11.2.SNAPSHOT",org.argeo.slc\r
- .maven;version="0.11.2.SNAPSHOT",org.argeo.slc.msg.process;version="0\r
- .11.2.SNAPSHOT",org.argeo.slc.msg.test.tree;version="0.11.2.SNAPSHOT"\r
- ,org.argeo.slc.runtime;version="0.11.2.SNAPSHOT",org.argeo.slc.spring\r
- ;version="0.11.2.SNAPSHOT",org.argeo.slc.support.deploy.ant;version="\r
- 0.11.2.SNAPSHOT",org.argeo.slc.unit;version="0.11.2.SNAPSHOT",org.arg\r
- eo.slc.ws.client;version="0.11.2.SNAPSHOT",org.argeo.slc.ws.client.sp\r
- ring;version="0.11.2.SNAPSHOT",org.argeo.slc.ws.process;version="0.11\r
- .2.SNAPSHOT",org.argeo.slc.ws.test.tree;version="0.11.2.SNAPSHOT",org\r
- .springframework.beans;version="2.5.6.A",org.springframework.beans.fa\r
- ctory;version="2.5.6.A",org.springframework.beans.factory.config;vers\r
- ion="2.5.6.A",org.springframework.beans.factory.support;version="2.5.\r
- 6.A",org.springframework.beans.factory.xml;version="2.5.6.A",org.spri\r
- ngframework.context;version="2.5.6.A",org.springframework.context.sup\r
- port;version="2.5.6.A",org.springframework.core.io;version="2.5.6.A",\r
- org.springframework.oxm;version="1.5.5.A",org.springframework.util;ve\r
- rsion="2.5.6.A",org.springframework.ws;version="1.5.5.A",org.springfr\r
- amework.ws.client;version="1.5.5.A",org.springframework.ws.client.cor\r
- e;version="1.5.5.A",org.springframework.ws.client.support.interceptor\r
- ;version="1.5.5.A",org.springframework.ws.context;version="1.5.5.A",o\r
- rg.springframework.ws.soap;version="1.5.5.A",org.springframework.ws.s\r
- oap.client;version="1.5.5.A",org.springframework.xml.transform;versio\r
- n="1.5.5.A",org.springframework.xml.validation;version="1.5.5.A",org.\r
- w3c.dom;version="1.3",org.xml.sax;version="1.3"\r
-Bundle-SymbolicName: org.argeo.slc.agent\r
+Import-Package: junit.framework;version="3.8",org.apache.commons.io;ve\r
+ rsion="1.4",org.apache.commons.logging;version="1.1",org.apache.log4j\r
+ ;version="1.2",org.apache.log4j.spi;version="1.2",org.apache.tools.an\r
+ t;version="1.7",org.apache.tools.ant.helper;version="1.7",org.apache.\r
+ tools.ant.types;version="1.7",org.apache.tools.ant.util;version="1.7"\r
+ ,org.argeo.slc.ant;version="0.11.2.SNAPSHOT",org.argeo.slc.ant.deploy\r
+ ;version="0.11.2.SNAPSHOT",org.argeo.slc.ant.spring;version="0.11.2.S\r
+ NAPSHOT",org.argeo.slc.ant.structure;version="0.11.2.SNAPSHOT",org.ar\r
+ geo.slc.ant.test;version="0.11.2.SNAPSHOT",org.argeo.slc.ant.unit;ver\r
+ sion="0.11.2.SNAPSHOT",org.argeo.slc.core;version="0.11.2.SNAPSHOT",o\r
+ rg.argeo.slc.core.build;version="0.11.2.SNAPSHOT",org.argeo.slc.core.\r
+ deploy;version="0.11.2.SNAPSHOT",org.argeo.slc.core.process;version="\r
+ 0.11.2.SNAPSHOT",org.argeo.slc.core.structure;version="0.11.2.SNAPSHO\r
+ T",org.argeo.slc.core.structure.tree;version="0.11.2.SNAPSHOT",org.ar\r
+ geo.slc.core.test;version="0.11.2.SNAPSHOT",org.argeo.slc.core.test.c\r
+ ontext;version="0.11.2.SNAPSHOT",org.argeo.slc.logging;version="0.11.\r
+ 2.SNAPSHOT",org.argeo.slc.runtime;version="0.11.2.SNAPSHOT",org.argeo\r
+ .slc.spring;version="0.11.2.SNAPSHOT",org.argeo.slc.unit;version="0.1\r
+ 1.2.SNAPSHOT",org.springframework.beans;version="2.5.6.A",org.springf\r
+ ramework.beans.factory;version="2.5.6.A",org.springframework.beans.fa\r
+ ctory.config;version="2.5.6.A",org.springframework.beans.factory.supp\r
+ ort;version="2.5.6.A",org.springframework.beans.factory.xml;version="\r
+ 2.5.6.A",org.springframework.context;version="2.5.6.A",org.springfram\r
+ ework.context.support;version="2.5.6.A",org.springframework.core.io;v\r
+ ersion="2.5.6.A",org.springframework.util;version="2.5.6.A"\r
+Bundle-SymbolicName: org.argeo.slc.support.ant\r
Bundle-DocURL: http://www.argeo.org\r
Originally-Created-By: 1.6.0 (Sun Microsystems Inc.)\r
\r
+++ /dev/null
-log4j.rootLogger=WARN, console\r
-\r
-## Levels\r
-log4j.logger.org.argeo=INFO\r
-\r
-## Appenders\r
-# console is set to be a ConsoleAppender.\r
-log4j.appender.console=org.apache.log4j.ConsoleAppender\r
-\r
-# console uses PatternLayout.\r
-log4j.appender.console.layout=org.apache.log4j.PatternLayout\r
-log4j.appender.console.layout.ConversionPattern= %-5p %d{ISO8601} %m - %c%n\r
-\r
+++ /dev/null
-<?xml version="1.0"?>
-<!DOCTYPE doc [
-<!ENTITY slc-detached-namespace-uri "http://argeo.org/projects/slc/schemas/detached">
-<!ENTITY slc-detached-namespace-prefix "slc-det">
-]>
-
-<mapping>
- <description>Mapping of SLC detached types</description>
-
- <class name="org.argeo.slc.detached.DetachedRequest">
- <map-to ns-uri="&slc-detached-namespace-uri;"
- ns-prefix="&slc-detached-namespace-prefix;" />
- <field name="uuid" />
- <field name="ref" />
- <field name="path" />
- <field name="properties" collection="map">
- <bind-xml name="prop" location="properties">
- <class name="org.exolab.castor.mapping.MapItem">
- <map-to ns-uri="&slc-detached-namespace-uri;"
- ns-prefix="&slc-detached-namespace-prefix;" />
- <field name="key" type="string">
- <bind-xml name="key" node="attribute" />
- </field>
- <field name="value" type="string">
- <bind-xml node="text" />
- </field>
- </class>
- </bind-xml>
- </field>
- </class>
-
- <class name="org.argeo.slc.detached.DetachedAnswer">
- <map-to ns-uri="&slc-detached-namespace-uri;"
- ns-prefix="&slc-detached-namespace-prefix;" />
- <field name="uuid" />
- <field name="status" />
- <field name="log" />
- <field name="properties" collection="map">
- <bind-xml name="prop" location="properties">
- <class name="org.exolab.castor.mapping.MapItem">
- <map-to ns-uri="&slc-detached-namespace-uri;"
- ns-prefix="&slc-detached-namespace-prefix;" />
- <field name="key" type="string">
- <bind-xml name="key" node="attribute" />
- </field>
- <field name="value" type="string">
- <bind-xml node="text" />
- </field>
- </class>
- </bind-xml>
- </field>
- </class>
-</mapping>
\ No newline at end of file
+++ /dev/null
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
- default-lazy-init="true">
-
- <bean id="slcTemplate.detached.testDefinition"
- class="org.argeo.slc.lib.detached.DetachedTestDefinition"
- abstract="true">
- </bean>
-
- <bean id="slcDefault.detached.xmlConverterCastor"
- class="org.argeo.slc.lib.detached.DetachedXmlConverterSpring">
- <property name="marshaller"
- ref="slcDefault.detached.castor.marshaller" />
- <property name="unmarshaller"
- ref="slcDefault.detached.castor.marshaller" />
- </bean>
-
- <bean id="slcDefault.detached.castor.marshaller"
- class="org.springframework.oxm.castor.CastorMarshaller">
- <property name="mappingLocations">
- <list>
- <value>
- classpath:org/argeo/slc/lib/detached/castor.xml
- </value>
- </list>
- </property>
- <property name="whitespacePreserve" value="true" />
- </bean>
-
- <bean id="slcDefault.detached.xml.xsdValidator"
- factory-bean="slcDefault.detached.xml.xsdSchema"
- factory-method="createValidator" />
-
- <bean id="slcDefault.detached.xml.xsdSchema"
- class="org.springframework.xml.xsd.SimpleXsdSchema">
- <property name="xsd"
- value="classpath:/org/argeo/slc/detached/slc-detached.xsd" />
- </bean>
-
-</beans>
+++ /dev/null
-<project>\r
-\r
- <target name="deployZip">
- <unzip src="${src}" dest="${tempDir}" />
- <copyFromTemp />
- </target>
-
- <target name="deployTarGz">
- <untar src="${src}" dest="${tempDir}" compression="gzip" />
- <copyFromTemp />
- </target>
-
- <macrodef name="copyFromTemp">
- <sequential>
- <copy todir="${dest}" includeemptydirs="true">
- <fileset dir="${tempDir}">
- <include name="**/*" />
- </fileset>
- <mapper classname="org.argeo.slc.ant.RemoveRootDirMapper" to="${removeRootDir}" />
- </copy>
- </sequential>
- </macrodef>
-</project>
\ No newline at end of file
+++ /dev/null
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
- default-lazy-init="true">
-
- <import
- resource="classpath:/org/argeo/slc/castor/spring/applicationContext.xml" />
- <import
- resource="classpath:/org/argeo/slc/xml/spring/applicationContext.xml" />
-
- <bean id="slcDefault.ws.client.webServiceTemplate"
- parent="slcTemplate.ws.client.webServiceTemplate">
- <constructor-arg ref="slcDefault.ws.client.messageFactory" />
- <property name="defaultUri" value="${slc.ws.uri}" />
- </bean>
-
- <bean
- class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
- lazy-init="false">
- <property name="systemPropertiesModeName"
- value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
- <property name="ignoreUnresolvablePlaceholders" value="true" />
- <property name="properties">
- <props>
- <prop key="slc.ws.uri">
- http://localhost:9090/org.argeo.slc.webapp/slcService/
- </prop>
- </props>
- </property>
- </bean>
-
- <bean id="slcTemplate.ws.client.webServiceTemplate"
- class="org.springframework.ws.client.core.WebServiceTemplate"
- abstract="true">
- <property name="marshaller" ref="slcDefault.castor.marshaller" />
- <property name="unmarshaller"
- ref="slcDefault.castor.marshaller" />
- <property name="interceptors">
- <list>
- <bean
- class="org.argeo.slc.ws.client.ValidatingClientInterceptor">
- <property name="validator"
- ref="slcDefault.xml.xsdValidator" />
- </bean>
- </list>
- </property>
- </bean>
-
- <bean id="slcDefault.ws.client.messageFactory"
- class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory" />
-
- <bean name="slcDefault.ws.client.treeTestResultWsNotfier"
- class="org.argeo.slc.ws.test.tree.WebServiceTreeTestResultNotifier">
- <property name="template"
- ref="slcDefault.ws.client.webServiceTemplate" />
- <property name="onlyOnClose" value="false" />
- </bean>
-
- <bean name="slcDefault.ws.client.slcExecutionNotifier"
- class="org.argeo.slc.ws.process.WebServiceSlcExecutionNotifier">
- <property name="template"
- ref="slcDefault.ws.client.webServiceTemplate" />
- </bean>
-
-</beans>
+++ /dev/null
-Argeo SLC Site
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.lib.detached;
-
-import java.util.Enumeration;
-import java.util.Properties;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.detached.DetachedAnswer;
-import org.argeo.slc.detached.DetachedRequest;
-import org.argeo.slc.detached.DetachedXmlConverter;
-import org.argeo.slc.detached.DetachedXmlConverterCompat;
-import org.argeo.slc.unit.AbstractSpringTestCase;
-import org.argeo.slc.unit.UnitXmlUtils;
-import org.springframework.xml.transform.StringResult;
-import org.springframework.xml.transform.StringSource;
-import org.springframework.xml.validation.XmlValidator;
-
-public class DetachedCastorTest extends AbstractSpringTestCase {
- private final Log log = LogFactory.getLog(getClass());
-
- private DetachedXmlConverter converter = null;
- private XmlValidator validator = null;
- private DetachedXmlConverter converterCompat = null;
-
- public void setUp() {
- converter = getBean("slcDefault.detached.xmlConverterCastor");
- validator = getBean("slcDefault.detached.xml.xsdValidator");
- converterCompat = new DetachedXmlConverterCompat();
- }
-
- public void testRequest() throws Exception {
- DetachedRequest request = createTestRequest();
-
- StringResult result = new StringResult();
- converter.marshallCommunication(request, result);
- String xml = result.toString();
- log.debug(xml + "\n");
-
- UnitXmlUtils.assertXmlValidation(validator, new StringSource(xml));
- DetachedRequest requestUnm = (DetachedRequest) converter
- .unmarshallCommunication(new StringSource(xml));
- assertDetachedRequest(request, requestUnm);
- }
-
- public void testRequestCompat() throws Exception {
- DetachedRequest request = createTestRequest();
-
- StringResult result = new StringResult();
- converter.marshallCommunication(request, result);
- String xml = result.toString();
- log.debug(xml + "\n");
-
- UnitXmlUtils.assertXmlValidation(validator, new StringSource(xml));
- DetachedRequest requestUnm = (DetachedRequest) converterCompat
- .unmarshallCommunication(new StringSource(xml));
- assertDetachedRequest(request, requestUnm);
- }
-
- public void testAnswer() throws Exception {
- DetachedAnswer answer = createTestAnswer();
- StringResult result = new StringResult();
- converter.marshallCommunication(answer, result);
- String xml = result.toString();
- log.debug(xml + "\n");
-
- UnitXmlUtils.assertXmlValidation(validator, new StringSource(xml));
- DetachedAnswer answerUnm = (DetachedAnswer) converter
- .unmarshallCommunication(new StringSource(xml));
- assertDetachedAnswer(answer, answerUnm);
- }
-
- public void testAnswerCompat() throws Exception {
- DetachedAnswer answer = createTestAnswer();
- StringResult result = new StringResult();
- converterCompat.marshallCommunication(answer, result);
- String xml = result.toString();
- log.debug(xml + "\n");
-
- UnitXmlUtils.assertXmlValidation(validator, new StringSource(xml));
- DetachedAnswer answerUnm = (DetachedAnswer) converter
- .unmarshallCommunication(new StringSource(xml));
- assertDetachedAnswer(answer, answerUnm);
- }
-
- public static DetachedRequest createTestRequest() {
- DetachedRequest request = new DetachedRequest();
- request.setUuid("12345");
- request.setPath("/root/test");
- request.setRef("testRef");
- Properties properties = new Properties();
- properties.setProperty("key1", "value1");
- properties.setProperty("key2", "value2");
- request.setProperties(properties);
- return request;
- }
-
- public static DetachedAnswer createTestAnswer() {
- DetachedAnswer answer = new DetachedAnswer();
- answer.setUuid("12345");
- answer.setStatus(DetachedAnswer.PROCESSED);
- answer.setLog("my log\nline break.");
- Properties properties = new Properties();
- properties.setProperty("key1", "value1");
- properties.setProperty("key2", "value2");
- answer.setProperties(properties);
- return answer;
- }
-
- public static void assertDetachedRequest(DetachedRequest expected,
- DetachedRequest reached) {
- assertEquals(expected.getUuid(), reached.getUuid());
- assertEquals(expected.getPath(), reached.getPath());
- assertEquals(expected.getRef(), reached.getRef());
- Properties expectedProps = expected.getProperties();
- Properties reachedProps = reached.getProperties();
- assertEquals(expectedProps.size(), reachedProps.size());
- Enumeration<Object> keys = expectedProps.keys();
- while (keys.hasMoreElements()) {
- String key = (String) keys.nextElement();
- assertTrue(reachedProps.containsKey(key));
- assertEquals(expectedProps.getProperty(key), reachedProps
- .getProperty(key));
- }
- }
-
- public static void assertDetachedAnswer(DetachedAnswer expected,
- DetachedAnswer reached) {
- assertEquals(expected.getUuid(), reached.getUuid());
- assertEquals(expected.getStatus(), reached.getStatus());
- assertEquals(expected.getLog(), reached.getLog());
- Properties expectedProps = expected.getProperties();
- Properties reachedProps = reached.getProperties();
- assertEquals(expectedProps.size(), reachedProps.size());
- Enumeration<Object> keys = expectedProps.keys();
- while (keys.hasMoreElements()) {
- String key = (String) keys.nextElement();
- assertTrue(reachedProps.containsKey(key));
- assertEquals(expectedProps.getProperty(key), reachedProps
- .getProperty(key));
- }
- }
-}
+++ /dev/null
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
-
- <import resource="classpath:/org/argeo/slc/lib/detached/spring.xml" />
-
-</beans>
--- /dev/null
+package org.argeo.slc.core.process;\r
+\r
+import java.io.File;\r
+import java.io.FileWriter;\r
+import java.text.SimpleDateFormat;\r
+import java.util.Date;\r
+import java.util.HashMap;\r
+import java.util.List;\r
+import java.util.Map;\r
+\r
+import javax.xml.transform.stream.StreamResult;\r
+\r
+import org.apache.commons.io.IOUtils;\r
+import org.argeo.slc.core.SlcException;\r
+import org.springframework.oxm.Marshaller;\r
+\r
+public class FileSlcExecutionNotifier implements SlcExecutionNotifier {\r
+ private final static SimpleDateFormat sdf = new SimpleDateFormat(\r
+ "yyyyMMdd-HHmmss");\r
+\r
+ private String basePath;\r
+ private Marshaller marshaller;\r
+\r
+ private Map<String, String> uuidToDir = new HashMap<String, String>();\r
+\r
+ public void addSteps(SlcExecution slcExecution,\r
+ List<SlcExecutionStep> additionalSteps) {\r
+ writeSlcExecution(slcExecution);\r
+ }\r
+\r
+ public void newExecution(SlcExecution slcExecution) {\r
+ String dirPath = basePath + File.separator + sdf.format(new Date())\r
+ + '-' + slcExecution.getUuid();\r
+ File dir = new File(dirPath);\r
+ dir.mkdirs();\r
+\r
+ uuidToDir.put(slcExecution.getUuid(), dirPath);\r
+\r
+ writeSlcExecution(slcExecution);\r
+ }\r
+\r
+ public void updateExecution(SlcExecution slcExecution) {\r
+ writeSlcExecution(slcExecution);\r
+ }\r
+\r
+ public void updateStatus(SlcExecution slcExecution, String oldStatus,\r
+ String newStatus) {\r
+ writeSlcExecution(slcExecution);\r
+ }\r
+\r
+ protected void writeSlcExecution(SlcExecution slcExecution) {\r
+ FileWriter out = null;\r
+ try {\r
+ out = new FileWriter(getFilePath(slcExecution));\r
+ marshaller.marshal(slcExecution, new StreamResult(out));\r
+ } catch (Exception e) {\r
+ throw new SlcException("Cannot marshall SlcExecution to "\r
+ + getFilePath(slcExecution), e);\r
+ } finally {\r
+ IOUtils.closeQuietly(out);\r
+ }\r
+ }\r
+\r
+ protected String getFileName(SlcExecution slcExecution) {\r
+ return "SlcExecution-" + slcExecution.getUuid() + ".xml";\r
+ }\r
+\r
+ protected String getFilePath(SlcExecution slcExecution) {\r
+ String dirPath = uuidToDir.get(slcExecution.getUuid());\r
+ return dirPath + File.separator + "SlcExecution-"\r
+ + slcExecution.getUuid() + ".xml";\r
+ }\r
+\r
+ public void setBasePath(String basePath) {\r
+ this.basePath = basePath;\r
+ }\r
+\r
+ public void setMarshaller(Marshaller marshaller) {\r
+ this.marshaller = marshaller;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.core.test.tree;\r
+\r
+import java.io.File;\r
+import java.io.FileOutputStream;\r
+import java.io.InputStream;\r
+import java.io.OutputStream;\r
+\r
+import javax.xml.parsers.DocumentBuilder;\r
+import javax.xml.parsers.DocumentBuilderFactory;\r
+import javax.xml.transform.Templates;\r
+import javax.xml.transform.Transformer;\r
+import javax.xml.transform.TransformerFactory;\r
+import javax.xml.transform.dom.DOMResult;\r
+import javax.xml.transform.dom.DOMSource;\r
+import javax.xml.transform.stream.StreamResult;\r
+import javax.xml.transform.stream.StreamSource;\r
+\r
+import org.springframework.core.io.Resource;\r
+import org.springframework.oxm.Marshaller;\r
+import org.springframework.xml.transform.StringResult;\r
+import org.w3c.dom.Document;\r
+\r
+import org.apache.commons.io.IOUtils;\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+\r
+import org.argeo.slc.core.SlcException;\r
+import org.argeo.slc.core.test.TestResultListener;\r
+import org.argeo.slc.core.test.TestResultPart;\r
+\r
+public class XsltReportGenerator implements TestResultListener<TreeTestResult> {\r
+ private Log log = LogFactory.getLog(getClass());\r
+\r
+ private DocumentBuilder documentBuilder = null;\r
+\r
+ private Resource xsltStyleSheet;\r
+\r
+ private Templates templates;\r
+\r
+ private Marshaller marshaller;\r
+\r
+ private String outputDir;\r
+ private String outputFileExtension = "html";\r
+\r
+ private Boolean logXml = false;\r
+\r
+ public void init() {\r
+ if (templates != null)\r
+ return;\r
+\r
+ if (xsltStyleSheet == null)\r
+ throw new SlcException("XSLT style sheet not specified.");\r
+\r
+ InputStream in = null;\r
+ try {\r
+ TransformerFactory transformerFactory = TransformerFactory\r
+ .newInstance();\r
+ in = xsltStyleSheet.getInputStream();\r
+ StreamSource xsltSource = new StreamSource(in);\r
+ templates = transformerFactory.newTemplates(xsltSource);\r
+ } catch (Exception e) {\r
+ throw new SlcException("Could not initialize templates", e);\r
+ } finally {\r
+ IOUtils.closeQuietly(in);\r
+ }\r
+ }\r
+\r
+ public void resultPartAdded(TreeTestResult testResult,\r
+ TestResultPart testResultPart) {\r
+\r
+ }\r
+\r
+ public void close(TreeTestResult testResult) {\r
+ if (templates == null)\r
+ throw new SlcException("XSLT template not initialized");\r
+\r
+ File file = getFile(testResult);\r
+ OutputStream out = null;\r
+\r
+ try {\r
+ Transformer transformer = templates.newTransformer();\r
+\r
+ if (documentBuilder == null)\r
+ documentBuilder = DocumentBuilderFactory.newInstance()\r
+ .newDocumentBuilder();\r
+\r
+ Document document = documentBuilder.newDocument();\r
+ DOMResult marshallResult = new DOMResult(document);\r
+ marshaller.marshal(testResult, marshallResult);\r
+\r
+ if (logXml) {\r
+ Transformer identityTransformer = TransformerFactory\r
+ .newInstance().newTransformer();\r
+ StringResult xmlResult = new StringResult();\r
+ identityTransformer.transform(new DOMSource(marshallResult\r
+ .getNode()), xmlResult);\r
+ log.info("Marshalled XML:\n" + xmlResult);\r
+ }\r
+\r
+ DOMSource transfoSource = new DOMSource(marshallResult.getNode());\r
+\r
+ if (outputDir != null) {\r
+ File dir = new File(outputDir);\r
+ dir.mkdirs();\r
+ out = new FileOutputStream(file);\r
+ StreamResult outputResult = new StreamResult(out);\r
+ transformer.transform(transfoSource, outputResult);\r
+ } else {\r
+ // print on console if no output dir\r
+ StringResult result = new StringResult();\r
+ transformer.transform(transfoSource, result);\r
+ log.info("Generated report:\n" + result);\r
+ }\r
+ } catch (Exception e) {\r
+ throw new SlcException(\r
+ "Could not transform test result to " + file, e);\r
+ } finally {\r
+ IOUtils.closeQuietly(out);\r
+ }\r
+ }\r
+\r
+ public Resource getXsltStyleSheet() {\r
+ return xsltStyleSheet;\r
+ }\r
+\r
+ public void setXsltStyleSheet(Resource xsltStyleSheet) {\r
+ this.xsltStyleSheet = xsltStyleSheet;\r
+ }\r
+\r
+ public void setTemplates(Templates templates) {\r
+ this.templates = templates;\r
+ }\r
+\r
+ public void setMarshaller(Marshaller marshaller) {\r
+ this.marshaller = marshaller;\r
+ }\r
+\r
+ public void setOutputDir(String outputDir) {\r
+ this.outputDir = outputDir;\r
+ }\r
+\r
+ public void setOutputFileExtension(String outputFileExtension) {\r
+ this.outputFileExtension = outputFileExtension;\r
+ }\r
+\r
+ protected File getFile(TreeTestResult result) {\r
+ Long time = System.currentTimeMillis();\r
+ return new File(outputDir + File.separator + time + "-"\r
+ + result.getUuid() + "." + outputFileExtension);\r
+ }\r
+\r
+ public void setLogXml(Boolean logXml) {\r
+ this.logXml = logXml;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.unit;\r
+\r
+import java.io.IOException;\r
+\r
+import javax.xml.transform.Source;\r
+\r
+import junit.framework.TestCase;\r
+\r
+import org.springframework.xml.validation.XmlValidator;\r
+import org.springframework.xml.xsd.XsdSchema;\r
+import org.xml.sax.SAXParseException;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+\r
+public abstract class UnitXmlUtils {\r
+ private final static Log log = LogFactory.getLog(UnitXmlUtils.class);\r
+\r
+ public static void assertXsdSchemaValidation(XsdSchema schema, Source source)\r
+ throws IOException {\r
+ XmlValidator validator = schema.createValidator();\r
+ assertXmlValidation(validator, source);\r
+ }\r
+\r
+ public static void assertXmlValidation(XmlValidator validator, Source source)\r
+ throws IOException {\r
+ SAXParseException[] exceptions = validator.validate(source);\r
+ if (exceptions.length != 0) {\r
+ for (SAXParseException ex : exceptions) {\r
+ log.error(ex.getMessage());\r
+ }\r
+ TestCase.fail("Could not validate");\r
+ }\r
+ }\r
+\r
+ private UnitXmlUtils() {\r
+\r
+ }\r
+}\r
;version="0.11.2.SNAPSHOT",org.argeo.slc.castor.structure;version="0.\r
11.2.SNAPSHOT",org.argeo.slc.castor.spring;version="0.11.2.SNAPSHOT",\r
org.argeo.slc.castor.test.tree;uses:="org.exolab.castor.mapping,org.a\r
- rgeo.slc.core.test";version="0.11.2.SNAPSHOT",org.argeo.slc.castor;ve\r
- rsion="0.11.2.SNAPSHOT"\r
+ rgeo.slc.core.test";version="0.11.2.SNAPSHOT",org.argeo.slc.unit;uses\r
+ :="org.apache.commons.logging,junit.framework,javax.xml.transform,org\r
+ .springframework.xml.xsd,org.springframework.xml.validation,org.xml.s\r
+ ax";version="0.11.2.SNAPSHOT",org.argeo.slc.core.test.tree;uses:="org\r
+ .springframework.oxm,org.apache.commons.logging,org.springframework.x\r
+ ml.transform,org.springframework.core.io,javax.xml.parsers,javax.xml.\r
+ transform.dom,org.w3c.dom,org.argeo.slc.core.test,org.argeo.slc.core,\r
+ javax.xml.transform,javax.xml.transform.stream,org.apache.commons.io"\r
+ ;version="0.11.2.SNAPSHOT",org.argeo.slc.core.process;uses:="org.spri\r
+ ngframework.oxm,org.argeo.slc.core,javax.xml.transform,javax.xml.tran\r
+ sform.stream,org.apache.commons.io";version="0.11.2.SNAPSHOT",org.arg\r
+ eo.slc.castor;version="0.11.2.SNAPSHOT"\r
Tool: Bnd-0.0.255\r
Bundle-Name: Argeo SLC Support Castor\r
Created-By: 1.6.0 (Sun Microsystems Inc.)\r
Bundle-ManifestVersion: 2\r
Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt\r
Bundle-Description: Implementations of SLC Specs using Castor\r
-Import-Package: org.apache.commons.logging;version="1.1",org.argeo.slc\r
- .castor;version="0.11.2.SNAPSHOT",org.argeo.slc.castor.msg;version="0\r
- .11.2.SNAPSHOT",org.argeo.slc.castor.process;version="0.11.2.SNAPSHOT\r
- ",org.argeo.slc.castor.spring;version="0.11.2.SNAPSHOT",org.argeo.slc\r
- .castor.structure;version="0.11.2.SNAPSHOT",org.argeo.slc.castor.stru\r
- cture.tree;version="0.11.2.SNAPSHOT",org.argeo.slc.castor.test;versio\r
- n="0.11.2.SNAPSHOT",org.argeo.slc.castor.test.tree;version="0.11.2.SN\r
- APSHOT",org.argeo.slc.core.structure.tree;version="0.11.2.SNAPSHOT",o\r
- rg.argeo.slc.core.test;version="0.11.2.SNAPSHOT",org.exolab.castor.ma\r
- pping;version="1.2"\r
+Import-Package: javax.xml.parsers;version="1.3",javax.xml.transform;ve\r
+ rsion="1.3",javax.xml.transform.dom;version="1.3",javax.xml.transform\r
+ .stream;version="1.3",junit.framework;version="3.8",org.apache.common\r
+ s.io;version="1.4",org.apache.commons.logging;version="1.1",org.argeo\r
+ .slc.castor;version="0.11.2.SNAPSHOT",org.argeo.slc.castor.msg;versio\r
+ n="0.11.2.SNAPSHOT",org.argeo.slc.castor.process;version="0.11.2.SNAP\r
+ SHOT",org.argeo.slc.castor.spring;version="0.11.2.SNAPSHOT",org.argeo\r
+ .slc.castor.structure;version="0.11.2.SNAPSHOT",org.argeo.slc.castor.\r
+ structure.tree;version="0.11.2.SNAPSHOT",org.argeo.slc.castor.test;ve\r
+ rsion="0.11.2.SNAPSHOT",org.argeo.slc.castor.test.tree;version="0.11.\r
+ 2.SNAPSHOT",org.argeo.slc.core;version="0.11.2.SNAPSHOT",org.argeo.sl\r
+ c.core.process;version="0.11.2.SNAPSHOT",org.argeo.slc.core.structure\r
+ .tree;version="0.11.2.SNAPSHOT",org.argeo.slc.core.test;version="0.11\r
+ .2.SNAPSHOT",org.argeo.slc.core.test.tree;version="0.11.2.SNAPSHOT",o\r
+ rg.argeo.slc.unit;version="0.11.2.SNAPSHOT",org.exolab.castor.mapping\r
+ ;version="1.2",org.springframework.core.io;version="2.5.6.A",org.spri\r
+ ngframework.oxm;version="1.5.5.A",org.springframework.xml.transform;v\r
+ ersion="1.5.5.A",org.springframework.xml.validation;version="1.5.5.A"\r
+ ,org.springframework.xml.xsd;version="1.5.5.A",org.w3c.dom;version="1\r
+ .3",org.xml.sax;version="1.3"\r
Bundle-SymbolicName: org.argeo.slc.support.castor\r
Bundle-DocURL: http://www.argeo.org\r
Originally-Created-By: 1.6.0 (Sun Microsystems Inc.)\r
<groupId>org.springframework</groupId>
<artifactId>org.springframework.context</artifactId>
</dependency>
- <dependency>
- <groupId>org.springframework.ws</groupId>
- <artifactId>org.springframework.oxm</artifactId>
- </dependency>
<dependency>
<groupId>org.dbunit</groupId>
+++ /dev/null
-package org.argeo.slc.core.process;\r
-\r
-import java.io.File;\r
-import java.io.FileWriter;\r
-import java.text.SimpleDateFormat;\r
-import java.util.Date;\r
-import java.util.HashMap;\r
-import java.util.List;\r
-import java.util.Map;\r
-\r
-import javax.xml.transform.stream.StreamResult;\r
-\r
-import org.apache.commons.io.IOUtils;\r
-import org.argeo.slc.core.SlcException;\r
-import org.springframework.oxm.Marshaller;\r
-\r
-public class FileSlcExecutionNotifier implements SlcExecutionNotifier {\r
- private final static SimpleDateFormat sdf = new SimpleDateFormat(\r
- "yyyyMMdd-HHmmss");\r
-\r
- private String basePath;\r
- private Marshaller marshaller;\r
-\r
- private Map<String, String> uuidToDir = new HashMap<String, String>();\r
-\r
- public void addSteps(SlcExecution slcExecution,\r
- List<SlcExecutionStep> additionalSteps) {\r
- writeSlcExecution(slcExecution);\r
- }\r
-\r
- public void newExecution(SlcExecution slcExecution) {\r
- String dirPath = basePath + File.separator + sdf.format(new Date())\r
- + '-' + slcExecution.getUuid();\r
- File dir = new File(dirPath);\r
- dir.mkdirs();\r
-\r
- uuidToDir.put(slcExecution.getUuid(), dirPath);\r
-\r
- writeSlcExecution(slcExecution);\r
- }\r
-\r
- public void updateExecution(SlcExecution slcExecution) {\r
- writeSlcExecution(slcExecution);\r
- }\r
-\r
- public void updateStatus(SlcExecution slcExecution, String oldStatus,\r
- String newStatus) {\r
- writeSlcExecution(slcExecution);\r
- }\r
-\r
- protected void writeSlcExecution(SlcExecution slcExecution) {\r
- FileWriter out = null;\r
- try {\r
- out = new FileWriter(getFilePath(slcExecution));\r
- marshaller.marshal(slcExecution, new StreamResult(out));\r
- } catch (Exception e) {\r
- throw new SlcException("Cannot marshall SlcExecution to "\r
- + getFilePath(slcExecution), e);\r
- } finally {\r
- IOUtils.closeQuietly(out);\r
- }\r
- }\r
-\r
- protected String getFileName(SlcExecution slcExecution) {\r
- return "SlcExecution-" + slcExecution.getUuid() + ".xml";\r
- }\r
-\r
- protected String getFilePath(SlcExecution slcExecution) {\r
- String dirPath = uuidToDir.get(slcExecution.getUuid());\r
- return dirPath + File.separator + "SlcExecution-"\r
- + slcExecution.getUuid() + ".xml";\r
- }\r
-\r
- public void setBasePath(String basePath) {\r
- this.basePath = basePath;\r
- }\r
-\r
- public void setMarshaller(Marshaller marshaller) {\r
- this.marshaller = marshaller;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.test.tree;\r
-\r
-import java.io.File;\r
-import java.io.FileOutputStream;\r
-import java.io.InputStream;\r
-import java.io.OutputStream;\r
-\r
-import javax.xml.parsers.DocumentBuilder;\r
-import javax.xml.parsers.DocumentBuilderFactory;\r
-import javax.xml.transform.Templates;\r
-import javax.xml.transform.Transformer;\r
-import javax.xml.transform.TransformerFactory;\r
-import javax.xml.transform.dom.DOMResult;\r
-import javax.xml.transform.dom.DOMSource;\r
-import javax.xml.transform.stream.StreamResult;\r
-import javax.xml.transform.stream.StreamSource;\r
-\r
-import org.springframework.core.io.Resource;\r
-import org.springframework.oxm.Marshaller;\r
-import org.springframework.xml.transform.StringResult;\r
-import org.w3c.dom.Document;\r
-\r
-import org.apache.commons.io.IOUtils;\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-\r
-import org.argeo.slc.core.SlcException;\r
-import org.argeo.slc.core.test.TestResultListener;\r
-import org.argeo.slc.core.test.TestResultPart;\r
-\r
-public class XsltReportGenerator implements TestResultListener<TreeTestResult> {\r
- private Log log = LogFactory.getLog(getClass());\r
-\r
- private DocumentBuilder documentBuilder = null;\r
-\r
- private Resource xsltStyleSheet;\r
-\r
- private Templates templates;\r
-\r
- private Marshaller marshaller;\r
-\r
- private String outputDir;\r
- private String outputFileExtension = "html";\r
-\r
- private Boolean logXml = false;\r
-\r
- public void init() {\r
- if (templates != null)\r
- return;\r
-\r
- if (xsltStyleSheet == null)\r
- throw new SlcException("XSLT style sheet not specified.");\r
-\r
- InputStream in = null;\r
- try {\r
- TransformerFactory transformerFactory = TransformerFactory\r
- .newInstance();\r
- in = xsltStyleSheet.getInputStream();\r
- StreamSource xsltSource = new StreamSource(in);\r
- templates = transformerFactory.newTemplates(xsltSource);\r
- } catch (Exception e) {\r
- throw new SlcException("Could not initialize templates", e);\r
- } finally {\r
- IOUtils.closeQuietly(in);\r
- }\r
- }\r
-\r
- public void resultPartAdded(TreeTestResult testResult,\r
- TestResultPart testResultPart) {\r
-\r
- }\r
-\r
- public void close(TreeTestResult testResult) {\r
- if (templates == null)\r
- throw new SlcException("XSLT template not initialized");\r
-\r
- File file = getFile(testResult);\r
- OutputStream out = null;\r
-\r
- try {\r
- Transformer transformer = templates.newTransformer();\r
-\r
- if (documentBuilder == null)\r
- documentBuilder = DocumentBuilderFactory.newInstance()\r
- .newDocumentBuilder();\r
-\r
- Document document = documentBuilder.newDocument();\r
- DOMResult marshallResult = new DOMResult(document);\r
- marshaller.marshal(testResult, marshallResult);\r
-\r
- if (logXml) {\r
- Transformer identityTransformer = TransformerFactory\r
- .newInstance().newTransformer();\r
- StringResult xmlResult = new StringResult();\r
- identityTransformer.transform(new DOMSource(marshallResult\r
- .getNode()), xmlResult);\r
- log.info("Marshalled XML:\n" + xmlResult);\r
- }\r
-\r
- DOMSource transfoSource = new DOMSource(marshallResult.getNode());\r
-\r
- if (outputDir != null) {\r
- File dir = new File(outputDir);\r
- dir.mkdirs();\r
- out = new FileOutputStream(file);\r
- StreamResult outputResult = new StreamResult(out);\r
- transformer.transform(transfoSource, outputResult);\r
- } else {\r
- // print on console if no output dir\r
- StringResult result = new StringResult();\r
- transformer.transform(transfoSource, result);\r
- log.info("Generated report:\n" + result);\r
- }\r
- } catch (Exception e) {\r
- throw new SlcException(\r
- "Could not transform test result to " + file, e);\r
- } finally {\r
- IOUtils.closeQuietly(out);\r
- }\r
- }\r
-\r
- public Resource getXsltStyleSheet() {\r
- return xsltStyleSheet;\r
- }\r
-\r
- public void setXsltStyleSheet(Resource xsltStyleSheet) {\r
- this.xsltStyleSheet = xsltStyleSheet;\r
- }\r
-\r
- public void setTemplates(Templates templates) {\r
- this.templates = templates;\r
- }\r
-\r
- public void setMarshaller(Marshaller marshaller) {\r
- this.marshaller = marshaller;\r
- }\r
-\r
- public void setOutputDir(String outputDir) {\r
- this.outputDir = outputDir;\r
- }\r
-\r
- public void setOutputFileExtension(String outputFileExtension) {\r
- this.outputFileExtension = outputFileExtension;\r
- }\r
-\r
- protected File getFile(TreeTestResult result) {\r
- Long time = System.currentTimeMillis();\r
- return new File(outputDir + File.separator + time + "-"\r
- + result.getUuid() + "." + outputFileExtension);\r
- }\r
-\r
- public void setLogXml(Boolean logXml) {\r
- this.logXml = logXml;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.unit;\r
-\r
-import java.io.IOException;\r
-\r
-import javax.xml.transform.Source;\r
-\r
-import junit.framework.TestCase;\r
-\r
-import org.springframework.xml.validation.XmlValidator;\r
-import org.springframework.xml.xsd.XsdSchema;\r
-import org.xml.sax.SAXParseException;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-\r
-public abstract class UnitXmlUtils {\r
- private final static Log log = LogFactory.getLog(UnitXmlUtils.class);\r
-\r
- public static void assertXsdSchemaValidation(XsdSchema schema, Source source)\r
- throws IOException {\r
- XmlValidator validator = schema.createValidator();\r
- assertXmlValidation(validator, source);\r
- }\r
-\r
- public static void assertXmlValidation(XmlValidator validator, Source source)\r
- throws IOException {\r
- SAXParseException[] exceptions = validator.validate(source);\r
- if (exceptions.length != 0) {\r
- for (SAXParseException ex : exceptions) {\r
- log.error(ex.getMessage());\r
- }\r
- TestCase.fail("Could not validate");\r
- }\r
- }\r
-\r
- private UnitXmlUtils() {\r
-\r
- }\r
-}\r
Manifest-Version: 1.0\r
Export-Package: org.argeo.slc.core.process.spring;version="0.11.2.SNAP\r
- SHOT",org.argeo.slc.unit;uses:="org.apache.commons.logging,org.spring\r
- framework.context.support,org.springframework.context,org.springframe\r
- work.xml.xsd,org.springframework.xml.validation,org.xml.sax,org.argeo\r
- .slc.core,junit.framework,javax.xml.transform,org.argeo.slc.spring,or\r
- g.springframework.beans.factory";version="0.11.2.SNAPSHOT",org.argeo.\r
- slc.diff;uses:="org.argeo.slc.core,org.springframework.core.io";versi\r
- on="0.11.2.SNAPSHOT",org.argeo.slc.core.test.spring;version="0.11.2.S\r
- NAPSHOT",org.argeo.slc.xml.spring;version="0.11.2.SNAPSHOT",org.argeo\r
- .slc.logging;uses:="org.apache.log4j,org.argeo.slc.core,org.springfra\r
- mework.util,org.springframework.core.io,org.apache.commons.io";versio\r
- n="0.11.2.SNAPSHOT",org.argeo.slc.core.test.tree;uses:="org.springfra\r
- mework.oxm,org.apache.commons.logging,org.springframework.xml.transfo\r
- rm,org.springframework.core.io,javax.xml.parsers,javax.xml.transform.\r
- dom,org.w3c.dom,org.argeo.slc.core.test,org.argeo.slc.core.structure,\r
- org.argeo.slc.core,javax.xml.transform,javax.xml.transform.stream,org\r
- .apache.commons.io,org.argeo.slc.core.structure.tree";version="0.11.2\r
- .SNAPSHOT",org.argeo.slc.dao.test.tree;uses:="org.argeo.slc.dao.test,\r
- org.apache.commons.logging,org.argeo.slc.core.test.tree,org.argeo.slc\r
- .core.structure.tree,org.argeo.slc.core.test";version="0.11.2.SNAPSHO\r
- T",org.argeo.slc.unit.test.tree;uses:="org.apache.commons.logging,org\r
- .argeo.slc.unit,org.argeo.slc.core.test.tree,org.argeo.slc.core.test,\r
- org.argeo.slc.core.structure,org.argeo.slc.msg.test.tree,junit.framew\r
- ork,org.argeo.slc.core.build,org.argeo.slc.unit.process,org.argeo.slc\r
- .core.deploy,org.argeo.slc.core.process,org.argeo.slc.core.structure.\r
- tree";version="0.11.2.SNAPSHOT",org.argeo.slc.core.test;uses:="org.ap\r
- ache.commons.logging,org.argeo.slc.core,org.argeo.slc.core.test.conte\r
- xt,org.argeo.slc.core.deploy,org.argeo.slc.core.process,org.argeo.slc\r
- .core.structure.tree";version="0.11.2.SNAPSHOT",org.argeo.slc.core.st\r
- ructure;version="0.11.2.SNAPSHOT",org.argeo.slc.dao.test;uses:="org.a\r
- rgeo.slc.core.test";version="0.11.2.SNAPSHOT",org.argeo.slc.msg.test.\r
- tree;uses:="org.argeo.slc.core,org.argeo.slc.core.test.tree,org.argeo\r
- .slc.core.structure.tree,org.argeo.slc.core.test";version="0.11.2.SNA\r
- PSHOT",org.argeo.slc.support.deploy;uses:="org.apache.commons.logging\r
- ,org.argeo.slc.core,org.argeo.slc.core.build,org.argeo.slc.core.deplo\r
- y";version="0.11.2.SNAPSHOT",org.argeo.slc.support.deploy.db;uses:="o\r
- rg.apache.commons.logging,org.dbunit.operation,org.springframework.co\r
- re.io,org.dbunit.dataset,org.argeo.slc.core,javax.sql,org.argeo.slc.c\r
- ore.build,org.dbunit.dataset.xml,org.dbunit.database,org.dbunit,org.a\r
- rgeo.slc.core.deploy";version="0.11.2.SNAPSHOT",org.argeo.slc.core.te\r
- st.context;uses:="org.argeo.slc.core.structure,org.apache.commons.log\r
- ging,org.argeo.slc.core,org.argeo.slc.core.structure.tree,org.argeo.s\r
- lc.core.test,org.springframework.beans.factory";version="0.11.2.SNAPS\r
- HOT",org.argeo.slc.unit.process;uses:="junit.framework,org.argeo.slc.\r
- unit,org.argeo.slc.core.process";version="0.11.2.SNAPSHOT",org.argeo.\r
- slc.core.build;version="0.11.2.SNAPSHOT",org.argeo.slc.spring;uses:="\r
- org.apache.commons.logging,org.argeo.slc.core,org.springframework.cor\r
- e.io,org.springframework.beans.factory";version="0.11.2.SNAPSHOT",org\r
- .argeo.slc.core.deploy;uses:="org.apache.commons.logging,org.argeo.sl\r
- c.core.build";version="0.11.2.SNAPSHOT",org.argeo.slc.core.process;us\r
- es:="org.springframework.oxm,org.argeo.slc.core,javax.xml.transform,j\r
- avax.xml.transform.stream,org.apache.commons.io";version="0.11.2.SNAP\r
- SHOT",org.argeo.slc.msg.process;uses:="org.argeo.slc.core.process";ve\r
- rsion="0.11.2.SNAPSHOT",org.argeo.slc.core.structure.tree;uses:="org.\r
- argeo.slc.core.structure,org.argeo.slc.core";version="0.11.2.SNAPSHOT\r
- ",org.argeo.slc.xml;version="0.11.2.SNAPSHOT"\r
+ SHOT",org.argeo.slc.unit;uses:="org.apache.commons.logging,junit.fram\r
+ ework,org.argeo.slc.core,org.springframework.context.support,org.arge\r
+ o.slc.spring,org.springframework.context,org.springframework.beans.fa\r
+ ctory";version="0.11.2.SNAPSHOT",org.argeo.slc.diff;uses:="org.argeo.\r
+ slc.core,org.springframework.core.io";version="0.11.2.SNAPSHOT",org.a\r
+ rgeo.slc.core.test.spring;version="0.11.2.SNAPSHOT",org.argeo.slc.xml\r
+ .spring;version="0.11.2.SNAPSHOT",org.argeo.slc.logging;uses:="org.ap\r
+ ache.log4j,org.argeo.slc.core,org.springframework.util,org.springfram\r
+ ework.core.io,org.apache.commons.io";version="0.11.2.SNAPSHOT",org.ar\r
+ geo.slc.core.test.tree;uses:="org.argeo.slc.core.structure,org.apache\r
+ .commons.logging,org.argeo.slc.core,org.argeo.slc.core.structure.tree\r
+ ,org.argeo.slc.core.test";version="0.11.2.SNAPSHOT",org.argeo.slc.dao\r
+ .test.tree;uses:="org.argeo.slc.dao.test,org.apache.commons.logging,o\r
+ rg.argeo.slc.core.test.tree,org.argeo.slc.core.structure.tree,org.arg\r
+ eo.slc.core.test";version="0.11.2.SNAPSHOT",org.argeo.slc.core.test;u\r
+ ses:="org.apache.commons.logging,org.argeo.slc.core,org.argeo.slc.cor\r
+ e.test.context,org.argeo.slc.core.deploy,org.argeo.slc.core.process,o\r
+ rg.argeo.slc.core.structure.tree";version="0.11.2.SNAPSHOT",org.argeo\r
+ .slc.unit.test.tree;uses:="org.apache.commons.logging,org.argeo.slc.u\r
+ nit,org.argeo.slc.core.test.tree,org.argeo.slc.core.test,org.argeo.sl\r
+ c.core.structure,org.argeo.slc.msg.test.tree,junit.framework,org.arge\r
+ o.slc.core.build,org.argeo.slc.unit.process,org.argeo.slc.core.deploy\r
+ ,org.argeo.slc.core.process,org.argeo.slc.core.structure.tree";versio\r
+ n="0.11.2.SNAPSHOT",org.argeo.slc.core.structure;version="0.11.2.SNAP\r
+ SHOT",org.argeo.slc.dao.test;uses:="org.argeo.slc.core.test";version=\r
+ "0.11.2.SNAPSHOT",org.argeo.slc.msg.test.tree;uses:="org.argeo.slc.co\r
+ re,org.argeo.slc.core.test.tree,org.argeo.slc.core.structure.tree,org\r
+ .argeo.slc.core.test";version="0.11.2.SNAPSHOT",org.argeo.slc.support\r
+ .deploy;uses:="org.apache.commons.logging,org.argeo.slc.core,org.arge\r
+ o.slc.core.build,org.argeo.slc.core.deploy";version="0.11.2.SNAPSHOT"\r
+ ,org.argeo.slc.support.deploy.db;uses:="org.apache.commons.logging,or\r
+ g.dbunit.operation,org.springframework.core.io,org.dbunit.dataset,org\r
+ .argeo.slc.core,javax.sql,org.argeo.slc.core.build,org.dbunit.dataset\r
+ .xml,org.dbunit.database,org.dbunit,org.argeo.slc.core.deploy";versio\r
+ n="0.11.2.SNAPSHOT",org.argeo.slc.core.test.context;uses:="org.argeo.\r
+ slc.core.structure,org.apache.commons.logging,org.argeo.slc.core,org.\r
+ argeo.slc.core.structure.tree,org.argeo.slc.core.test,org.springframe\r
+ work.beans.factory";version="0.11.2.SNAPSHOT",org.argeo.slc.unit.proc\r
+ ess;uses:="junit.framework,org.argeo.slc.unit,org.argeo.slc.core.proc\r
+ ess";version="0.11.2.SNAPSHOT",org.argeo.slc.core.build;version="0.11\r
+ .2.SNAPSHOT",org.argeo.slc.spring;uses:="org.apache.commons.logging,o\r
+ rg.argeo.slc.core,org.springframework.core.io,org.springframework.bea\r
+ ns.factory";version="0.11.2.SNAPSHOT",org.argeo.slc.core.deploy;uses:\r
+ ="org.apache.commons.logging,org.argeo.slc.core.build";version="0.11.\r
+ 2.SNAPSHOT",org.argeo.slc.msg.process;uses:="org.argeo.slc.core.proce\r
+ ss";version="0.11.2.SNAPSHOT",org.argeo.slc.core.structure.tree;uses:\r
+ ="org.argeo.slc.core.structure,org.argeo.slc.core";version="0.11.2.SN\r
+ APSHOT",org.argeo.slc.xml;version="0.11.2.SNAPSHOT"\r
Tool: Bnd-0.0.255\r
Bundle-Name: Argeo SLC Support Simple\r
Created-By: 1.6.0 (Sun Microsystems Inc.)\r
Bundle-ManifestVersion: 2\r
Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt\r
Bundle-Description: Basic implementations of SLC Specifications\r
-Import-Package: javax.sql,javax.xml.parsers,javax.xml.transform,javax.\r
- xml.transform.dom,javax.xml.transform.stream,junit.framework;version=\r
- "3.8",org.apache.commons.io;version="1.4",org.apache.commons.logging;\r
- version="1.1",org.apache.log4j;version="1.2",org.argeo.slc.core;versi\r
- on="0.11.2.SNAPSHOT",org.argeo.slc.core.build;version="0.11.2.SNAPSHO\r
- T",org.argeo.slc.core.deploy;version="0.11.2.SNAPSHOT",org.argeo.slc.\r
- core.process;version="0.11.2.SNAPSHOT",org.argeo.slc.core.process.spr\r
- ing;version="0.11.2.SNAPSHOT",org.argeo.slc.core.structure;version="0\r
- .11.2.SNAPSHOT",org.argeo.slc.core.structure.tree;version="0.11.2.SNA\r
- PSHOT",org.argeo.slc.core.test;version="0.11.2.SNAPSHOT",org.argeo.sl\r
- c.core.test.context;version="0.11.2.SNAPSHOT",org.argeo.slc.core.test\r
- .spring;version="0.11.2.SNAPSHOT",org.argeo.slc.core.test.tree;versio\r
- n="0.11.2.SNAPSHOT",org.argeo.slc.dao.test;version="0.11.2.SNAPSHOT",\r
- org.argeo.slc.dao.test.tree;version="0.11.2.SNAPSHOT",org.argeo.slc.d\r
- iff;version="0.11.2.SNAPSHOT",org.argeo.slc.logging;version="0.11.2.S\r
- NAPSHOT",org.argeo.slc.msg.process;version="0.11.2.SNAPSHOT",org.arge\r
- o.slc.msg.test.tree;version="0.11.2.SNAPSHOT",org.argeo.slc.spring;ve\r
- rsion="0.11.2.SNAPSHOT",org.argeo.slc.support.deploy;version="0.11.2.\r
- SNAPSHOT",org.argeo.slc.support.deploy.db;version="0.11.2.SNAPSHOT",o\r
- rg.argeo.slc.unit;version="0.11.2.SNAPSHOT",org.argeo.slc.unit.proces\r
- s;version="0.11.2.SNAPSHOT",org.argeo.slc.unit.test.tree;version="0.1\r
- 1.2.SNAPSHOT",org.argeo.slc.xml;version="0.11.2.SNAPSHOT",org.argeo.s\r
- lc.xml.spring;version="0.11.2.SNAPSHOT",org.dbunit;version="2.2",org.\r
- dbunit.database;version="2.2",org.dbunit.dataset;version="2.2",org.db\r
- unit.dataset.xml;version="2.2",org.dbunit.operation;version="2.2",org\r
- .springframework.beans.factory;version="2.5.6.A",org.springframework.\r
- context;version="2.5.6.A",org.springframework.context.support;version\r
- ="2.5.6.A",org.springframework.core.io;version="2.5.6.A",org.springfr\r
- amework.oxm;version="1.5.5.A",org.springframework.util;version="2.5.6\r
- .A",org.springframework.xml.transform;version="1.5.5.A",org.springfra\r
- mework.xml.validation;version="1.5.5.A",org.springframework.xml.xsd;v\r
- ersion="1.5.5.A",org.w3c.dom,org.xml.sax\r
+Import-Package: javax.sql,junit.framework;version="3.8",org.apache.com\r
+ mons.io;version="1.4",org.apache.commons.logging;version="1.1",org.ap\r
+ ache.log4j;version="1.2",org.argeo.slc.core;version="0.11.2.SNAPSHOT"\r
+ ,org.argeo.slc.core.build;version="0.11.2.SNAPSHOT",org.argeo.slc.cor\r
+ e.deploy;version="0.11.2.SNAPSHOT",org.argeo.slc.core.process;version\r
+ ="0.11.2.SNAPSHOT",org.argeo.slc.core.process.spring;version="0.11.2.\r
+ SNAPSHOT",org.argeo.slc.core.structure;version="0.11.2.SNAPSHOT",org.\r
+ argeo.slc.core.structure.tree;version="0.11.2.SNAPSHOT",org.argeo.slc\r
+ .core.test;version="0.11.2.SNAPSHOT",org.argeo.slc.core.test.context;\r
+ version="0.11.2.SNAPSHOT",org.argeo.slc.core.test.spring;version="0.1\r
+ 1.2.SNAPSHOT",org.argeo.slc.core.test.tree;version="0.11.2.SNAPSHOT",\r
+ org.argeo.slc.dao.test;version="0.11.2.SNAPSHOT",org.argeo.slc.dao.te\r
+ st.tree;version="0.11.2.SNAPSHOT",org.argeo.slc.diff;version="0.11.2.\r
+ SNAPSHOT",org.argeo.slc.logging;version="0.11.2.SNAPSHOT",org.argeo.s\r
+ lc.msg.process;version="0.11.2.SNAPSHOT",org.argeo.slc.msg.test.tree;\r
+ version="0.11.2.SNAPSHOT",org.argeo.slc.spring;version="0.11.2.SNAPSH\r
+ OT",org.argeo.slc.support.deploy;version="0.11.2.SNAPSHOT",org.argeo.\r
+ slc.support.deploy.db;version="0.11.2.SNAPSHOT",org.argeo.slc.unit;ve\r
+ rsion="0.11.2.SNAPSHOT",org.argeo.slc.unit.process;version="0.11.2.SN\r
+ APSHOT",org.argeo.slc.unit.test.tree;version="0.11.2.SNAPSHOT",org.ar\r
+ geo.slc.xml;version="0.11.2.SNAPSHOT",org.argeo.slc.xml.spring;versio\r
+ n="0.11.2.SNAPSHOT",org.dbunit;version="2.2",org.dbunit.database;vers\r
+ ion="2.2",org.dbunit.dataset;version="2.2",org.dbunit.dataset.xml;ver\r
+ sion="2.2",org.dbunit.operation;version="2.2",org.springframework.bea\r
+ ns.factory;version="2.5.6.A",org.springframework.context;version="2.5\r
+ .6.A",org.springframework.context.support;version="2.5.6.A",org.sprin\r
+ gframework.core.io;version="2.5.6.A",org.springframework.util;version\r
+ ="2.5.6.A"\r
Bundle-SymbolicName: org.argeo.slc.support.simple\r
Bundle-DocURL: http://www.argeo.org\r
Originally-Created-By: 1.6.0 (Sun Microsystems Inc.)\r
-<?xml version="1.0" encoding="UTF-8"?>\r
-<classpath>\r
- <classpathentry kind="src" output="target/classes" path="src/main/java"/>\r
- <classpathentry kind="src" output="target/classes" path="src/main/resources"/>\r
- <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>\r
- <classpathentry kind="src" output="target/test-classes" path="src/test/resources"/>\r
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>\r
- <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>\r
- <classpathentry kind="output" path="target/classes"/>\r
-</classpath>\r
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" output="target/classes" path="src/main/java"/>
+ <classpathentry kind="src" output="target/classes" path="src/main/resources"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
- <name>org.argeo.slc.agent</name>
+ <name>org.argeo.slc.support.ws.client</name>
<comment></comment>
<projects>
</projects>
+++ /dev/null
-<project xmlns:artifact="urn:maven-artifact-ant" default="deploy">\r
-\r
- <path id="maven-ant-tasks.classpath"\r
- path="D:\dev\tools\maven-2.0.7\lib\maven-ant-tasks-2.0.7.jar" />\r
- <typedef resource="org/apache/maven/artifact/ant/antlib.xml"\r
- uri="urn:maven-artifact-ant"\r
- classpathref="maven-ant-tasks.classpath" />\r
-\r
- <property name="local" location="D:/dev/mavenLocal/" />\r
- <property name="local.argeo" location="${local}/org/argeo/slc/" />\r
- <property name="repo.argeo"\r
- value="file:///D:/dev/test/mavenArgeoLocalRep/" />\r
-\r
- <target name="deploy">\r
- <deploy artifact="argeo-slc-core" version="0.6.0" />\r
- </target>\r
-\r
- <!-- Macrodefs -->\r
- <macrodef name="deploy">\r
- <attribute name="artifact" />\r
- <attribute name="version" />\r
- <sequential>\r
- <artifact:install-provider artifactId="wagon-file"\r
- version="1.0-beta-2" />\r
- <artifact:deploy file="${local.argeo}/@{artifact}/@{version}/@{artifact}-@{version}.jar">\r
- <artifact:pom file="pom.xml" />\r
- <remoterepository url="${repo.argeo}" />\r
- <attach classifier="sources"\r
- file="${local.argeo}/@{artifact}/@{version}/@{artifact}-@{version}-sources.jar" />\r
- <attach classifier="javadoc"\r
- file="${local.argeo}/@{artifact}/@{version}/@{artifact}-@{version}-javadoc.jar" />\r
- </artifact:deploy>\r
- </sequential>\r
- </macrodef>\r
-</project>
\ No newline at end of file
<groupId>org.argeo.slc</groupId>
<artifactId>argeo-slc</artifactId>
<version>0.11.2-SNAPSHOT</version>
- <relativePath>../org.argeo.slc</relativePath>
+ <relativePath>../../org.argeo.slc</relativePath>
</parent>
- <artifactId>org.argeo.slc.agent</artifactId>
+ <groupId>org.argeo.slc.runtime</groupId>
+ <artifactId>org.argeo.slc.support.ws</artifactId>
<packaging>jar</packaging>
- <name>Argeo SLC Agent</name>
- <scm>
- <connection>
- scm:svn:https://www.argeo.org/svn/slc/trunk/org.argeo.slc.agent
- </connection>
- <url>
- https://www.argeo.org/svn/slc/trunk/org.argeo.slc.agent
- </url>
- </scm>
+ <name>Argeo SLC Support Web Services Client</name>
<build>
<plugins>
<!-- Look to parent pom for inheritances -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
</plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-assembly-plugin</artifactId>
- <configuration>
- <descriptors>
- <descriptor>src/assembly/base.xml</descriptor>
- </descriptors>
- </configuration>
- <executions>
- <execution>
- <id>assembly-base</id>
- <phase>package</phase>
- <goals>
- <goal>single</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<configuration>
<instructions>
<Export-Package>
- org.argeo.slc.*
+ org.argeo.slc.ws.*
</Export-Package>
- <Import-Package>*,org.argeo.slc.core.test.spring,org.apache.commons.cli;resolution:=optional</Import-Package>
</instructions>
</configuration>
</plugin>
</build>
<dependencies>
<dependency>
- <groupId>org.argeo.slc</groupId>
- <artifactId>org.argeo.slc.core</artifactId>
+ <groupId>org.argeo.slc.runtime</groupId>
+ <artifactId>org.argeo.slc.specs</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
- <groupId>org.argeo.slc</groupId>
- <artifactId>org.argeo.slc.detached</artifactId>
+ <groupId>org.argeo.slc.runtime</groupId>
+ <artifactId>org.argeo.slc.support.simple</artifactId>
<version>${project.version}</version>
</dependency>
com.springsource.com.sun.xml.messaging.saaj
</artifactId>
</dependency>
-
- <dependency>
- <groupId>org.argeo.dep.osgi</groupId>
- <artifactId>org.argeo.dep.osgi.ant</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>com.springsource.org.apache.commons.net</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.oro</groupId>
- <artifactId>com.springsource.org.apache.oro</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.bsf</groupId>
- <artifactId>com.springsource.org.apache.bsf</artifactId>
- </dependency>
- <dependency>
- <groupId>org.beanshell</groupId>
- <artifactId>com.springsource.bsh</artifactId>
- </dependency>
-
- <!--
- <dependency> <groupId>org.apache.maven</groupId>
- <artifactId>maven-embedder</artifactId> </dependency> <dependency>
- <groupId>org.apache.maven</groupId>
- <artifactId>maven-settings</artifactId> </dependency>
- -->
- <dependency>
- <groupId>org.argeo.dep.osgi</groupId>
- <artifactId>org.argeo.dep.osgi.commons.cli</artifactId>
- </dependency>
-
</dependencies>
</project>
\ No newline at end of file
+++ /dev/null
-<assembly xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/assembly-1.1.0-SNAPSHOT.xsd">
- <id>base</id>
- <includeBaseDirectory>false</includeBaseDirectory>
- <formats>
- <format>tar.gz</format>
- </formats>
- <fileSets>
- <fileSet>
- <directory>src/base</directory>
- <outputDirectory></outputDirectory>
- <fileMode>0755</fileMode>
- </fileSet>
- </fileSets>
-</assembly>
\ No newline at end of file
+++ /dev/null
-#!/bin/sh
-
-# Find home
-if [ -z "$ARGEO_SLC_HOME" -o ! -d "$ARGEO_SLC_HOME" ] ; then
- ## resolve links - $0 may be a link to home
- PRG="$0"
- progname=`basename "$0"`
-
- # need this for relative symlinks
- while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
- done
-
- ARGEO_SLC_HOME=`dirname "$PRG"`/..
-
- # make it fully qualified
- ARGEO_SLC_HOME=`cd "$ARGEO_SLC_HOME" && pwd`
-fi
-
-echo ARGEO_SLC_HOME=$ARGEO_SLC_HOME
-
-for i in "${ARGEO_SLC_HOME}"/lib/*.jar
- do
- CLASSPATH="$CLASSPATH:$i"
- done
-
-#echo CLASSPATH=$CLASSPATH
-
-java -cp $CLASSPATH org.argeo.slc.cli.SlcMain "$@"
+++ /dev/null
-package org.argeo.slc.ant;
-
-public interface AntConstants {
- // ANT
- /** The Ant reference to the Spring application context used. */
- public static final String REF_ROOT_CONTEXT = "slcApplicationContext";
- /** The Ant reference to the SLC structure registry used. */
- public static final String REF_STRUCTURE_REGISTRY = "slcStructureRegistry";
- /** The Ant reference to the <code>TreePath</code> of the current project */
- public static final String REF_PROJECT_PATH = "slcProjectPath";
- /**
- * Resource path to the property file listing the SLC specific Ant tasks:
- * /org/argeo/slc/ant/taskdefs.properties
- */
- public static final String SLC_TASKDEFS_RESOURCE_PATH = "/org/argeo/slc/ant/taskdefs.properties";
- /**
- * Resource path to the property file listing the SLC specific Ant types:
- * /org/argeo/slc/ant/typedefs.properties
- */
- public static final String SLC_TYPEDEFS_RESOURCE_PATH = "/org/argeo/slc/ant/typedefs.properties";
- public static final String REF_SLC_EXECUTION = "slcExecution";
-
- // SLC EXECUTION
- public static final String EXECTYPE_ANT = "org.apache.tools.ant";
- public static final String EXECTYPE_SLC_ANT = "org.argeo.slc.ant";
-
- public final static String EXECATTR_RUNTIME = "slc.runtime";
- public final static String EXECATTR_ANT_FILE = "ant.file";
- public final static String EXECATTR_ANT_TARGETS = "ant.targets";
-
- // PROPERTIES
- /** Property for the root dir (SLC root property file). */
- public final static String ROOT_DIR_PROPERTY = "slc.rootDir";
- /** Property for the conf dir (SLC root property file). */
- public final static String CONF_DIR_PROPERTY = "slc.confDir";
- /** Property for the work dir (SLC root property file). */
- public final static String WORK_DIR_PROPERTY = "slc.workDir";
- /** Name of the Spring bean used by default */
- public final static String DEFAULT_TEST_RUN_PROPERTY = "slc.defaultTestRun";
-
- /** Property for the runtime to use. */
- public final static String RUNTIME_PROPERTY = "slc.runtime";
-
- // LOG4J
- public final static String MDC_ANT_PROJECT = "slc.ant.project";
-
-}
+++ /dev/null
-package org.argeo.slc.ant;
-
-import org.apache.tools.ant.Project;
-import org.argeo.slc.core.process.SlcExecution;
-import org.argeo.slc.runtime.SlcExecutionContext;
-import org.springframework.context.ApplicationContext;
-
-public class AntExecutionContext implements SlcExecutionContext {
- private final Project project;
-
- public AntExecutionContext(Project project) {
- this.project = project;
- }
-
- public <T> T getBean(String name) {
- ApplicationContext context = (ApplicationContext) project
- .getReference(AntConstants.REF_ROOT_CONTEXT);
- return (T) context.getBean(name);
- }
-
- public <T> T getAntRef(String antId) {
- return (T) project.getReference(antId);
- }
-
- public SlcExecution getSlcExecution() {
- return (SlcExecution) project
- .getReference(AntConstants.REF_SLC_EXECUTION);
- }
-
- public Project getProject() {
- return project;
- }
-}
+++ /dev/null
-package org.argeo.slc.ant;\r
-\r
-import java.io.File;\r
-import java.net.URL;\r
-import java.util.Arrays;\r
-import java.util.Map;\r
-import java.util.Properties;\r
-import java.util.Vector;\r
-\r
-import org.apache.tools.ant.Project;\r
-import org.apache.tools.ant.ProjectHelper;\r
-import org.apache.tools.ant.helper.ProjectHelper2;\r
-import org.argeo.slc.core.SlcException;\r
-\r
-/** Run regular Ant script (that is, not SLC instrumented) */\r
-public class AntRunner {\r
- private URL buildFile;\r
- private String[] targets;\r
- private Properties properties;\r
-\r
- public AntRunner() {\r
-\r
- }\r
-\r
- public AntRunner(URL buildFile, String target, Properties properties) {\r
- this(buildFile, new String[] { target }, properties);\r
- }\r
-\r
- public AntRunner(URL buildFile, String[] targets, Properties properties) {\r
- this.buildFile = buildFile;\r
- this.targets = targets;\r
- this.properties = properties;\r
- }\r
-\r
- public void run() {\r
- Project p = new Project();\r
-\r
- String path = buildFile.getFile();\r
- p.setUserProperty("ant.file", path);\r
- p.setBaseDir(extractBaseDir(path));\r
-\r
- p.init();\r
- ProjectHelper projectHelper = new ProjectHelper2();\r
- p.addReference(ProjectHelper.PROJECTHELPER_REFERENCE, projectHelper);\r
- projectHelper.parse(p, buildFile);\r
-\r
- if (properties != null) {\r
- for (Map.Entry<Object, Object> entry : properties.entrySet()) {\r
- p.setUserProperty(entry.getKey().toString(), entry.getValue()\r
- .toString());\r
- }\r
- }\r
-\r
- p.fireBuildStarted();\r
- Throwable exception = null;\r
- try {\r
- if (targets == null) {\r
- p.executeTarget(p.getDefaultTarget());\r
- } else {\r
- p.executeTargets(new Vector<String>(Arrays.asList(targets)));\r
- }\r
- } catch (Throwable e) {\r
- exception = e;\r
- throw new SlcException("Could not run Ant script " + buildFile, e);\r
- } finally {\r
- p.fireBuildFinished(exception);\r
- }\r
-\r
- }\r
-\r
- private File extractBaseDir(String path) {\r
- String baseDir = null;\r
- if (path.length() > 1) {\r
- int indx = path.lastIndexOf('/', path.length() - 1);\r
- if (indx == -1 || indx == 0) {\r
- baseDir = "/";\r
- } else {\r
- baseDir = path.substring(0, indx) + "/";\r
- }\r
- } else {\r
- baseDir = "/";\r
- }\r
- File file = new File(baseDir);\r
- if (file.exists()) {\r
- return file;\r
- } else {\r
- return new File(System.getProperty("user.dir"));\r
- }\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.StringTokenizer;
-import java.util.Vector;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.log4j.Appender;
-import org.apache.log4j.LogManager;
-import org.apache.log4j.MDC;
-import org.apache.tools.ant.BuildListener;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.ProjectHelper;
-import org.apache.tools.ant.helper.ProjectHelper2;
-import org.argeo.slc.core.SlcException;
-import org.argeo.slc.core.process.SlcExecution;
-import org.argeo.slc.core.structure.SimpleSElement;
-import org.argeo.slc.core.structure.StructureRegistry;
-import org.argeo.slc.core.structure.tree.TreeSPath;
-import org.argeo.slc.core.structure.tree.TreeSRegistry;
-import org.argeo.slc.logging.Log4jUtils;
-import org.argeo.slc.runtime.SlcExecutionOutput;
-import org.springframework.beans.factory.BeanFactoryUtils;
-import org.springframework.beans.factory.ListableBeanFactory;
-import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
-import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
-import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.context.support.GenericApplicationContext;
-import org.springframework.core.io.DefaultResourceLoader;
-import org.springframework.core.io.Resource;
-import org.springframework.core.io.ResourceLoader;
-import org.springframework.util.SystemPropertyUtils;
-
-public class AntSlcApplication {
- private final static String DEFAULT_APP_LOG4J_PROPERTIES = "org/argeo/slc/ant/defaultAppLog4j.properties";
-
- private final static Log log = LogFactory.getLog(AntSlcApplication.class);
-
- private Resource contextLocation;
- private ConfigurableApplicationContext parentContext;
-
- private Resource rootDir;
- private Resource confDir;
- private File workDir;
-
- public void execute(SlcExecution slcExecution, Properties properties,
- Map<String, Object> references,
- SlcExecutionOutput<AntExecutionContext> executionOutput) {
-
- // Properties and application logging initialization
- initSystemProperties(properties);
- Log4jUtils.initLog4j("classpath:" + DEFAULT_APP_LOG4J_PROPERTIES);
-
- log.info("\n###\n### Start SLC execution " + slcExecution.getUuid()
- + "\n###\n");
- if (log.isDebugEnabled()) {
- log.debug("rootDir=" + rootDir);
- log.debug("confDir=" + confDir);
- log.debug("workDir=" + workDir);
- }
-
- // Ant coordinates
- String scriptRelativePath = findAntScript(slcExecution);
- List<String> targets = findAntTargets(slcExecution);
-
- // Spring initialization
- ConfigurableApplicationContext ctx = createExecutionContext(slcExecution);
-
- // Ant project initialization
- Project project = new Project();
- AntExecutionContext executionContext = new AntExecutionContext(project);
- project.addReference(AntConstants.REF_ROOT_CONTEXT, ctx);
- project.addReference(AntConstants.REF_SLC_EXECUTION, slcExecution);
-
- try {
- initProject(project, properties, references);
- parseProject(project, scriptRelativePath);
-
- // Execute project
- initStructure(project, scriptRelativePath);
- runProject(project, targets);
-
- if (executionOutput != null)
- executionOutput.postExecution(executionContext);
- } finally {
- ctx.close();
- }
- }
-
- protected void initSystemProperties(Properties userProperties) {
- // Set user properties as system properties so that Spring can access
- // them
- if (userProperties != null) {
- for (Object key : userProperties.keySet()) {
- System.setProperty(key.toString(), userProperties
- .getProperty(key.toString()));
- }
- }
-
- if (System.getProperty(AntConstants.DEFAULT_TEST_RUN_PROPERTY) == null) {
- System.setProperty(AntConstants.DEFAULT_TEST_RUN_PROPERTY,
- "defaultTestRun");
- }
-
- try {
- if (rootDir != null)
- setSystemPropertyForRes(AntConstants.ROOT_DIR_PROPERTY, rootDir);
- if (confDir != null)
- setSystemPropertyForRes(AntConstants.CONF_DIR_PROPERTY, confDir);
- if (workDir != null)
- System.setProperty(AntConstants.WORK_DIR_PROPERTY, workDir
- .getCanonicalPath());
-
- // Additional properties in slc.properties file. Already set sytem
- // properties (such as the various directories) can be resolved in
- // placeholders.
- if (confDir != null) {
- Resource slcPropertiesRes = confDir
- .createRelative("slc.properties");
- if (slcPropertiesRes.exists()) {
- Properties slcProperties = new Properties();
- InputStream in = slcPropertiesRes.getInputStream();
- try {
- slcProperties.load(in);
- } finally {
- IOUtils.closeQuietly(in);
- }
-
- for (Object obj : slcProperties.keySet()) {
- String key = obj.toString();
- if (!System.getProperties().containsKey(key)) {
- String value = SystemPropertyUtils
- .resolvePlaceholders(slcProperties
- .getProperty(key));
- System.setProperty(key, value);
- }
- }
- }
- }
- } catch (Exception e) {
- throw new SlcException("Cannot init system properties.", e);
- }
- }
-
- /**
- * Set property as an absolute file path if the resource can be located on
- * the file system, or as an url.
- */
- private void setSystemPropertyForRes(String key, Resource res)
- throws IOException {
- String value = null;
- try {
- value = res.getFile().getCanonicalPath();
- } catch (IOException e) {
- value = res.getURL().toString();
- }
- System.setProperty(key, value);
- }
-
- protected ConfigurableApplicationContext createExecutionContext(
- SlcExecution slcExecution) {
- try {
-
- // Find runtime definition
- Resource runtimeRes = null;
- String runtimeStr = slcExecution.getAttributes().get(
- AntConstants.EXECATTR_RUNTIME);
- if (runtimeStr == null)
- runtimeStr = System.getProperty(AntConstants.RUNTIME_PROPERTY,
- "default");
-
- ResourceLoader rl = new DefaultResourceLoader(getClass()
- .getClassLoader());
- try {// tries absolute reference
- runtimeRes = rl.getResource(runtimeStr);
- } catch (Exception e) {
- // silent
- }
- if (runtimeRes == null || !runtimeRes.exists()) {
- if (confDir != null)
- runtimeRes = confDir.createRelative("runtime/" + runtimeStr
- + ".xml");
- }
-
- // Find runtime independent application context definition
- if (confDir != null && contextLocation == null) {
- contextLocation = confDir
- .createRelative("applicationContext.xml");
- }
-
- GenericApplicationContext ctx = new GenericApplicationContext(
- parentContext);
- ctx.setDisplayName("SLC Execution #" + slcExecution.getUuid());
-
- XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader(ctx);
- if (runtimeRes != null && runtimeRes.exists())
- xmlReader.loadBeanDefinitions(runtimeRes);
- else
- log.warn("No runtime context defined");
-
- if (contextLocation != null && contextLocation.exists())
- xmlReader.loadBeanDefinitions(contextLocation);
- else
- log.warn("No runtime independent application context defined");
-
- // Add property place holder
- PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer();
- ppc.setIgnoreUnresolvablePlaceholders(true);
- ctx.addBeanFactoryPostProcessor(ppc);
-
- ctx.refresh();
- return ctx;
- } catch (Exception e) {
- throw new SlcException(
- "Cannot create SLC execution application context.", e);
- }
- }
-
- protected String findAntScript(SlcExecution slcExecution) {
- String scriptStr = slcExecution.getAttributes().get(
- AntConstants.EXECATTR_ANT_FILE);
- if (scriptStr == null)
- throw new SlcException("No Ant script provided");
-
- return scriptStr;
- }
-
- protected List<String> findAntTargets(SlcExecution slcExecution) {
- String targetList = slcExecution.getAttributes().get(
- AntConstants.EXECATTR_ANT_TARGETS);
- List<String> targets = new Vector<String>();
- if (targetList != null) {
- StringTokenizer stTargets = new StringTokenizer(targetList, ",");
- while (stTargets.hasMoreTokens()) {
- targets.add(stTargets.nextToken());
- }
- }
- return targets;
- }
-
- protected void initProject(Project project, Properties properties,
- Map<String, Object> references) {
- if (properties != null) {
- for (Map.Entry<Object, Object> entry : properties.entrySet()) {
- project.setUserProperty(entry.getKey().toString(), entry
- .getValue().toString());
- }
- }
-
- if (references != null) {
- for (Map.Entry<String, Object> entry : references.entrySet()) {
- project.addReference(entry.getKey(), entry.getValue());
- }
- }
-
- //project.addBuildListener(new CommonsLoggingListener());
-
- ListableBeanFactory context = (ListableBeanFactory) project
- .getReference(AntConstants.REF_ROOT_CONTEXT);
- // Register build listeners
- Map<String, BuildListener> listeners = BeanFactoryUtils
- .beansOfTypeIncludingAncestors(context, BuildListener.class,
- false, false);
- for (BuildListener listener : listeners.values()) {
- project.addBuildListener(listener);
- }
-
- // Register log4j appenders from context
- MDC.put(AntConstants.MDC_ANT_PROJECT, project);
- Map<String, Appender> appenders = context.getBeansOfType(
- Appender.class, false, true);
- for (Appender appender : appenders.values()) {
- LogManager.getRootLogger().addAppender(appender);
- }
-
- project.init();
- addCustomTaskAndTypes(project);
- }
-
- /** Loads the SLC specific Ant tasks. */
- protected void addCustomTaskAndTypes(Project project) {
- Properties taskdefs = getDefs(project,
- AntConstants.SLC_TASKDEFS_RESOURCE_PATH);
- for (Object o : taskdefs.keySet()) {
- String name = o.toString();
- try {
- project.addTaskDefinition(name, Class.forName(taskdefs
- .getProperty(name)));
- } catch (ClassNotFoundException e) {
- log.error("Unknown class for task " + name, e);
- }
- }
- Properties typedefs = getDefs(project,
- AntConstants.SLC_TYPEDEFS_RESOURCE_PATH);
- for (Object o : typedefs.keySet()) {
- String name = o.toString();
- try {
- project.addDataTypeDefinition(name, Class.forName(typedefs
- .getProperty(name)));
- } catch (ClassNotFoundException e) {
- log.error("Unknown class for type " + name, e);
- }
- }
- }
-
- private Properties getDefs(Project project, String path) {
- Properties defs = new Properties();
- try {
- InputStream in = project.getClass().getResourceAsStream(path);
- defs.load(in);
- in.close();
- } catch (IOException e) {
- throw new SlcException("Cannot load task definitions", e);
- }
- return defs;
- }
-
- protected void initStructure(Project project, String scriptRelativePath) {
- // Init structure registry
- StructureRegistry<TreeSPath> registry = new TreeSRegistry();
- project.addReference(AntConstants.REF_STRUCTURE_REGISTRY, registry);
-
- // Lowest levels
- StringTokenizer st = new StringTokenizer(scriptRelativePath, "/");
- TreeSPath currPath = null;
- while (st.hasMoreTokens()) {
- String name = st.nextToken();
- if (currPath == null) {
- currPath = TreeSPath.createRootPath(name);
- } else {
- if (st.hasMoreTokens())// don't register project file
- currPath = currPath.createChild(name);
- }
- registry.register(currPath, new SimpleSElement(name));
- }
-
- // Project level
- String projectName = project.getName() != null
- && !project.getName().equals("") ? project.getName()
- : "project";
- TreeSPath projectPath = currPath.createChild(projectName);
-
- String projectDesc = project.getDescription() != null
- && !project.getDescription().equals("") ? project
- .getDescription() : projectPath.getName();
-
- registry.register(projectPath, new SimpleSElement(projectDesc));
- project.addReference(AntConstants.REF_PROJECT_PATH, projectPath);
-
- if (log.isDebugEnabled())
- log.debug("Project path: " + projectPath);
- }
-
- protected void parseProject(Project project, String scriptRelativePath) {
- try {
- Resource script = rootDir.createRelative(scriptRelativePath);
- File baseDir = null;
- try {
- File scriptFile = script.getFile();
- baseDir = scriptFile.getParentFile();
- } catch (IOException e) {// resource is not a file
- baseDir = new File(System.getProperty("user.dir"));
- }
- project.setBaseDir(baseDir);
- // Reset basedir property, in order to avoid base dir override when
- // running in Maven
- project.setProperty("basedir", baseDir.getAbsolutePath());
-
- ProjectHelper2 projectHelper = new ProjectHelper2();
- project.addReference(ProjectHelper.PROJECTHELPER_REFERENCE,
- projectHelper);
- projectHelper.parse(project, script.getURL());
- } catch (Exception e) {
- throw new SlcException("Could not parse project for script "
- + scriptRelativePath, e);
- }
-
- }
-
- protected void runProject(Project p, List<String> targets) {
- p.fireBuildStarted();
- Throwable exception = null;
- try {
- if (targets.size() == 0) {// no target defined
- p.executeTarget(p.getDefaultTarget());
- } else {
- p.executeTargets(new Vector<String>(targets));
- }
- } catch (Throwable e) {
- exception = e;
- throw new SlcException("SLC Ant execution failed", exception);
- } finally {
- p.fireBuildFinished(exception);
- }
- }
-
- public void setContextLocation(Resource contextLocation) {
- this.contextLocation = contextLocation;
- }
-
- public void setRootDir(Resource rootDir) {
- this.rootDir = rootDir;
- }
-
- public void setConfDir(Resource confDir) {
- this.confDir = confDir;
- }
-
- public void setWorkDir(File workDir) {
- this.workDir = workDir;
- }
-
- public void setParentContext(ConfigurableApplicationContext runtimeContext) {
- this.parentContext = runtimeContext;
- }
-
-}
+++ /dev/null
-package org.argeo.slc.ant;
-
-import java.util.StringTokenizer;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.tools.ant.util.FileNameMapper;
-
-public class RemoveRootDirMapper implements FileNameMapper {
- private Log log = LogFactory.getLog(RemoveRootDirMapper.class);
- private String to = "enabled";
-
- public String[] mapFileName(String sourceFileName) {
- StringTokenizer st = new StringTokenizer(sourceFileName, "/");
- boolean first = true;
- boolean skipRoot = !to.equals("disabled");
- StringBuffer buf = new StringBuffer("");
- while (st.hasMoreTokens()) {
- if (first && skipRoot) { // skip
- st.nextToken();
- first = false;
- } else {
- buf.append(st.nextToken()).append('/');
- }
- }
-
- if (log.isTraceEnabled()) {
- log.trace("Source: " + sourceFileName + " - out: " + buf);
- }
- return new String[] { buf.toString() };
- }
-
- public void setFrom(String from) {
- }
-
- public void setTo(String to) {
- this.to = to;
- }
-
-}
+++ /dev/null
-package org.argeo.slc.ant;\r
-\r
-import java.util.List;\r
-import java.util.Vector;\r
-\r
-import org.apache.log4j.AppenderSkeleton;\r
-import org.apache.log4j.Level;\r
-import org.apache.log4j.MDC;\r
-import org.apache.log4j.spi.LoggingEvent;\r
-import org.apache.tools.ant.BuildEvent;\r
-import org.apache.tools.ant.BuildListener;\r
-import org.apache.tools.ant.Project;\r
-import org.argeo.slc.core.SlcException;\r
-import org.argeo.slc.core.process.SlcExecution;\r
-import org.argeo.slc.core.process.SlcExecutionNotifier;\r
-import org.argeo.slc.core.process.SlcExecutionStep;\r
-\r
-public class SlcExecutionBuildListener extends AppenderSkeleton implements\r
- BuildListener {\r
- private List<SlcExecutionNotifier> notifiers = new Vector<SlcExecutionNotifier>();\r
-\r
- private boolean currentStepNotified = true;\r
-\r
- // CUSTOMIZATIONS\r
- /**\r
- * Whether to log Ant initialization stuff before the first target has been\r
- * called.\r
- */\r
- private boolean logBeforeFirstTarget = false;\r
- /** Whether the first target has been called. */\r
- private boolean firstTargetStarted = false;\r
-\r
- private boolean logTaskStartFinish = true;\r
-\r
- public SlcExecutionBuildListener() {\r
- // Default log level\r
- setThreshold(Level.INFO);\r
- }\r
-\r
- public void buildStarted(BuildEvent event) {\r
- SlcExecution slcExecution = getSlcExecution(event);\r
- for (SlcExecutionNotifier notifier : notifiers) {\r
- notifier.newExecution(slcExecution);\r
- }\r
- }\r
-\r
- public void buildFinished(BuildEvent event) {\r
- SlcExecution slcExecution = getSlcExecution(event);\r
- String oldStatus = slcExecution.getStatus();\r
- slcExecution.setStatus(SlcExecution.STATUS_FINISHED);\r
-\r
- for (SlcExecutionNotifier notifier : notifiers) {\r
- notifier.updateStatus(slcExecution, oldStatus, slcExecution\r
- .getStatus());\r
- }\r
- }\r
-\r
- public void messageLogged(BuildEvent event) {\r
- if (!shouldLog())\r
- return;\r
-\r
- SlcExecution slcExecution = getSlcExecution(event);\r
- if (slcExecution != null) {\r
- if (currentStepNotified) {\r
- slcExecution.getSteps().add(\r
- new SlcExecutionStep(event.getMessage()));\r
- notifyStep(slcExecution, slcExecution.currentStep());\r
- currentStepNotified = true;\r
- } else {\r
- slcExecution.currentStep().addLog(event.getMessage());\r
- }\r
- } else {\r
- // TODO: log before initialization?\r
- }\r
- }\r
-\r
- public void targetStarted(BuildEvent event) {\r
- if (!firstTargetStarted)\r
- firstTargetStarted = true;\r
-\r
- addLogStep(event, "Target " + event.getTarget().getName() + " started");\r
- }\r
-\r
- public void targetFinished(BuildEvent event) {\r
- addLogStep(event, "Target " + event.getTarget().getName() + " finished");\r
- }\r
-\r
- public void taskStarted(BuildEvent event) {\r
- if (!shouldLog())\r
- return;\r
-\r
- SlcExecution slcExecution = getSlcExecution(event);\r
- if (!currentStepNotified) {\r
- notifyStep(slcExecution, slcExecution.currentStep());\r
- currentStepNotified = true;\r
- }\r
-\r
- String msg = null;\r
- if (logTaskStartFinish)\r
- msg = "Task " + event.getTask().getTaskName() + " started";\r
-\r
- slcExecution.getSteps().add(new SlcExecutionStep(msg));\r
-\r
- currentStepNotified = false;\r
- }\r
-\r
- public void taskFinished(BuildEvent event) {\r
- if (!shouldLog())\r
- return;\r
-\r
- SlcExecution slcExecution = getSlcExecution(event);\r
- if (!currentStepNotified) {\r
-\r
- if (logTaskStartFinish)\r
- slcExecution.currentStep().addLog(\r
- "Task " + event.getTask().getTaskName() + " finished");\r
-\r
- notifyStep(slcExecution, slcExecution.currentStep());\r
- currentStepNotified = true;\r
- }\r
- }\r
-\r
- public void setNotifiers(List<SlcExecutionNotifier> notifiers) {\r
- this.notifiers = notifiers;\r
- }\r
-\r
- protected SlcExecution getSlcExecution(BuildEvent event) {\r
- return getSlcExecution(event.getProject());\r
- }\r
-\r
- protected SlcExecution getSlcExecution(Project project) {\r
- SlcExecution slcExecution = (SlcExecution) project\r
- .getReference(AntConstants.REF_SLC_EXECUTION);\r
-\r
- if (slcExecution == null)\r
- throw new SlcException("No SLC Execution registered.");\r
- return slcExecution;\r
- }\r
-\r
- protected void addLogStep(BuildEvent event, String msg) {\r
- SlcExecution slcExecution = getSlcExecution(event);\r
- slcExecution.getSteps().add(new SlcExecutionStep(msg));\r
-\r
- notifyStep(slcExecution, slcExecution.currentStep());\r
- currentStepNotified = true;\r
- }\r
-\r
- protected void notifyStep(SlcExecution slcExecution, SlcExecutionStep step) {\r
- Vector<SlcExecutionStep> additionalSteps = new Vector<SlcExecutionStep>();\r
- additionalSteps.add(step);\r
- notifySteps(slcExecution, additionalSteps);\r
- }\r
-\r
- protected void notifySteps(SlcExecution slcExecution,\r
- List<SlcExecutionStep> additionalSteps) {\r
- for (SlcExecutionNotifier notifier : notifiers) {\r
- notifier.addSteps(slcExecution, additionalSteps);\r
- }\r
- }\r
-\r
- /* Log4j methods */\r
-\r
- @Override\r
- protected void append(LoggingEvent event) {\r
- Project project = (Project) MDC.get(AntConstants.MDC_ANT_PROJECT);\r
- if (project == null)\r
- throw new SlcException("No Ant project registered in Log4j MDC.");\r
-\r
- SlcExecution slcExecution = getSlcExecution(project);\r
- if (currentStepNotified) {\r
- slcExecution.getSteps().add(\r
- new SlcExecutionStep(event.getMessage().toString()));\r
- currentStepNotified = false;\r
- } else {\r
- slcExecution.currentStep().addLog(event.getMessage().toString());\r
- }\r
- }\r
-\r
- protected boolean shouldLog() {\r
- return logBeforeFirstTarget || firstTargetStarted;\r
- }\r
-\r
- public void close() {\r
- }\r
-\r
- public boolean requiresLayout() {\r
- return false;\r
- }\r
-\r
- public void setLogBeforeFirstTarget(boolean logBeforeFirstTarget) {\r
- this.logBeforeFirstTarget = logBeforeFirstTarget;\r
- }\r
-\r
- public void setLogTaskStartFinish(boolean logTaskStartFinish) {\r
- this.logTaskStartFinish = logTaskStartFinish;\r
- }\r
-\r
- public void setLogLevel(String logLevel) {\r
- setThreshold(Level.toLevel(logLevel));\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant.deploy;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-import org.apache.tools.ant.BuildException;\r
-import org.argeo.slc.ant.spring.SpringArg;\r
-import org.argeo.slc.ant.structure.SAwareTask;\r
-import org.argeo.slc.core.build.Distribution;\r
-import org.argeo.slc.core.deploy.Deployment;\r
-import org.argeo.slc.core.deploy.DeploymentData;\r
-import org.argeo.slc.core.deploy.TargetData;\r
-\r
-/** Ant task wrapping a deployment. */\r
-public class SlcDeployTask extends SAwareTask {\r
- private Log log = LogFactory.getLog(SlcDeployTask.class);\r
-\r
- private String deploymentBean = null;\r
-\r
- private SpringArg<DeploymentData> deploymentDataArg;\r
- private SpringArg<TargetData> targetDataArg;\r
- private SpringArg<Distribution> distributionArg;\r
-\r
- @Override\r
- public void executeActions(String mode) throws BuildException {\r
- Deployment deployment = (Deployment) getContext().getBean(\r
- deploymentBean);\r
-\r
- // set overridden references\r
- if (distributionArg != null) {\r
- deployment.setDistribution(distributionArg.getInstance());\r
- log.trace("Overrides distribution");\r
- }\r
-\r
- if (deploymentDataArg != null) {\r
- deployment.setDeploymentData(deploymentDataArg.getInstance());\r
- log.trace("Overrides deployment data");\r
- }\r
-\r
- if (targetDataArg != null) {\r
- deployment.setTargetData(targetDataArg.getInstance());\r
- log.trace("Overrides target data");\r
- }\r
-\r
- deployment.execute();\r
- }\r
-\r
- /**\r
- * The bean name of the test run to use. If not set the default is used.\r
- * \r
- * @see SlcAntConfig\r
- */\r
- public void setDeployment(String deploymentBean) {\r
- this.deploymentBean = deploymentBean;\r
- }\r
-\r
- /** Creates deployment data sub tag. */\r
- public SpringArg<DeploymentData> createDeploymentData() {\r
- deploymentDataArg = new SpringArg<DeploymentData>();\r
- return deploymentDataArg;\r
- }\r
-\r
- /** Creates target data sub tag. */\r
- public SpringArg<TargetData> createTargetData() {\r
- targetDataArg = new SpringArg<TargetData>();\r
- return targetDataArg;\r
- }\r
-\r
- public SpringArg<Distribution> createDistribution() {\r
- distributionArg = new SpringArg<Distribution>();\r
- return distributionArg;\r
- }\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant.deploy;
-
-import java.lang.reflect.Method;
-
-import org.argeo.slc.ant.structure.SAwareTask;
-import org.argeo.slc.core.SlcException;
-import org.argeo.slc.core.deploy.DeployedSystem;
-import org.argeo.slc.core.deploy.DeployedSystemManager;
-
-public class SlcManagerTask extends SAwareTask {
- private String action;
- private String manager;
-
- @Override
- protected void executeActions(String mode) {
- DeployedSystemManager<DeployedSystem> systemManager = getBean(manager);
-
- try {
- Method method = systemManager.getClass().getMethod(action, null);
- method.invoke(systemManager, null);
- } catch (Exception e) {
- throw new SlcException("Cannot execute action " + action
- + " for manager " + manager, e);
- }
- }
-
- public void setAction(String action) {
- this.action = action;
- }
-
- public void setManager(String manager) {
- this.manager = manager;
- }
-
-}
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-Integration of SLC Deploy in Ant.\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.ant.detached;
-
-import java.util.Properties;
-import java.util.UUID;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.ant.spring.MapArg;
-import org.argeo.slc.ant.structure.SAwareTask;
-import org.argeo.slc.core.SlcException;
-import org.argeo.slc.detached.DetachedAnswer;
-import org.argeo.slc.detached.DetachedClient;
-import org.argeo.slc.detached.DetachedRequest;
-import org.argeo.slc.spring.SpringUtils;
-
-public class SlcDetachedTask extends SAwareTask {
- private final static Log log = LogFactory.getLog(SlcDetachedTask.class);
-
- private String client;
- private String action;
-
- private MapArg properties;
-
- @Override
- protected void executeActions(String mode) {
- // Find detached client
- DetachedClient detachedClient = null;
- if (client != null)
- detachedClient = getBean(client);
- else
- detachedClient = SpringUtils.loadSingleFromContext(getContext(),
- DetachedClient.class);
-
- if (detachedClient == null)
- throw new SlcException("Could not find any detached client.");
-
- // Prepare and send request
- DetachedRequest request = new DetachedRequest(UUID.randomUUID()
- .toString());
- request.setRef(action);
-
- if (properties != null) {
- Properties props = new Properties();
- props.putAll(properties.getMap());
- request.setProperties(props);
- }
-
- try {
- detachedClient.sendRequest(request);
- DetachedAnswer answer = detachedClient.receiveAnswer();
- if (answer.getStatus() == DetachedAnswer.ERROR)
- throw new SlcException("Error when executing request "
- + answer.getUuid() + ": " + answer.getLog());
- else
- log.info("Admin answer: " + answer.getLog());
- } catch (Exception e) {
- throw new SlcException("Could not send request.", e);
- }
- }
-
- public void setClient(String driverBean) {
- this.client = driverBean;
- }
-
- public void setAction(String action) {
- this.action = action;
- }
-
- public MapArg createProperties() {
- if (properties == null)
- properties = new MapArg();
- else
- throw new SlcException("Properties already declared.");
- return properties;
- }
-}
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-Bases classes for SLC Ant extensions.\r
-<h2>Introduction</h2>\r
-SLC Ant allows to integrate Ant and Spring in order to run an\r
-application based on top of SLC. Sequence of actions are defined in Ant\r
-files with specific Ant tasks referencing Spring beans implementing the\r
-SLC interfaces. The properties of these beans can be overridden at\r
-runtime in the Ant scripts.\r
-<br />\r
-SLC Ant also provides a tree-based implementation of the SLC structure\r
-which allows to uniquely identify and reference the various actions.\r
-\r
-<h2>Installation</h2>\r
-The structure will be first defined by the directory tree where the Ant\r
-files are stored. In order to define the root of this tree, you need to\r
-place in the root directory an\r
-<b>SLC Ant root file</b>\r
-(default name: slcRoot.properties).\r
-<br />\r
-In this root file you can define a configuration directory and a work\r
-directory (default values are provided if they are not explicitly set).\r
-<br />\r
-Additional properties can then be defined in files stored under the\r
-configuration directory.\r
-<br />\r
-For details about the configuration and the various properties, please\r
-refer to {@link org.argeo.slc.ant.SlcAntConfig}.\r
-\r
-<h2>Running SLC Ant</h2>\r
-SLC Ant can be run either via pure Ant scripts or programmatically using\r
-{@link org.argeo.slc.ant.AntRegistryUtil}. In both cases, make sure that\r
-SLC and its dependencies are in the classpath (Spring (always), logging\r
-system such as log4j, Hibernate, etc.).\r
-\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.ant.spring;\r
-\r
-import org.springframework.context.ApplicationContext;\r
-\r
-import org.apache.tools.ant.Task;\r
-\r
-import org.argeo.slc.ant.AntConstants;\r
-import org.argeo.slc.core.process.SlcExecution;\r
-\r
-/** Abstract Ant task providing access to a Spring context. */\r
-public abstract class AbstractSpringTask extends Task {\r
-\r
- /** Gets the related Spring context. */\r
- protected ApplicationContext getContext() {\r
- return (ApplicationContext) getProject().getReference(\r
- AntConstants.REF_ROOT_CONTEXT);\r
- }\r
-\r
- /** Gets the related slc execution or null if not is registered. */\r
- protected SlcExecution getSlcExecution() {\r
- return (SlcExecution) getProject().getReference(\r
- AntConstants.REF_SLC_EXECUTION);\r
- }\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant.spring;
-
-import java.util.List;
-import java.util.Vector;
-
-import org.argeo.slc.core.SlcException;
-
-/** List of overrides */
-public class ListArg {
- private List<OverrideArg> list = new Vector<OverrideArg>();
-
- /** Creates override sub tag. */
- public OverrideArg createOverride() {
- OverrideArg overrideArg = new OverrideArg();
- list.add(overrideArg);
- return overrideArg;
- }
-
- /** Gets as list of objects. */
- public List<Object> getAsObjectList(List<Object> originalList) {
- if (originalList != null && originalList.size() != list.size()) {
- throw new SlcException("Cannot merge lists of different sizes.");
- }
-
- List<Object> objectList = new Vector<Object>(list.size());
-
- for (int i = 0; i < list.size(); i++) {
- OverrideArg arg = list.get(i);
-
- if (originalList != null)
- arg.setOriginal(originalList.get(i));
-
- objectList.add(arg.getObject());
- }
- return objectList;
- }
-}
+++ /dev/null
-package org.argeo.slc.ant.spring;\r
-\r
-import java.util.List;\r
-import java.util.Map;\r
-import java.util.TreeMap;\r
-import java.util.Vector;\r
-\r
-import org.apache.tools.ant.BuildException;\r
-\r
-import org.argeo.slc.core.SlcException;\r
-\r
-public class MapArg {\r
- private List<EntryArg> entries = new Vector<EntryArg>();\r
- private Map<String, Object> map = new TreeMap<String, Object>();\r
-\r
- public EntryArg createEntry() {\r
- EntryArg arg = new EntryArg();\r
- entries.add(arg);\r
- return arg;\r
- }\r
-\r
- public Map<String, Object> getAsObjectMap(Map<String, Object> originalMap) {\r
- Map<String, Object> objectMap = new TreeMap<String, Object>();\r
- for (EntryArg arg : entries) {\r
- String key = arg.getKey();\r
-\r
- if (objectMap.containsKey(key)) {\r
- throw new SlcException("Key '" + key + "' already set.");\r
- }\r
-\r
- if (originalMap != null && originalMap.containsKey(key)\r
- && arg.getOverrideArg() != null)\r
- arg.getOverrideArg().setOriginal(originalMap.get(key));\r
-\r
- objectMap.put(key, arg.getObject());\r
-\r
- }\r
- return objectMap;\r
- }\r
-\r
- /**\r
- * Returns a cached reference if it was already called. This reference could\r
- * have been modified externally and thus not anymore be in line with the\r
- * configuration.\r
- */\r
- public Map<String, Object> getMap() {\r
- if (map.size() == 0)\r
- map = getAsObjectMap(null);\r
- return map;\r
- }\r
-\r
- public static class EntryArg {\r
- private String key;\r
- private Object valueStr;\r
- private OverrideArg overrideArg;\r
-\r
- public String getKey() {\r
- return key;\r
- }\r
-\r
- public void setKey(String key) {\r
- this.key = key;\r
- }\r
-\r
- public Object getObject() {\r
- if (overrideArg != null) {\r
- return overrideArg.getObject();\r
- } else if (valueStr != null) {\r
- return valueStr;\r
- } else {\r
- throw new BuildException("Value not set.");\r
- }\r
- }\r
-\r
- public void setValue(String value) {\r
- check();\r
- this.valueStr = value;\r
- }\r
-\r
- public OverrideArg createOverride() {\r
- check();\r
- overrideArg = new OverrideArg();\r
- return overrideArg;\r
- }\r
-\r
- private void check() {\r
- if (valueStr != null || overrideArg != null) {\r
- throw new BuildException("Value already set");\r
- }\r
- }\r
-\r
- public OverrideArg getOverrideArg() {\r
- return overrideArg;\r
- }\r
-\r
- }\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant.spring;\r
-\r
-import java.util.List;\r
-import java.util.Map;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-import org.apache.tools.ant.BuildException;\r
-\r
-/** Ant type allowing to override bean properties. */\r
-public class OverrideArg extends SpringArg<Object> {\r
- private final static Log log = LogFactory.getLog(OverrideArg.class);\r
-\r
- private String name;\r
- private Object value;\r
- private ListArg overrideList;\r
- private MapArg overrideMap;\r
-\r
- private Boolean merge = false;\r
-\r
- /** The name of the property to override. */\r
- public String getName() {\r
- return name;\r
- }\r
-\r
- /** Sets the name. */\r
- public void setName(String name) {\r
- this.name = name;\r
- }\r
-\r
- /** Both value and bean cannot be set. */\r
- public void setValue(String value) {\r
- checkValueAlreadySet();\r
- this.value = value;\r
- }\r
-\r
- @Override\r
- public void setBean(String bean) {\r
- checkValueAlreadySet();\r
- super.setBean(bean);\r
- }\r
-\r
- /** Creates override list sub tag. */\r
- public ListArg createList() {\r
- checkValueAlreadySet();\r
- overrideList = new ListArg();\r
- return overrideList;\r
- }\r
-\r
- public MapArg createMap() {\r
- checkValueAlreadySet();\r
- overrideMap = new MapArg();\r
- return overrideMap;\r
- }\r
-\r
- /**\r
- * The related object: the value if a value had been set or an instance of\r
- * the bean if not.\r
- */\r
- public Object getObject() {\r
- if (value != null) {\r
- if (log.isTraceEnabled())\r
- log.trace(this + "\t: Returns override object as value");\r
- return value;\r
- } else if (getBean() != null\r
- || getAntref() != null\r
- // works on original if no collection is defined\r
- || (getOriginal() != null && overrideList == null && overrideMap == null)) {\r
- if (log.isTraceEnabled())\r
- log.trace(this + "\t: Returns override object as instance");\r
- return getInstance();\r
- } else if (overrideList != null) {\r
- if (log.isTraceEnabled())\r
- log.trace(this + "\t: Returns override object as list");\r
- return overrideList.getAsObjectList((List<Object>) getOriginal());\r
- } else if (overrideMap != null) {\r
- if (log.isTraceEnabled())\r
- log.trace(this + "\t: Returns override object as map");\r
- return overrideMap\r
- .getAsObjectMap((Map<String, Object>) getOriginal());\r
- } else {\r
- throw new BuildException("Value or bean not set.");\r
- }\r
- }\r
-\r
- protected void checkValueAlreadySet() {\r
- super.checkValueAlreadySet();\r
- if (value != null || overrideList != null || overrideMap != null) {\r
- if (!getMerge()) {\r
- throw new BuildException("Value already set.");\r
- }\r
- }\r
- }\r
-\r
- public Boolean getMerge() {\r
- return merge;\r
- }\r
-\r
- public void setMerge(Boolean merge) {\r
- this.merge = merge;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant.spring;\r
-\r
-import java.util.List;\r
-import java.util.Vector;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-import org.apache.tools.ant.types.DataType;\r
-import org.argeo.slc.ant.AntConstants;\r
-import org.argeo.slc.core.SlcException;\r
-import org.springframework.beans.BeanWrapper;\r
-import org.springframework.beans.BeanWrapperImpl;\r
-import org.springframework.beans.factory.InitializingBean;\r
-import org.springframework.context.ApplicationContext;\r
-\r
-/** Abstract Ant type wrapping a Spring bean. */\r
-public class SpringArg<T> extends DataType {\r
- private final static Log log = LogFactory.getLog(SpringArg.class);\r
-\r
- private List<OverrideArg> overrides = new Vector<OverrideArg>();\r
-\r
- private String bean;\r
- private String antref;\r
- /**\r
- * Reference to the original object, used to merge overrides. <b>this object\r
- * will be modified</b>.\r
- */\r
- private T original;\r
-\r
- // cache bean instance to avoid reading it twice if it is a prototype\r
- private T instance = null;\r
-\r
- /** The <u>name</u> of the underlying bean, as set through the attribute. */\r
- public String getBean() {\r
- return bean;\r
- }\r
-\r
- /** Setter for the bean name. */\r
- public void setBean(String bean) {\r
- checkValueAlreadySet();\r
- this.bean = bean;\r
- }\r
-\r
- public String getAntref() {\r
- return antref;\r
- }\r
-\r
- /** Sets a reference to an ant data type. */\r
- public void setAntref(String antref) {\r
- checkValueAlreadySet();\r
- this.antref = antref;\r
- }\r
-\r
- /**\r
- * Retrieve the instance of the bean, and sets the overridden properties.\r
- * <b>The value is cached.</b>\r
- */\r
- public T getInstance() {\r
- if (instance == null) {\r
- if (log.isTraceEnabled())\r
- log.trace(this + "\t: Creates instance");\r
-\r
- if (bean != null) {\r
- instance = (T) getContext().getBean(bean);\r
- if (instance == null)\r
- throw new SlcException("No object found for Spring bean "\r
- + bean);\r
- } else if (antref != null) {\r
- instance = (T) getProject().getReference(antref);\r
- if (instance == null)\r
- throw new SlcException("No object found for Ant reference "\r
- + antref);\r
- } else if (original != null) {\r
- instance = original;\r
- } else {\r
- throw new SlcException(\r
- "Don't know how to retrieve bean instance");\r
- }\r
-\r
- setOverridenProperties(instance);\r
-\r
- // FIXME: why are we doing this? Could not find any object using it\r
- if (instance instanceof InitializingBean) {\r
- try {\r
- ((InitializingBean) instance).afterPropertiesSet();\r
- } catch (Exception e) {\r
- throw new SlcException("Could not initialize bean", e);\r
- }\r
- }\r
- } else {\r
- if (log.isTraceEnabled())\r
- log.trace(this + "\t: Returns cached instance");\r
- }\r
- return instance;\r
- }\r
-\r
- protected void setOverridenProperties(Object obj) {\r
- BeanWrapper wrapper = new BeanWrapperImpl(obj);\r
- for (OverrideArg override : overrides) {\r
- if (override.getName() == null) {\r
- throw new SlcException(\r
- "The name of the property to override has to be set.");\r
- }\r
-\r
- if (log.isTraceEnabled())\r
- log.trace(this + "\t: Overrides property " + override.getName()\r
- + " with " + override);\r
-\r
- if (override.getMerge() == true) {\r
- // if override is marked as merged retrieve the value and set is\r
- // as original\r
- override.setOriginal(wrapper.getPropertyValue(override\r
- .getName()));\r
- }\r
- wrapper.setPropertyValue(override.getName(), override.getObject());\r
- }\r
-\r
- }\r
-\r
- /** Creates an override subtag. */\r
- public OverrideArg createOverride() {\r
- OverrideArg propertyArg = new OverrideArg();\r
- overrides.add(propertyArg);\r
- return propertyArg;\r
- }\r
-\r
- /** The related Spring application context. */\r
- protected ApplicationContext getContext() {\r
- return (ApplicationContext) getProject().getReference(\r
- AntConstants.REF_ROOT_CONTEXT);\r
- }\r
-\r
- protected void checkValueAlreadySet() {\r
- if (antref != null || bean != null || original != null) {\r
- throw new SlcException("Instance value already defined.");\r
- }\r
- }\r
-\r
- public void setOriginal(T original) {\r
- checkValueAlreadySet();\r
- this.original = original;\r
- }\r
-\r
- public T getOriginal() {\r
- return original;\r
- }\r
-\r
- @Override\r
- public String toString() {\r
- StringBuffer buf = new StringBuffer(getClass().getSimpleName());\r
- if (bean != null) {\r
- buf.append("#bean=").append(bean);\r
- } else if (antref != null) {\r
- buf.append("#antref=").append(antref);\r
- } else if (original != null) {\r
- buf.append("#orig=").append(original.hashCode());\r
- } else {\r
- buf.append("#noid");\r
- }\r
- buf.append("#").append(hashCode());\r
- return buf.toString();\r
- }\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant.spring;
-
-import java.util.List;
-import java.util.Vector;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.tools.ant.BuildException;
-
-public class SpringRegister extends AbstractSpringTask {
- private static final Log log = LogFactory.getLog(SpringRegister.class);
-
- private List<BeanArg> beans = new Vector<BeanArg>();
-
- @Override
- public void execute() throws BuildException {
- for (BeanArg bean : beans) {
- Object instance = bean.getInstance();
- if (bean.getAntid() != null) {
- getProject().addReference(bean.getAntid(), instance);
- } else {
- if (bean.getAntref() != null) {
- log
- .warn("Cannot register beans with antref (Ant reference "
- + bean.getAntref() + ")");
- } else {
- getProject().addReference(bean.getBean(), instance);
- }
- }
- }
- }
-
- public BeanArg createObject() {
- BeanArg bean = new BeanArg();
- beans.add(bean);
- return bean;
- }
-
- protected static class BeanArg extends SpringArg<Object> {
- private String antid;
-
- public String getAntid() {
- return antid;
- }
-
- public void setAntid(String antid) {
- this.antid = antid;
- }
-
- }
-}
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-Integration of Spring in Ant.\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.ant.structure;\r
-\r
-import java.util.List;\r
-import java.util.Vector;\r
-\r
-import org.apache.tools.ant.BuildException;\r
-import org.apache.tools.ant.Target;\r
-import org.argeo.slc.ant.AntConstants;\r
-import org.argeo.slc.ant.spring.AbstractSpringTask;\r
-import org.argeo.slc.ant.spring.SpringArg;\r
-import org.argeo.slc.core.SlcException;\r
-import org.argeo.slc.core.structure.SimpleSElement;\r
-import org.argeo.slc.core.structure.StructureAware;\r
-import org.argeo.slc.core.structure.StructureElement;\r
-import org.argeo.slc.core.structure.StructureRegistry;\r
-import org.argeo.slc.core.structure.tree.TreeSPath;\r
-\r
-/** Ant task that can be registered within a structure. */\r
-public abstract class SAwareTask extends AbstractSpringTask {\r
- private String path;\r
- private TreeSPath treeSPath;\r
- private final List<SpringArg> sAwareArgs = new Vector<SpringArg>();\r
-\r
- private StructureElementArg structureElementArg;\r
-\r
- @Override\r
- public void init() throws BuildException {\r
- StructureRegistry<TreeSPath> registry = getRegistry();\r
- Target target = getOwningTarget();\r
-\r
- TreeSPath targetPath = createTargetPath(target);\r
- SimpleSElement targetElement = (SimpleSElement) registry\r
- .getElement(createTargetPath(target));\r
-\r
- if (targetElement == null) {\r
- targetElement = new SimpleSElement(target.getDescription(),\r
- "<no target desc>");\r
- registry.register(targetPath, targetElement);\r
- }\r
- }\r
-\r
- /**\r
- * Includes this arg in the checks for propagation of structure related\r
- * information.\r
- */\r
- protected void addSAwareArg(SpringArg arg) {\r
- sAwareArgs.add(arg);\r
- }\r
-\r
- @Override\r
- /**\r
- * Called by Ant at runtime. Decides whether to call the actions depending\r
- * of the mode of the underlying structure registry.\r
- * \r
- * @see #executeActions\r
- * @see StructureRegistry\r
- */\r
- public final void execute() throws BuildException {\r
- if (path == null) {\r
- // register the task in the structure\r
- TreeSPath targetPath = createTargetPath(getOwningTarget());\r
- TreeSPath taskPath = targetPath.createChild(getTaskName()\r
- + targetPath.listChildren(getRegistry()).size());\r
-\r
- treeSPath = taskPath;\r
- } else {\r
- treeSPath = new TreeSPath(path);\r
- }\r
-\r
- if (getRegistry().getElement(treeSPath) == null) {\r
- // No structure element registered.\r
- if (structureElementArg != null) {\r
- getRegistry().register(treeSPath,\r
- structureElementArg.getStructureElement());\r
- } else {\r
- if (getDescription() != null) {\r
- getRegistry().register(treeSPath,\r
- new SimpleSElement(getDescription()));\r
- }\r
- }\r
- }\r
-\r
- // notify registered args\r
- for (SpringArg arg : sAwareArgs) {\r
- Object obj = arg.getInstance();\r
-\r
- if (obj instanceof StructureAware) {\r
- StructureAware<TreeSPath> sAwareT = (StructureAware<TreeSPath>) obj;\r
- sAwareT.notifyCurrentPath(getRegistry(), treeSPath);\r
- }\r
- }\r
-\r
- // execute depending on the registry mode\r
- String mode = getRegistry().getMode();\r
- if (mode.equals(StructureRegistry.ALL)) {\r
- executeActions(mode);\r
- } else if (mode.equals(StructureRegistry.ACTIVE)) {\r
- List<TreeSPath> activePaths = getRegistry().getActivePaths();\r
-\r
- if (activePaths.contains(treeSPath)) {\r
- if (activePaths.contains(treeSPath)) {\r
- executeActions(mode);\r
- }\r
- }\r
- }\r
-\r
- }\r
-\r
- /** Actions to be executed by the implementor. */\r
- protected abstract void executeActions(String mode);\r
-\r
- public <T> T getBean(String beanName) {\r
- return (T) getContext().getBean(beanName);\r
- }\r
-\r
- /** Create a reference to an external structure element. */\r
- public StructureElementArg createStructureElement() {\r
- if (structureElementArg != null)\r
- throw new SlcException("Arg already set.");\r
- structureElementArg = new StructureElementArg();\r
- return structureElementArg;\r
- }\r
-\r
- /** Gets the underlying structure registry. */\r
- protected StructureRegistry<TreeSPath> getRegistry() {\r
- return (StructureRegistry<TreeSPath>) getProject().getReference(\r
- AntConstants.REF_STRUCTURE_REGISTRY);\r
- }\r
-\r
- /** Creates the treeSPath for a given Ant target. */\r
- protected static TreeSPath createTargetPath(Target target) {\r
- TreeSPath projectPath = (TreeSPath) target.getProject().getReference(\r
- AntConstants.REF_PROJECT_PATH);\r
- return projectPath.createChild(target.getName());\r
- }\r
-\r
- /** Gets the treeSPath under which this task is registered. */\r
- public TreeSPath getTreeSPath() {\r
- return treeSPath;\r
- }\r
-\r
- public String getLabel() {\r
- String description = super.getDescription();\r
- if (description == null) {\r
- return "<no task def>";\r
- } else {\r
- return description;\r
- }\r
- }\r
-\r
- public void setPath(String path) {\r
- this.path = path;\r
- }\r
-}\r
-\r
-class StructureElementArg extends SpringArg {\r
- public StructureElement getStructureElement() {\r
- return (StructureElement) getInstance();\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-Integration of SLC Structure in Ant.\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.ant.test;\r
-\r
-import java.util.Collection;\r
-import java.util.List;\r
-import java.util.Map;\r
-import java.util.Vector;\r
-\r
-import org.apache.tools.ant.types.DataType;\r
-\r
-import org.argeo.slc.ant.spring.MapArg;\r
-import org.argeo.slc.core.SlcException;\r
-import org.argeo.slc.core.test.context.ContextAware;\r
-import org.argeo.slc.core.test.context.ContextUtils;\r
-import org.argeo.slc.core.test.context.ParentContextAware;\r
-\r
-public class ParentContextType extends DataType implements ParentContextAware {\r
- private MapArg values = null;\r
- private MapArg expectedValues = null;\r
-\r
- private String contextAnyFlag = DEFAULT_ANY_FLAG;\r
- private String contextSkipFlag = DEFAULT_SKIP_FLAG;\r
-\r
- private String basedon = null;\r
-\r
- private List<ContextAware> children = new Vector<ContextAware>();\r
-\r
- public MapArg createValues() {\r
- values = new MapArg();\r
- return values;\r
- }\r
-\r
- public MapArg createExpectedValues() {\r
- expectedValues = new MapArg();\r
- return expectedValues;\r
- }\r
-\r
- public void addChildContext(ContextAware contextAware) {\r
- children.add(contextAware);\r
- }\r
-\r
- public Collection<ContextAware> getChildContexts() {\r
- return children;\r
- }\r
-\r
- public String getContextAnyFlag() {\r
- return contextAnyFlag;\r
- }\r
-\r
- public void setContextAnyFlag(String contextAnyFlag) {\r
- this.contextAnyFlag = contextAnyFlag;\r
- }\r
-\r
- public String getContextSkipFlag() {\r
- return contextSkipFlag;\r
- }\r
-\r
- public void setContextSkipFlag(String contextSkipFlag) {\r
- this.contextSkipFlag = contextSkipFlag;\r
- }\r
-\r
- public Map<String, Object> getExpectedValues() {\r
- if (expectedValues == null)\r
- expectedValues = new MapArg();\r
- if (basedon != null) {\r
- Map<String, Object> map = getBaseContext().getExpectedValues();\r
- ContextUtils.putNotContained(expectedValues.getMap(), map);\r
- }\r
- return expectedValues.getMap();\r
- }\r
-\r
- public Map<String, Object> getValues() {\r
- if (values == null)\r
- values = new MapArg();\r
- if (basedon != null) {\r
- Map<String, Object> map = getBaseContext().getValues();\r
- ContextUtils.putNotContained(values.getMap(), map);\r
- }\r
- return values.getMap();\r
- }\r
-\r
- private ParentContextType getBaseContext() {\r
- return (ParentContextType) getProject().getReference(basedon);\r
- }\r
-\r
- public void setValues(Map<String, Object> values) {\r
- throw new SlcException("Cannot override values map.");\r
- }\r
-\r
- public void setUpdateValues(Map<String, Object> overrideValues) {\r
- getValues().putAll(overrideValues);\r
- }\r
-\r
- public void setUpdateExpectedValues(\r
- Map<String, Object> overrideExpectedValues) {\r
- getExpectedValues().putAll(overrideExpectedValues);\r
- }\r
-\r
- public void setBasedon(String basedon) {\r
- this.basedon = basedon;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant.test;\r
-\r
-import java.util.List;\r
-import java.util.Vector;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-import org.argeo.slc.ant.spring.SpringArg;\r
-import org.argeo.slc.ant.structure.SAwareTask;\r
-import org.argeo.slc.core.structure.StructureRegistry;\r
-import org.argeo.slc.core.test.TestResult;\r
-\r
-/** Ant tasks closing a given result. */\r
-public class SlcCloseTestResultTask extends SAwareTask {\r
- private final static Log log = LogFactory\r
- .getLog(SlcCloseTestResultTask.class);\r
-\r
- public List<SpringArg<TestResult>> results = new Vector<SpringArg<TestResult>>();\r
-\r
- @Override\r
- public void executeActions(String mode) {\r
- if (!mode.equals(StructureRegistry.READ)) {\r
- for (SpringArg<TestResult> result : results) {\r
- try {\r
- result.getInstance().close();\r
- } catch (RuntimeException e) {\r
- log.error("Could not close result "\r
- + (result.getBean() != null ? result.getBean()\r
- : result.getAntref()), e);\r
- }\r
- }\r
- }\r
- }\r
-\r
- public SpringArg<TestResult> createResult() {\r
- SpringArg<TestResult> result = new SpringArg<TestResult>();\r
- results.add(result);\r
- return result;\r
- }\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant.test;\r
-\r
-import org.argeo.slc.ant.structure.SAwareTask;\r
-import org.argeo.slc.core.structure.StructureAware;\r
-import org.argeo.slc.core.structure.StructureRegistry;\r
-import org.argeo.slc.core.test.TestReport;\r
-import org.argeo.slc.core.test.TestResult;\r
-\r
-/** Ant tasks generating a report. */\r
-public class SlcReportTask extends SAwareTask {\r
- private String result;\r
- private String report;\r
-\r
- @Override\r
- public void executeActions(String mode) {\r
- if (!mode.equals(StructureRegistry.READ)) {\r
- TestResult testResult = null;\r
- if (result != null) {\r
- testResult = (TestResult) getContext().getBean(result);\r
- }\r
- TestReport testReport = (TestReport) getContext().getBean(report);\r
- if (testReport instanceof StructureAware) {\r
- ((StructureAware) testReport).notifyCurrentPath(getRegistry(),\r
- null);\r
- }\r
- testReport.generateTestReport(testResult);\r
- }\r
- }\r
-\r
- /** Sets the bean name of the result to close. */\r
- public void setResult(String bean) {\r
- this.result = bean;\r
- }\r
-\r
- /** Sets the bean name of the report to generate. */\r
- public void setReport(String report) {\r
- this.report = report;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ant.test;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-import org.apache.tools.ant.BuildException;\r
-import org.argeo.slc.ant.AntConstants;\r
-import org.argeo.slc.ant.spring.SpringArg;\r
-import org.argeo.slc.ant.structure.SAwareTask;\r
-import org.argeo.slc.core.deploy.DeployedSystem;\r
-import org.argeo.slc.core.process.SlcExecution;\r
-import org.argeo.slc.core.structure.StructureAware;\r
-import org.argeo.slc.core.structure.tree.TreeSPath;\r
-import org.argeo.slc.core.test.ExecutableTestRun;\r
-import org.argeo.slc.core.test.SimpleResultPart;\r
-import org.argeo.slc.core.test.SimpleTestResult;\r
-import org.argeo.slc.core.test.SimpleTestRun;\r
-import org.argeo.slc.core.test.TestData;\r
-import org.argeo.slc.core.test.TestDefinition;\r
-import org.argeo.slc.core.test.TestResult;\r
-import org.argeo.slc.core.test.TestResultPart;\r
-import org.argeo.slc.core.test.TestStatus;\r
-import org.argeo.slc.core.test.WritableTestRun;\r
-import org.argeo.slc.spring.SpringUtils;\r
-import org.springframework.beans.BeansException;\r
-\r
-/** Ant task wrapping a test run. */\r
-public class SlcTestTask extends SAwareTask {\r
- private Log log = LogFactory.getLog(SlcTestTask.class);\r
-\r
- private String testRunBean = null;\r
-\r
- private SpringArg<TestDefinition> testDefinitionArg;\r
- private SpringArg<TestData> testDataArg;\r
- private SpringArg<DeployedSystem> deployedSystemArg;\r
- private SpringArg<TestResult> testResultArg;\r
-\r
- @Override\r
- public void executeActions(String mode) throws BuildException {\r
- // find test run\r
- final String testRunBeanT;\r
- if (testRunBean != null) {\r
- testRunBeanT = testRunBean;\r
- } else {\r
- testRunBeanT = getProject().getProperty(\r
- AntConstants.DEFAULT_TEST_RUN_PROPERTY);\r
- }\r
- WritableTestRun testRun = null;\r
-\r
- if (testRunBeanT != null) {\r
- try {\r
- testRun = (WritableTestRun) getContext().getBean(testRunBeanT);\r
- if (log.isTraceEnabled())\r
- log.trace("Load test run bean from bean name "\r
- + testRunBeanT);\r
- } catch (BeansException e) {\r
- // silent, will try defaults\r
- }\r
- }\r
-\r
- if (testRun == null) {\r
- testRun = loadSingleFromContext(WritableTestRun.class);\r
- if (testRun == null) {\r
- testRun = new SimpleTestRun();\r
- log.trace("Created default simple test run");\r
- } else {\r
- if (log.isTraceEnabled())\r
- log.trace("Load test run from scanning Spring context");\r
- }\r
- }\r
-\r
- // set overridden references\r
- if (testDataArg != null) {\r
- testRun.setTestData(testDataArg.getInstance());\r
- log.trace("Overrides test data");\r
- }\r
-\r
- if (testDefinitionArg != null) {\r
- testRun.setTestDefinition(testDefinitionArg.getInstance());\r
- log.trace("Overrides test definition");\r
- }\r
-\r
- if (deployedSystemArg != null) {\r
- testRun.setDeployedSystem(deployedSystemArg.getInstance());\r
- log.trace("Overrides deployed system");\r
- }\r
-\r
- if (testResultArg != null) {\r
- testRun.setTestResult(testResultArg.getInstance());\r
- log.trace("Overrides test result");\r
- }\r
-\r
- // notify path to test result\r
- TestResult result = testRun.getTestResult();\r
- if (result == null) {\r
- result = loadSingleFromContext(TestResult.class);\r
- if (result == null) {\r
- result = new SimpleTestResult();\r
- log.warn("Created default simple test result");\r
- } else {\r
- if (log.isTraceEnabled())\r
- log.trace("Load test result from scanning Spring context");\r
- }\r
- testRun.setTestResult(result);\r
- }\r
-\r
- SlcExecution slcExecution = getSlcExecution();\r
- testRun.notifySlcExecution(slcExecution);\r
-\r
- if (result != null && result instanceof StructureAware) {\r
- ((StructureAware<TreeSPath>) result).notifyCurrentPath(\r
- getRegistry(), getTreeSPath());\r
- }\r
-\r
- try {\r
- ((ExecutableTestRun) testRun).execute();\r
- } catch (RuntimeException e) {\r
- if (result != null) {\r
- SimpleResultPart errorPart = new SimpleResultPart(\r
- TestStatus.ERROR,\r
- "Unexpected exception when running test", e);\r
- result.addResultPart(errorPart);\r
- }\r
- throw e;\r
- }\r
- }\r
-\r
- /**\r
- * The bean name of the test run to use. If not set the default is used.\r
- * \r
- * @see SlcAntConfig\r
- */\r
- public void setTestRun(String testRunBean) {\r
- this.testRunBean = testRunBean;\r
- }\r
-\r
- /** Creates sub tag. */\r
- public SpringArg<TestDefinition> createTestDefinition() {\r
- testDefinitionArg = new SpringArg<TestDefinition>();\r
- // only test definitions can add to path\r
- addSAwareArg(testDefinitionArg);\r
- return testDefinitionArg;\r
- }\r
-\r
- /** Creates sub tag. */\r
- public SpringArg<TestData> createTestData() {\r
- testDataArg = new SpringArg<TestData>();\r
- return testDataArg;\r
- }\r
-\r
- /** Creates sub tag. */\r
- public SpringArg<DeployedSystem> createDeployedSystem() {\r
- deployedSystemArg = new SpringArg<DeployedSystem>();\r
- return deployedSystemArg;\r
- }\r
-\r
- /** Creates sub tag. */\r
- public SpringArg<TestResult> createTestResult() {\r
- testResultArg = new SpringArg<TestResult>();\r
- return testResultArg;\r
- }\r
-\r
- protected <T> T loadSingleFromContext(Class<T> clss) {\r
- return SpringUtils.loadSingleFromContext(getContext(), clss);\r
- }\r
-}\r
+++ /dev/null
-<html>\r
-<head></head>\r
-<body>\r
-Integration of SLC Test in Ant.\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.ant.unit;
-
-import junit.framework.TestCase;
-
-import org.argeo.slc.ant.AntExecutionContext;
-import org.argeo.slc.cli.DefaultSlcRuntime;
-import org.argeo.slc.runtime.SlcExecutionOutput;
-
-public abstract class AntSlcApplicationTestCase extends TestCase implements
- SlcExecutionOutput<AntExecutionContext> {
-
- /** To be overriden */
- public void postExecution(AntExecutionContext executionContext) {
-
- }
-
- protected String getRootDir() {
- return System.getProperty("slc.rootDir", "src/main/slc/root");
- }
-
- protected String getAbsoluteScript(String relative) {
- return getRootDir() + '/' + relative;
- }
-
- protected void execute(String relativeScript) {
- execute(relativeScript, null);
- }
-
- protected void execute(String relativeScript, String targets) {
- new DefaultSlcRuntime().executeScript(
- getAbsoluteScript(relativeScript), targets, this);
- }
-
-}
+++ /dev/null
-package org.argeo.slc.ant.unit;
-
-import java.io.File;
-import java.util.UUID;
-
-import org.argeo.slc.ant.AntConstants;
-import org.argeo.slc.ant.AntExecutionContext;
-import org.argeo.slc.ant.AntSlcApplication;
-import org.argeo.slc.core.process.SlcExecution;
-import org.argeo.slc.runtime.SlcExecutionOutput;
-import org.argeo.slc.unit.AbstractSpringTestCase;
-import org.springframework.core.io.FileSystemResource;
-
-public class MinimalAntClasspathTestCase extends AbstractSpringTestCase
- implements SlcExecutionOutput<AntExecutionContext> {
- protected void execute(String scriptPath) {
- AntSlcApplication slcApp = new AntSlcApplication();
- slcApp.setRootDir(new FileSystemResource(new File("src/test/resources")
- .getAbsolutePath()
- + File.separator));
- slcApp.setWorkDir(new File(System.getProperty("java.io.tmpdir")));
- slcApp.setParentContext(getContext());
-
- SlcExecution slcExecution = new SlcExecution();
- slcExecution.setUuid(UUID.randomUUID().toString());
- slcExecution.getAttributes().put(AntConstants.EXECATTR_ANT_FILE,
- scriptPath);
- slcExecution.setUser("user");
-
- slcApp.execute(slcExecution, null, null, this);
- }
-
- /** to be overridden */
- public void postExecution(AntExecutionContext executionContext) {
- }
-
-}
+++ /dev/null
-package org.argeo.slc.cli;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.Map;
-import java.util.Properties;
-import java.util.UUID;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.ant.AntExecutionContext;
-import org.argeo.slc.ant.AntSlcApplication;
-import org.argeo.slc.ant.AntConstants;
-import org.argeo.slc.core.SlcException;
-import org.argeo.slc.core.process.SlcExecution;
-import org.argeo.slc.runtime.SlcExecutionOutput;
-import org.argeo.slc.spring.SpringUtils;
-import org.springframework.core.io.DefaultResourceLoader;
-import org.springframework.core.io.FileSystemResource;
-import org.springframework.core.io.Resource;
-
-public class DefaultSlcRuntime {
- private final static Log log = LogFactory.getLog(DefaultSlcRuntime.class);
-
- public final static String SLC_ROOT_FILE_NAME = "slcRoot.properties";
-
- /**
- * Simplified execution with default runtime, default target, and no
- * properties/reference arguments.
- *
- * @param script
- * path to the script
- * @param executionOutput
- * output
- *
- * @see #executeScript(String, String, String, Properties, Map,
- * SlcExecutionOutput)
- */
- public void executeScript(String script,
- SlcExecutionOutput<AntExecutionContext> executionOutput) {
- executeScript(null, script, null, null, null, executionOutput);
- }
-
- /**
- * Simplified execution with default runtime, and no properties/reference
- * arguments.
- *
- * @param script
- * path to the script
- * @param targets
- * comma separated list of targets
- * @param executionOutput
- * output
- * @see #executeScript(String, String, String, Properties, Map,
- * SlcExecutionOutput)
- */
- public void executeScript(String script, String targets,
- SlcExecutionOutput<AntExecutionContext> executionOutput) {
- executeScript(null, script, targets, null, null, executionOutput);
- }
-
- public void executeScript(String runtime, String script, String targets,
- Properties properties, Map<String, Object> references,
- SlcExecutionOutput<AntExecutionContext> executionOutput) {
-
- Resource scriptRes = findScript(script);
- Resource slcRootFile = findSlcRootFile(scriptRes);
- if (slcRootFile == null)
- throw new SlcException(
- "Could not find any SLC root file, "
- + "please configure one at the root of your scripts hierarchy.");
-
- SlcExecution slcExecution = createSlcExecution(runtime, slcRootFile,
- scriptRes, targets);
-
- AntSlcApplication application = getApplication(slcRootFile);
- application.execute(slcExecution, properties, references,
- executionOutput);
- }
-
- protected Resource findScript(String scriptStr) {
- Resource scriptRes;
- if (new File(scriptStr).exists()) {
- scriptRes = new FileSystemResource(scriptStr);
- } else {
- scriptRes = new DefaultResourceLoader(SlcMain.class
- .getClassLoader()).getResource(scriptStr);
- }
- return scriptRes;
- }
-
- protected SlcExecution createSlcExecution(String runtimeStr,
- Resource slcRootFile, Resource script, String targets) {
- SlcExecution slcExecution = new SlcExecution();
- slcExecution.setUuid(UUID.randomUUID().toString());
- try {
- slcExecution.setHost(InetAddress.getLocalHost().getHostName());
- } catch (UnknownHostException e) {
- slcExecution.setHost(SlcExecution.UNKOWN_HOST);
- }
-
- slcExecution.setType(AntConstants.EXECTYPE_SLC_ANT);
-
- slcExecution.setUser(System.getProperty("user.name"));
-
- if (runtimeStr != null)
- slcExecution.getAttributes().put(AntConstants.EXECATTR_RUNTIME,
- runtimeStr);
- String scriptRelativePath = SpringUtils.extractRelativePath(SpringUtils
- .getParent(slcRootFile), script);
-
- slcExecution.getAttributes().put(AntConstants.EXECATTR_ANT_FILE,
- scriptRelativePath);
- if (targets != null)
- slcExecution.getAttributes().put(AntConstants.EXECATTR_ANT_TARGETS,
- targets);
-
- slcExecution.setStatus(SlcExecution.STATUS_SCHEDULED);
- return slcExecution;
- }
-
- protected AntSlcApplication getApplication(Resource slcRootFile) {
- AntSlcApplication application = new AntSlcApplication();
- InputStream inRootFile = null;
- try {
- // Remove basedir property in order to avoid conflict with Maven
- // if (all.containsKey("basedir"))
- // all.remove("basedir");
-
- inRootFile = slcRootFile.getInputStream();
- Properties rootProps = loadFile(inRootFile);
-
- Resource confDir = null;
- File workDir = null;
- // Root dir
- final Resource rootDir = SpringUtils.getParent(slcRootFile);
-
- // Conf dir
- String confDirStr = rootProps
- .getProperty(AntConstants.CONF_DIR_PROPERTY);
- if (confDirStr != null)
- confDir = new DefaultResourceLoader(application.getClass()
- .getClassLoader()).getResource(confDirStr);
-
- if (confDir == null || !confDir.exists()) {
- // confDir = rootDir.createRelative("../conf");
- confDir = SpringUtils.getParent(rootDir)
- .createRelative("conf/");
- }
-
- // Work dir
- String workDirStr = rootProps
- .getProperty(AntConstants.WORK_DIR_PROPERTY);
- if (workDirStr != null) {
- workDir = new File(workDirStr);
- }
-
- if (workDir == null || !workDir.exists()) {
- try {
- File rootDirAsFile = rootDir.getFile();
- workDir = new File(rootDirAsFile.getParent()
- + File.separator + "work").getCanonicalFile();
- } catch (IOException e) {
- workDir = new File(System.getProperty("java.io.tmpdir")
- + File.separator + "slcExecutions" + File.separator
- + slcRootFile.getURL().getPath());
- log.debug("Root dir is not a file: " + e.getMessage()
- + ", creating work dir in temp: " + workDir);
- }
- workDir.mkdirs();
- }
-
- application.setConfDir(confDir);
- application.setRootDir(rootDir);
- application.setWorkDir(workDir);
-
- return application;
- } catch (IOException e) {
- throw new SlcException(
- "Could not prepare SLC application for root file "
- + slcRootFile, e);
- } finally {
- IOUtils.closeQuietly(inRootFile);
- }
- }
-
- /**
- * Recursively scans directories downwards until it find a file name as
- * defined by {@link #SLC_ROOT_FILE_NAME}.
- */
- protected Resource findSlcRootFile(Resource currDir) {
- if (log.isTraceEnabled())
- log.trace("Look for SLC root file in " + currDir);
-
- try {
- Resource slcRootFile = currDir.createRelative(SLC_ROOT_FILE_NAME);
- if (slcRootFile.exists()) {
- if (log.isDebugEnabled())
- log.debug("Found SLC root file: " + slcRootFile);
- return slcRootFile;
- } else {
- String currPath = currDir.getURL().getPath();
- if (currPath.equals("/") || currPath.equals("")) {
- return null;
- } else {
- return findSlcRootFile(SpringUtils.getParent(currDir));
- }
- }
- } catch (IOException e) {
- throw new SlcException("Problem when looking in SLC root file in "
- + currDir, e);
- }
- }
-
- /** Loads the content of a file as <code>Properties</code>. */
- private Properties loadFile(InputStream in) {
- Properties p = new Properties();
- try {
- p.load(in);
- } catch (IOException e) {
- throw new SlcException("Cannot read SLC root file", e);
- }
- return p;
- }
-}
+++ /dev/null
-package org.argeo.slc.cli;
-
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.Properties;
-
-import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.CommandLineParser;
-import org.apache.commons.cli.GnuParser;
-import org.apache.commons.cli.HelpFormatter;
-import org.apache.commons.cli.Option;
-import org.apache.commons.cli.OptionBuilder;
-import org.apache.commons.cli.Options;
-import org.apache.commons.cli.ParseException;
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.ant.AntConstants;
-import org.argeo.slc.core.SlcException;
-import org.argeo.slc.logging.Log4jUtils;
-
-public class SlcMain {
- public enum Mode {
- single, agent
- }
-
- private static Log log = null;
-
- private final static String BOOTSTRAP_LOG4J_CONFIG = "org/argeo/slc/cli/bootstrapLog4j.properties";
-
- private final static Option modeOpt = OptionBuilder.withLongOpt("mode")
- .withArgName("mode").hasArg().withDescription(
- "SLC execution mode, one of: " + listModeValues()).create(
- 'm');
-
- private final static Option propertyOpt = OptionBuilder.withLongOpt(
- "property").withArgName("prop1=val1,prop2=val2").hasArgs()
- .withValueSeparator(',').withDescription(
- "use value for given property").create('p');
-
- private final static Option propertiesOpt = OptionBuilder.withLongOpt(
- "properties").withArgName("properties file").hasArgs()
- .withValueSeparator(',').withDescription(
- "load properties from file (-p has priority)").create('P');
-
- private final static Option scriptOpt = OptionBuilder.withLongOpt("script")
- .withArgName("script").hasArg().withDescription(
- "SLC script to execute").create('s');
-
- private final static Option targetsOpt = OptionBuilder.withLongOpt(
- "targets").withArgName("targets").hasArg().withDescription(
- "Targets to execute").create('t');
-
- private final static Option runtimeOpt = OptionBuilder.withLongOpt(
- "runtime").withArgName("runtime").hasArg().withDescription(
- "Runtime to use, either a full path or relative to slc app conf dir: "
- + "<conf dir>/runtime/<runtime>/.xml").create('r');
-
- private final static Options options;
-
- private final static String commandName = "slc";
-
- static {
- options = new Options();
- options.addOption(modeOpt);
- options.addOption(scriptOpt);
- options.addOption(targetsOpt);
- options.addOption(propertyOpt);
- options.addOption(propertiesOpt);
- options.addOption(runtimeOpt);
- }
-
- public static void main(String[] args) {
- Mode mode = null;
- Properties properties = new Properties();
- String script = null;
- String targets = null;
- String runtimeStr = null;
-
- try {
-
- CommandLineParser clParser = new GnuParser();
- CommandLine cl = clParser.parse(options, args);
-
- // Mode
- String modeStr = cl.getOptionValue(modeOpt.getOpt());
- if (modeStr == null) {
- mode = Mode.single;
- } else {
- try {
- mode = Mode.valueOf(modeStr);
- } catch (IllegalArgumentException e) {
- throw new SlcException("Unrecognized mode '" + modeStr
- + "'", e);
- }
- }
-
- // Script
- if (mode.equals(Mode.single)) {
- if (!cl.hasOption(scriptOpt.getOpt()))
- throw new SlcException("Mode " + Mode.single
- + " requires option '" + scriptOpt.getLongOpt()
- + "'");
- script = cl.getOptionValue(scriptOpt.getOpt());
-
- // Targets
- if (cl.hasOption(targetsOpt.getOpt()))
- targets = cl.getOptionValue(targetsOpt.getOpt());
- }
-
- // Properties
- if (cl.hasOption(propertiesOpt.getOpt())) {
- for (String propertyFile : cl.getOptionValues(propertiesOpt
- .getOpt())) {
- loadPropertyFile(properties, propertyFile);
- }
- }
- if (cl.hasOption(propertyOpt.getOpt())) {
- for (String property : cl.getOptionValues(propertyOpt.getOpt())) {
- addProperty(properties, property);
- }
- }
-
- // Runtime
- if (cl.hasOption(runtimeOpt.getOpt())) {
- runtimeStr = cl.getOptionValue(runtimeOpt.getOpt());
- }
- } catch (ParseException e) {
- System.err.println("Problem with command line arguments. "
- + e.getMessage());
- badExit();
- } catch (SlcException e) {
- System.err.println(e.getMessage());
- badExit();
- } catch (Exception e) {
- System.err.println("Unexpected exception when bootstrapping.");
- e.printStackTrace();
- badExit();
- }
-
- // Initializes logging and log arguments
- initLogging(properties);
- if (log.isDebugEnabled()) {
- log.debug("Mode: " + mode);
- if (runtimeStr != null)
- log.debug("Runtime: " + runtimeStr);
- log.debug("User properties: " + properties);
- if (script != null)
- log.debug("Script: " + script);
- if (targets != null)
- log.debug("Targets: " + targets);
- }
-
- // Execution
- if (mode.equals(Mode.single)) {
- try {
- DefaultSlcRuntime runtime = new DefaultSlcRuntime();
- runtime.executeScript(runtimeStr, script, targets, properties,
- null, null);
- //System.exit(0);
- } catch (SlcException e) {
- log.error("SLC client terminated with an error: ", e);
- System.exit(1);
- }
- }
- }
-
- public static void printUsage() {
- new HelpFormatter().printHelp(commandName, options, true);
- }
-
- private static String listModeValues() {
- StringBuffer buf = new StringBuffer("");
- for (Mode mode : Mode.values()) {
- buf.append(mode).append(", ");
- }
- String str = buf.toString();
- // unsafe, but there will be at least one value in the enum
- return str.substring(0, str.length() - 2);
- }
-
- protected static void addProperty(Properties properties, String property) {
- int eqIndex = property.indexOf('=');
- if (eqIndex == 0)
- throw new SlcException("Badly formatted property " + property);
-
- if (eqIndex > 0) {
- String key = property.substring(0, eqIndex);
- String value = property.substring(eqIndex + 1);
- properties.setProperty(key, value);
-
- } else {
- properties.setProperty(property, "true");
- }
- }
-
- protected static void loadPropertyFile(Properties properties,
- String propertyFile) {
- FileInputStream in = null;
- try {
- in = new FileInputStream(propertyFile);
- properties.load(in);
- } catch (Exception e) {
- throw new SlcException("Could not load proeprty file "
- + propertyFile);
- } finally {
- IOUtils.closeQuietly(in);
- }
- }
-
- private static void initLogging(Properties userProperties) {
- System.setProperty("log4j.defaultInitOverride", "true");
-
- // Add log4j user properties to System properties
- for (Object obj : userProperties.keySet()) {
- String key = obj.toString();
- if (key.startsWith("log4j.")) {
- System.setProperty(key, userProperties.getProperty(key));
- }
- }
- Log4jUtils.initLog4j(System.getProperty("log4j.configuration",
- "classpath:" + BOOTSTRAP_LOG4J_CONFIG));
- log = LogFactory.getLog(SlcMain.class);
-
- }
-
- private static void badExit() {
- printUsage();
- System.exit(1);
- }
-}
+++ /dev/null
-package org.argeo.slc.lib.detached;
-
-import org.argeo.slc.core.test.context.DefaultContextTestData;
-
-public class DetachedTestData extends DefaultContextTestData {
-
-}
+++ /dev/null
-package org.argeo.slc.lib.detached;
-
-import java.util.Map;
-import java.util.Properties;
-import java.util.UUID;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.core.SlcException;
-import org.argeo.slc.core.structure.tree.TreeSRelatedHelper;
-import org.argeo.slc.core.test.SimpleResultPart;
-import org.argeo.slc.core.test.TestDefinition;
-import org.argeo.slc.core.test.TestResult;
-import org.argeo.slc.core.test.TestRun;
-import org.argeo.slc.core.test.TestStatus;
-import org.argeo.slc.core.test.context.ContextUtils;
-import org.argeo.slc.detached.DetachedAnswer;
-import org.argeo.slc.detached.DetachedClient;
-import org.argeo.slc.detached.DetachedRequest;
-import org.argeo.slc.detached.DetachedStep;
-import org.argeo.slc.detached.ui.UiStep;
-import org.springframework.beans.BeansException;
-import org.springframework.beans.PropertyValue;
-import org.springframework.beans.factory.BeanFactory;
-import org.springframework.beans.factory.BeanFactoryAware;
-import org.springframework.beans.factory.BeanInitializationException;
-import org.springframework.beans.factory.BeanNameAware;
-import org.springframework.beans.factory.InitializingBean;
-import org.springframework.beans.factory.config.BeanDefinition;
-import org.springframework.beans.factory.config.BeanReference;
-import org.springframework.beans.factory.support.BeanDefinitionRegistry;
-
-public class DetachedTestDefinition extends TreeSRelatedHelper implements
- TestDefinition, BeanNameAware, BeanFactoryAware, InitializingBean {
- private final static Log log = LogFactory
- .getLog(DetachedTestDefinition.class);
-
- private DetachedStep step;
- private DetachedClient client;
-
- // Spring properties
- private String testDefBeanName = null;
- private BeanDefinitionRegistry beanDefinitionRegistry = null;
- private String stepRef = null;
-
- public void execute(TestRun testRun) {
- // Look for step bean name
- String stepBeanNameT = null;
- if (this.stepRef == null && step != null) {
- if (step instanceof UiStep) {
- stepBeanNameT = ((UiStep) step).getBeanName();
- } else {
- // Introspects bean factory in order to find step bean name
- BeanDefinition thisBeanDef = beanDefinitionRegistry
- .getBeanDefinition(testDefBeanName);
- PropertyValue propValue = thisBeanDef.getPropertyValues()
- .getPropertyValue("step");
- Object stepBeanRef = propValue.getValue();
- BeanReference ref = (BeanReference) stepBeanRef;
- stepBeanNameT = ref.getBeanName();
- }
- } else if (this.stepRef != null) {
- stepBeanNameT = this.stepRef;
- }
-
- // Execute
- DetachedRequest request = new DetachedRequest();
- request.setPath(getBasePath().toString());
- request.setUuid(UUID.randomUUID().toString());
- request.setRef(stepBeanNameT);
-
- DetachedTestData testData = testRun.getTestData();
- if (testData != null) {
- Map<String, Object> values = testData.getValues();
- Properties inputParameters = new Properties();
- inputParameters.putAll(values);// TODO: check conversions to string
- request.setProperties(inputParameters);
- }
-
- try {
- client.sendRequest(request);
- } catch (Exception e) {
- throw new SlcException("Could not send request for step "
- + stepBeanNameT, e);
- }
-
- try {
- DetachedAnswer answer = client.receiveAnswer();
- if (answer.getStatus() == DetachedAnswer.ERROR)
- throw new SlcException("Error when executing step "
- + answer.getUuid() + ": " + answer.getLog());
- else
- log.info("Received answer for '" + request.getRef() + "' ("
- + answer.getStatusAsString() + "):" + answer.getLog());
-
- if (testData != null) {
- Properties outputParameters = answer.getProperties();
- for (Object key : outputParameters.keySet())
- testData.getValues().put(key.toString(),
- outputParameters.get(key));
- }
- } catch (Exception e) {
- throw new SlcException("Could not receive answer #"
- + request.getUuid() + " for step " + stepBeanNameT, e);
- }
-
- if (testData != null) {
- ContextUtils.compareReachedExpected(testData, testRun
- .getTestResult(), this);
- } else {
- ((TestResult)testRun.getTestResult()).addResultPart(
- new SimpleResultPart(TestStatus.PASSED, "Step "
- + stepBeanNameT + " executed successfully"));
- }
- }
-
- public void setBeanName(String name) {
- this.testDefBeanName = name;
- }
-
- public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
- if (beanFactory instanceof BeanDefinitionRegistry)
- beanDefinitionRegistry = (BeanDefinitionRegistry) beanFactory;
- else
- throw new BeanInitializationException(
- "Require BeanDefinitionRegistry");
- }
-
- public void afterPropertiesSet() throws Exception {
- }
-
- public void setStep(DetachedStep step) {
- this.step = step;
- }
-
- public void setClient(DetachedClient client) {
- this.client = client;
- }
-
- public void setStepRef(String stepBeanName) {
- this.stepRef = stepBeanName;
- }
-
-}
+++ /dev/null
-package org.argeo.slc.lib.detached;
-
-import java.io.IOException;
-
-import javax.xml.transform.Result;
-import javax.xml.transform.Source;
-
-import org.argeo.slc.core.SlcException;
-import org.argeo.slc.detached.DetachedAnswer;
-import org.argeo.slc.detached.DetachedCommunication;
-import org.argeo.slc.detached.DetachedException;
-import org.argeo.slc.detached.DetachedRequest;
-import org.argeo.slc.detached.DetachedXmlConverter;
-import org.springframework.oxm.Marshaller;
-import org.springframework.oxm.Unmarshaller;
-import org.springframework.oxm.XmlMappingException;
-import org.springframework.xml.validation.XmlValidator;
-import org.xml.sax.InputSource;
-
-public class DetachedXmlConverterSpring implements DetachedXmlConverter {
- private Marshaller marshaller;
- private Unmarshaller unmarshaller;
-
- public void marshallCommunication(DetachedCommunication detCom,
- Result result) {
- if (detCom instanceof DetachedRequest) {
- marshallRequest((DetachedRequest) detCom, result);
- } else if (detCom instanceof DetachedAnswer) {
- marshallAnswer((DetachedAnswer) detCom, result);
- } else {
- throw new DetachedException("Unkown communication type "
- + detCom.getClass());
- }
- }
-
- public DetachedCommunication unmarshallCommunication(Source source) {
- try {
- return (DetachedCommunication) unmarshaller.unmarshal(source);
- } catch (Exception e) {
- throw new SlcException("Could not unmarshall", e);
- }
- }
-
- public void marshallRequest(DetachedRequest request, Result result) {
- try {
- marshaller.marshal(request, result);
- } catch (Exception e) {
- throw new SlcException("Could not marshall", e);
- }
- }
-
- public void marshallAnswer(DetachedAnswer answer, Result result) {
- try {
- marshaller.marshal(answer, result);
- } catch (Exception e) {
- throw new SlcException("Could not marshall", e);
- }
- }
-
- public void setMarshaller(Marshaller marshaller) {
- this.marshaller = marshaller;
- }
-
- public void setUnmarshaller(Unmarshaller unmarshaller) {
- this.unmarshaller = unmarshaller;
- }
-
-}
+++ /dev/null
-package org.argeo.slc.maven;
-
-import java.io.File;
-import java.net.URL;
-import java.util.Map;
-import java.util.Properties;
-import java.util.UUID;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.ant.AntRunner;
-import org.argeo.slc.core.SlcException;
-import org.argeo.slc.core.deploy.DeployEnvironment;
-
-public class MavenDeployEnvironment {/*implements DeployEnvironment {
- private static final Log log = LogFactory
- .getLog(MavenDeployEnvironment.class);
- private MavenManager mavenManager;
-
- public void unpackTo(Object packg, File targetLocation,
- Map<String, String> filter) {
- File packageLocation;
- String type = null;
- String removeRootDir = "enabled";
- if (packg instanceof MavenFile) {
- packageLocation = mavenManager
- .getPackageLocation((MavenFile) packg);
- type = ((MavenFile) packg).getType();
- } else if (packg instanceof File) {
- packageLocation = (File) packg;
- // TODO: type based on extension
- } else {
- throw new SlcException("Unrecognized package type "
- + packg.getClass());
- }
- if (log.isDebugEnabled()) {
- log.debug("Unpack " + packageLocation + " of type " + type + " to "
- + targetLocation);
- }
-
- try {
- File tempDir = new File("/tmp/" + UUID.randomUUID().toString());
- tempDir.mkdirs();
- targetLocation.mkdirs();
- Properties props = new Properties();
- props.setProperty("dest", targetLocation.getAbsolutePath());
- props.setProperty("src", packageLocation.getAbsolutePath());
- props.setProperty("tempDir", tempDir.getAbsolutePath());
- props.setProperty("removeRootDir", removeRootDir);
-
- URL antUrl = getClass().getClassLoader().getResource(
- "org/argeo/slc/support/deploy/ant/build.xml");
-
- if (type == null || type.equals("zip")) {
- new AntRunner(antUrl, "deployZip", props).run();
- } else if (type.equals("tar.gz")) {
- new AntRunner(antUrl, "deployTarGz", props).run();
- } else {
- throw new SlcException("Unknow package type " + type);
- }
- } catch (SlcException e) {
- throw e;
- } catch (Exception e) {
- throw new SlcException("Cannot unpack package " + packg + " to "
- + targetLocation, e);
- }
- }
-
- public void setMavenManager(MavenManager mavenManager) {
- this.mavenManager = mavenManager;
- }
-*/
-}
+++ /dev/null
-package org.argeo.slc.maven;\r
-\r
-import org.argeo.slc.core.build.Distribution;\r
-import org.argeo.slc.core.deploy.DeploymentData;\r
-\r
-public class MavenFile implements Distribution, DeploymentData {\r
- private String groupId;\r
- private String artifactId;\r
- private String version;\r
- private String type;\r
- private String classifier;\r
-\r
- private String distributionId;\r
-\r
- public String getDistributionId() {\r
- return distributionId;\r
- }\r
-\r
- public void setDistributionId(String distributionId) {\r
- this.distributionId = distributionId;\r
- }\r
-\r
- public String getGroupId() {\r
- return groupId;\r
- }\r
-\r
- public void setGroupId(String groupId) {\r
- this.groupId = groupId;\r
- }\r
-\r
- public String getArtifactId() {\r
- return artifactId;\r
- }\r
-\r
- public void setArtifactId(String artifactId) {\r
- this.artifactId = artifactId;\r
- }\r
-\r
- public String getVersion() {\r
- return version;\r
- }\r
-\r
- public void setVersion(String version) {\r
- this.version = version;\r
- }\r
-\r
- public String getType() {\r
- return type;\r
- }\r
-\r
- public void setType(String type) {\r
- this.type = type;\r
- }\r
-\r
- public String getClassifier() {\r
- return classifier;\r
- }\r
-\r
- public void setClassifier(String classifier) {\r
- this.classifier = classifier;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.maven;\r
-\r
-import java.io.File;\r
-import java.util.List;\r
-import java.util.Vector;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-//import org.apache.maven.artifact.Artifact;\r
-//import org.apache.maven.artifact.repository.ArtifactRepository;\r
-//import org.apache.maven.embedder.MavenEmbedder;\r
-//import org.apache.maven.embedder.MavenEmbedderException;\r
-\r
-import org.argeo.slc.core.SlcException;\r
-\r
-public class MavenManager {/* FIXME\r
- private final Log log = LogFactory.getLog(getClass());\r
-\r
- private String localRepositoryPath;\r
-\r
- private ArtifactRepository localRepository;\r
- private List<ArtifactRepository> remoteRepositoriesInternal;\r
- private List<RemoteRepository> remoteRepositories = new Vector<RemoteRepository>();\r
-\r
- private MavenEmbedder mavenEmbedder;\r
-\r
- public void init() {\r
- try {\r
- mavenEmbedder = new MavenEmbedder();\r
- mavenEmbedder.setOffline(true);\r
- mavenEmbedder.setClassLoader(Thread.currentThread()\r
- .getContextClassLoader());\r
- mavenEmbedder.start();\r
-\r
- mavenEmbedder.setLocalRepositoryDirectory(new File(\r
- localRepositoryPath));\r
-\r
- localRepository = mavenEmbedder.getLocalRepository();\r
-\r
- remoteRepositoriesInternal = new Vector<ArtifactRepository>();\r
- for (RemoteRepository remoteRepository : remoteRepositories) {\r
-\r
- ArtifactRepository repository = mavenEmbedder.createRepository(\r
- remoteRepository.getUrl(), remoteRepository.getId());\r
- remoteRepositoriesInternal.add(repository);\r
- }\r
-\r
- } catch (Exception e) {\r
- throw new SlcException("Cannot initialize Maven manager", e);\r
- }\r
- }\r
-\r
- private Artifact resolve(MavenFile mavenDistribution) {\r
- try {\r
- Artifact artifact;\r
- if (mavenDistribution.getClassifier() == null) {\r
- artifact = mavenEmbedder.createArtifact(mavenDistribution\r
- .getGroupId(), mavenDistribution.getArtifactId(),\r
- mavenDistribution.getVersion(),\r
- Artifact.SCOPE_PROVIDED, mavenDistribution.getType());\r
- } else {\r
- artifact = mavenEmbedder.createArtifactWithClassifier(\r
- mavenDistribution.getGroupId(), mavenDistribution\r
- .getArtifactId(), mavenDistribution\r
- .getVersion(), mavenDistribution.getType(),\r
- mavenDistribution.getClassifier());\r
- }\r
-\r
- mavenEmbedder.resolve(artifact, remoteRepositoriesInternal,\r
- localRepository);\r
-\r
- return artifact;\r
- } catch (Exception e) {\r
- throw new SlcException("Cannot resolve artifact.", e);\r
- }\r
- }\r
-\r
- public File getPackageLocation(MavenFile mavenDistribution) {\r
- return resolve(mavenDistribution).getFile();\r
- }\r
-\r
- public void destroy() {\r
- try {\r
- if (mavenEmbedder != null) {\r
- mavenEmbedder.stop();\r
- }\r
- } catch (MavenEmbedderException e) {\r
- log.error("Cannot destroy Maven manager", e);\r
- }\r
- }\r
-\r
- public void setLocalRepositoryPath(String localRepositoryPath) {\r
- this.localRepositoryPath = localRepositoryPath;\r
- }\r
-\r
- public List<RemoteRepository> getRemoteRepositories() {\r
- return remoteRepositories;\r
- }\r
-\r
- public void setRemoteRepositories(List<RemoteRepository> remoteRepositories) {\r
- this.remoteRepositories = remoteRepositories;\r
- }\r
-*/\r
-}\r
+++ /dev/null
-package org.argeo.slc.maven;
-
-public class RemoteRepository {
- private String id;
- private String url;
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getUrl() {
- return url;
- }
-
- public void setUrl(String url) {
- this.url = url;
- }
-
-}
Manifest-Version: 1.0\r
-Export-Package: org.argeo.slc.ws.client;uses:="org.springframework.ws.\r
- client.core,org.springframework.oxm,org.apache.commons.logging,org.sp\r
- ringframework.ws,org.springframework.ws.soap,org.springframework.ws.c\r
- ontext,org.springframework.xml.transform,org.springframework.ws.clien\r
- t,javax.xml.transform.dom,org.w3c.dom,org.springframework.xml.validat\r
- ion,javax.xml.namespace,org.xml.sax,javax.xml.transform,org.springfra\r
- mework.ws.soap.client,org.springframework.ws.client.support.intercept\r
- or";version="0.11.2.SNAPSHOT",org.argeo.slc.ws.client.spring;version=\r
- "0.11.2.SNAPSHOT",org.argeo.slc.ant.detached;uses:="org.argeo.slc.ant\r
- .spring,org.apache.commons.logging,org.argeo.slc.core,org.argeo.slc.s\r
- pring,org.springframework.context,org.argeo.slc.detached,org.argeo.sl\r
- c.ant.structure,org.springframework.beans.factory";version="0.11.2.SN\r
- APSHOT",org.argeo.slc.ws.test.tree;uses:="org.springframework.ws.clie\r
- nt.core,org.apache.commons.logging,org.argeo.slc.msg.test.tree,org.ar\r
- geo.slc.ws.client,org.springframework.ws.soap.client,org.springframew\r
- ork.ws.client,org.argeo.slc.core.test.tree,org.argeo.slc.core.test";v\r
- ersion="0.11.2.SNAPSHOT",org.argeo.slc.maven;uses:="org.argeo.slc.cor\r
- e.build,org.argeo.slc.core.deploy";version="0.11.2.SNAPSHOT",org.arge\r
- o.slc.ant.structure;uses:="org.argeo.slc.core.structure,org.argeo.slc\r
- .ant.spring,org.argeo.slc.core,org.springframework.context,org.apache\r
- .tools.ant,org.argeo.slc.core.structure.tree";version="0.11.2.SNAPSHO\r
- T",org.argeo.slc.ant.unit;uses:="org.argeo.slc.ant,junit.framework,or\r
- g.argeo.slc.unit,org.argeo.slc.runtime,org.argeo.slc.cli,org.springfr\r
- amework.core.io,org.springframework.context,org.argeo.slc.core.proces\r
- s";version="0.11.2.SNAPSHOT",org.argeo.slc.ant.deploy;uses:="org.arge\r
- o.slc.ant.spring,org.apache.commons.logging,org.argeo.slc.core,org.ar\r
- geo.slc.core.build,org.springframework.context,org.argeo.slc.core.dep\r
- loy,org.argeo.slc.ant.structure,org.apache.tools.ant";version="0.11.2\r
- .SNAPSHOT",org.argeo.slc.ant.spring;uses:="org.apache.commons.logging\r
- ,org.argeo.slc.core,org.springframework.beans,org.apache.tools.ant.ty\r
- pes,org.springframework.context,org.argeo.slc.core.process,org.apache\r
- .tools.ant,org.springframework.beans.factory";version="0.11.2.SNAPSHO\r
- T",org.argeo.slc.ant;uses:="org.apache.commons.logging,org.apache.log\r
- 4j,org.springframework.context.support,org.apache.log4j.spi,org.sprin\r
- gframework.beans.factory.config,org.springframework.beans.factory.sup\r
- port,org.argeo.slc.core.structure,org.argeo.slc.core,org.apache.tools\r
- .ant.util,org.apache.commons.io,org.argeo.slc.core.process,org.argeo.\r
- slc.core.structure.tree,org.springframework.beans.factory,org.apache.\r
- tools.ant.helper,org.springframework.util,org.springframework.core.io\r
- ,org.springframework.context,org.argeo.slc.logging,org.springframewor\r
- k.beans.factory.xml,org.apache.tools.ant,org.argeo.slc.runtime";versi\r
- on="0.11.2.SNAPSHOT",org.argeo.slc.lib.detached;uses:="org.springfram\r
- ework.oxm,org.apache.commons.logging,org.argeo.slc.detached.ui,org.sp\r
- ringframework.beans,org.argeo.slc.detached,org.springframework.beans.\r
- factory.config,org.argeo.slc.core.test,org.springframework.beans.fact\r
- ory.support,org.argeo.slc.core,org.argeo.slc.core.test.context,javax.\r
- xml.transform,org.argeo.slc.core.structure.tree,org.springframework.b\r
- eans.factory";version="0.11.2.SNAPSHOT",org.argeo.slc.ws.process;uses\r
- :="org.springframework.ws.client.core,org.apache.commons.logging,org.\r
- argeo.slc.ws.client,org.springframework.ws.client,org.springframework\r
- .ws.soap.client,org.argeo.slc.core.process,org.argeo.slc.msg.process"\r
- ;version="0.11.2.SNAPSHOT",org.argeo.slc.cli;uses:="org.apache.common\r
- s.logging,org.apache.commons.cli,org.springframework.core.io,org.arge\r
- o.slc.logging,org.argeo.slc.ant,org.argeo.slc.core,org.argeo.slc.spri\r
- ng,org.argeo.slc.runtime,org.apache.commons.io,org.argeo.slc.core.pro\r
- cess";version="0.11.2.SNAPSHOT",org.argeo.slc.ant.test;uses:="org.apa\r
- che.commons.logging,org.springframework.beans,org.springframework.con\r
- text,org.argeo.slc.ant.structure,org.apache.tools.ant,org.argeo.slc.c\r
- ore.test,org.argeo.slc.core.structure,org.argeo.slc.ant.spring,org.ar\r
- geo.slc.core,org.argeo.slc.core.test.context,org.argeo.slc.spring,org\r
- .apache.tools.ant.types,org.argeo.slc.core.deploy,org.argeo.slc.core.\r
- process,org.argeo.slc.core.structure.tree,org.springframework.beans.f\r
- actory";version="0.11.2.SNAPSHOT",org.argeo.slc.support.deploy.ant;ve\r
- rsion="0.11.2.SNAPSHOT"\r
+Export-Package: org.argeo.slc.ws.process;uses:="org.springframework.ws\r
+ .client.core,org.apache.commons.logging,org.argeo.slc.ws.client,org.s\r
+ pringframework.ws.client,org.springframework.ws.soap.client,org.argeo\r
+ .slc.core.process,org.argeo.slc.msg.process";version="0.11.2.SNAPSHOT\r
+ ",org.argeo.slc.ws.client;uses:="org.springframework.ws.client.core,o\r
+ rg.springframework.oxm,org.apache.commons.logging,org.springframework\r
+ .ws,org.springframework.ws.soap,org.springframework.ws.context,org.sp\r
+ ringframework.xml.transform,org.springframework.ws.client,javax.xml.t\r
+ ransform.dom,org.w3c.dom,org.springframework.xml.validation,javax.xml\r
+ .namespace,org.xml.sax,javax.xml.transform,org.springframework.ws.soa\r
+ p.client,org.springframework.ws.client.support.interceptor";version="\r
+ 0.11.2.SNAPSHOT",org.argeo.slc.ws.client.spring;version="0.11.2.SNAPS\r
+ HOT",org.argeo.slc.ws.test.tree;uses:="org.springframework.ws.client.\r
+ core,org.apache.commons.logging,org.argeo.slc.msg.test.tree,org.argeo\r
+ .slc.ws.client,org.springframework.ws.soap.client,org.springframework\r
+ .ws.client,org.argeo.slc.core.test.tree,org.argeo.slc.core.test";vers\r
+ ion="0.11.2.SNAPSHOT"\r
Tool: Bnd-0.0.255\r
-Bundle-Name: Argeo SLC Agent\r
+Bundle-Name: Argeo SLC Support Web Services Client\r
Created-By: 1.6.0 (Sun Microsystems Inc.)\r
Bundle-Vendor: Argeo\r
Bundle-Version: 0.11.2.SNAPSHOT\r
Bundle-ManifestVersion: 2\r
Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt\r
Bundle-Description: SLC Distribution\r
-Import-Package: javax.xml.namespace;version="1.3",javax.xml.transform;\r
- version="1.3",javax.xml.transform.dom;version="1.3",junit.framework;v\r
- ersion="3.8",org.apache.commons.cli;resolution:=optional;version="1.1\r
- ",org.apache.commons.io;version="1.4",org.apache.commons.logging;vers\r
- ion="1.1",org.apache.log4j;version="1.2",org.apache.log4j.spi;version\r
- ="1.2",org.apache.tools.ant;version="1.7",org.apache.tools.ant.helper\r
- ;version="1.7",org.apache.tools.ant.types;version="1.7",org.apache.to\r
- ols.ant.util;version="1.7",org.argeo.slc.ant;version="0.11.2.SNAPSHOT\r
- ",org.argeo.slc.ant.deploy;version="0.11.2.SNAPSHOT",org.argeo.slc.an\r
- t.detached;version="0.11.2.SNAPSHOT",org.argeo.slc.ant.spring;version\r
- ="0.11.2.SNAPSHOT",org.argeo.slc.ant.structure;version="0.11.2.SNAPSH\r
- OT",org.argeo.slc.ant.test;version="0.11.2.SNAPSHOT",org.argeo.slc.an\r
- t.unit;version="0.11.2.SNAPSHOT",org.argeo.slc.cli;version="0.11.2.SN\r
- APSHOT",org.argeo.slc.core;version="0.11.2.SNAPSHOT",org.argeo.slc.co\r
- re.build;version="0.11.2.SNAPSHOT",org.argeo.slc.core.deploy;version=\r
- "0.11.2.SNAPSHOT",org.argeo.slc.core.process;version="0.11.2.SNAPSHOT\r
- ",org.argeo.slc.core.structure;version="0.11.2.SNAPSHOT",org.argeo.sl\r
- c.core.structure.tree;version="0.11.2.SNAPSHOT",org.argeo.slc.core.te\r
- st;version="0.11.2.SNAPSHOT",org.argeo.slc.core.test.context;version=\r
- "0.11.2.SNAPSHOT",org.argeo.slc.core.test.spring;version="0.11.2.SNAP\r
- SHOT",org.argeo.slc.core.test.tree;version="0.11.2.SNAPSHOT",org.arge\r
- o.slc.detached;version="0.11.2.SNAPSHOT",org.argeo.slc.detached.ui;ve\r
- rsion="0.11.2.SNAPSHOT",org.argeo.slc.lib.detached;version="0.11.2.SN\r
- APSHOT",org.argeo.slc.logging;version="0.11.2.SNAPSHOT",org.argeo.slc\r
- .maven;version="0.11.2.SNAPSHOT",org.argeo.slc.msg.process;version="0\r
- .11.2.SNAPSHOT",org.argeo.slc.msg.test.tree;version="0.11.2.SNAPSHOT"\r
- ,org.argeo.slc.runtime;version="0.11.2.SNAPSHOT",org.argeo.slc.spring\r
- ;version="0.11.2.SNAPSHOT",org.argeo.slc.support.deploy.ant;version="\r
- 0.11.2.SNAPSHOT",org.argeo.slc.unit;version="0.11.2.SNAPSHOT",org.arg\r
- eo.slc.ws.client;version="0.11.2.SNAPSHOT",org.argeo.slc.ws.client.sp\r
- ring;version="0.11.2.SNAPSHOT",org.argeo.slc.ws.process;version="0.11\r
- .2.SNAPSHOT",org.argeo.slc.ws.test.tree;version="0.11.2.SNAPSHOT",org\r
- .springframework.beans;version="2.5.6.A",org.springframework.beans.fa\r
- ctory;version="2.5.6.A",org.springframework.beans.factory.config;vers\r
- ion="2.5.6.A",org.springframework.beans.factory.support;version="2.5.\r
- 6.A",org.springframework.beans.factory.xml;version="2.5.6.A",org.spri\r
- ngframework.context;version="2.5.6.A",org.springframework.context.sup\r
- port;version="2.5.6.A",org.springframework.core.io;version="2.5.6.A",\r
- org.springframework.oxm;version="1.5.5.A",org.springframework.util;ve\r
- rsion="2.5.6.A",org.springframework.ws;version="1.5.5.A",org.springfr\r
+Import-Package: javax.xml.namespace,javax.xml.transform,javax.xml.tran\r
+ sform.dom,org.apache.commons.logging;version="1.1",org.argeo.slc.core\r
+ .process;version="0.11.2.SNAPSHOT",org.argeo.slc.core.test;version="0\r
+ .11.2.SNAPSHOT",org.argeo.slc.core.test.tree;version="0.11.2.SNAPSHOT\r
+ ",org.argeo.slc.msg.process;version="0.11.2.SNAPSHOT",org.argeo.slc.m\r
+ sg.test.tree;version="0.11.2.SNAPSHOT",org.argeo.slc.ws.client;versio\r
+ n="0.11.2.SNAPSHOT",org.argeo.slc.ws.client.spring;version="0.11.2.SN\r
+ APSHOT",org.argeo.slc.ws.process;version="0.11.2.SNAPSHOT",org.argeo.\r
+ slc.ws.test.tree;version="0.11.2.SNAPSHOT",org.springframework.oxm;ve\r
+ rsion="1.5.5.A",org.springframework.ws;version="1.5.5.A",org.springfr\r
amework.ws.client;version="1.5.5.A",org.springframework.ws.client.cor\r
e;version="1.5.5.A",org.springframework.ws.client.support.interceptor\r
;version="1.5.5.A",org.springframework.ws.context;version="1.5.5.A",o\r
rg.springframework.ws.soap;version="1.5.5.A",org.springframework.ws.s\r
oap.client;version="1.5.5.A",org.springframework.xml.transform;versio\r
n="1.5.5.A",org.springframework.xml.validation;version="1.5.5.A",org.\r
- w3c.dom;version="1.3",org.xml.sax;version="1.3"\r
-Bundle-SymbolicName: org.argeo.slc.agent\r
+ w3c.dom,org.xml.sax\r
+Bundle-SymbolicName: org.argeo.slc.support.ws\r
Bundle-DocURL: http://www.argeo.org\r
Originally-Created-By: 1.6.0 (Sun Microsystems Inc.)\r
\r
+++ /dev/null
-log4j.rootLogger=WARN, console, file
-
-## Levels
-log4j.logger.org.argeo=INFO
-
-## Ant (Ant error logging is to verbose)
-log4j.logger.org.apache.tools.ant.UnknownElement=OFF
-log4j.logger.org.apache.tools.ant.Target=OFF
-log4j.logger.org.apache.tools.ant.Project=OFF
-
-## Appenders
-# console uses PatternLayout.
-log4j.appender.console=org.apache.log4j.ConsoleAppender
-log4j.appender.console.layout=org.apache.log4j.PatternLayout
-log4j.appender.console.layout.ConversionPattern= %-5p %d{ISO8601} %m - %c%n
-
-# file uses PatternLayout
-log4j.appender.file=org.apache.log4j.RollingFileAppender
-log4j.appender.file.File=${slc.workDir}/log/slcApp.log
-log4j.appender.file.MaxFileSize=1MB
-log4j.appender.file.MaxBackupIndex=5
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern= %-5p %d{ISO8601} %m - %c%n
+++ /dev/null
-# Tasks\r
-slc.test=org.argeo.slc.ant.test.SlcTestTask\r
-slc.deploy=org.argeo.slc.ant.deploy.SlcDeployTask\r
-slc.manager=org.argeo.slc.ant.deploy.SlcManagerTask\r
-slc.closeResult=org.argeo.slc.ant.test.SlcCloseTestResultTask\r
-slc.report=org.argeo.slc.ant.test.SlcReportTask\r
-slc.register=org.argeo.slc.ant.spring.SpringRegister\r
-slc.detached=org.argeo.slc.ant.detached.SlcDetachedTask\r
+++ /dev/null
-# Types\r
-slc.context=org.argeo.slc.ant.test.ParentContextType\r
+++ /dev/null
-log4j.rootLogger=WARN, console\r
-\r
-## Levels\r
-log4j.logger.org.argeo=INFO\r
-\r
-## Appenders\r
-# console is set to be a ConsoleAppender.\r
-log4j.appender.console=org.apache.log4j.ConsoleAppender\r
-\r
-# console uses PatternLayout.\r
-log4j.appender.console.layout=org.apache.log4j.PatternLayout\r
-log4j.appender.console.layout.ConversionPattern= %-5p %d{ISO8601} %m - %c%n\r
-\r
+++ /dev/null
-<?xml version="1.0"?>
-<!DOCTYPE doc [
-<!ENTITY slc-detached-namespace-uri "http://argeo.org/projects/slc/schemas/detached">
-<!ENTITY slc-detached-namespace-prefix "slc-det">
-]>
-
-<mapping>
- <description>Mapping of SLC detached types</description>
-
- <class name="org.argeo.slc.detached.DetachedRequest">
- <map-to ns-uri="&slc-detached-namespace-uri;"
- ns-prefix="&slc-detached-namespace-prefix;" />
- <field name="uuid" />
- <field name="ref" />
- <field name="path" />
- <field name="properties" collection="map">
- <bind-xml name="prop" location="properties">
- <class name="org.exolab.castor.mapping.MapItem">
- <map-to ns-uri="&slc-detached-namespace-uri;"
- ns-prefix="&slc-detached-namespace-prefix;" />
- <field name="key" type="string">
- <bind-xml name="key" node="attribute" />
- </field>
- <field name="value" type="string">
- <bind-xml node="text" />
- </field>
- </class>
- </bind-xml>
- </field>
- </class>
-
- <class name="org.argeo.slc.detached.DetachedAnswer">
- <map-to ns-uri="&slc-detached-namespace-uri;"
- ns-prefix="&slc-detached-namespace-prefix;" />
- <field name="uuid" />
- <field name="status" />
- <field name="log" />
- <field name="properties" collection="map">
- <bind-xml name="prop" location="properties">
- <class name="org.exolab.castor.mapping.MapItem">
- <map-to ns-uri="&slc-detached-namespace-uri;"
- ns-prefix="&slc-detached-namespace-prefix;" />
- <field name="key" type="string">
- <bind-xml name="key" node="attribute" />
- </field>
- <field name="value" type="string">
- <bind-xml node="text" />
- </field>
- </class>
- </bind-xml>
- </field>
- </class>
-</mapping>
\ No newline at end of file
+++ /dev/null
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
- default-lazy-init="true">
-
- <bean id="slcTemplate.detached.testDefinition"
- class="org.argeo.slc.lib.detached.DetachedTestDefinition"
- abstract="true">
- </bean>
-
- <bean id="slcDefault.detached.xmlConverterCastor"
- class="org.argeo.slc.lib.detached.DetachedXmlConverterSpring">
- <property name="marshaller"
- ref="slcDefault.detached.castor.marshaller" />
- <property name="unmarshaller"
- ref="slcDefault.detached.castor.marshaller" />
- </bean>
-
- <bean id="slcDefault.detached.castor.marshaller"
- class="org.springframework.oxm.castor.CastorMarshaller">
- <property name="mappingLocations">
- <list>
- <value>
- classpath:org/argeo/slc/lib/detached/castor.xml
- </value>
- </list>
- </property>
- <property name="whitespacePreserve" value="true" />
- </bean>
-
- <bean id="slcDefault.detached.xml.xsdValidator"
- factory-bean="slcDefault.detached.xml.xsdSchema"
- factory-method="createValidator" />
-
- <bean id="slcDefault.detached.xml.xsdSchema"
- class="org.springframework.xml.xsd.SimpleXsdSchema">
- <property name="xsd"
- value="classpath:/org/argeo/slc/detached/slc-detached.xsd" />
- </bean>
-
-</beans>
+++ /dev/null
-<project>\r
-\r
- <target name="deployZip">
- <unzip src="${src}" dest="${tempDir}" />
- <copyFromTemp />
- </target>
-
- <target name="deployTarGz">
- <untar src="${src}" dest="${tempDir}" compression="gzip" />
- <copyFromTemp />
- </target>
-
- <macrodef name="copyFromTemp">
- <sequential>
- <copy todir="${dest}" includeemptydirs="true">
- <fileset dir="${tempDir}">
- <include name="**/*" />
- </fileset>
- <mapper classname="org.argeo.slc.ant.RemoveRootDirMapper" to="${removeRootDir}" />
- </copy>
- </sequential>
- </macrodef>
-</project>
\ No newline at end of file
+++ /dev/null
-Argeo SLC Site
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.ant;
-
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-import java.util.Vector;
-
-public class DummyObject {
- private String name;
- private Long value;
- private DummyObject other;
- private List<DummyObject> children = new Vector<DummyObject>();
- private Map<String, DummyObject> map = new TreeMap<String, DummyObject>();
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public Long getValue() {
- return value;
- }
-
- public void setValue(Long value) {
- this.value = value;
- }
-
- public DummyObject getOther() {
- return other;
- }
-
- public void setOther(DummyObject other) {
- this.other = other;
- }
-
- public List<DummyObject> getChildren() {
- return children;
- }
-
- public void setChildren(List<DummyObject> children) {
- this.children = children;
- }
-
- public Map<String, DummyObject> getMap() {
- return map;
- }
-
- public void setMap(Map<String, DummyObject> map) {
- this.map = map;
- }
-
-}
+++ /dev/null
-package org.argeo.slc.ant;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.ant.unit.MinimalAntClasspathTestCase;
-
-public class OverrideTest extends MinimalAntClasspathTestCase {
- private Log log = LogFactory.getLog(getClass());
-
- public void testSimpleRun() {
- execute("/org/argeo/slc/ant/buildOverride.xml");
- }
-
- @Override
- public void postExecution(AntExecutionContext executionContext) {
- log.info("Analyzing context after execution...");
-
- DummyObject dummy1UnModified = executionContext
- .getAntRef("dummy1.unmodified");
- assertEquals("dummy2", dummy1UnModified.getOther().getName());
- assertEquals(2, dummy1UnModified.getChildren().size());
- assertEquals(2, dummy1UnModified.getMap().size());
-
- DummyObject dummy1Modif1 = executionContext.getAntRef("dummy1.modif1");
- assertEquals("dummy1.modif1", dummy1Modif1.getName());
- assertEquals("dummy3", dummy1Modif1.getOther().getName());
-
- DummyObject dummy1Modif2 = executionContext.getAntRef("dummy1.modif2");
- assertEquals(1, dummy1Modif2.getChildren().size());
- assertEquals("dummy3", dummy1Modif2.getChildren().get(0).getName());
-
- DummyObject dummy1Modif3 = executionContext.getAntRef("dummy1.modif3");
- assertEquals(2, dummy1Modif3.getChildren().size());
- assertEquals("dummy3", dummy1Modif3.getChildren().get(0).getName());
- assertEquals("dummy2", dummy1Modif3.getChildren().get(1).getName());
-
- DummyObject dummy1Modif4 = executionContext.getAntRef("dummy1.modif4");
- assertEquals(2, dummy1Modif4.getChildren().size());
- assertEquals("dummy3", dummy1Modif4.getChildren().get(0).getName());
- assertEquals("dummy1.modif1", dummy1Modif4.getChildren().get(0)
- .getOther().getName());
- assertEquals("dummy2", dummy1Modif4.getChildren().get(1).getName());
- assertEquals(1, dummy1Modif4.getChildren().get(1).getChildren().size());
- assertEquals("dummy3", dummy1Modif4.getChildren().get(1).getChildren()
- .get(0).getName());
-
- DummyObject dummy1Modif5 = executionContext.getAntRef("dummy1.modif5");
- assertEquals(2, dummy1Modif5.getMap().size());
- assertEquals("dummy3", dummy1Modif5.getMap().get("key1").getName());
- assertEquals("dummy2", dummy1Modif5.getMap().get("key2").getName());
-
- DummyObject dummy1Modif6 = executionContext.getAntRef("dummy1.modif6");
- assertEquals(2, dummy1Modif6.getMap().size());
- assertEquals("dummy2.merged", dummy1Modif6.getMap().get("key1").getName());
- assertEquals("dummy3.merged", dummy1Modif6.getMap().get("key2").getName());
-
- }
-
- @Override
- protected String getApplicationContextLocation() {
- return inPackage("acOverride.xml");
- }
-
-}
+++ /dev/null
-package org.argeo.slc.ant;\r
-\r
-import org.argeo.slc.ant.unit.MinimalAntClasspathTestCase;\r
-\r
-public class SlcAntTest extends MinimalAntClasspathTestCase {\r
- // private Log log = LogFactory.getLog(getClass());\r
-\r
- public void testSimpleRun() {\r
- execute("/org/argeo/slc/ant/build.xml");\r
- }\r
-}\r
+++ /dev/null
-package org.argeo.slc.lib.detached;
-
-import java.util.Enumeration;
-import java.util.Properties;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.detached.DetachedAnswer;
-import org.argeo.slc.detached.DetachedRequest;
-import org.argeo.slc.detached.DetachedXmlConverter;
-import org.argeo.slc.detached.DetachedXmlConverterCompat;
-import org.argeo.slc.unit.AbstractSpringTestCase;
-import org.argeo.slc.unit.UnitXmlUtils;
-import org.springframework.xml.transform.StringResult;
-import org.springframework.xml.transform.StringSource;
-import org.springframework.xml.validation.XmlValidator;
-
-public class DetachedCastorTest extends AbstractSpringTestCase {
- private final Log log = LogFactory.getLog(getClass());
-
- private DetachedXmlConverter converter = null;
- private XmlValidator validator = null;
- private DetachedXmlConverter converterCompat = null;
-
- public void setUp() {
- converter = getBean("slcDefault.detached.xmlConverterCastor");
- validator = getBean("slcDefault.detached.xml.xsdValidator");
- converterCompat = new DetachedXmlConverterCompat();
- }
-
- public void testRequest() throws Exception {
- DetachedRequest request = createTestRequest();
-
- StringResult result = new StringResult();
- converter.marshallCommunication(request, result);
- String xml = result.toString();
- log.debug(xml + "\n");
-
- UnitXmlUtils.assertXmlValidation(validator, new StringSource(xml));
- DetachedRequest requestUnm = (DetachedRequest) converter
- .unmarshallCommunication(new StringSource(xml));
- assertDetachedRequest(request, requestUnm);
- }
-
- public void testRequestCompat() throws Exception {
- DetachedRequest request = createTestRequest();
-
- StringResult result = new StringResult();
- converter.marshallCommunication(request, result);
- String xml = result.toString();
- log.debug(xml + "\n");
-
- UnitXmlUtils.assertXmlValidation(validator, new StringSource(xml));
- DetachedRequest requestUnm = (DetachedRequest) converterCompat
- .unmarshallCommunication(new StringSource(xml));
- assertDetachedRequest(request, requestUnm);
- }
-
- public void testAnswer() throws Exception {
- DetachedAnswer answer = createTestAnswer();
- StringResult result = new StringResult();
- converter.marshallCommunication(answer, result);
- String xml = result.toString();
- log.debug(xml + "\n");
-
- UnitXmlUtils.assertXmlValidation(validator, new StringSource(xml));
- DetachedAnswer answerUnm = (DetachedAnswer) converter
- .unmarshallCommunication(new StringSource(xml));
- assertDetachedAnswer(answer, answerUnm);
- }
-
- public void testAnswerCompat() throws Exception {
- DetachedAnswer answer = createTestAnswer();
- StringResult result = new StringResult();
- converterCompat.marshallCommunication(answer, result);
- String xml = result.toString();
- log.debug(xml + "\n");
-
- UnitXmlUtils.assertXmlValidation(validator, new StringSource(xml));
- DetachedAnswer answerUnm = (DetachedAnswer) converter
- .unmarshallCommunication(new StringSource(xml));
- assertDetachedAnswer(answer, answerUnm);
- }
-
- public static DetachedRequest createTestRequest() {
- DetachedRequest request = new DetachedRequest();
- request.setUuid("12345");
- request.setPath("/root/test");
- request.setRef("testRef");
- Properties properties = new Properties();
- properties.setProperty("key1", "value1");
- properties.setProperty("key2", "value2");
- request.setProperties(properties);
- return request;
- }
-
- public static DetachedAnswer createTestAnswer() {
- DetachedAnswer answer = new DetachedAnswer();
- answer.setUuid("12345");
- answer.setStatus(DetachedAnswer.PROCESSED);
- answer.setLog("my log\nline break.");
- Properties properties = new Properties();
- properties.setProperty("key1", "value1");
- properties.setProperty("key2", "value2");
- answer.setProperties(properties);
- return answer;
- }
-
- public static void assertDetachedRequest(DetachedRequest expected,
- DetachedRequest reached) {
- assertEquals(expected.getUuid(), reached.getUuid());
- assertEquals(expected.getPath(), reached.getPath());
- assertEquals(expected.getRef(), reached.getRef());
- Properties expectedProps = expected.getProperties();
- Properties reachedProps = reached.getProperties();
- assertEquals(expectedProps.size(), reachedProps.size());
- Enumeration<Object> keys = expectedProps.keys();
- while (keys.hasMoreElements()) {
- String key = (String) keys.nextElement();
- assertTrue(reachedProps.containsKey(key));
- assertEquals(expectedProps.getProperty(key), reachedProps
- .getProperty(key));
- }
- }
-
- public static void assertDetachedAnswer(DetachedAnswer expected,
- DetachedAnswer reached) {
- assertEquals(expected.getUuid(), reached.getUuid());
- assertEquals(expected.getStatus(), reached.getStatus());
- assertEquals(expected.getLog(), reached.getLog());
- Properties expectedProps = expected.getProperties();
- Properties reachedProps = reached.getProperties();
- assertEquals(expectedProps.size(), reachedProps.size());
- Enumeration<Object> keys = expectedProps.keys();
- while (keys.hasMoreElements()) {
- String key = (String) keys.nextElement();
- assertTrue(reachedProps.containsKey(key));
- assertEquals(expectedProps.getProperty(key), reachedProps
- .getProperty(key));
- }
- }
-}
+++ /dev/null
-# Set root logger level to DEBUG and its only appender to A1.\r
-log4j.rootLogger=WARN, console\r
-\r
-## Levels\r
-# Slc\r
-log4j.logger.org.argeo=DEBUG\r
-\r
-# Castor\r
-log4j.logger.org.exolab.castor=WARN\r
-\r
-# Spring\r
-log4j.logger.org.springframework=WARN\r
-\r
-## Appenders\r
-# A1 is set to be a ConsoleAppender.\r
-log4j.appender.console=org.apache.log4j.ConsoleAppender\r
-\r
-# A1 uses PatternLayout.\r
-log4j.appender.console.layout=org.apache.log4j.PatternLayout\r
-log4j.appender.console.layout.ConversionPattern= %-5p %d{ISO8601} %m - %c%n\r
-\r
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
-
-
- <bean id="dummy1" parent="template.dummy" scope="prototype">
- <property name="name" value="dummy1" />
- <property name="other" ref="dummy2" />
- <property name="children">
- <list>
- <ref bean="dummy2" />
- <ref bean="dummy3" />
- </list>
- </property>
- <property name="map">
- <map>
- <entry key="key1">
- <ref bean="dummy2" />
- </entry>
- <entry key="key2">
- <ref bean="dummy3" />
- </entry>
- </map>
- </property>
- </bean>
-
- <bean id="dummy2" parent="template.dummy" scope="prototype">
- <property name="name" value="dummy2" />
- </bean>
-
- <bean id="dummy3" parent="template.dummy" scope="prototype">
- <property name="name" value="dummy3" />
- </bean>
-
- <!-- Templates -->
- <bean id="template.dummy" class="org.argeo.slc.ant.DummyObject"
- abstract="true">
- </bean>
-
-
-
-</beans>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<beans xmlns="http://www.springframework.org/schema/beans"\r
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
-\r
- <import resource="classpath:/org/argeo/slc/ant/nonDepContext.xml" />\r
-\r
- <bean id="testResult"\r
- parent="slcDefault.test.basicTreeTestResult">\r
- </bean>\r
-\r
-</beans>
\ No newline at end of file
+++ /dev/null
-<project default="test">\r
-\r
- <target name="test">\r
- <echo message="Hello World!" />\r
-\r
- <slc.test>\r
- <testDefinition bean="testDef" />\r
- <testData bean="testData1" />\r
- </slc.test>\r
-\r
- <slc.test>
- <testDefinition bean="testDef" />
- <testData bean="testData.context1" />
- </slc.test>
-
- <slc.test path="/testRoot/testContext">
- <testDefinition bean="testDef" />
- <testData bean="testData.context1" />
- </slc.test>
-
- <slc.closeResult>
- <result bean="testResult" />
- </slc.closeResult>\r
- </target>\r
-</project>
\ No newline at end of file
+++ /dev/null
-<project default="test">\r
-\r
- <target name="test">\r
- <slc.register>
- <object antid="dummy1.unmodified" bean="dummy1" />
- <object antid="dummy1.modif1" bean="dummy1">
- <override name="name" value="dummy1.modif1" />
- <override name="other" bean="dummy3" />
- </object>
- <object antid="dummy1.modif2" bean="dummy1">
- <override name="children">
- <list>
- <override bean="dummy3" />
- </list>
- </override>
- </object>
- <object antid="dummy1.modif3" bean="dummy1">
- <override name="children" merge="true">
- <list>
- <override>
- <override name="name" value="dummy3" />
- </override>
- <override>
- <override name="name" value="dummy2" />
- </override>
- </list>
- </override>
- </object>
- <object antid="dummy1.modif4" bean="dummy1">
- <override name="children" merge="true">
- <list>
- <override>
- <override name="name" value="dummy3" />
- <override name="other" antref="dummy1.modif1" />
- </override>
- <override>
- <override name="name" value="dummy2" />
- <override name="children">
- <list>
- <override bean="dummy3" />
- </list>
- </override>
- </override>
- </list>
- </override>
- </object>
- <object antid="dummy1.modif5" bean="dummy1">
- <override name="map">
- <map>
- <entry key="key1">
- <override bean="dummy3" />
- </entry>
- <entry key="key2">
- <override bean="dummy2" />
- </entry>
- </map>
- </override>
- </object>
- <object antid="dummy1.modif6" bean="dummy1">
- <override name="map" merge="true">
- <map>
- <entry key="key1">
- <override>
- <override name="name" value="dummy2.merged" />
- </override>
- </entry>
- <entry key="key2">
- <override>
- <override name="name" value="dummy3.merged" />
- </override>
- </entry>
- </map>
- </override>
- </object>
- </slc.register>\r
- </target>\r
-</project>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<beans xmlns="http://www.springframework.org/schema/beans"\r
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
-\r
- <import\r
- resource="classpath:/org/argeo/slc/core/test/spring/applicationContext.xml" />\r
-\r
- <bean name="testDef"\r
- class="org.argeo.slc.core.test.BasicTestDefinition" scope="prototype" />\r
-\r
- <bean name="testData1"\r
- class="org.argeo.slc.core.test.BasicTestData">\r
- <property name="expected">\r
- <value>toto</value>\r
- </property>\r
- <property name="reached">\r
- <value>toto</value>\r
- </property>\r
- </bean>\r
-\r
- <bean id="testData.context1" parent="context.template">\r
- <property name="values">\r
- <map>\r
- <entry key="reference" value="20" />\r
- <entry key="varIntern" value="60" />\r
- </map>\r
- </property>\r
- <property name="expectedValues">\r
- <map>\r
- <entry key="reference" value="21" />\r
- <entry key="varIntern" value="60" />\r
- </map>\r
- </property>\r
- </bean>\r
-\r
- <bean id="context.template"\r
- class="org.argeo.slc.core.test.context.DefaultContextTestData"\r
- abstract="true">\r
- </bean>\r
-\r
-</beans>
\ No newline at end of file
+++ /dev/null
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
-
- <import resource="classpath:/org/argeo/slc/lib/detached/spring.xml" />
-
-</beans>