<developmentCycle.slc>0.13</developmentCycle.slc>
<site.repoBase>file:///srv/projects/www/slc/site</site.repoBase>
<site.urlBase>http://projects.argeo.org/slc/site</site.urlBase>
-<!-- <version.slc>${developmentCycle.slc}.1-SNAPSHOT</version.slc> -->
+ <version.slc>${developmentCycle.slc}.1-SNAPSHOT</version.slc>
</properties>
<modules>
<module>runtime</module>
<module>modules</module>
-<!-- <module>server</module> -->
<module>eclipse</module>
<module>demo</module>
<module>dep</module>
- <!-- FIXME: integration tests are currently failing -->
<!-- <module>integration-tests</module> -->
<module>dist</module>
</modules>
</contributors>
<dependencyManagement>
<dependencies>
- <!-- FIXME : use distribution > v1.1.5 and remove this -->
-<!-- <dependency> -->
-<!-- <groupId>org.eclipse.core</groupId> -->
-<!-- <artifactId>org.eclipse.core.databinding.observable</artifactId> -->
-<!-- <version>1.3.0</version> -->
-<!-- </dependency> -->
-<!-- <dependency> -->
-<!-- <groupId>org.eclipse.core</groupId> -->
-<!-- <artifactId>org.eclipse.core.databinding.property</artifactId> -->
-<!-- <version>1.3.0</version> -->
-<!-- </dependency> -->
-
-
<dependency>
<groupId>org.argeo.dep</groupId>
<artifactId>versions-all</artifactId>
<type>pom</type>
<scope>import</scope>
</dependency>
-
- <!-- SLC (itself) -->
-<!-- <dependency> -->
-<!-- <groupId>org.argeo.slc.runtime</groupId> -->
-<!-- <artifactId>org.argeo.slc.specs</artifactId> -->
-<!-- <version>${version.slc}</version> -->
-<!-- </dependency> -->
-<!-- <dependency> -->
-<!-- <groupId>org.argeo.slc.runtime</groupId> -->
-<!-- <artifactId>org.argeo.slc.core</artifactId> -->
-<!-- <version>${version.slc}</version> -->
-<!-- </dependency> -->
-<!-- <dependency> -->
-<!-- <groupId>org.argeo.slc.runtime</groupId> -->
-<!-- <artifactId>org.argeo.slc.unit</artifactId> -->
-<!-- <version>${version.slc}</version> -->
-<!-- </dependency> -->
-<!-- <dependency> -->
-<!-- <groupId>org.argeo.slc.runtime</groupId> -->
-<!-- <artifactId>org.argeo.slc.launcher</artifactId> -->
-<!-- <version>${version.slc}</version> -->
-<!-- </dependency> -->
-<!-- <dependency> -->
-<!-- <groupId>org.argeo.slc.runtime</groupId> -->
-<!-- <artifactId>org.argeo.slc.detached</artifactId> -->
-<!-- <version>${version.slc}</version> -->
-<!-- </dependency> -->
-<!-- <dependency> -->
-<!-- <groupId>org.argeo.slc.runtime</groupId> -->
-<!-- <artifactId>org.argeo.slc.lib.detached</artifactId> -->
-<!-- <version>${version.slc}</version> -->
-<!-- </dependency> -->
-<!-- <dependency> -->
-<!-- <groupId>org.argeo.slc.runtime</groupId> -->
-<!-- <artifactId>org.argeo.slc.support.simple</artifactId> -->
-<!-- <version>${version.slc}</version> -->
-<!-- </dependency> -->
-<!-- <dependency> -->
-<!-- <groupId>org.argeo.slc.runtime</groupId> -->
-<!-- <artifactId>org.argeo.slc.support.ant</artifactId> -->
-<!-- <version>${version.slc}</version> -->
-<!-- </dependency> -->
-<!-- <dependency> -->
-<!-- <groupId>org.argeo.slc.runtime</groupId> -->
-<!-- <artifactId>org.argeo.slc.support.maven</artifactId> -->
-<!-- <version>${version.slc}</version> -->
-<!-- </dependency> -->
-<!-- <dependency> -->
-<!-- <groupId>org.argeo.slc.runtime</groupId> -->
-<!-- <artifactId>org.argeo.slc.support.hibernate</artifactId> -->
-<!-- <version>${version.slc}</version> -->
-<!-- </dependency> -->
-<!-- <dependency> -->
-<!-- <groupId>org.argeo.slc.runtime</groupId> -->
-<!-- <artifactId>org.argeo.slc.support.castor</artifactId> -->
-<!-- <version>${version.slc}</version> -->
-<!-- </dependency> -->
-<!-- <dependency> -->
-<!-- <groupId>org.argeo.slc.runtime</groupId> -->
-<!-- <artifactId>org.argeo.slc.support.activemq</artifactId> -->
-<!-- <version>${version.slc}</version> -->
-<!-- </dependency> -->
-<!-- <dependency> -->
-<!-- <groupId>org.argeo.slc.runtime</groupId> -->
-<!-- <artifactId>org.argeo.slc.support.jcr</artifactId> -->
-<!-- <version>${version.slc}</version> -->
-<!-- </dependency> -->
-<!-- <dependency> -->
-<!-- <groupId>org.argeo.slc.runtime</groupId> -->
-<!-- <artifactId>org.argeo.slc.server</artifactId> -->
-<!-- <version>${version.slc}</version> -->
-<!-- </dependency> -->
-<!-- <dependency> -->
-<!-- <groupId>org.argeo.slc.runtime</groupId> -->
-<!-- <artifactId>org.argeo.slc.support.osgi</artifactId> -->
-<!-- <version>${version.slc}</version> -->
-<!-- </dependency> -->
-<!-- <dependency> -->
-<!-- <groupId>org.argeo.slc.runtime</groupId> -->
-<!-- <artifactId>org.argeo.slc.support.equinox</artifactId> -->
-<!-- <version>${version.slc}</version> -->
-<!-- </dependency> -->
-<!-- <dependency> -->
-<!-- <groupId>org.argeo.slc.runtime</groupId> -->
-<!-- <artifactId>org.argeo.slc.support.jemmy</artifactId> -->
-<!-- <version>${version.slc}</version> -->
-<!-- </dependency> -->
-<!-- <dependency> -->
-<!-- <groupId>org.argeo.slc.server</groupId> -->
-<!-- <artifactId>org.argeo.slc.ria</artifactId> -->
-<!-- <version>${version.slc}</version> -->
-<!-- </dependency> -->
-<!-- <dependency> -->
-<!-- <groupId>org.argeo.ria</groupId> -->
-<!-- <artifactId>org.argeo.ria.core</artifactId> -->
-<!-- <version>${version.argeo-ria}</version> -->
-<!-- </dependency> -->
-<!-- <dependency> -->
-<!-- <groupId>org.argeo.slc.server</groupId> -->
-<!-- <artifactId>deploy</artifactId> -->
-<!-- <version>${version.slc}</version> -->
-<!-- <type>pom</type> -->
-<!-- </dependency> -->
-<!-- SLC dubious -->
-<!-- <dependency> -->
-<!-- <groupId>org.argeo.slc.runtime</groupId> -->
-<!-- <artifactId>org.argeo.slc.detached.launcher</artifactId> -->
-<!-- <version>${version.slc}</version> -->
-<!-- <type>tar.gz</type> -->
-<!-- <classifier>dist</classifier> -->
-<!-- </dependency> -->
- <!-- Argeo Commons -->
-<!-- <dependency> -->
-<!-- <groupId>org.argeo.commons.security</groupId> -->
-<!-- <artifactId>org.argeo.security.dep.ads</artifactId> -->
-<!-- <version>${version.argeo-commons}</version> -->
-<!-- <type>pom</type> -->
-<!-- </dependency> -->
-<!-- <dependency> -->
-<!-- <groupId>org.argeo.commons.osgi</groupId> -->
-<!-- <artifactId>org.argeo.osgi.boot</artifactId> -->
-<!-- <version>${version.argeo-commons}</version> -->
-<!-- </dependency> -->
-<!-- <dependency> -->
-<!-- <groupId>org.argeo.commons.server</groupId> -->
-<!-- <artifactId>org.argeo.server.ads</artifactId> -->
-<!-- <version>${version.argeo-commons}</version> -->
-<!-- </dependency> -->
-<!-- <dependency> -->
-<!-- <groupId>org.argeo.commons.server</groupId> -->
-<!-- <artifactId>org.argeo.server.dep.jackrabbit.server</artifactId> -->
-<!-- <version>${version.argeo-commons}</version> -->
-<!-- <type>pom</type> -->
-<!-- </dependency> -->
-<!-- <dependency> -->
-<!-- <groupId>org.argeo.commons.server</groupId> -->
-<!-- <artifactId>org.argeo.server.jackrabbit</artifactId> -->
-<!-- <version>${version.argeo-commons}</version> -->
-<!-- </dependency> -->
</dependencies>
</dependencyManagement>
- <!-- -->
<repositories>
<repository>
<id>argeo</id>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" output="target/classes" path="src/main/java"/>
- <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
- <classpathentry kind="src" path="src/test/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>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>argeo.slc.activemq.selector</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.maven.ide.eclipse.maven2Builder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.maven.ide.eclipse.maven2Nature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
-</projectDescription>
+++ /dev/null
-#Sun Apr 26 07:20:59 CEST 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
+++ /dev/null
-#Sun Apr 26 07:24:25 CEST 2009
-activeProfiles=
-eclipse.preferences.version=1
-fullBuildGoals=process-test-resources
-includeModules=false
-resolveWorkspaceProjects=true
-resourceFilterGoals=process-resources resources\:testResources
-skipCompilerPlugin=true
-version=1
+++ /dev/null
-Bundle-SymbolicName: argeo.slc.activemq.selector.jms
-Bundle-Version: 0.1.1
-Import-Package: javax.jms,
- javax.management.j2ee.statistics,
- org.apache.commons.logging
-Require-Bundle:
- org.springframework.core,
- org.springframework.context,
- org.springframework.beans,
- org.springframework.jms,
- org.argeo.dep.osgi.activemq,
- argeo.slc.activemq.selector
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:amq="http://activemq.apache.org/schema/core" 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
- http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">
-
- <!-- <import resource="classpath:org/argeo/slc/activemq/spring.xml" /> -->
-
- <!-- Embedded broker -->
- <amq:broker useJmx="false" persistent="false">
- <amq:transportConnectors>
- <amq:transportConnector uri="tcp://localhost:61616" />
- </amq:transportConnectors>
- </amq:broker>
-
- <!-- Connection Factory -->
- <bean id="jmsConnectionFactory"
- class="org.springframework.jms.connection.SingleConnectionFactory">
- <property name="targetConnectionFactory">
- <bean id="slcDefault.jms.amqConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
- <property name="brokerURL">
- <value>tcp://localhost:61616</value>
- </property>
- </bean>
- </property>
- </bean>
-</beans>
\ No newline at end of file
+++ /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="listener" class="argeo.slc.activemq.selector.DummyMessageListener">
- </bean>
-
- <bean id="listenerContainer"
- class="org.springframework.jms.listener.DefaultMessageListenerContainer">
- <property name="connectionFactory" ref="jmsConnectionFactory" />
- <property name="destinationName" value="testQueue" />
- <property name="messageListener" ref="listener" />
- <property name="messageSelector" value="myFilter='myValue'" />
- </bean>
-
-
-</beans>
\ No newline at end of file
+++ /dev/null
-Bundle-Name: Log4j Configuration
-Bundle-SymbolicName: argeo.slc.activemq.selector.log4j
-Bundle-Version: 0.11.3.qualifier
-Fragment-Host: com.springsource.org.apache.log4j
-
+++ /dev/null
-log4j.rootLogger=WARN, console
-
-## Levels
-log4j.logger.argeo=DEBUG
-log4j.logger.org.argeo=DEBUG
-log4j.logger.org.argeo.slc.execution.ExecutionParameterPostProcessor=TRACE
-log4j.logger.org.argeo.slc.execution.ExecutionContext=DEBUG
-log4j.logger.org.argeo.slc.execution.SimpleExecutionSpec=DEBUG
-
-log4j.logger.org.springframework=WARN
-log4j.logger.org.springframework.jms=DEBUG
-
-log4j.logger.org.apache.activemq=DEBUG
-log4j.logger.org.apache.activemq.transport=WARN
-log4j.logger.org.apache.activemq.broker.TransportConnection=WARN
-
-log4j.logger.org.apache.catalina=INFO
-log4j.logger.org.apache.coyote=INFO
-log4j.logger.org.apache.tomcat=INFO
-
-## Appenders
-# console is set to be a ConsoleAppender.
-log4j.appender.console=org.apache.log4j.ConsoleAppender
-
-# console uses PatternLayout.
-log4j.appender.console.layout=org.apache.log4j.PatternLayout
-log4j.appender.console.layout.ConversionPattern= %-5p %d{ISO8601} %m - %c%n
+++ /dev/null
-<project 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/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.argeo.slc.runtime</groupId>
- <artifactId>argeo-slc-runtime</artifactId>
- <version>0.11.3-SNAPSHOT</version>
- <relativePath>../../runtime/</relativePath>
- </parent>
- <groupId>org.argeo.slc.sandbox</groupId>
- <artifactId>argeo.slc.activemq.selector</artifactId>
- <name>SLC ActiveMQ Selector Tests</name>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-source-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-bundle-plugin</artifactId>
-
- </plugin>
- <plugin>
- <groupId>org.argeo.slc.maven</groupId>
- <artifactId>maven-argeo-osgi-plugin</artifactId>
- <configuration>
- <systemProperties>
- <slc.osgi.bundles>${basedir}/bundles;in=*;ex=**/.svn/**,${basedir}/target;in=*.jar;ex=*-sources.jar</slc.osgi.bundles>
- <slc.osgi.start>
- org.springframework.osgi.extender,
- argeo.slc.activemq.selector.jms
- </slc.osgi.start>
- </systemProperties>
- </configuration>
- </plugin>
-
- </plugins>
- </build>
- <dependencies>
- <!--
- Spring -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>org.springframework.jms</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>org.springframework.transaction</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.osgi</groupId>
- <artifactId>org.springframework.osgi.extender</artifactId>
- </dependency>
-
- <!-- JMS -->
- <dependency>
- <groupId>javax.jms</groupId>
- <artifactId>com.springsource.javax.jms</artifactId>
- </dependency>
-
- <!-- ActiveMQ -->
- <dependency>
- <groupId>org.argeo.dep.osgi</groupId>
- <artifactId>org.argeo.dep.osgi.activemq</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>com.springsource.javax.management.j2ee</artifactId>
- </dependency>
- <dependency>
- <groupId>javax.activation</groupId>
- <artifactId>com.springsource.javax.activation</artifactId>
- </dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>com.springsource.javax.servlet</artifactId>
- </dependency>
- <dependency>
- <groupId>javax.ejb</groupId>
- <artifactId>com.springsource.javax.ejb</artifactId>
- </dependency>
- <dependency>
- <groupId>javax.xml.rpc</groupId>
- <artifactId>com.springsource.javax.xml.rpc</artifactId>
- </dependency>
- <dependency>
- <groupId>javax.xml.soap</groupId>
- <artifactId>com.springsource.javax.xml.soap</artifactId>
- </dependency>
-
- <dependency>
- <groupId>javax.xml.stream</groupId>
- <artifactId>
- com.springsource.javax.xml.stream
- </artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.xalan</groupId>
- <artifactId>
- com.springsource.org.apache.xalan
- </artifactId>
- </dependency>
-
-
-
- <dependency>
- <groupId>org.apache.log4j</groupId>
- <artifactId>com.springsource.org.apache.log4j</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.junit</groupId>
- <artifactId>com.springsource.junit</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.argeo.slc.runtime</groupId>
- <artifactId>org.argeo.slc.osgiboot</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-</project>
\ No newline at end of file
+++ /dev/null
-package argeo.slc.activemq.selector;
-
-import javax.jms.Message;
-import javax.jms.MessageListener;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.springframework.beans.factory.InitializingBean;
-
-public class DummyMessageListener implements MessageListener, InitializingBean {
- private final static Log log = LogFactory
- .getLog(DummyMessageListener.class);
-
- public void onMessage(Message message) {
-
- log.info("DummyMessageListener received message " + message);
- }
-
- public void afterPropertiesSet() throws Exception {
- log.info("DummyMessageListener configured.");
-
- }
-
-}
+++ /dev/null
-package argeo.slc.activemq.selector;
-
-import javax.jms.Connection;
-import javax.jms.ConnectionFactory;
-import javax.jms.MessageConsumer;
-import javax.jms.MessageProducer;
-import javax.jms.Queue;
-import javax.jms.Session;
-import javax.jms.TextMessage;
-
-import junit.framework.TestCase;
-
-import org.apache.activemq.ActiveMQConnectionFactory;
-import org.apache.activemq.broker.BrokerService;
-
-public abstract class AbstractActiveMqTest extends TestCase {
- // private final static Log log = LogFactory.getLog(SelectorTest.class);
-
- protected BrokerService broker;
- protected String connectorStr = "vm://localhost";
-
- protected String propName = "myFilter";
- protected String propValue = "myValue";
- protected String txt = "myText";
-
- protected Session session;
- protected Queue queue;
- protected MessageProducer producer;
-
- protected void createSession() throws Exception {
- ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
- connectorStr);
- Connection connection = connectionFactory.createConnection();
- connection.start();
- session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
-
- queue = session.createQueue("testQueue");
- producer = session.createProducer(queue);
- }
-
- protected TextMessage createMessage() throws Exception {
- TextMessage msg = session.createTextMessage();
- msg.setStringProperty(propName, propValue);
- msg.setText(txt);
- return msg;
- }
-
- protected void assertMsg(TextMessage receivedMsg) throws Exception {
- assertNotNull(receivedMsg);
- assertEquals(propValue, receivedMsg.getStringProperty(propName));
- assertEquals(txt, receivedMsg.getText());
- }
-
-}
+++ /dev/null
-package argeo.slc.activemq.selector;
-
-
-public class OsgiTest extends AbstractActiveMqTest {
- public void testSend() throws Exception {
- producer.send(createMessage());
- }
-
- protected void setUp() throws Exception {
- connectorStr = "tcp://localhost:61616";
- createSession();
- }
-
- protected void tearDown() throws Exception {
- session.close();
- }
-
- /*
- * public static void main(String[] args) { try { ConnectionFactory
- * connectionFactory = new ActiveMQConnectionFactory(
- * "tcp://localhost:61616"); Connection connection =
- * connectionFactory.createConnection(); connection.start(); Session session
- * = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
- *
- * Queue queue = session.createQueue("testQueue"); MessageProducer producer
- * = session.createProducer(queue);
- *
- * // TextMessage msg = session.createTextMessage(); //
- * msg.setStringProperty(propName, propValue); // msg.setText(txt);
- *
- * } catch (JMSException e) { e.printStackTrace(); }
- *
- * }
- */
-
-}
+++ /dev/null
-package argeo.slc.activemq.selector;
-
-import javax.jms.Connection;
-import javax.jms.ConnectionFactory;
-import javax.jms.MessageConsumer;
-import javax.jms.MessageProducer;
-import javax.jms.Queue;
-import javax.jms.Session;
-import javax.jms.TextMessage;
-
-import junit.framework.TestCase;
-
-import org.apache.activemq.ActiveMQConnectionFactory;
-import org.apache.activemq.broker.BrokerService;
-
-public class SelectorTest extends AbstractActiveMqTest {
- // private final static Log log = LogFactory.getLog(SelectorTest.class);
-
- protected BrokerService broker;
- protected String connectorStr = "vm://localhost";
-
- protected String propName = "myFilter";
- protected String propValue = "myValue";
- protected String txt = "myText";
-
- protected Session session;
- protected Queue queue;
- protected MessageProducer producer;
-
- public void testNoFilter() throws Exception {
- producer.send(createMessage());
- TextMessage receivedMsg = (TextMessage) session.createConsumer(queue)
- .receive(2000);
- assertMsg(receivedMsg);
- }
-
- public void testFilterOk() throws Exception {
- producer.send(createMessage());
- MessageConsumer consumer = session.createConsumer(queue, propName
- + "='" + propValue + "'");
- TextMessage receivedMsg = (TextMessage) consumer.receive(2000);
- assertMsg(receivedMsg);
- }
-
- public void testFilterNok() throws Exception {
- producer.send(createMessage());
- MessageConsumer consumer = session.createConsumer(queue, propName
- + "='notMyValue'");
- TextMessage receivedMsg = (TextMessage) consumer.receive(1000);
- assertNull("Message reception should time out", receivedMsg);
- }
-
- protected void setUp() throws Exception {
- broker = new BrokerService();
- broker.setPersistent(false);
- broker.setUseJmx(false);
- broker.addConnector(connectorStr);
- broker.start();
-
- createSession();
- }
-
- protected void tearDown() throws Exception {
- if (broker != null) {
- broker.stop();
- }
- }
-
-}
+++ /dev/null
-log4j.rootLogger=WARN, console
-
-## Levels
-log4j.logger.org.argeo=DEBUG
-log4j.logger.org.argeo.slc.execution.ExecutionParameterPostProcessor=TRACE
-log4j.logger.org.argeo.slc.execution.ExecutionContext=DEBUG
-log4j.logger.org.argeo.slc.execution.SimpleExecutionSpec=DEBUG
-
-log4j.logger.org.springframework=WARN
-
-log4j.logger.org.apache.activemq=DEBUG
-
-log4j.logger.org.apache.catalina=INFO
-log4j.logger.org.apache.coyote=INFO
-log4j.logger.org.apache.tomcat=INFO
-
-## Appenders
-# console is set to be a ConsoleAppender.
-log4j.appender.console=org.apache.log4j.ConsoleAppender
-
-# console uses PatternLayout.
-log4j.appender.console.layout=org.apache.log4j.PatternLayout
-log4j.appender.console.layout.ConversionPattern= %-5p %d{ISO8601} %m - %c%n
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src/main/resources"/>
- <classpathentry kind="src" path="src/slc"/>
- <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>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>argeo.slc.executionflow</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.maven.ide.eclipse.maven2Builder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.springframework.ide.eclipse.core.springbuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.springframework.ide.eclipse.core.springnature</nature>
- <nature>org.maven.ide.eclipse.maven2Nature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
-</projectDescription>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<beansProjectDescription>
- <version>1</version>
- <pluginVersion><![CDATA[2.2.1.v200811281800]]></pluginVersion>
- <configSuffixes>
- <configSuffix><![CDATA[xml]]></configSuffix>
- </configSuffixes>
- <enableImports><![CDATA[true]]></enableImports>
- <configs>
- <config>src/slc/conf/main.xml</config>
- </configs>
- <configSets>
- </configSets>
-</beansProjectDescription>
+++ /dev/null
-<project 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/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.argeo.slc</groupId>
- <artifactId>argeo-slc</artifactId>
- <version>0.11.3-SNAPSHOT</version>
- <relativePath>../../org.argeo.slc</relativePath>
- </parent>
- <groupId>org.argeo.slc.sandbox</groupId>
- <artifactId>org.argeo.slc.sandbox.executionflow</artifactId>
- <name>SLC Sandbox Execution Flow</name>
- <packaging>jar</packaging>
- <properties></properties>
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-jar-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-bundle-plugin</artifactId>
-
- <configuration>
- <instructions>
- <Export-Package>
- org.argeo.slc.*
- </Export-Package>
- </instructions>
- </configuration>
- </plugin>
- </plugins>
- </build>
- <dependencies>
-
-
- <dependency>
- <groupId>org.argeo.slc.runtime</groupId>
- <artifactId>org.argeo.slc.support.simple</artifactId>
- </dependency>
- <dependency>
- <groupId>org.argeo.slc</groupId>
- <artifactId>org.argeo.slc.detached.launcher</artifactId>
- <version>${version.slc}</version>
- </dependency>
-
- <dependency>
- <groupId>org.eclipse.osgi</groupId>
- <artifactId>org.eclipse.osgi</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.springframework.osgi</groupId>
- <artifactId>org.springframework.osgi.extender</artifactId>
- </dependency>
- </dependencies>
-</project>
\ No newline at end of file
+++ /dev/null
-Manifest-Version: 1.0\r
-Private-Package: conf;version="0.11.3-SNAPSHOT",conf.testCases;version\r
- ="0.11.3-SNAPSHOT"\r
-Tool: Bnd-0.0.255\r
-Bundle-Name: SLC Sandbox Execution Flow\r
-Created-By: 1.6.0_0 (Sun Microsystems Inc.)\r
-Require-Bundle: org.argeo.slc.execution,org.argeo.slc.specs,org.argeo.\r
- slc.support.simple,org.springframework.aop,com.springsource.net.sf.cg\r
- lib,com.springsource.org.aopalliance\r
-Bundle-Vendor: Argeo\r
-Bundle-Version: 0.11.3.SNAPSHOT\r
-Spring-Context: conf/main.xml\r
-Bundle-ManifestVersion: 2\r
-Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt\r
-Import-Package: org.apache.commons.logging;version="1.1",org.springfra\r
- mework.beans.factory.config\r
-Bundle-SymbolicName: org.argeo.slc.sandbox.executionflow\r
-Bundle-DocURL: http://www.argeo.org\r
-Originally-Created-By: 1.6.0_0 (Sun Microsystems Inc.)\r
-\r
+++ /dev/null
-import org.argeo.slc.test.*;
-
-public class BasicExecutionFlow implements org.argeo.slc.executionflow.ExecutionFlow {
-
- ExecutableTestRun firstSubTest = null;
- ExecutableTestRun secondSubTest = null;
-
- void execute(){
- firstSubTest?.execute();
- secondSubTest?.execute();
- }
-}
+++ /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" xmlns:p="http://www.springframework.org/schema/p"\r
- xmlns:aop="http://www.springframework.org/schema/aop"\r
- xsi:schemaLocation="\r
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd\r
- http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-2.5.xsd\r
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">\r
-\r
- <bean id="basic.executionSpec" class="org.argeo.slc.core.execution.SimpleExecutionSpec">\r
- <property name="attributes">\r
- <map>\r
- <entry key="testedComponentId">\r
- <bean parent="specAttribute" p:value="100" />\r
- </entry>\r
- <entry key="testData1">\r
- <bean parent="refAttribute" p:targetClass="org.argeo.slc.core.test.BasicTestData" />\r
- </entry>\r
- <entry key="testData2">\r
- <bean parent="refAttribute" p:targetClass="org.argeo.slc.core.test.BasicTestData" />\r
- </entry>\r
- </map>\r
- </property>\r
- </bean>\r
-\r
- <bean id="basic.ref" factory-bean="basic.executionSpec"\r
- factory-method="createRef" abstract="true" />\r
-\r
- <bean id="basic.executionFlowTemplate" class="org.argeo.slc.core.execution.SimpleExecutionFlow"\r
- abstract="true">\r
- <property name="executionSpec" ref="basic.executionSpec" />\r
- <property name="executables">\r
- <list>\r
- <ref bean="echo1" />\r
- <bean parent="testRun">\r
- <property name="testDefinition" ref="testDef" />\r
- <property name="testData">\r
- <bean parent="basic.ref">\r
- <constructor-arg value="testData1" />\r
- </bean>\r
- </property>\r
- </bean>\r
- <bean parent="testRun">\r
- <property name="testDefinition" ref="testDef" />\r
- <property name="testData" ref="ref1" />\r
- </bean>\r
- </list>\r
- </property>\r
- </bean>\r
-\r
- <bean id="ref1" parent="basic.ref" scope="prototype">\r
- <constructor-arg value="testData2" />\r
- </bean>\r
-\r
- \r
- <bean id="basic.testData" class="org.argeo.slc.core.test.BasicTestData"\r
- >\r
- <aop:scoped-proxy />\r
- <property name="expected" value="tata" />\r
- <property name="reached" value="tata" />\r
- </bean>\r
- \r
- \r
- <bean id="testDef" class="org.argeo.slc.core.test.BasicTestDefinition"\r
- scope="prototype" />\r
-\r
- <bean id="testResult" parent="slcDefault.test.basicSimpleTestResult" />\r
-\r
- <bean id="testRun" class="org.argeo.slc.core.test.SimpleTestRun"\r
- abstract="true">\r
- <property name="testResult" ref="testResult" />\r
- </bean>\r
-\r
- <!--\r
- <bean class="org.springframework.aop.framework.ProxyFactoryBean">\r
- <property name="targetClass"\r
- value="org.argeo.slc.core.test.BasicTestData" /> <property\r
- name="targetSource"> <bean\r
- class="org.argeo.slc.executionflow.ExecutionTargetSource"> <property\r
- name="name" value="testData" /> <property name="targetClass"\r
- value="org.argeo.slc.core.test.BasicTestData" /> </bean> </property>\r
- <property name="proxyTargetClass" value="true" /> </bean>\r
- -->\r
-\r
-</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" xmlns:p="http://www.springframework.org/schema/p"\r
- xmlns:aop="http://www.springframework.org/schema/aop"\r
- xsi:schemaLocation="\r
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd\r
- http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-2.5.xsd\r
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">\r
-\r
- <import\r
- resource="classpath:/org/argeo/slc/core/test/spring/applicationContext.xml" />\r
-\r
- <bean id="specAttribute" class="org.argeo.slc.core.execution.SimpleSpecAttribute"\r
- abstract="true" />\r
-\r
- <bean id="refAttribute" class="org.argeo.slc.core.execution.RefSpecAttribute"\r
- abstract="true" />\r
-\r
-</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" xmlns:p="http://www.springframework.org/schema/p"\r
- xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"\r
- xsi:schemaLocation="\r
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd\r
- http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-2.5.xsd\r
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd\r
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">\r
-\r
- <import resource="common.xml" />\r
-\r
- <import resource="basic.xml" />\r
- <import resource="testCases/basic-001.xml" />\r
- <import resource="testCases/basic-002.xml" />\r
-\r
- <bean id="testLaunch" class="org.argeo.slc.execution.old.TestLaunch"\r
- p:flowName="main" init-method="launch"/>\r
-\r
- <bean id="main" class="org.argeo.slc.core.execution.SimpleExecutionFlow">\r
- <property name="executionSpec">\r
- <bean class="org.argeo.slc.core.execution.SimpleExecutionSpec">\r
- <property name="attributes">\r
- <map>\r
- <entry key="testKey">\r
- <bean parent="specAttribute" p:value="660" />\r
- </entry>\r
- </map>\r
- </property>\r
- </bean>\r
- </property>\r
- <property name="executables">\r
- <list>\r
- <ref local="echo1" />\r
- <ref bean="basic.001" />\r
- <ref bean="basic.001" />\r
- <ref bean="basic.002" />\r
- </list>\r
- </property>\r
- </bean>\r
-\r
- <bean id="echo1" parent="echoTemplate" scope="execution">\r
- <property name="message"\r
- value="From main! @{testKey}, slc.flows=@{slc.flows}" />\r
- <aop:scoped-proxy />\r
- </bean>\r
-\r
- <bean id="echoTemplate" class="org.argeo.slc.core.execution.tasks.Echo"\r
- abstract="true">\r
- </bean>\r
-\r
- <context:annotation-config />\r
- <bean class="org.argeo.slc.execution.ExecutionRegister" />\r
-\r
-\r
- <bean class="org.springframework.beans.factory.config.CustomScopeConfigurer">\r
- <property name="scopes">\r
- <map>\r
- <entry key="execution">\r
- <bean class="org.argeo.slc.core.execution.ExecutionScope" />\r
- </entry>\r
- </map>\r
- </property>\r
- </bean>\r
-\r
- <bean\r
- class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" />\r
- <bean class="org.argeo.slc.core.execution.ExecutionParameterPostProcessor" />\r
- <bean class="org.argeo.slc.core.execution.InstantiationPostProcessor" />\r
- <bean class="org.argeo.slc.core.execution.Executor" />\r
-\r
- <bean class="org.argeo.slc.core.execution.ExecutionAspect"></bean>\r
- <aop:aspectj-autoproxy />\r
-\r
-</beans>
\ No newline at end of file
+++ /dev/null
-log4j.rootLogger=WARN, console
-
-## Levels
-log4j.logger.org.argeo=DEBUG
-log4j.logger.org.argeo.slc.executionflow.ExecutionParameterPostProcessor=TRACE
-log4j.logger.org.argeo.slc.executionflow.ExecutionContext=TRACE
-
-## Appenders
-# console is set to be a ConsoleAppender.
-log4j.appender.console=org.apache.log4j.ConsoleAppender
-
-# console uses PatternLayout.
-log4j.appender.console.layout=org.apache.log4j.PatternLayout
-log4j.appender.console.layout.ConversionPattern= %-5p %d{ISO8601} %m - %c%n
-
-testCase=002
\ 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" xmlns:p="http://www.springframework.org/schema/p"\r
- xmlns:lang="http://www.springframework.org/schema/lang"\r
- xsi:schemaLocation="\r
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd\r
- http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-2.5.xsd\r
- ">\r
-\r
- <import\r
- resource="classpath:/org/argeo/slc/core/test/spring/applicationContext.xml" />\r
-\r
- <import resource="testCases/basic-001.xml" />\r
- <import resource="testCases/basic-002.xml" />\r
-\r
- <bean id="executionFlow.basic1" class="org.argeo.slc.executionflow.SimpleExecutionFlow">\r
- <meta key="meta1" value="mata1Value" />\r
- <qualifier>\r
- <attribute key="qual1" value="qual1value" />\r
- </qualifier>\r
- <property name="executables">\r
- <list>\r
- <ref local="testGroovyImpl" />\r
- <ref local="testBshImpl" />\r
- <bean parent="testRun" p:testDefinition-ref="testDef"\r
- p:testData-ref="testData-${testCase}" />\r
- <bean parent="testRun" p:testDefinition-ref="testDef"\r
- p:testData-ref="testData-${testCase}" />\r
- </list>\r
- </property>\r
- </bean>\r
-\r
- <lang:groovy id="executionFlow.groovy1" script-source="src/slc/conf/BasicExecutionFlow.groovy">\r
- <lang:property name="firstSubTest">\r
- <bean parent="testRun" p:testDefinition-ref="testDef"\r
- p:testData-ref="testData-${testCase}" />\r
- </lang:property>\r
- </lang:groovy>\r
-\r
- <bean id="testGroovyImpl" parent="testGroovy">\r
- <property name="message" value="Hello World! Groovy" />\r
- </bean>\r
- <bean id="testBshImpl" parent="testBsh">\r
- <property name="message" value="Hello World! Beanshell" />\r
- </bean>\r
-\r
- <bean id="testDef" class="org.argeo.slc.core.test.BasicTestDefinition"\r
- scope="prototype" />\r
-\r
- <bean\r
- class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" />\r
-\r
- <bean id="testResult" parent="slcDefault.test.basicSimpleTestResult">\r
- </bean>\r
-\r
- <bean id="testRun" class="org.argeo.slc.core.test.SimpleTestRun"\r
- abstract="true">\r
- <property name="testResult" ref="testResult" />\r
- </bean>\r
-\r
- <lang:groovy id="testGroovyBean">\r
- <lang:inline-script><![CDATA[\r
- class Message {\r
- String message = 'test'\r
- \r
- public String getMessage(){\r
- return message;\r
- }\r
- }\r
- ]]></lang:inline-script>\r
- </lang:groovy>\r
-\r
- <lang:groovy id="testGroovy">\r
- <lang:inline-script><![CDATA[\r
- class GroovyMessenger extends org.argeo.slc.core.test.SimpleTestRun {\r
- \r
- String message = 'test'\r
- \r
- void execute(){\r
- println(message);\r
- }\r
- }\r
- ]]></lang:inline-script>\r
- </lang:groovy>\r
-\r
- <lang:bsh id="testBsh" script-interfaces="org.argeo.slc.test.ExecutableTestRun">\r
- <lang:inline-script><![CDATA[\r
- setStrictJava(true);\r
-\r
- class BshMessenger extends org.argeo.slc.core.test.SimpleTestRun {\r
-\r
- String message = "test";\r
-\r
- public void execute(){\r
- System.out.println(message);\r
- }\r
- \r
- public void setMessage(String message){\r
- this.message = message;\r
- }\r
- }\r
- ]]></lang:inline-script>\r
- </lang:bsh>\r
-\r
-</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" xmlns:p="http://www.springframework.org/schema/p"\r
- xmlns:aop="http://www.springframework.org/schema/aop"\r
- xsi:schemaLocation="\r
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd\r
- http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-2.5.xsd\r
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">\r
-\r
- <bean id="basic.001" parent="basic.executionFlowTemplate">\r
- <constructor-arg>\r
- <map>\r
- <entry key="testData1" value-ref="basic.001.testData" />\r
- <entry key="testData2">\r
- <bean class="org.argeo.slc.core.test.BasicTestData" scope="execution">\r
- <aop:scoped-proxy />\r
- <property name="expected" value="tata101" />\r
- <property name="reached" value="tata@{testKey}" />\r
- </bean>\r
- </entry>\r
- </map>\r
- </constructor-arg>\r
- </bean>\r
-\r
- <bean id="basic.001.testData" class="org.argeo.slc.core.test.BasicTestData"\r
- scope="execution">\r
- <aop:scoped-proxy />\r
- <property name="expected" value="tata100" />\r
- <property name="reached" value="tata@{testedComponentId}" />\r
- </bean>\r
-\r
- <bean id="basic.001.testData2" class="org.argeo.slc.core.test.context.DefaultContextTestData">\r
- </bean>\r
-\r
-</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" xmlns:p="http://www.springframework.org/schema/p"\r
-\r
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
-\r
- <bean id="basic.002" parent="basic.executionFlowTemplate">\r
- <constructor-arg>\r
- <map>\r
- <entry key="testData1">\r
- <bean class="org.argeo.slc.core.test.BasicTestData">\r
- <property name="expected" value="toto" />\r
- <property name="reached" value="toto" />\r
- </bean>\r
- </entry>\r
- <entry key="testData2">\r
- <bean class="org.argeo.slc.core.test.BasicTestData">\r
- <property name="expected" value="tata" />\r
- <property name="reached" value="toto" />\r
- </bean>\r
- </entry>\r
- </map>\r
- </constructor-arg>\r
- </bean>\r
-</beans>
\ No newline at end of file
+++ /dev/null
-<?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="src" output="target/test-classes" path="src/test/java"/>
- <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
- <classpathentry kind="output" path="target/classes"/>
-</classpath>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>argeo.slc.jemmytest</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.maven.ide.eclipse.maven2Builder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.jdt.core.javanature</nature>
- <nature>org.maven.ide.eclipse.maven2Nature</nature>
- </natures>
-</projectDescription>
+++ /dev/null
-#Sat Oct 18 13:51:44 CEST 2008
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.1
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.3
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=ignore
-org.eclipse.jdt.core.compiler.source=1.3
+++ /dev/null
-#Sat Sep 13 10:49:32 CEST 2008
-activeProfiles=
-eclipse.preferences.version=1
-filterResources=false
-includeModules=false
-resolveWorkspaceProjects=true
-resourceFilterGoals=process-resources resources\:testResources
-useMavenFolders=false
-version=1
+++ /dev/null
-#Tue Mar 31 12:06:27 CEST 2009
-eclipse.preferences.version=1
-org.springframework.ide.eclipse.beans.core.ignoreMissingNamespaceHandler=false
+++ /dev/null
-# specify the handlers to create in the root logger
-# (all loggers are children of the root logger)
-# the following creates two handlers
-handlers=java.util.logging.ConsoleHandler
-
-# set the default logging level for the root logger
-.level=INFO
-
-# set the default logging level for new ConsoleHandler instances
-java.util.logging.ConsoleHandler.level=INFO
-
-# set the default formatter for new ConsoleHandler instances
-java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
+++ /dev/null
-slc.osgi.start=org.springframework.osgi.extender,org.argeo.slc.detached,org.argeo.slc.sandbox.jemmytest
-slc.osgi.scanClasspath=true
\ No newline at end of file
+++ /dev/null
-Bundle-Name: Log4j Configuration
-Bundle-SymbolicName: org.argeo.slc.jemmytest.log4j
-Bundle-Version: 1.0.0
-Fragment-Host: com.springsource.org.apache.log4j
-
+++ /dev/null
-log4j.rootLogger=WARN, console
-
-## Levels
-log4j.logger.org.argeo=DEBUG
-log4j.logger.org.argeo.slc.execution.ExecutionParameterPostProcessor=TRACE
-log4j.logger.org.argeo.slc.execution.ExecutionContext=DEBUG
-log4j.logger.org.argeo.slc.execution.SimpleExecutionSpec=DEBUG
-
-log4j.logger.org.springframework=WARN
-
-log4j.logger.org.apache.activemq=WARN
-log4j.logger.org.apache.activemq.transport=WARN
-log4j.logger.org.apache.activemq.selector=WARN
-
-log4j.logger.org.apache.catalina=INFO
-log4j.logger.org.apache.coyote=INFO
-log4j.logger.org.apache.tomcat=INFO
-
-## Appenders
-# console is set to be a ConsoleAppender.
-log4j.appender.console=org.apache.log4j.ConsoleAppender
-
-# console uses PatternLayout.
-log4j.appender.console.layout=org.apache.log4j.PatternLayout
-log4j.appender.console.layout.ConversionPattern= %-5p %d{ISO8601} %m - %c%n
+++ /dev/null
-Bundle-Name: Mx Launch
-Bundle-SymbolicName: org.argeo.slc.jemmytest.mxlaunch
-Bundle-Version: 1.0.0
-Bundle-Name: Sparta Mx Client Launcher
-Import-Package: org.argeo.slc.detached,
- javax.swing,
- javax.swing.border,
- javax.swing.colorchooser,
- javax.swing.event,
- javax.swing.filechooser,
- javax.swing.plaf,
- javax.swing.plaf.basic,
- javax.swing.plaf.metal,
- javax.swing.plaf.multi,
- javax.swing.plaf.synth,
- javax.swing.table,
- javax.swing.text,
- javax.swing.text.html,
- javax.swing.text.html.parser,
- javax.swing.text.rtf,
- javax.swing.tree,
- javax.swing.undo
-Bundle-ClassPath: lib/mxjboot.jar
-
+++ /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="mxClientLauncher" class="org.argeo.slc.detached.AppLauncher"
- init-method="launch">
- <!-- <property name="mainClass" value="murex.rmi.loader.RmiLoader" />-->
- <property name="mainClass" value="org.argeo.slc.testui.SwingTestUi" />
- <property name="systemProperties">
- <props>
- <prop key="java.rmi.server.codebase">http://FS_URL/murex.download.guiclient.download
- </prop>
- </props>
- </property>
- <property name="arguments">
- <list>
- <value>/MXJ_CLASS_NAME:murex.gui.xml.XmlGuiClientBoot
- </value>
- <value>/MXJ_SITE_NAME:site1</value>
- </list>
- </property>
- </bean>
-
-</beans>
\ No newline at end of file
+++ /dev/null
-Bundle-SymbolicName: org.argeo.slc.sandbox.jemmytest.tests\r
-Fragment-Host: org.argeo.slc.sandbox.jemmytest\r
-Bundle-Version: 0.11.3.SNAPSHOT\r
-Bundle-Name: SLC Sandbox JemmyTest Tests\r
-Require-Bundle: org.argeo.slc.detached,\r
- org.argeo.slc.lib.detached,\r
- org.argeo.slc.support.osgi,\r
- org.argeo.slc.specs,\r
- org.argeo.slc.support.simple\r
-Import-Package: org.springframework.oxm,\r
- org.springframework.oxm.castor,\r
- org.springframework.xml.xsd,\r
- net.sf.cglib.core,\r
- net.sf.cglib.proxy,\r
- net.sf.cglib.reflect,\r
- org.aopalliance.aop,\r
- org.apache.commons.logging,\r
- org.springframework.aop,\r
- org.springframework.aop.framework,\r
- org.springframework.aop.scope,\r
- org.springframework.beans.factory.config,\r
- org.springframework.core.io\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" xmlns:p="http://www.springframework.org/schema/p"
- xmlns:aop="http://www.springframework.org/schema/aop"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
- http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-2.5.xsd
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
-
- <bean id="jemmyTest" parent="slcTemplate.simpleFlow">
- <property name="path" value="/autoui/testcases" />
- <property name="executables">
- <list>
- <bean parent="task.echo" scope="execution">
- <property name="message" value="Executing step" />
- <aop:scoped-proxy />
- </bean>
-
- <bean parent="detachedAdminTask">
- <property name="action" value="slcDefault.detached.admin.openSession" />
- <property name="properties">
- <props>
- <prop key="slc.detached.refreshedBundles">org.argeo.slc.sandbox.jemmytest
- </prop>
- </props>
- </property>
- </bean>
-
- <bean parent="stepTestRun">
- <property name="testDefinition">
- <bean parent="detachedTestDef">
- <property name="step" ref="step.MainFrameLabel" />
- </bean>
- </property>
- <property name="testData" ref="testData.mainFrameLabel1" />
- </bean>
-
- <bean parent="stepTestRun">
- <property name="testDefinition">
- <bean parent="detachedTestDef">
- <property name="step" ref="step.MainFrameLabel" />
- </bean>
- </property>
- <property name="testData" ref="testData.mainFrameLabel2" />
- </bean>
-
- <bean parent="stepTestRun">
- <property name="testDefinition">
- <bean parent="detachedTestDef">
- <property name="step" ref="step.TestDialogOpen" />
- </bean>
- </property>
- </bean>
-
- <bean parent="stepTestRun">
- <property name="testDefinition">
- <bean parent="detachedTestDef">
- <property name="step" ref="step.TestDialogLabel" />
- </bean>
- </property>
- <property name="testData" ref="testData.testDialogLabel" />
- </bean>
-
- <bean parent="detachedAdminTask">
- <property name="action" value="slcDefault.detached.admin.closeSession" />
- </bean>
- </list>
- </property>
- </bean>
-
- <bean id="stepTestRun" class="org.argeo.slc.core.test.SimpleTestRun">
- <property name="testResult" ref="testResult" />
- </bean>
-
- <bean id="testResult" parent="slcDefault.test.basicTreeTestResult">
- <property name="listeners">
- <list>
- <bean class="org.argeo.slc.core.test.tree.TreeTestResultLogger" />
- </list>
- </property>
- </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="\r
- 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/core/execution/spring.xml" />\r
- <import resource="classpath:/org/argeo/slc/core/test/spring/applicationContext.xml" />\r
-\r
-</beans>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<beans:beans xmlns="http://www.springframework.org/schema/osgi"\r
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"\r
- xsi:schemaLocation="http://www.springframework.org/schema/osgi \r
- http://www.springframework.org/schema/osgi/spring-osgi-1.1.xsd\r
- http://www.springframework.org/schema/beans \r
- http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
-\r
- <service interface="org.argeo.slc.execution.ExecutionModule">\r
- <beans:bean class="org.argeo.slc.osgi.OsgiExecutionModule">\r
- <beans:property name="executionContext" ref="executionContext" />\r
- </beans:bean>\r
- </service>\r
-\r
-\r
-</beans:beans>
\ No newline at end of file
+++ /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">
-
- <import resource="classpath:/org/argeo/slc/lib/detached/spring.xml" />
-
- <import resource="classpath:/META-INF/spring/slc-detached.xml" />
-
- <bean id="detachedTestDef" parent="slcTemplate.detached.testDefinition"
- scope="prototype">
- <property name="client" ref="driver.runtime" />
- </bean>
-
- <bean id="detachedAdminTask" class="org.argeo.slc.lib.detached.DetachedAdminTask"
- abstract="true">
- <property name="client" ref="driver.runtime" />
- </bean>
-
- <bean id="driver.runtime" class="org.argeo.slc.detached.drivers.FileDriver"
- init-method="cleanPreviousRuns">
- <property name="baseDir" value="${user.dir}/local/detached" />
- <property name="xmlConverter" ref="slcDefault.detached.xmlConverterCastor" />
- </bean>
-
- <bean id="testData.mainFrameLabel1" class="org.argeo.slc.lib.detached.DetachedTestData"
- scope="prototype">
- <property name="values">
- <map>
- <entry key="jemmyTest.label" value="Hello World" />
- </map>
- </property>
- <property name="expectedValues">
- <map>
- <entry key="jemmyTest.label" value="Pressed!!" />
- </map>
- </property>
- </bean>
-
- <bean id="testData.mainFrameLabel2" class="org.argeo.slc.lib.detached.DetachedTestData"
- scope="prototype">
- <property name="values">
- <map>
- <entry key="jemmyTest.label" value="Pressed!!" />
- </map>
- </property>
- <property name="expectedValues">
- <map>
- <entry key="jemmyTest.label" value="Hello World" />
- </map>
- </property>
- </bean>
-
- <bean id="testData.testDialogLabel" class="org.argeo.slc.lib.detached.DetachedTestData"
- scope="prototype">
- <property name="expectedValues">
- <map>
- <entry key="jemmyTest.labelDialog" value="Dialog open" />
- </map>
- </property>
- </bean>
-</beans>
\ No newline at end of file
+++ /dev/null
-<project 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/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.argeo.slc</groupId>
- <artifactId>argeo-slc</artifactId>
- <version>0.11.3-SNAPSHOT</version>
- <relativePath>../../org.argeo.slc</relativePath>
- </parent>
- <groupId>org.argeo.slc.sandbox</groupId>
- <artifactId>org.argeo.slc.sandbox.jemmytest</artifactId>
- <name>SLC Sandbox JemmyTest</name>
- <packaging>jar</packaging>
- <properties>
- <bundlesToStart>
- org.springframework.osgi.extender,
- org.argeo.slc.detached,
- org.argeo.slc.sandbox.jemmytest,
- org.argeo.slc.support.equinox
- </bundlesToStart>
- </properties>
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-jar-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-bundle-plugin</artifactId>
-
- <configuration>
- <instructions>
- <Export-Package>
- org.argeo.slc.jemmytest.*
- </Export-Package>
- <Import-Package>
- *,org.springframework.beans.factory.config
- </Import-Package>
- <Require-Bundle>
- org.argeo.slc.detached
- </Require-Bundle>
- <Spring-Context>*;create-asynchronously:=false</Spring-Context>
- </instructions>
-
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <source>1.4</source>
- <target>1.4</target>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-source-plugin</artifactId>
- <executions>
- <execution>
- <id>attach-sources</id>
- <phase>package</phase>
- <goals>
- <goal>jar</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration></configuration>
- </plugin>
- <plugin>
- <artifactId>maven-dependency-plugin</artifactId>
- <executions>
- <execution>
- <goals>
- <goal>unpack</goal>
- </goals>
- <phase>initialize</phase>
- <configuration>
- <outputDirectory>target/equinox</outputDirectory>
- <artifactItems>
- <artifactItem>
- <groupId>org.argeo.slc.runtime</groupId>
- <artifactId>org.argeo.slc.osgiboot</artifactId>
- <version>${version.slc}</version>
- <type>tar.gz</type>
- <classifier>osgiboot</classifier>
- </artifactItem>
- </artifactItems>
- </configuration>
- </execution>
- </executions>
-
- </plugin>
- <plugin>
- <artifactId>maven-antrun-plugin</artifactId>
- <configuration>
- <tasks>
- <path id="slc.osgi.locations.raw">
- <dirset dir="${user.dir}/modules">
- <include name="*" />
- <exclude name=".svn" />
- </dirset>
- <path refid="maven.compile.classpath" />
- </path>
- <pathconvert dirsep="/" property="slc.osgi.locations"
- refid="slc.osgi.locations.raw" />
-
- <property name="slc.osgi.start" value="${bundlesToStart}" />
- <ant antfile="target/equinox/osgiboot.xml" />
-
- </tasks>
- </configuration>
- </plugin>
-
- </plugins>
- </build>
- <profiles></profiles>
- <dependencies>
-
-
- <dependency>
- <groupId>org.argeo.slc.runtime</groupId>
- <artifactId>org.argeo.slc.lib.detached</artifactId>
- <version>${version.slc}</version>
- </dependency>
- <dependency>
- <groupId>org.argeo.slc.runtime</groupId>
- <artifactId>org.argeo.slc.launcher</artifactId>
- <version>${version.slc}</version>
- </dependency>
- <dependency>
- <groupId>org.argeo.dep.jemmy</groupId>
- <artifactId>org.argeo.dep.jemmy.nb61</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.argeo.slc</groupId>
- <artifactId>org.argeo.slc.detached.launcher</artifactId>
- <version>${version.slc}</version>
- </dependency>
-
- <dependency>
- <groupId>org.springframework.osgi</groupId>
- <artifactId>org.springframework.osgi.extender</artifactId>
- </dependency>
- <dependency>
- <groupId>org.argeo.slc.runtime</groupId>
- <artifactId>org.argeo.slc.support.equinox</artifactId>
- <version>${version.slc}</version>
- </dependency>
-
- <!--
- <dependency> <groupId>org.argeo.slc</groupId>
- <artifactId>org.argeo.slc.detached</artifactId>
- <version>${version.slc}</version> <exclusions> <exclusion>
- <groupId>org.apache.commons</groupId>
- <artifactId>com.springsource.org.apache.commons.logging</artifactId>
- </exclusion> </exclusions> </dependency> <dependency>
- <groupId>org.argeo.dep.jemmy</groupId>
- <artifactId>org.argeo.dep.jemmy.nb61</artifactId> </dependency>
-
- <dependency> <groupId>org.argeo.slc</groupId>
- <artifactId>org.argeo.slc.detached.launcher</artifactId>
- <version>${version.slc}</version> <exclusions> <exclusion>
- <groupId>org.apache.commons</groupId>
- <artifactId>com.springsource.org.apache.commons.logging</artifactId>
- </exclusion> </exclusions> </dependency> <dependency>
- <groupId>org.argeo.slc</groupId>
- <artifactId>org.argeo.slc.agent</artifactId>
- <version>${version.slc}</version> <exclusions> <exclusion>
- <groupId>org.apache.commons</groupId>
- <artifactId>com.springsource.org.apache.commons.logging</artifactId>
- </exclusion> </exclusions> </dependency>
- -->
- </dependencies>
-</project>
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.jemmytest.steps;
-
-import org.argeo.slc.detached.DetachedAnswer;
-import org.argeo.slc.detached.DetachedContext;
-import org.argeo.slc.detached.DetachedRequest;
-import org.argeo.slc.detached.ui.UiStep;
-import org.argeo.slc.jemmytest.uiparts.ComplexPanel;
-
-public class ComplexPanelValues extends UiStep {
- private ComplexPanel complexPanel;
-
- protected DetachedAnswer executeUiStep(DetachedContext context,
- DetachedRequest request) {
- complexPanel.computeTime();
- String time = complexPanel.getTime();
-
- DetachedAnswer answer = new DetachedAnswer(request,
- "ComplexPanelValues executed");
- answer.getProperties().setProperty("jemmyTest.complexPanel.time", time);
- return answer;
- }
-
- public void setComplexPanel(ComplexPanel complexPanel) {
- this.complexPanel = complexPanel;
- }
-
-}
+++ /dev/null
-package org.argeo.slc.jemmytest.steps;
-
-import org.argeo.slc.detached.DetachedAnswer;
-import org.argeo.slc.detached.DetachedContext;
-import org.argeo.slc.detached.DetachedRequest;
-import org.argeo.slc.detached.ui.UiStep;
-import org.argeo.slc.jemmytest.uiparts.MainFrame;
-
-public class MainFrameLabel extends UiStep {
- private MainFrame mainFrame;
-
- protected DetachedAnswer executeUiStep(DetachedContext context,
- DetachedRequest request) {
- mainFrame.init(context, request);
-
- mainFrame.changeLabel();
- String textAfterPush = mainFrame.getLabelText();
-
- DetachedAnswer answer = new DetachedAnswer(request,
- "DummyStep passed!! textAfterPush=" + textAfterPush);
- answer.getProperties().setProperty("jemmyTest.label", textAfterPush);
- return answer;
- }
-
- public void setMainFrame(MainFrame mainFrame) {
- this.mainFrame = mainFrame;
- }
-
-}
+++ /dev/null
-package org.argeo.slc.jemmytest.steps;
-
-import org.argeo.slc.detached.DetachedAnswer;
-import org.argeo.slc.detached.DetachedContext;
-import org.argeo.slc.detached.DetachedRequest;
-import org.argeo.slc.detached.ui.UiStep;
-import org.argeo.slc.jemmytest.uiparts.TestDialog;
-
-public class TestDialogLabel extends UiStep {
- private TestDialog testDialog;
-
- protected DetachedAnswer executeUiStep(DetachedContext context,
- DetachedRequest request) {
- String labelText = testDialog.getLabelText();
- testDialog.close();
-
- DetachedAnswer answer = new DetachedAnswer(request,
- "TestDialogLabel executed");
- answer.getProperties().setProperty("jemmyTest.labelDialog", labelText);
- return answer;
- }
-
- public void setTestDialog(TestDialog testDialog) {
- this.testDialog = testDialog;
- }
-
-}
+++ /dev/null
-package org.argeo.slc.jemmytest.steps;
-
-import org.argeo.slc.detached.DetachedAnswer;
-import org.argeo.slc.detached.DetachedContext;
-import org.argeo.slc.detached.DetachedRequest;
-import org.argeo.slc.detached.ui.UiStep;
-import org.argeo.slc.jemmytest.uiparts.MainFrame;
-import org.argeo.slc.jemmytest.uiparts.TestDialog;
-
-public class TestDialogOpen extends UiStep {
- private MainFrame mainFrame;
- private TestDialog testDialog;
-
- protected DetachedAnswer executeUiStep(DetachedContext context,
- DetachedRequest request) {
-
- mainFrame.openDialog();
- testDialog.init(context, request);
-
- DetachedAnswer answer = new DetachedAnswer(request,
- "TestDialogOpen executed");
- return answer;
- }
-
- public void setTestDialog(TestDialog testDialog) {
- this.testDialog = testDialog;
- }
-
- public void setMainFrame(MainFrame mainFrame) {
- this.mainFrame = mainFrame;
- }
-
-}
+++ /dev/null
-package org.argeo.slc.jemmytest.uiparts;
-
-import java.awt.Component;
-import java.awt.Container;
-
-import javax.swing.JTextField;
-
-import org.argeo.slc.detached.DetachedContext;
-import org.argeo.slc.detached.DetachedRequest;
-import org.argeo.slc.detached.ui.UiPart;
-import org.netbeans.jemmy.ComponentChooser;
-import org.netbeans.jemmy.operators.ContainerOperator;
-import org.netbeans.jemmy.operators.JButtonOperator;
-import org.netbeans.jemmy.operators.JTextFieldOperator;
-
-public class ComplexPanel extends UiPart {
- private JButtonOperator buttonTime = null;
- private JTextFieldOperator textTime = null;
-
- protected void initUi(DetachedContext context, DetachedRequest request) {
- ContainerOperator complexPanel = new ContainerOperator(
- (Container) context.getDynamicRef(MainFrame.PROP_CONTENT_PANE));
- buttonTime = new JButtonOperator(complexPanel, "Now!");
- textTime = new JTextFieldOperator(complexPanel, new ComponentChooser() {
-
- public boolean checkComponent(Component comp) {
- if (comp instanceof JTextField) {
- try {
- Long.parseLong(((JTextField) comp).getText());
- return true;
- } catch (Exception e) {
- return false;
- }
- } else
- return false;
- }
-
- public String getDescription() {
- return "Find based on text format: has to be a long";
- }
- });
- }
-
- public void computeTime() {
- buttonTime.push();
- }
-
- public String getTime() {
- return textTime.getText();
- }
-}
+++ /dev/null
-package org.argeo.slc.jemmytest.uiparts;
-
-import java.awt.Container;
-
-import org.argeo.slc.detached.DetachedContext;
-import org.argeo.slc.detached.DetachedRequest;
-import org.argeo.slc.detached.ui.UiPart;
-import org.netbeans.jemmy.operators.ContainerOperator;
-import org.netbeans.jemmy.operators.JButtonOperator;
-import org.netbeans.jemmy.operators.JFrameOperator;
-import org.netbeans.jemmy.operators.JLabelOperator;
-
-public class MainFrame extends UiPart {
- private JFrameOperator frame = null;
- private JButtonOperator button = null;
- private JButtonOperator buttonStart = null;
- private JLabelOperator label = null;
-
- private ComplexPanel complexPanel;
- public final static String PROP_CONTENT_PANE = "jemmytest.ui.contentPane";
-
- protected void initUi(DetachedContext context, DetachedRequest request) {
- frame = new JFrameOperator("Mx");
- button = new JButtonOperator(frame, "Button");
- buttonStart = new JButtonOperator(frame, "Start");
- String labelStr = request.getProperties()
- .getProperty("jemmyTest.label");
- label = new JLabelOperator(frame, labelStr);
-
- context.setDynamicRef(MainFrame.PROP_CONTENT_PANE, frame
- .getContentPane());
- complexPanel.init(context, request);
- }
-
- public void changeLabel() {
- button.push();
- }
-
- public void openDialog() {
- buttonStart.push();
- }
-
- public String getLabelText() {
- return label.getText();
- }
-
- public void setComplexPanel(ComplexPanel complexPanel) {
- this.complexPanel = complexPanel;
- }
-
-}
+++ /dev/null
-package org.argeo.slc.jemmytest.uiparts;
-
-import org.argeo.slc.detached.DetachedContext;
-import org.argeo.slc.detached.DetachedRequest;
-import org.argeo.slc.detached.ui.UiPart;
-import org.netbeans.jemmy.operators.JDialogOperator;
-import org.netbeans.jemmy.operators.JLabelOperator;
-
-public class TestDialog extends UiPart {
- private JDialogOperator dialog = null;
- private JLabelOperator label = null;
-
- protected void initUi(DetachedContext context, DetachedRequest request) {
- dialog = new JDialogOperator("TestDialog");
- label = new JLabelOperator(dialog, "Dialog Open");
- }
-
- public String getLabelText() {
- return label.getText();
- }
-
- public void close() {
- dialog.close();
- }
-
-}
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<beans:beans xmlns="http://www.springframework.org/schema/osgi"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"
- xsi:schemaLocation="http://www.springframework.org/schema/osgi
- http://www.springframework.org/schema/osgi/spring-osgi.xsd
- http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd">
-
-<!--
- <reference id="slcDetached.driver" interface="org.argeo.slc.detached.DetachedDriver" />
--->
- <reference id="executionServer.serviceref" interface="org.argeo.slc.detached.DetachedExecutionServer" />
-
-</beans:beans>
\ No newline at end of file
+++ /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">
-
- <import resource="classpath:/org/argeo/slc/detached/spring.xml" />
-
- <bean id="propertyConfigurer"
- class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="systemPropertiesModeName">
- <value>SYSTEM_PROPERTIES_MODE_OVERRIDE</value>
- </property>
- </bean>
-
- <!-- UI Parts -->
- <bean id="uipart.MainFrame" class="org.argeo.slc.jemmytest.uiparts.MainFrame">
- <property name="complexPanel" ref="uipart.ComplexPanel" />
- </bean>
-
- <bean id="uipart.TestDialog" class="org.argeo.slc.jemmytest.uiparts.TestDialog">
- </bean>
-
- <bean id="uipart.ComplexPanel" class="org.argeo.slc.jemmytest.uiparts.ComplexPanel">
- </bean>
-
- <!-- Steps -->
- <bean id="step.MainFrameLabel" class="org.argeo.slc.jemmytest.steps.MainFrameLabel">
- <property name="mainFrame" ref="uipart.MainFrame" />
- </bean>
-
- <bean id="step.TestDialogOpen" class="org.argeo.slc.jemmytest.steps.TestDialogOpen">
- <property name="mainFrame" ref="uipart.MainFrame" />
- <property name="testDialog" ref="uipart.TestDialog" />
- </bean>
-
- <bean id="step.TestDialogLabel" class="org.argeo.slc.jemmytest.steps.TestDialogLabel">
- <property name="testDialog" ref="uipart.TestDialog" />
- </bean>
-
- <bean id="step.ComplexPanelValues" class="org.argeo.slc.jemmytest.steps.ComplexPanelValues">
- <property name="complexPanel" ref="uipart.ComplexPanel" />
- </bean>
-
- <!-- Runtime -->
- <bean id="driver.detached" parent="slcTemplate.detached.fileDriver"
- init-method="start" destroy-method="stop">
- <property name="baseDir" value="${user.dir}/local/detached" />
- <property name="xmlConverter" ref="slcDefault.detached.xmlConverterCompat" />
- <property name="executionServer" ref="executionServer.serviceref" />
- </bean>
-
-</beans>
\ No newline at end of file
+++ /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">
-
- <import resource="classpath:/org/argeo/slc/lib/detached/spring.xml" />
-
- <import resource="classpath:/META-INF/spring/slc-detached.xml" />
-
- <bean id="detachedTestDef"
- parent="slcTemplate.detached.testDefinition"
- scope="prototype">
- <property name="client" ref="slcDetached.driver" />
- </bean>
-
- <bean id="slcDetached.driver"
- class="org.argeo.slc.detached.drivers.FileDriver" init-method="cleanPreviousRuns">
- <property name="baseDir" value="file:${slc.workDir}/detached" />
- <property name="xmlConverter"
- ref="slcDefault.detached.xmlConverterCastor" />
- </bean>
-
- <bean id="testData.mainFrameLabel1"
- class="org.argeo.slc.lib.detached.DetachedTestData"
- scope="prototype">
- <property name="values">
- <map>
- <entry key="jemmyTest.label" value="Hello World" />
- </map>
- </property>
- <property name="expectedValues">
- <map>
- <entry key="jemmyTest.label" value="Pressed!!" />
- </map>
- </property>
- </bean>
-
- <bean id="testData.mainFrameLabel2"
- class="org.argeo.slc.lib.detached.DetachedTestData"
- scope="prototype">
- <property name="values">
- <map>
- <entry key="jemmyTest.label" value="Pressed!!" />
- </map>
- </property>
- <property name="expectedValues">
- <map>
- <entry key="jemmyTest.label" value="Hello World" />
- </map>
- </property>
- </bean>
-
- <bean id="testData.testDialogLabel"
- class="org.argeo.slc.lib.detached.DetachedTestData"
- scope="prototype">
- <property name="expectedValues">
- <map>
- <entry key="jemmyTest.labelDialog" value="Dialog open" />
- </map>
- </property>
- </bean>
-</beans>
\ No newline at end of file
+++ /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">
-
-</beans>
\ No newline at end of file
+++ /dev/null
-\r
-## Loggigng\r
-# Slc\r
-log4j.logger.org.argeo.slc=DEBUG\r
-# Spring\r
-log4j.logger.org.springframework=WARN\r
+++ /dev/null
-<project default="steps">
-
- <target name="steps">
- <slc.detached action="slcDefault.detached.admin.openSession">
- <properties>
- <entry key="slc.detached.refreshedBundles"
- value="org.argeo.slc.sandbox.jemmytest" />
- </properties>
- </slc.detached>
-
- <!-- Main frame label -->
- <slc.test>
- <testDefinition bean="detachedTestDef">
- <override name="step" bean="step.MainFrameLabel" />
- </testDefinition>
- <testData bean="testData.mainFrameLabel1" />
- </slc.test>
- <slc.test>
- <testDefinition bean="detachedTestDef">
- <override name="step" bean="step.MainFrameLabel" />
- </testDefinition>
- <testData bean="testData.mainFrameLabel2" />
- </slc.test>
-
- <!-- Test dialog -->
- <slc.test>
- <testDefinition bean="detachedTestDef">
- <override name="step" bean="step.TestDialogOpen" />
- </testDefinition>
- </slc.test>
-
- <slc.test>
- <testDefinition bean="detachedTestDef">
- <override name="step" bean="step.TestDialogLabel" />
- </testDefinition>
- <testData bean="testData.testDialogLabel" />
- </slc.test>
-
- <!-- Complex Panel -->
- <slc.test>
- <testDefinition bean="detachedTestDef">
- <override name="step" bean="step.ComplexPanelValues" />
- </testDefinition>
- </slc.test>
-
- <slc.detached action="slcDefault.detached.admin.closeSession" />
-
- </target>
-
- <property name="devBase" location="/home/mbaudier/dev/src" />
- <property name="localRepo" location="/mnt/wind/dev/mavenLocal" />
- <property name="argeo.slc.mavenBase" value="file:${localRepo}" />
-
- <property name="execDir"
- location="/home/mbaudier/dev/src/slc/sandbox/argeo.slc.jemmytest/" />
-
- <target name="startDetached">
- <echo message="Starting detached in ${execDir}..." />
-
- <java dir="${execDir}" classname="org.argeo.slc.detached.launcher.Main">
- <classpath>
- <!-- Dev -->
- <pathelement location="${devBase}/slc/org.argeo.slc.detached/target/classes" />
- <pathelement location="${devBase}/slc/org.argeo.slc.detached.launcher/target/classes" />
- <pathelement location="${devBase}/slc/sandbox/argeo.slc.testui/bin" />
- <!-- Maven -->
- <pathelement location="${localRepo}/org/springframework/spring-context/2.0.8/spring-context-2.0.8.jar" />
- <pathelement location="${localRepo}/aopalliance/aopalliance/1.0/aopalliance-1.0.jar" />
- <pathelement location="${localRepo}/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar" />
- <pathelement location="${localRepo}/org/springframework/spring-beans/2.0.8/spring-beans-2.0.8.jar" />
- <pathelement location="${localRepo}/springframework/spring-core/2.0.8/spring-core-2.0.8.jar" />
- <pathelement location="${localRepo}/log4j/log4j/1.2.15/log4j-1.2.15.jar" />
- <pathelement location="${localRepo}/org/apache/felix/org.apache.felix.main/1.2.1/org.apache.felix.main-1.2.1.jar" />
- <pathelement location="${localRepo}/xerces/xercesImpl/2.8.1/xercesImpl-2.8.1.jar" />
- <pathelement location="${localRepo}/xml-apis/xml-apis/1.3.03/xml-apis-1.3.03.jar" />
- </classpath>
- <sysproperty key="argeo.slc.mavenBase"
- value="${argeo.slc.mavenBase}" />
- <sysproperty key="felix.auto.start.1"
- value="reference:file:${devBase}/slc/sandbox/argeo.slc.jemmytest/bin/ reference:file:${devBase}/slc/org.argeo.slc.detached/bin/ ${argeo.slc.mavenBase}/org/apache/felix/org.apache.felix.shell/1.0.2/org.apache.felix.shell-1.0.2.jar ${argeo.slc.mavenBase}/org/apache/felix/org.apache.felix.shell.tui/1.0.2/org.apache.felix.shell.tui-1.0.2.jar ${argeo.slc.mavenBase}/org/argeo/dep/jemmy/org.argeo.dep.jemmy.nb61/0.2.2/org.argeo.dep.jemmy.nb61-0.2.2.jar" />
-
- </java>
-
- <echo message="Started detached..." />
-
- </target>
-</project>
-<!--
-/home/mbaudier/dev/src/slc/org.argeo.slc.detached.launcher/target/classes
-/home/mbaudier/dev/src/slc/org.argeo.slc.detached/target/classes
-/mnt/wind/dev/mavenLocal/org/springframework/spring-context/2.0.8/spring-context-2.0.8.jar
-/mnt/wind/dev/mavenLocal/aopalliance/aopalliance/1.0/aopalliance-1.0.jar
-/mnt/wind/dev/mavenLocal/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar
-/mnt/wind/dev/mavenLocal/org/springframework/spring-beans/2.0.8/spring-beans-2.0.8.jar
-/mnt/wind/dev/mavenLocal/org/springframework/spring-core/2.0.8/spring-core-2.0.8.jar
-/mnt/wind/dev/mavenLocal/log4j/log4j/1.2.15/log4j-1.2.15.jar
-/mnt/wind/dev/mavenLocal/org/apache/felix/org.apache.felix.main/1.2.1/org.apache.felix.main-1.2.1.jar
-/mnt/wind/dev/mavenLocal/org/apache/felix/org.apache.felix.shell/1.0.2/org.apache.felix.shell-1.0.2.jar
-/mnt/wind/dev/mavenLocal/org/apache/felix/org.apache.felix.shell.tui/1.0.2/org.apache.felix.shell.tui-1.0.2.jar
-/mnt/wind/dev/mavenLocal/org/apache/felix/org.apache.felix.bundlerepository/1.2.0/org.apache.felix.bundlerepository-1.2.0.jar
-/mnt/wind/dev/mavenLocal/xerces/xercesImpl/2.8.1/xercesImpl-2.8.1.jar
-/mnt/wind/dev/mavenLocal/xml-apis/xml-apis/1.3.03/xml-apis-1.3.03.jar
-/home/mbaudier/dev/src/slc/sandbox/argeo.slc.testui/bin
-
-felix.auto.start.1= \
- reference:file:${user.dir}/../sandbox/argeo.slc.jemmytest/bin/ \
- reference:file:${user.dir}/../org.argeo.slc.detached/bin/ \
- ${argeo.slc.mavenBase}/org/apache/felix/org.apache.felix.shell/1.0.2/org.apache.felix.shell-1.0.2.jar \
- ${argeo.slc.mavenBase}/org/apache/felix/org.apache.felix.shell.tui/1.0.2/org.apache.felix.shell.tui-1.0.2.jar \
- ${argeo.slc.mavenBase}/org/argeo/dep/jemmy/org.argeo.dep.jemmy.nb61/0.2.2/org.argeo.dep.jemmy.nb61-0.2.2.jar
-
--->
+++ /dev/null
-package org.argeo.slc.jemmytest;
-
-import junit.framework.TestCase;
-
-public class DetachedTest extends TestCase {
- public void testSendRequest() throws Exception {
-/* FileDriver client = new FileDriver();
- File baseDir = new File("local/detached");
- baseDir.mkdirs();
- client.setBaseDir(baseDir);
-
- DetachedRequest request = new DetachedRequest();
- request.setUuid(UUID.randomUUID().toString());
- request.setRef("jemmyTest");
-
- client.sendRequest(request);*/
- }
-}
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src/main/java"/>
- <classpathentry kind="src" path="src/main/resources"/>
- <classpathentry kind="src" path="src/test/java"/>
- <classpathentry kind="src" path="src/test/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>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<projectDescription>\r
- <name>argeo.slc.springtest</name>\r
- <comment></comment>\r
- <projects>\r
- </projects>\r
- <buildSpec>\r
- <buildCommand>\r
- <name>org.eclipse.jdt.core.javabuilder</name>\r
- <arguments>\r
- </arguments>\r
- </buildCommand>\r
- <buildCommand>\r
- <name>org.maven.ide.eclipse.maven2Builder</name>\r
- <arguments>\r
- </arguments>\r
- </buildCommand>\r
- </buildSpec>\r
- <natures>\r
- <nature>org.eclipse.jdt.core.javanature</nature>\r
- <nature>org.maven.ide.eclipse.maven2Nature</nature>\r
- </natures>\r
-</projectDescription>\r
+++ /dev/null
-#Tue Apr 22 13:16:43 CEST 2008\r
-eclipse.preferences.version=1\r
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled\r
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5\r
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve\r
-org.eclipse.jdt.core.compiler.compliance=1.5\r
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate\r
-org.eclipse.jdt.core.compiler.debug.localVariable=generate\r
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate\r
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error\r
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error\r
-org.eclipse.jdt.core.compiler.source=1.5\r
+++ /dev/null
-#Tue Apr 22 13:19:21 CEST 2008\r
-activeProfiles=\r
-eclipse.preferences.version=1\r
-filterResources=false\r
-includeModules=false\r
-resolveWorkspaceProjects=true\r
-resourceFilterGoals=process-resources resources\:testResources\r
-useMavenFolders=false\r
-version=1\r
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?><project>
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.argeo.slc.test</groupId>
- <artifactId>argeo-slc-springtest</artifactId>
- <name>Test Spring</name>
- <version>0.0.1-SNAPSHOT</version>
- <description>Dummy project to test Spring</description>\r
- <dependencies>\r
- <dependency>\r
- <groupId>log4j</groupId>\r
- <artifactId>log4j</artifactId>\r
- <version>1.2.14</version>\r
- </dependency>\r
- <dependency>\r
- <groupId>commons-logging</groupId>\r
- <artifactId>commons-logging</artifactId>\r
- <version>1.1.1</version>\r
- </dependency>\r
- <dependency>\r
- <groupId>org.apache.commons</groupId>\r
- <artifactId>commons-io</artifactId>\r
- <version>1.3.2</version>\r
- </dependency>\r
- <dependency>\r
- <groupId>org.springframework</groupId>\r
- <artifactId>spring-context</artifactId>\r
- <version>2.5.2</version>\r
- </dependency>\r
- <dependency>\r
- <groupId>junit</groupId>\r
- <artifactId>junit</artifactId>\r
- <version>3.8.2</version>\r
- </dependency>\r
- </dependencies>\r
- <repositories>\r
- <repository>\r
- <id>central</id>\r
- <url>http://www.argeo.org/maven/proxy</url>\r
- <releases>\r
- <enabled>true</enabled>\r
- <updatePolicy>daily</updatePolicy>\r
- <checksumPolicy>warn</checksumPolicy>\r
- </releases>\r
- </repository>\r
- </repositories>
-</project>
\ No newline at end of file
+++ /dev/null
-package argeo.slc.springtest;\r
-\r
-public class MyBean {\r
- private String name;\r
- private Long value;\r
-\r
- public String getName() {\r
- return name;\r
- }\r
-\r
- public void setName(String name) {\r
- this.name = name;\r
- }\r
-\r
- public Long getValue() {\r
- return value;\r
- }\r
-\r
- public void setValue(Long value) {\r
- this.value = value;\r
- }\r
-\r
-}\r
+++ /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.0.xsd">\r
-\r
- <bean name="testBean" class="argeo.slc.springtest.MyBean">\r
- <property name="name" value="Gwen"/>\r
- <property name="value" value="10"/>\r
- </bean>\r
-</beans>
\ No newline at end of file
+++ /dev/null
-package argeo.slc.springtest;\r
-\r
-import org.springframework.context.ApplicationContext;\r
-import org.springframework.context.support.ClassPathXmlApplicationContext;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-\r
-import junit.framework.TestCase;\r
-\r
-public class MyBeanTest extends TestCase {\r
- private Log log = LogFactory.getLog(getClass());\r
- \r
- public void testMyBeanSimple() {\r
- ApplicationContext context = new ClassPathXmlApplicationContext(\r
- "argeo/slc/springtest/applicationContext.xml");\r
- \r
- MyBean myBean = (MyBean)context.getBean("testBean");\r
- \r
- log.info("Retrieved bean from spring");\r
- log.debug("Debug some stuff");\r
- \r
- assertEquals("Gwen", myBean.getName());\r
- assertEquals(new Long(10), myBean.getValue());\r
- }\r
-\r
-}\r
+++ /dev/null
-# Set root logger level to DEBUG and its only appender to A1.\r
-log4j.rootLogger=INFO, console\r
-\r
-## Levels\r
-# Slc\r
-log4j.logger.org.argeo.slc=DEBUG\r
-log4j.logger.argeo.slc=DEBUG\r
-# Spring\r
-log4j.logger.org.springframework=INFO\r
-# Hibernate\r
-log4j.logger.org.hibernate=DEBUG\r
-#log4j.logger.org.hibernate.SQL=TRACE\r
-#log4j.logger.org.hibernate.tool.hbm2ddl=TRACE\r
-#log4j.logger.org.hibernate.type=TRACE\r
-\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"?>\r
-<classpath>\r
- <classpathentry kind="src" output="target/classes" path="src/main/java"/>\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.4"/>\r
- <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>\r
- <classpathentry kind="output" path="target/classes"/>\r
-</classpath>\r
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>argeo.slc.testui</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.maven.ide.eclipse.maven2Builder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.jdt.core.javanature</nature>
- <nature>org.maven.ide.eclipse.maven2Nature</nature>
- </natures>
-</projectDescription>
+++ /dev/null
-#Sun Oct 12 08:45:27 CEST 2008
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.4
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
-org.eclipse.jdt.core.compiler.source=1.4
+++ /dev/null
-#Sun Sep 21 14:46:02 CEST 2008
-activeProfiles=
-eclipse.preferences.version=1
-filterResources=false
-includeModules=false
-resolveWorkspaceProjects=true
-resourceFilterGoals=process-resources resources\:testResources
-useMavenFolders=false
-version=1
+++ /dev/null
-<project 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/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.argeo.slc.sandbox</groupId>
- <artifactId>org.argeo.slc.sandbox.testui</artifactId>
- <name>SLC Test UI</name>
- <version>0.1.1-SNAPSHOT</version>
- <packaging>jar</packaging>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <source>1.4</source>
- <target>1.4</target>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-source-plugin</artifactId>
- <executions>
- <execution>
- <id>attach-sources</id>
- <phase>package</phase>
- <goals>
- <goal>jar</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
- <dependencies>
-
- <dependency>
- <groupId>org.argeo.dep.jemmy</groupId>
- <artifactId>org.argeo.dep.jemmy.nb61</artifactId>
- <version>0.2.2</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.2</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
- <distributionManagement>
- <repository>
- <uniqueVersion>false</uniqueVersion>
- <id>argeo-restricted</id>
- <name>Argeo FOSS Repository</name>
- <url>file:///var/argeo/maven2/argeo</url>
- </repository>
- <snapshotRepository>
- <uniqueVersion>true</uniqueVersion>
- <id>argeo-snapshots-restricted</id>
- <name>Argeo FOSS Snapshots Repository</name>
- <url>file:///var/argeo/maven2/argeo-snapshots</url>
- </snapshotRepository>
- </distributionManagement>
-</project>
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.testui;
-
-import java.awt.GridLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-
-import javax.swing.JButton;
-import javax.swing.JDialog;
-import javax.swing.JFrame;
-import javax.swing.JLabel;
-import javax.swing.JMenu;
-import javax.swing.JMenuBar;
-import javax.swing.JMenuItem;
-import javax.swing.JPanel;
-import javax.swing.JTextField;
-
-public class SwingTestUi {
- private static void createAndShowGUI(boolean exitOnClose) {
- // Create and set up the window.
- final JFrame frame = new JFrame("HelloWorldSwing");
- if (exitOnClose)
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
-
- frame.getContentPane().setLayout(new GridLayout(4, 1));
- frame.setTitle("Mx");
-
- // "Hello World" label.
- final JLabel label = new JLabel("Hello World");
- frame.getContentPane().add(label);
-
- {
- // Add menu
- JMenuBar menubar = new JMenuBar();
- JMenu menuSession = new JMenu("Session");
- menubar.add(menuSession);
- JMenuItem start = new JMenuItem("Start");
- menuSession.add(start);
- start.addActionListener(new ActionListener() {
-
- public void actionPerformed(ActionEvent e) {
- JDialog dialog = new JDialog(frame, "New Session");
- JLabel label = new JLabel("Mx Session");
- dialog.getContentPane().add(label);
- dialog.pack();
- dialog.setVisible(true);
- }
- });
- frame.setJMenuBar(menubar);
- }
-
- // Change label button
- {
- final JButton button = new JButton("Button");
- frame.getContentPane().add(button);
- button.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- if (label.getText().equals("Hello World"))
- label.setText("Pressed!!");
- else
- label.setText("Hello World");
- }
- });
- }
-
- // Start dialog button
- {
- final JButton buttonStart = new JButton("Start");
- frame.getContentPane().add(buttonStart);
- buttonStart.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- JDialog dialog = new JDialog(frame, "TestDialog");
- JLabel label = new JLabel("Dialog open");
- dialog.getContentPane().add(label);
- dialog.pack();
- dialog.setVisible(true);
- }
- });
- }
-
- // Complex Panel
- {
- JPanel complexPanel = new JPanel();
- complexPanel.setLayout(new GridLayout(1, 2));
- final JTextField textTime = new JTextField(Long.toString(System
- .currentTimeMillis()));
- complexPanel.add(textTime);
- JButton buttonTime = new JButton("Now!");
- buttonTime.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- textTime.setText(Long.toString(System.currentTimeMillis()));
- }
- });
- complexPanel.add(buttonTime);
- frame.getContentPane().add(complexPanel);
- }
-
- // Display the window.
- frame.pack();
- frame.setVisible(true);
- }
-
- public static void main(String[] args) {
- boolean noExitOnClose = false;
- for (int i = 0; i < args.length; i++) {
- if (args[i].equals("noExitOnClose")) {
- noExitOnClose = true;
- }
- }
-
- final boolean exitOnClose = !noExitOnClose;
- javax.swing.SwingUtilities.invokeLater(new Runnable() {
- public void run() {
- createAndShowGUI(exitOnClose);
- }
- });
- }
-
-}
+++ /dev/null
-package org.argeo.slc.jemmytest;
-
-import junit.framework.TestCase;
-
-import org.argeo.slc.testui.SwingTestUi;
-import org.netbeans.jemmy.ClassReference;
-import org.netbeans.jemmy.operators.JButtonOperator;
-import org.netbeans.jemmy.operators.JFrameOperator;
-import org.netbeans.jemmy.operators.JLabelOperator;
-
-public class SwingTestJemmy extends TestCase {
-// private final static Log log = LogFactory.getLog(SwingTestJemmy.class);
-
- public void testSimple() throws Exception {
- // Start application
- ClassReference classReference = new ClassReference(SwingTestUi.class
- .getName());
- String[] args = { "noExitOnClose" };
- classReference.startApplication(args);
-
- // Find components
- JFrameOperator jFrameOperator = new JFrameOperator("HelloWorldSwing");
- JButtonOperator jButtonOperator = new JButtonOperator(jFrameOperator,
- "Button");
- JLabelOperator jLabelOperator = new JLabelOperator(jFrameOperator,
- "Hello World");
-
- // Execute actions
- jButtonOperator.push();
-
- // Performs checks
- String textAfterPush = jLabelOperator.getText();
- assertEquals("Pressed!!", textAfterPush);
-
- // Clean up
- jFrameOperator.close();
- }
-
-}
+++ /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.slc=DEBUG\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"?>
-<classpath>
- <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>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<projectDescription>\r
- <name>org.argeo.slc.ria</name>\r
- <comment></comment>\r
- <projects>\r
- </projects>\r
- <buildSpec>\r
- </buildSpec>\r
- <natures>\r
- </natures>\r
-</projectDescription>\r
+++ /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>ria-jcr</id>
- <includeBaseDirectory>false</includeBaseDirectory>
- <formats>
- <format>zip</format>
- </formats>
- <fileSets>
- <fileSet>
- <directory>src/argeo-ria-lib/jcr</directory>
- <outputDirectory></outputDirectory>
- <includes>
- <include>*/**</include>
- </includes>
- </fileSet>
- </fileSets>
-</assembly>
\ 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>ria-slc-web</id>
- <includeBaseDirectory>false</includeBaseDirectory>
- <formats>
- <format>zip</format>
- </formats>
- <fileSets>
- <fileSet>
- <directory>src/argeo-ria-lib/slc-web</directory>
- <outputDirectory></outputDirectory>
- <includes>
- <include>*/**</include>
- </includes>
- </fileSet>
- </fileSets>
-</assembly>
\ 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>ria-slc</id>
- <includeBaseDirectory>false</includeBaseDirectory>
- <formats>
- <format>zip</format>
- </formats>
- <fileSets>
- <fileSet>
- <directory>src/argeo-ria-lib/slc</directory>
- <outputDirectory></outputDirectory>
- <includes>
- <include>*/**</include>
- </includes>
- </fileSet>
- </fileSets>
-</assembly>
\ No newline at end of file
+++ /dev/null
-{\r
- "name" : "ria",\r
-\r
- "include" :\r
- [\r
- {\r
- "path" : "${QOOXDOO_PATH}/component/apiviewer/api.json",\r
- "as" : "apiconf"\r
- },\r
- {\r
- "path" : "${QOOXDOO_PATH}/component/testrunner/testrunner.json",\r
- "as" : "testrunner"\r
- } \r
- ],\r
- \r
- "let" :\r
- {\r
- "APPLICATION" : "org.argeo.ria",\r
- "QOOXDOO_PATH" : "src/qooxdoo-sdk",\r
- "QXTHEME" : "org.argeo.ria.theme.RiaTheme",\r
- "API_EXCLUDE" : ["qx.legacy.*"],\r
- "LOCALES" : [ "en" ],\r
- "ROOT" : "src/argeo-ria-src",\r
- "BUILD_PATH" : "target/classes/argeo-ria",\r
- "RIA_LIB_PATH" : "src/argeo-ria-lib",\r
- "RIA_LIB_URI" : "../argeo-ria-lib",\r
- "CACHE" : "cache" ,\r
- "CUSTOM_PACKAGE" : "org.argeo.slc.web"\r
- },\r
-\r
- "jobs" : \r
- {\r
- "common" :\r
- {\r
- "library" :\r
- [\r
- {\r
- "manifest" : "${QOOXDOO_PATH}/framework/Manifest.json",\r
- "uri" : "../qooxdoo-sdk/framework"\r
- },\r
- {\r
- "manifest" : "${RIA_LIB_PATH}/slc/Manifest.json",\r
- "uri" : "${RIA_LIB_URI}/slc" \r
- },\r
- {\r
- "manifest" : "${RIA_LIB_PATH}/slc-web/Manifest.json",\r
- "uri" : "${RIA_LIB_URI}/slc-web" \r
- },\r
- {\r
- "manifest" : "${RIA_LIB_PATH}/jcr/Manifest.json",\r
- "uri" : "${RIA_LIB_URI}/jcr" \r
- },\r
- {\r
- "manifest" : "${ROOT}/Manifest.json",\r
- "uri" : "."\r
- }\r
- ],\r
-\r
- "include" :\r
- [\r
- "${APPLICATION}.Application",\r
- "${CUSTOM_PACKAGE}.*",\r
- "${QXTHEME}"\r
- ],\r
-\r
- "cache" :\r
- {\r
- "compile" : "${CACHE}"\r
- },\r
-\r
- "settings" :\r
- {\r
- "qx.version" : "${QXVERSION}",\r
- "qx.theme" : "${QXTHEME}",\r
- "qx.application" : "${APPLICATION}.Application",\r
- "ria.branding.splashScreen" : "org.argeo.security.ria/ArgeoLogo.png",\r
- "ria.branding.applicationTitle" : "Slc RIA",\r
- "ria.auth.enableAuth" : "false",\r
- "ria.auth.credentialsURI" : "/org.argeo.security.webapp/getCredentials.ria",\r
- "ria.auth.loginURI" : "/org.argeo.security.webapp/login.ria",\r
- "ria.auth.logoutURI" : "/org.argeo.security.webapp/logout.ria",\r
- "ria.StartupPerspective":"org.argeo.slc.web.LauncherPerspective" \r
- }\r
- },\r
-\r
- // -- source jobs --------------------------------------------------\r
-\r
- "source-script" :\r
- {\r
- "extend" : ["common"],\r
-\r
- "compile-options" :\r
- {\r
- "paths" : \r
- {\r
- "file" : "${ROOT}/script/${APPLICATION}.js",\r
- "root" : "${ROOT}",\r
- "resource" : "resource",\r
- "gzip" : false\r
- },\r
- "code" : \r
- {\r
- "locales" : "${LOCALES}"\r
- }\r
- },\r
- \r
- "compile" : { "type" : "source" }\r
- },\r
-\r
-\r
- "slc-source" :\r
- {\r
- "run" :\r
- [\r
- "source-script"\r
- ]\r
- },\r
-\r
- // -- build jobs --------------------------------------------------\r
-\r
- "build-script" :\r
- {\r
- "extend" : ["common"],\r
-\r
- "variants" :\r
- {\r
- "qx.debug" : ["off"]\r
- },\r
-\r
- "compile-options" :\r
- {\r
- "paths" :\r
- {\r
- "file" : "${BUILD_PATH}/script/${APPLICATION}.js",\r
- "gzip" : false\r
- },\r
- "uris" :\r
- {\r
- "script" : "script",\r
- "resource" : "resource"\r
- },\r
- "code" :\r
- {\r
- "format" : true,\r
- "locales" : "${LOCALES}",\r
- "optimize" : ["variables", "basecalls", "privates", "strings"]\r
- }\r
- },\r
- "compile" : { "type" : "build" }\r
- },\r
-\r
-\r
- "build-resources":\r
- {\r
- "extend" : ["common"],\r
-\r
- "copy-resources" :\r
- {\r
- "target" : "${BUILD_PATH}",\r
- "resource-filter" : true\r
- }\r
- },\r
-\r
- "my-build-files" :\r
- {\r
- "extend" : ["common"],\r
-\r
- "copy-files" :\r
- {\r
- "files" :\r
- [\r
- "index.html"\r
- ],\r
- "source" : "${ROOT}",\r
- "target" : "${BUILD_PATH}"\r
- }\r
- },\r
- \r
- "slc-build" :\r
- {\r
- "run" :\r
- [\r
- "build-script",\r
- "my-build-files",\r
- "build-resources"\r
- ]\r
- },\r
- \r
- "slc-api" :\r
- {\r
- "extend" : ["apiconf::build"],\r
-\r
- "let" :\r
- {\r
- "APIVIEWER_ROOT" : "${QOOXDOO_PATH}/component/apiviewer",\r
- "BUILD_PATH" : "./target/site/argeo-ria-api/",\r
- "API_INCLUDE" : ["${APPLICATION}.*", "${CUSTOM_PACKAGE}.*"]\r
- },\r
-\r
- "library" :\r
- [\r
- {\r
- "manifest" : "${ROOT}/Manifest.json",\r
- "uri" : ".."\r
- },\r
- {\r
- "manifest" : "${RIA_LIB_PATH}/slc-web/Manifest.json",\r
- "uri" : "${RIA_LIB_URI}/slc-web"\r
- },\r
- {\r
- "manifest" : "${RIA_LIB_PATH}/jcr/Manifest.json",\r
- "uri" : "${RIA_LIB_URI}/jcr"\r
- },\r
- {\r
- "manifest" : "${RIA_LIB_PATH}/slc/Manifest.json",\r
- "uri" : "${RIA_LIB_URI}/slc"\r
- } \r
- ]\r
- },\r
- \r
- "slc-test" :\r
- {\r
- "extend" : ["testrunner::build"],\r
-\r
- "let" :\r
- {\r
- "TESTRUNNER_ROOT" : "${QOOXDOO_PATH}/component/testrunner",\r
- "TEST_INCLUDE" : "${APPLICATION}.test.*",\r
- "BUILD_PATH" : "./target/site/argeo-ria-test/"\r
- },\r
-\r
- "library" :\r
- [\r
- {\r
- "manifest" : "${ROOT}/Manifest.json",\r
- "uri" : ".."\r
- }\r
- ]\r
- }\r
- \r
- \r
- }\r
-}\r
+++ /dev/null
-{\r
- "name" : "ria",\r
-\r
- "include" :\r
- [\r
- {\r
- "path" : "src/main/webapp/qooxdoo-0.8-sdk/component/apiviewer/api.json",\r
- "as" : "apiconf"\r
- },\r
- {\r
- "path" : "src/main/webapp/qooxdoo-0.8-sdk/component/testrunner/testrunner.json",\r
- "as" : "testrunner"\r
- } \r
- ],\r
-\r
- "let" :\r
- {\r
- "APPLICATION" : "org.argeo.ria",\r
- "QOOXDOO_PATH" : "src/main/webapp/qooxdoo-0.8-sdk/framework",\r
- "QOOXDOO_URI" : "../qooxdoo-0.8-sdk/framework",\r
- "QXTHEME" : "qx.theme.Modern",\r
- "QXICONTHEME" : ["Tango"],\r
- "API_EXCLUDE" : ["qx.legacy.*"],\r
- "LOCALES" : [ "en" ],\r
- "ROOT" : "src/main/webapp/argeo-ria-src",\r
- "BUILD_PATH" : "src/main/webapp/argeo-ria",\r
- "RIA_LIB_PATH" : "src/main/webapp/argeo-ria-lib",\r
- "RIA_LIB_URI" : "../argeo-ria-lib",\r
- "CACHE" : "cache" ,\r
- "CUSTOM_PERSPECTIVE" : "org.argeo.ria.sample.Perspective"\r
- },\r
-\r
- "jobs" : \r
- {\r
- "common" :\r
- {\r
- "library" :\r
- [\r
- {\r
- "manifest" : "${QOOXDOO_PATH}/Manifest.json",\r
- "uri" : "${QOOXDOO_URI}"\r
- },\r
- {\r
- "manifest" : "${RIA_LIB_PATH}/sample/Manifest.json",\r
- "uri" : "${RIA_LIB_URI}/sample"\r
- },\r
- {\r
- "manifest" : "${ROOT}/Manifest.json",\r
- "uri" : ".."\r
- }\r
- ],\r
-\r
- "include" :\r
- [\r
- "${APPLICATION}.Application",\r
- "${CUSTOM_PERSPECTIVE}",\r
- "${QXTHEME}"\r
- ],\r
-\r
- "cache" :\r
- {\r
- "compile" : "${CACHE}"\r
- },\r
-\r
- "settings" :\r
- {\r
- "qx.version" : "${QXVERSION}",\r
- "qx.theme" : "${QXTHEME}",\r
- "qx.application" : "${APPLICATION}.Application",\r
- "ria.Perspective": "${CUSTOM_PERSPECTIVE}"\r
- }\r
- },\r
-\r
- // -- source jobs --------------------------------------------------\r
-\r
- "source-script" :\r
- {\r
- "extend" : ["common"],\r
-\r
- "compile-source" :\r
- {\r
- "file" : "${ROOT}/script/${APPLICATION}.js",\r
- "locales" : "${LOCALES}",\r
- "root" : "${ROOT}"\r
- }\r
- },\r
-\r
-\r
- "slc-source" :\r
- {\r
- "run" :\r
- [\r
- "source-script"\r
- ]\r
- },\r
-\r
- // -- build jobs --------------------------------------------------\r
-\r
- "build-script" :\r
- {\r
- "extend" : ["common"],\r
-\r
- "variants" :\r
- {\r
- "qx.debug" : ["off"]\r
- },\r
-\r
- "compile-dist" :\r
- {\r
- "target" : "${BUILD_PATH}",\r
- "file" : "${BUILD_PATH}/script/${APPLICATION}.js",\r
- "uri" : "script/${APPLICATION}.js",\r
- "root" : "${BUILD_PATH}",\r
- "format" : "on",\r
- "locales" : "${LOCALES}",\r
- "optimize" : ["basecalls", "variables", "privates", "strings"]\r
- }\r
- },\r
-\r
-\r
- "build-resources":\r
- {\r
- "extend" : ["common"],\r
-\r
- "copy-resources" :\r
- {\r
- "target" : "${BUILD_PATH}",\r
- "resource-filter" : true\r
- }\r
- },\r
-\r
- "my-build-files" :\r
- {\r
- "extend" : ["common"],\r
-\r
- "copy-files" :\r
- {\r
- "files" :\r
- [\r
- "index.html"\r
- ],\r
- "source" : "${ROOT}",\r
- "target" : "${BUILD_PATH}"\r
- }\r
- },\r
- \r
- "slc-build" :\r
- {\r
- "run" :\r
- [\r
- "build-resources",\r
- "build-script",\r
- "my-build-files"\r
- ]\r
- },\r
- \r
- "slc-api" :\r
- {\r
- "extend" : ["apiconf::build"],\r
-\r
- "let" :\r
- {\r
- "APIVIEWER_ROOT" : "${QOOXDOO_PATH}/../component/apiviewer",\r
- "BUILD_PATH" : "./target/site/argeo-ria-api/",\r
- "API_INCLUDE" : ["${APPLICATION}.*", "${CUSTOM_PERSPECTIVE}"]\r
- },\r
-\r
- "library" :\r
- [\r
- {\r
- "manifest" : "${ROOT}/Manifest.json",\r
- "uri" : ".."\r
- },\r
- {\r
- "manifest" : "${RIA_LIB_PATH}/sample/Manifest.json",\r
- "uri" : "${RIA_LIB_URI}/sample"\r
- }\r
- ]\r
- },\r
- \r
- "slc-test" :\r
- {\r
- "extend" : ["testrunner::build"],\r
-\r
- "let" :\r
- {\r
- "TESTRUNNER_ROOT" : "${QOOXDOO_PATH}/../component/testrunner",\r
- "TEST_INCLUDE" : "${APPLICATION}.test.*",\r
- "BUILD_PATH" : "./target/site/argeo-ria-test/"\r
- },\r
-\r
- "library" :\r
- [\r
- {\r
- "manifest" : "${ROOT}/Manifest.json",\r
- "uri" : ".."\r
- }\r
- ]\r
- }\r
- \r
- \r
- }\r
-}\r
+++ /dev/null
-<?xml version="1.0"?>
-<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
-
-<Configure id="Server" class="org.mortbay.jetty.Server">
-
- <Array id="plusConfig" type="java.lang.String">
- <Item>org.mortbay.jetty.webapp.WebInfConfiguration</Item>
- <Item>org.mortbay.jetty.plus.webapp.EnvConfiguration</Item>
- <Item>org.mortbay.jetty.plus.webapp.Configuration</Item>
- <Item>org.mortbay.jetty.webapp.JettyWebXmlConfiguration</Item>
- <Item>org.mortbay.jetty.webapp.TagLibConfiguration</Item>
- </Array>
-
- <New id="org.argeo.infra.web"
- class="org.mortbay.jetty.webapp.WebAppContext">
- <Set name="ConfigurationClasses">
- <Ref id="plusConfig" />
- </Set>
- </New>
-
- <New id="mainDs" class="org.mortbay.jetty.plus.naming.Resource">
- <Arg>jdbc/mainDs</Arg>
- <Arg>
- <New class="org.hsqldb.jdbc.jdbcDataSource">
- <Set name="database">
- <Property name="jdbcUrl"
- default="jdbc:hsqldb:file:<path to a directory on the file system>/slcMainDs" />
- </Set>
- <Set name="user">sa</Set>
- <Set name="password"></Set>
- </New>
- </Arg>
- </New>
-</Configure>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0"?>
-<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
-
-<Configure id="Server" class="org.mortbay.jetty.Server">
-
- <Array id="plusConfig" type="java.lang.String">
- <Item>org.mortbay.jetty.webapp.WebInfConfiguration</Item>
- <Item>org.mortbay.jetty.plus.webapp.EnvConfiguration</Item>
- <Item>org.mortbay.jetty.plus.webapp.Configuration</Item>
- <Item>org.mortbay.jetty.webapp.JettyWebXmlConfiguration</Item>
- <Item>org.mortbay.jetty.webapp.TagLibConfiguration</Item>
- </Array>
-
- <New id="org.argeo.infra.web"
- class="org.mortbay.jetty.webapp.WebAppContext">
- <Set name="ConfigurationClasses">
- <Ref id="plusConfig" />
- </Set>
- </New>
-
- <New id="mainDs" class="org.mortbay.jetty.plus.naming.Resource">
- <Arg>jdbc/mainDs</Arg>
- <Arg>
- <New class="org.hsqldb.jdbc.jdbcDataSource">
- <Set name="database">
- <Property name="jdbcUrl"
- default="jdbc:hsqldb:mem:mainDs" />
- </Set>
- <Set name="user">sa</Set>
- <Set name="password"></Set>
- </New>
- </Arg>
- </New>
-</Configure>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="ISO-8859-1"?>
-
-<!-- ===================================================================== -->
-<!-- This file contains the default descriptor for web applications. -->
-<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
-<!-- The intent of this descriptor is to include jetty specific or common -->
-<!-- configuration for all webapps. If a context has a webdefault.xml -->
-<!-- descriptor, it is applied before the contexts own web.xml file -->
-<!-- -->
-<!-- A context may be assigned a default descriptor by: -->
-<!-- + Calling WebApplicationContext.setDefaultsDescriptor -->
-<!-- + Passed an arg to addWebApplications -->
-<!-- -->
-<!-- This file is used both as the resource within the jetty.jar (which is -->
-<!-- used as the default if no explicit defaults descriptor is set) and it -->
-<!-- is copied to the etc directory of the Jetty distro and explicitly -->
-<!-- by the jetty.xml file. -->
-<!-- -->
-<!-- ===================================================================== -->
-<web-app
- xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
- metadata-complete="true"
- version="2.5">
-
- <description>
- Default web.xml file.
- This file is applied to a Web application before it's own WEB_INF/web.xml file
- </description>
-
-
- <!-- ==================================================================== -->
- <!-- Context params to control Session Cookies -->
- <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
- <!-- UNCOMMENT TO ACTIVATE
- <context-param>
- <param-name>org.mortbay.jetty.servlet.SessionDomain</param-name>
- <param-value>127.0.0.1</param-value>
- </context-param>
-
- <context-param>
- <param-name>org.mortbay.jetty.servlet.SessionPath</param-name>
- <param-value>/</param-value>
- </context-param>
-
- <context-param>
- <param-name>org.mortbay.jetty.servlet.MaxAge</param-name>
- <param-value>-1</param-value>
- </context-param>
- -->
-
- <context-param>
- <param-name>org.mortbay.jetty.webapp.NoTLDJarPattern</param-name>
- <param-value>start.jar|ant-.*\.jar|dojo-.*\.jar|jetty-.*\.jar|jsp-api-.*\.jar|junit-.*\.jar|servlet-api-.*\.jar|dnsns\.jar|rt\.jar|jsse\.jar|tools\.jar|sunpkcs11\.jar|sunjce_provider\.jar|xerces.*\.jar</param-value>
- </context-param>
-
-
-
- <!-- ==================================================================== -->
- <!-- The default servlet. -->
- <!-- This servlet, normally mapped to /, provides the handling for static -->
- <!-- content, OPTIONS and TRACE methods for the context. -->
- <!-- The following initParameters are supported: -->
- <!-- -->
- <!-- acceptRanges If true, range requests and responses are -->
- <!-- supported -->
- <!-- -->
- <!-- dirAllowed If true, directory listings are returned if no -->
- <!-- welcome file is found. Else 403 Forbidden. -->
- <!-- -->
- <!-- redirectWelcome If true, redirect welcome file requests -->
- <!-- else use request dispatcher forwards -->
- <!-- -->
- <!-- gzip If set to true, then static content will be served-->
- <!-- as gzip content encoded if a matching resource is -->
- <!-- found ending with ".gz" -->
- <!-- -->
- <!-- resoureBase Can be set to replace the context resource base -->
- <!-- -->
- <!-- relativeResourceBase -->
- <!-- Set with a pathname relative to the base of the -->
- <!-- servlet context root. Useful for only serving -->
- <!-- static content from only specific subdirectories. -->
- <!-- -->
- <!-- useFileMappedBuffer -->
- <!-- If set to true (the default), a memory mapped -->
- <!-- file buffer will be used to serve static content -->
- <!-- when using an NIO connector. Setting this value -->
- <!-- to false means that a direct buffer will be used -->
- <!-- instead. If you are having trouble with Windows -->
- <!-- file locking, set this to false. -->
- <!-- -->
- <!-- cacheControl If set, all static content will have this value -->
- <!-- set as the cache-control header. -->
- <!-- -->
- <!-- maxCacheSize Maximum size of the static resource cache -->
- <!-- -->
- <!-- maxCachedFileSize Maximum size of any single file in the cache -->
- <!-- -->
- <!-- maxCachedFiles Maximum number of files in the cache -->
- <!-- -->
- <!-- cacheType "nio", "bio" or "both" to determine the type(s) -->
- <!-- of resource cache. A bio cached buffer may be used-->
- <!-- by nio but is not as efficient as a nio buffer. -->
- <!-- An nio cached buffer may not be used by bio. -->
- <!-- -->
- <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
- <servlet>
- <servlet-name>default</servlet-name>
- <servlet-class>org.mortbay.jetty.servlet.DefaultServlet</servlet-class>
- <init-param>
- <param-name>acceptRanges</param-name>
- <param-value>true</param-value>
- </init-param>
- <init-param>
- <param-name>dirAllowed</param-name>
- <param-value>true</param-value>
- </init-param>
- <init-param>
- <param-name>redirectWelcome</param-name>
- <param-value>false</param-value>
- </init-param>
- <init-param>
- <param-name>maxCacheSize</param-name>
- <param-value>256000000</param-value>
- </init-param>
- <init-param>
- <param-name>maxCachedFileSize</param-name>
- <param-value>10000000</param-value>
- </init-param>
- <init-param>
- <param-name>maxCachedFiles</param-name>
- <param-value>1000</param-value>
- </init-param>
- <init-param>
- <param-name>cacheType</param-name>
- <param-value>both</param-value>
- </init-param>
- <init-param>
- <param-name>gzip</param-name>
- <param-value>true</param-value>
- </init-param>
- <init-param>
- <param-name>useFileMappedBuffer</param-name>
- <param-value>false</param-value>
- </init-param>
- <!--
- <init-param>
- <param-name>cacheControl</param-name>
- <param-value>max-age=3600,public</param-value>
- </init-param>
- -->
- <load-on-startup>0</load-on-startup>
- </servlet>
-
- <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
-
-
- <!-- ==================================================================== -->
- <!-- JSP Servlet -->
- <!-- This is the jasper JSP servlet from the jakarta project -->
- <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
- <!-- The JSP page compiler and execution servlet, which is the mechanism -->
- <!-- used by Glassfish to support JSP pages. Traditionally, this servlet -->
- <!-- is mapped to URL patterh "*.jsp". This servlet supports the -->
- <!-- following initialization parameters (default values are in square -->
- <!-- brackets): -->
- <!-- -->
- <!-- checkInterval If development is false and reloading is true, -->
- <!-- background compiles are enabled. checkInterval -->
- <!-- is the time in seconds between checks to see -->
- <!-- if a JSP page needs to be recompiled. [300] -->
- <!-- -->
- <!-- compiler Which compiler Ant should use to compile JSP -->
- <!-- pages. See the Ant documenation for more -->
- <!-- information. [javac] -->
- <!-- -->
- <!-- classdebuginfo Should the class file be compiled with -->
- <!-- debugging information? [true] -->
- <!-- -->
- <!-- classpath What class path should I use while compiling -->
- <!-- generated servlets? [Created dynamically -->
- <!-- based on the current web application] -->
- <!-- Set to ? to make the container explicitly set -->
- <!-- this parameter. -->
- <!-- -->
- <!-- development Is Jasper used in development mode (will check -->
- <!-- for JSP modification on every access)? [true] -->
- <!-- -->
- <!-- enablePooling Determines whether tag handler pooling is -->
- <!-- enabled [true] -->
- <!-- -->
- <!-- fork Tell Ant to fork compiles of JSP pages so that -->
- <!-- a separate JVM is used for JSP page compiles -->
- <!-- from the one Tomcat is running in. [true] -->
- <!-- -->
- <!-- ieClassId The class-id value to be sent to Internet -->
- <!-- Explorer when using <jsp:plugin> tags. -->
- <!-- [clsid:8AD9C840-044E-11D1-B3E9-00805F499D93] -->
- <!-- -->
- <!-- javaEncoding Java file encoding to use for generating java -->
- <!-- source files. [UTF-8] -->
- <!-- -->
- <!-- keepgenerated Should we keep the generated Java source code -->
- <!-- for each page instead of deleting it? [true] -->
- <!-- -->
- <!-- logVerbosityLevel The level of detailed messages to be produced -->
- <!-- by this servlet. Increasing levels cause the -->
- <!-- generation of more messages. Valid values are -->
- <!-- FATAL, ERROR, WARNING, INFORMATION, and DEBUG. -->
- <!-- [WARNING] -->
- <!-- -->
- <!-- mappedfile Should we generate static content with one -->
- <!-- print statement per input line, to ease -->
- <!-- debugging? [false] -->
- <!-- -->
- <!-- -->
- <!-- reloading Should Jasper check for modified JSPs? [true] -->
- <!-- -->
- <!-- suppressSmap Should the generation of SMAP info for JSR45 -->
- <!-- debugging be suppressed? [false] -->
- <!-- -->
- <!-- dumpSmap Should the SMAP info for JSR45 debugging be -->
- <!-- dumped to a file? [false] -->
- <!-- False if suppressSmap is true -->
- <!-- -->
- <!-- scratchdir What scratch directory should we use when -->
- <!-- compiling JSP pages? [default work directory -->
- <!-- for the current web application] -->
- <!-- -->
- <!-- tagpoolMaxSize The maximum tag handler pool size [5] -->
- <!-- -->
- <!-- xpoweredBy Determines whether X-Powered-By response -->
- <!-- header is added by generated servlet [false] -->
- <!-- -->
- <!-- If you wish to use Jikes to compile JSP pages: -->
- <!-- Set the init parameter "compiler" to "jikes". Define -->
- <!-- the property "-Dbuild.compiler.emacs=true" when starting Jetty -->
- <!-- to cause Jikes to emit error messages in a format compatible with -->
- <!-- Jasper. -->
- <!-- If you get an error reporting that jikes can't use UTF-8 encoding, -->
- <!-- try setting the init parameter "javaEncoding" to "ISO-8859-1". -->
- <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
- <servlet id="jsp">
- <servlet-name>jsp</servlet-name>
- <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
- <init-param>
- <param-name>logVerbosityLevel</param-name>
- <param-value>DEBUG</param-value>
- </init-param>
- <init-param>
- <param-name>fork</param-name>
- <param-value>false</param-value>
- </init-param>
- <init-param>
- <param-name>xpoweredBy</param-name>
- <param-value>false</param-value>
- </init-param>
- <!--
- <init-param>
- <param-name>classpath</param-name>
- <param-value>?</param-value>
- </init-param>
- -->
- <load-on-startup>0</load-on-startup>
- </servlet>
-
- <servlet-mapping>
- <servlet-name>jsp</servlet-name>
- <url-pattern>*.jsp</url-pattern>
- <url-pattern>*.jspf</url-pattern>
- <url-pattern>*.jspx</url-pattern>
- <url-pattern>*.xsp</url-pattern>
- <url-pattern>*.JSP</url-pattern>
- <url-pattern>*.JSPF</url-pattern>
- <url-pattern>*.JSPX</url-pattern>
- <url-pattern>*.XSP</url-pattern>
- </servlet-mapping>
-
- <!-- ==================================================================== -->
- <!-- Dynamic Servlet Invoker. -->
- <!-- This servlet invokes anonymous servlets that have not been defined -->
- <!-- in the web.xml or by other means. The first element of the pathInfo -->
- <!-- of a request passed to the envoker is treated as a servlet name for -->
- <!-- an existing servlet, or as a class name of a new servlet. -->
- <!-- This servlet is normally mapped to /servlet/* -->
- <!-- This servlet support the following initParams: -->
- <!-- -->
- <!-- nonContextServlets If false, the invoker can only load -->
- <!-- servlets from the contexts classloader. -->
- <!-- This is false by default and setting this -->
- <!-- to true may have security implications. -->
- <!-- -->
- <!-- verbose If true, log dynamic loads -->
- <!-- -->
- <!-- * All other parameters are copied to the -->
- <!-- each dynamic servlet as init parameters -->
- <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
- <!-- Uncomment for dynamic invocation
- <servlet>
- <servlet-name>invoker</servlet-name>
- <servlet-class>org.mortbay.jetty.servlet.Invoker</servlet-class>
- <init-param>
- <param-name>verbose</param-name>
- <param-value>false</param-value>
- </init-param>
- <init-param>
- <param-name>nonContextServlets</param-name>
- <param-value>false</param-value>
- </init-param>
- <init-param>
- <param-name>dynamicParam</param-name>
- <param-value>anyValue</param-value>
- </init-param>
- <load-on-startup>0</load-on-startup>
- </servlet>
-
- <servlet-mapping> <servlet-name>invoker</servlet-name> <url-pattern>/servlet/*</url-pattern> </servlet-mapping>
- -->
-
-
-
- <!-- ==================================================================== -->
- <session-config>
- <session-timeout>30</session-timeout>
- </session-config>
-
- <!-- ==================================================================== -->
- <!-- Default MIME mappings -->
- <!-- The default MIME mappings are provided by the mime.properties -->
- <!-- resource in the org.mortbay.jetty.jar file. Additional or modified -->
- <!-- mappings may be specified here -->
- <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
- <!-- UNCOMMENT TO ACTIVATE
- <mime-mapping>
- <extension>mysuffix</extension>
- <mime-type>mymime/type</mime-type>
- </mime-mapping>
- -->
-
- <!-- ==================================================================== -->
- <welcome-file-list>
- <welcome-file>index.html</welcome-file>
- <welcome-file>index.htm</welcome-file>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
-
- <!-- ==================================================================== -->
- <locale-encoding-mapping-list>
- <locale-encoding-mapping><locale>ar</locale><encoding>ISO-8859-6</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>be</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>bg</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>ca</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>cs</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>da</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>de</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>el</locale><encoding>ISO-8859-7</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>en</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>es</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>et</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>fi</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>fr</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>hr</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>hu</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>is</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>it</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>iw</locale><encoding>ISO-8859-8</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>ja</locale><encoding>Shift_JIS</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>ko</locale><encoding>EUC-KR</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>lt</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>lv</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>mk</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>nl</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>no</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>pl</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>pt</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>ro</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>ru</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>sh</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>sk</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>sl</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>sq</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>sr</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>sv</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>tr</locale><encoding>ISO-8859-9</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>uk</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>zh</locale><encoding>GB2312</encoding></locale-encoding-mapping>
- <locale-encoding-mapping><locale>zh_TW</locale><encoding>Big5</encoding></locale-encoding-mapping>
- </locale-encoding-mapping-list>
-
- <security-constraint>
- <web-resource-collection>
- <web-resource-name>Disable TRACE</web-resource-name>
- <url-pattern>/</url-pattern>
- <http-method>TRACE</http-method>
- </web-resource-collection>
- <auth-constraint/>
- </security-constraint>
-
-</web-app>
-
+++ /dev/null
-<?xml version='1.0' encoding='utf-8'?>
-<!-- Local configuration of the Argeo SLC server -->
-<Context>
-
- <!-- Default set of monitored resources -->
- <WatchedResource>WEB-INF/web.xml</WatchedResource>
-
- <!--
- <Resource name="jdbc/mainDs" auth="Container"
- type="javax.sql.DataSource" maxActive="10" maxIdle="5" maxWait="10000"
- username="root" password="" driverClassName="com.mysql.jdbc.Driver"
- url="jdbc:mysql://localhost:3306/argeo_slc?autoReconnect=true" />
-
- <Parameter name="sessionFactoryParentBean"
- value="slcServerDefault.sessionFactory.MySQL5" override="false" />
- -->
-
- <Resource name="jdbc/mainDs" auth="Container"
- type="javax.sql.DataSource" maxActive="10" maxIdle="5" maxWait="10000"
- username="sa" password="" driverClassName="org.hsqldb.jdbcDriver"
- url="jdbc:hsqldb:mem:test" />
-
-</Context>
+++ /dev/null
-<project 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/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.argeo.slc</groupId>
- <artifactId>server</artifactId>
- <version>0.13.1-SNAPSHOT</version>
- <relativePath>..</relativePath>
- </parent>
- <groupId>org.argeo.slc.server</groupId>
- <artifactId>org.argeo.slc.ria</artifactId>
- <packaging>jar</packaging>
- <name>SLC RIA</name>
- <build>
- <resources>
- <resource>
- <directory>src</directory>
- <includes>
- <include>index.jsp</include>
- <include>WEB-INF/*</include>
- </includes>
- </resource>
- </resources>
- <plugins>
- <plugin>
- <groupId>org.argeo.maven.plugins</groupId>
- <artifactId>maven-argeo-qooxdoo-plugin</artifactId>
- <version>${version.maven-argeo-qooxdoo}</version>
- <configuration>
- <sdkVersion>1.1.0</sdkVersion>
- </configuration>
- <executions>
- <execution>
- <id>env</id>
- <phase>initialize</phase>
- <goals>
- <goal>env</goal>
- </goals>
- </execution>
- <execution>
- <id>env-site</id>
- <phase>pre-site</phase>
- <goals>
- <goal>env</goal>
- </goals>
- </execution>
- <execution>
- <id>slc-source</id>
- <phase>test</phase>
- <goals>
- <goal>generate</goal>
- </goals>
- <configuration>
- <job>slc-source</job>
- </configuration>
- </execution>
- <execution>
- <id>slc-build</id>
- <phase>test</phase>
- <goals>
- <goal>generate</goal>
- </goals>
- <configuration>
- <job>slc-build</job>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <artifactId>maven-jar-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-bundle-plugin</artifactId>
-
- <configuration>
- <instructions>
- <Import-Package>
- javax.servlet,
- javax.servlet.http,
- javax.servlet.jsp,
- javax.servlet.jsp.jstl.core,
- javax.servlet.jsp.jstl.fmt,
- javax.servlet.jsp.jstl.tlv,
- javax.servlet.resources
- </Import-Package>
- <Web-ContextPath>org.argeo.slc.ria</Web-ContextPath>
- </instructions>
- </configuration>
- <executions>
- <execution>
- <id>bundle-manifest</id>
- <phase>process-classes</phase>
- <goals>
- <goal>manifest</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-dependency-plugin</artifactId>
- <executions>
- <execution>
- <id>unpack-argeo-ria-sdk</id>
- <phase>initialize</phase>
- <goals>
- <goal>unpack</goal>
- </goals>
- <configuration>
- <artifactItems>
- <artifactItem>
- <groupId>org.argeo.ria</groupId>
- <artifactId>org.argeo.ria.core</artifactId>
- <version>${version.argeo-ria}</version>
- <classifier>ria</classifier>
- <type>zip</type>
- <outputDirectory>src/argeo-ria-src</outputDirectory>
- </artifactItem>
- </artifactItems>
- <overWriteReleases>true</overWriteReleases>
- <overWriteSnapshots>true</overWriteSnapshots>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-assembly-plugin</artifactId>
- <executions>
- <execution>
- <id>assembly-ria-slc</id>
- <phase>package</phase>
- <goals>
- <goal>single</goal>
- </goals>
- <configuration>
- <descriptors>
- <descriptor>assembly/ria-slc.xml</descriptor>
- </descriptors>
- </configuration>
- </execution>
- <execution>
- <id>assembly-ria-slc-web</id>
- <phase>package</phase>
- <goals>
- <goal>single</goal>
- </goals>
- <configuration>
- <descriptors>
- <descriptor>assembly/ria-slc-web.xml</descriptor>
- </descriptors>
- </configuration>
- </execution>
- <execution>
- <id>assembly-ria-jcr</id>
- <phase>package</phase>
- <goals>
- <goal>single</goal>
- </goals>
- <configuration>
- <descriptors>
- <descriptor>assembly/ria-jcr.xml</descriptor>
- </descriptors>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.argeo.ria</groupId>
- <artifactId>org.argeo.ria.core</artifactId>
- <version>${version.argeo-ria}</version>
- </dependency>
- </dependencies>
- </dependencyManagement>
-</project>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
- Copyright (C) 2010 Mathieu Baudier <mbaudier@argeo.org>
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-
-<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
- version="2.5">
-
- <display-name>SLC Web UI</display-name>
-</web-app>
+++ /dev/null
-{\r
- "info" : \r
- {\r
- "name" : "org.argeo.jcr.ria",\r
-\r
- "summary" : "Jcr Ria library",\r
- "description" : "Utilities for JCR RIA",\r
- \r
- "homepage" : "http://www.argeo.org/",\r
-\r
- "license" : "LGPL",\r
- "authors" : \r
- [\r
- {\r
- "name" : "Charles du Jeu",\r
- "email" : "charles.dujeu@gmail.com"\r
- }\r
- ],\r
-\r
- "version" : "trunk",\r
- "qooxdoo-versions": ["1.1"]\r
- },\r
- \r
- "provides" : \r
- {\r
- "namespace" : "org.argeo.jcr.ria",\r
- "encoding" : "utf-8",\r
- "class" : "class",\r
- "resource" : "resource",\r
- "translation" : "translation",\r
- "type" : "library"\r
- }\r
-}\r
-\r
+++ /dev/null
-/**\r
- * IPerspective Implementation : Horizontal split pane defining two panes, "list" and "applet".\r
- */\r
- \r
-/* ************************************************************************\r
-\r
-#asset(org/argeo/jcr/ria/*)\r
-\r
-************************************************************************ */ \r
-qx.Class.define("org.argeo.jcr.ria.JcrBrowser",\r
-{\r
- extend : qx.core.Object,\r
- implement : [org.argeo.ria.components.IPerspective], \r
- \r
- construct : function(){\r
- this.base(arguments);\r
- org.argeo.ria.util.Element.DEFAULT_NAMESPACE_MAP = \r
- {\r
- slc:"http://argeo.org/projects/slc/schemas",\r
- fn:"http://www.w3.org/2005/xpath-functions", \r
- fn_old:"http://www.w3.org/2004/10/xpath-functions", \r
- xs:"http://www.w3.org/2001/XMLSchema" ,\r
- jcr:"http://www.jcp.org/jcr/1.0" ,\r
- mix:"http://www.jcp.org/jcr/mix/1.0", \r
- sv:"http://www.jcp.org/jcr/sv/1.0" ,\r
- rep:"internal" ,\r
- nt:"http://www.jcp.org/jcr/nt/1.0"\r
- };\r
- },\r
- \r
- statics : {\r
- LABEL : "JCR Browser (Tech Preview)",\r
- ICON : "org/argeo/slc/ria/utilities-terminal.png"/*,\r
- ACCESS : "!ROLE_ANONYMOUS"*/\r
- },\r
- \r
- members : {\r
- _splitPane : null, \r
- \r
- initViewPanes : function(viewsManager){\r
- \r
- this._tBar = new org.argeo.ria.components.ViewPane("toolbar", "");\r
- this._tBar.header.setVisibility("excluded");\r
- viewsManager.getViewPanesContainer().add(this._tBar);\r
- \r
- this._splitPane = new qx.ui.splitpane.Pane("horizontal");\r
- this.leftPane = new org.argeo.ria.components.TabbedViewPane("treeview", "Tree View");\r
- this._splitPane.add(this.leftPane, 1);\r
- var mainPane = new org.argeo.ria.components.TabbedViewPane("editor", "Editor View", true);\r
- this._splitPane.add(mainPane, 2);\r
- viewsManager.registerViewPane(this._tBar);\r
- viewsManager.registerViewPane(mainPane); \r
- viewsManager.registerViewPane(this.leftPane); \r
- viewsManager.getViewPanesContainer().add(this._splitPane, {flex:1000});\r
- \r
- new qx.util.DeferredCall(function(){\r
- this._tBar.setHeight(32);\r
- }, this).schedule();\r
- \r
- \r
- },\r
- \r
- initViews : function(viewsManager){\r
- var nodeProvider = new org.argeo.jcr.ria.provider.XmlNodeProvider();\r
- nodeProvider.initProvider({\r
- xmlSrc : "/org.argeo.slc.webapp/getJcrItem.jcr?",\r
- dynamic : true,\r
- pathParameter:"path"\r
- }); \r
- var rootNode = new org.argeo.jcr.ria.model.Node("Root", nodeProvider, true);\r
- rootNode.setPath('/slc');\r
- var dataModel = new org.argeo.jcr.ria.model.DataModel(rootNode);\r
- \r
- var inputView = viewsManager.initIViewClass(org.argeo.jcr.ria.views.ContextNodeInputView, "toolbar", dataModel);\r
- inputView.load();\r
- \r
- var listView = viewsManager.initIViewClass(org.argeo.jcr.ria.views.ListView, "editor", dataModel);\r
- listView.load();\r
- \r
- var treeView = viewsManager.initIViewClass(org.argeo.jcr.ria.views.TreeView, "treeview", dataModel);\r
- treeView.load();\r
- \r
- var queriesView = viewsManager.initIViewClass(org.argeo.jcr.ria.views.QueriesView, "treeview", dataModel);\r
- queriesView.load();\r
- \r
- var pages = this.leftPane.getSelectables();\r
- this.leftPane.setSelection([pages[0]]);\r
- \r
- dataModel.requireContextChange();\r
- },\r
- \r
- remove : function(viewsManager){\r
- viewsManager.getViewPanesContainer().remove(this._splitPane); \r
- viewsManager.getViewPanesContainer().remove(this._tBar);\r
- }\r
- \r
- }\r
-\r
-});
\ No newline at end of file
+++ /dev/null
-qx.Class.define("org.argeo.jcr.ria.model.AbstractItem", \r
-{\r
- type : "abstract",\r
- extend : qx.core.Object,\r
- \r
- properties : {\r
- path : {\r
- check : "String"\r
- },\r
- name : {\r
- check : "String"\r
- },\r
- newItem : {\r
- check : "Boolean",\r
- event : "changeNew"\r
- },\r
- modified : {\r
- check : "Boolean",\r
- event : "changeModified"\r
- },\r
- node : {\r
- check : "Boolean",\r
- init : true\r
- },\r
- parent : {\r
- check : "org.argeo.jcr.ria.model.AbstractItem", \r
- nullable : true,\r
- init : null\r
- },\r
- root : {\r
- check : "org.argeo.jcr.ria.model.AbstractItem" \r
- }\r
- },\r
- \r
- members : {\r
- itemIsRoot : function(){\r
- return (this.getRoot() == this);\r
- },\r
- fromDomElement : function(domElement){\r
- // TO BE IMPLEMENTED BY SUBCLASSES\r
- },\r
- toXmlString : function(){\r
- // TO BE IMPLEMENTED BY SUBCLASSES \r
- },\r
- remove : function(){\r
- // TO BE IMPLEMENTED BY SUBCLASSES \r
- }\r
- }\r
-\r
-});
\ No newline at end of file
+++ /dev/null
-qx.Class.define("org.argeo.jcr.ria.model.DataModel", {\r
- extend : qx.core.Object,\r
- \r
- events : {\r
- "changeContextNode" : "qx.event.type.Data"\r
- },\r
- \r
- properties : {\r
- rootNode : {\r
- check : "org.argeo.jcr.ria.model.Node",\r
- event : "changeRootNode" \r
- },\r
- contextNode : {\r
- check : "org.argeo.jcr.ria.model.Node"\r
- },\r
- selection : {\r
- check : "Array",\r
- event : "changeSelection",\r
- init : []\r
- },\r
- selectionSource : {\r
- check : "Object",\r
- init : null,\r
- nullable : true\r
- }\r
- },\r
- \r
- construct : function(rootNode){\r
- this.base(arguments);\r
- this.setRootNode(rootNode);\r
- },\r
- \r
- members : {\r
- requireContextChange : function(path){\r
- var targetNode;\r
- var rootNode = this.getRootNode();\r
- this.setSelection([]);\r
- if(!path){\r
- targetNode = rootNode;\r
- }else{\r
- // Create a fake node\r
- if(path[path.length-1] == '/'){\r
- path = path.substring(0, path.length-1);\r
- }\r
- var base = path.substring(path.lastIndexOf("/")+1);\r
- targetNode = new org.argeo.jcr.ria.model.Node(base, rootNode.getNodeProvider());\r
- rootNode.addChild(targetNode);\r
- targetNode.setPath(path); \r
- }\r
- var observer = function(event){\r
- var state = event.getData();\r
- if(state == "loading"){\r
- targetNode.loadingNode = new org.argeo.jcr.ria.model.Node("loading"); \r
- targetNode.addChild(targetNode.loadingNode);\r
- }else if(state == "loaded"){\r
- if(targetNode.loadingNode) {\r
- targetNode.loadingNode.remove();\r
- targetNode.loadingNode = null;\r
- }\r
- targetNode.removeListener("changeLoadState", observer, this);\r
- } \r
- this.setContextNode(targetNode);\r
- this.fireDataEvent("changeContextNode", targetNode);\r
- };\r
- targetNode.addListener("changeLoadState", observer, this);\r
- targetNode.load(1);\r
- },\r
- setSelectionWithSource : function(selection, source){\r
- this.setSelectionSource(source);\r
- this.setSelection(selection);\r
- }\r
- }\r
- \r
-});
\ No newline at end of file
+++ /dev/null
-qx.Class.define("org.argeo.jcr.ria.model.Node", {\r
- extend : org.argeo.jcr.ria.model.AbstractItem,\r
- \r
- events : {\r
- "clear" : "qx.event.type.Event",\r
- "childNodeAdded" : "qx.event.type.Data",\r
- "childNodeRemoved" : "qx.event.type.Data",\r
- "childrenChanged" : "qx.event.type.Data",\r
- \r
- "propertyAdded" : "qx.event.type.Data",\r
- "propertyRemoved" : "qx.event.type.Data",\r
- "propertiesChanged" : "qx.event.type.Data"\r
- },\r
- properties : {\r
- loadState : {\r
- check : "String",\r
- init : "empty", // Can be "empty" => "loading" => "loaded"\r
- event : "changeLoadState"\r
- },\r
- nodeProvider : {\r
- check : "org.argeo.jcr.ria.provider.INodeProvider",\r
- nullable : true\r
- }\r
- },\r
- \r
- construct : function(nodeName, nodeProvider, isRoot){\r
- this.base(arguments);\r
- this._children = {};\r
- this._properties = {}; \r
- this.setName(nodeName);\r
- if(nodeProvider){\r
- this.setNodeProvider(nodeProvider); \r
- }\r
- if(isRoot){\r
- this.setPath("");\r
- this.setRoot(this);\r
- }\r
- },\r
-\r
- members : {\r
- _children : null,\r
- _properties : null,\r
- \r
- load : function(depth, filter){\r
- if(!depth) depth = 1;\r
- if(!filter) filter = '';\r
- this.getNodeProvider().loadNode(this, depth, filter);\r
- },\r
- \r
- remove : function(){\r
- if(this.itemIsRoot()) return;\r
- this.getParent().removeChild(this.getName());\r
- },\r
- \r
- fromDomElement : function(domElement){\r
- if(domElement.nodeType != 1) return;\r
- for(var i=0;i<domElement.attributes.length;i++){\r
- var att = domElement.attributes[i];\r
- if(!this.itemIsRoot() && att.nodeName.substring(0,5) == "xmlns"){\r
- continue;\r
- }\r
- var property = new org.argeo.jcr.ria.model.Property(att.nodeName);\r
- this.addProperty(property);\r
- property.fromDomElement(att);\r
- }\r
- for(var i=0;i<domElement.childNodes.length;i++){\r
- var child = domElement.childNodes[i];\r
- if(child.nodeType != 1) continue;\r
- var jcrChild = new org.argeo.jcr.ria.model.Node(child.nodeName, this.getNodeProvider());\r
- this.addChild(jcrChild);\r
- jcrChild.fromDomElement(child);\r
- }\r
- //this.setLoadState("loaded");\r
- },\r
- \r
- fromXmlString : function(xmlString){\r
- var domDocument = qx.xml.Document.fromString(xmlString);\r
- var root = domDocument.documentElement;\r
- this.fromDomElement(root);\r
- },\r
- \r
- toXmlString : function(recurse, childrenWriter){\r
- var string = "<"+this.getName();\r
- var props = this.getProperties();\r
- for(var i=0;i<props.length;i++){\r
- string += " " + props[i].toXmlString();\r
- }\r
- string += ">";\r
- if(recurse){\r
- var childs = this.getChildren();\r
- var childrenString = "";\r
- for(var j=0;j<childs.length;j++){\r
- childrenString += childs[j].toXmlString(recurse, childrenWriter);\r
- }\r
- if(childrenWriter){\r
- string += childrenWriter(childrenString);\r
- }else{\r
- string += childrenString;\r
- }\r
- }\r
- string += "</"+this.getName()+">";\r
- return string;\r
- }, \r
- \r
- getChild : function(childName){\r
- return this._children[childName];\r
- },\r
- getProperty : function(propertyName){\r
- return this._properties[propertyName];\r
- },\r
- addChild : function(childNode){\r
- this._children[childNode.getName()] = childNode;\r
- \r
- childNode.setParent(this);\r
- childNode.setRoot(this.getRoot());\r
- childNode.setPath(this.getPath() + "/" + childNode.getName());\r
- \r
- this.fireDataEvent("childNodeAdded", childNode);\r
- this.fireDataEvent("childNodeChanged");\r
- },\r
- removeChild : function(childName){\r
- delete(this._children[childName]);\r
- this.fireDataEvent("childNodeRemoved", childName);\r
- this.fireDataEvent("childNodeChanged");\r
- },\r
- addProperty : function(property){\r
- this._properties[property.getName()] = property;\r
- \r
- property.setParent(this);\r
- property.setRoot(this.getRoot());\r
- property.setPath(this.getPath() + "/" + property.getName());\r
- \r
- this.fireDataEvent("propertyAdded", property);\r
- this.fireDataEvent("propertiesChanged");\r
- },\r
- removeProperty : function(propertyName){\r
- delete(this._properties[propertyName]);\r
- this.fireDataEvent("propertyRemoved", propertyName);\r
- this.fireDataEvent("propertiesChanged");\r
- },\r
- getChildren : function(){\r
- return qx.lang.Object.getValues(this._children);\r
- },\r
- getProperties : function(){\r
- return qx.lang.Object.getValues(this._properties);\r
- },\r
- getChildrenCount : function(){\r
- return qx.lang.Object.getLength(this._children);\r
- },\r
- getPropertiesCount : function(){\r
- return qx.lang.Object.getLength(this._properties);\r
- }\r
- }\r
-});
\ No newline at end of file
+++ /dev/null
-qx.Class.define("org.argeo.jcr.ria.model.Property", {\r
- extend : org.argeo.jcr.ria.model.AbstractItem,\r
- \r
- properties : {\r
- node : {\r
- refine : true,\r
- init : false\r
- },\r
- value : {\r
- event : "changeValue"\r
- },\r
- local : {\r
- check : "Boolean",\r
- init : false\r
- }\r
- },\r
- \r
- construct : function(propertyName){\r
- this.base(arguments);\r
- this.setName(propertyName);\r
- },\r
- \r
- members : {\r
- remove : function(){\r
- this.getParent().removeProperty(this.getName());\r
- },\r
- \r
- fromDomElement : function(domElement){\r
- if(domElement.nodeType != 2) return;\r
- this.setValue(domElement.nodeValue);\r
- },\r
- toXmlString : function(){\r
- if(this.isLocal()) return "";\r
- return this.getName()+"="+'"'+this.getValue()+'"';\r
- }\r
- \r
- }\r
-});
\ No newline at end of file
+++ /dev/null
-qx.Interface.define("org.argeo.jcr.ria.provider.INodeProvider", {\r
- members : {\r
- initProvider : function(properties){},\r
- loadNode : function(path, depth, filter){}\r
- }\r
-});
\ No newline at end of file
+++ /dev/null
-qx.Class.define("org.argeo.jcr.ria.provider.XmlNodeProvider", {\r
- extend : qx.core.Object,\r
- implement : [org.argeo.jcr.ria.provider.INodeProvider],\r
- \r
- properties : {\r
- settings :{\r
- check : "Object"\r
- },\r
- xmlDoc : {\r
- \r
- },\r
- xmlDocLoaded : {\r
- check : "Boolean",\r
- init : false,\r
- event : "changeXmlDocLoaded"\r
- }\r
- },\r
- \r
- members : {\r
- _xmlDoc : null,\r
- initProvider : function(properties){\r
- this.setSettings(properties); \r
- },\r
- /**\r
- * \r
- * @param node org.argeo.jcr.ria.model.Node\r
- * @param nodeCallback Function\r
- * @param childCallback Function\r
- */\r
- loadNode : function(node, depth, filter){\r
- if(node.getLoadState() == "loaded") return;\r
- \r
- if(this.getXmlDocLoaded()){\r
- // Parse document and load\r
- node.setName(this._xmlDoc.documentElement.nodeName);\r
- var properties = this.getSettings(); \r
- node.fromDomElement(this._xmlDoc.documentElement);\r
- node.setLoadState("loaded");\r
- if(properties.dynamic){\r
- this.setXmlDocLoaded(false);\r
- }\r
- }else{\r
- this.addListenerOnce("changeXmlDocLoaded", function(){\r
- this.loadNode(node, depth, filter);\r
- }, this);\r
- node.setLoadState("loading");\r
- this.loadXmlDoc(node, depth, filter);\r
- }\r
- },\r
- \r
- loadXmlDoc : function(node, depth, filter){\r
- var properties = this.getSettings();\r
- if(!properties.xmlSrc && !properties.xmlString) return;\r
- if(properties.xmlSrc){\r
- var request = new org.argeo.ria.remote.Request(properties.xmlSrc, 'GET', 'application/xml');\r
- if(properties.dynamic && properties.pathParameter){\r
- request.setParameter(properties.pathParameter, (node.getPath()|| "/"));\r
- if(depth && depth != -1){\r
- request.setParameter("depth", depth);\r
- }\r
- }\r
- request.addListener("completed", function(response){\r
- this._xmlDoc = response.getContent();\r
- this.setXmlDocLoaded(true);\r
- }, this);\r
- request.send();\r
- }else{\r
- this._xmlDoc = qx.xml.Document.fromString(properties.xmlString);\r
- this.setXmlDocLoaded(true);\r
- }\r
- }\r
- }\r
-});
\ No newline at end of file
+++ /dev/null
-qx.Class.define("org.argeo.jcr.ria.views.ContextNodeInputView", {\r
- extend : qx.ui.container.Composite,\r
- implement : [org.argeo.ria.components.IView], \r
-\r
- properties : {\r
- /**\r
- * The commands definition Map that will be automatically added and wired to the menubar and toolbar.\r
- * See {@link org.argeo.ria.event.CommandsManager#definitions} for the keys to use for defining commands.\r
- */\r
- commands : {\r
- init : {}\r
- },\r
- viewSelection : {\r
- nullable:false, \r
- check:"org.argeo.ria.components.ViewSelection"\r
- },\r
- instanceId : {\r
- init:"inputViewer",\r
- event : "changeInstanceId"\r
- },\r
- instanceLabel : {\r
- init:"Xml Editor",\r
- event : "changeInstanceLabel"\r
- },\r
- dataModel : {\r
- \r
- }\r
- },\r
- \r
- construct : function(){\r
- this.base(arguments);\r
- },\r
- \r
- members : {\r
- /**\r
- * The implementation should contain the GUI initialisation.\r
- * This is the role of the manager to actually add the graphical component to the pane, \r
- * so it's not necessary to do it here. \r
- * @param viewPane {org.argeo.ria.components.ViewPane} The pane manager\r
- * @param data {Mixed} Any object or data passed by the initiator of the view\r
- * @return {Boolean}\r
- */\r
- init : function(viewPane, dataModel){\r
- this.setViewSelection(new org.argeo.ria.components.ViewSelection(viewPane.getViewId())); \r
- this.set({\r
- layout : new qx.ui.layout.HBox(),\r
- dataModel : dataModel,\r
- paddingTop: 5, \r
- paddingLeft: 5, \r
- decorator : 'toolbar'\r
- }); \r
- \r
- this.contextInput = new qx.ui.form.TextField();\r
- this.contextInput.setWidth(100);\r
- this.contextInput.setTextAlign("right");\r
- this.add(this.contextInput);\r
-\r
- var sep = new qx.ui.basic.Label(":");\r
- sep.set({paddingTop:3, paddingLeft:2,paddingRight:2});\r
- this.add(sep);\r
- \r
- this.selectionInput = new qx.ui.form.TextField();\r
- this.selectionInput.setWidth(300);\r
- this.selectionInput.setReadOnly(true);\r
- this.add(this.selectionInput);\r
- \r
- this._attachInputsToDM(); \r
- },\r
- /**\r
- * The implementation should contain the real data loading (i.o. query...)\r
- * @return {Boolean}\r
- */\r
- load : function(){\r
- },\r
- \r
- _attachInputsToDM : function(){\r
- var dm = this.getDataModel();\r
- this.contextInput.addListener("keypress", function(event){\r
- if(event.getKeyIdentifier() != "Enter") return;\r
- var path = this.contextInput.getValue();\r
- dm.requireContextChange(path);\r
- }, this);\r
- dm.addListener("changeContextNode", function(event){\r
- var ctxtNode = event.getData();\r
- this.contextInput.setValue(ctxtNode.getPath());\r
- }, this);\r
- dm.addListener("changeSelection", function(event){\r
- var sel = event.getData();\r
- if(!sel.length){\r
- this.selectionInput.setValue("/");\r
- }else{\r
- this.selectionInput.setValue(sel[0].getPath().substring(this.contextInput.getValue().length));\r
- }\r
- },this);\r
- },\r
- \r
- /**\r
- * Whether this component is already contained in a scroller (return false) or not (return true).\r
- * @return {Boolean}\r
- */\r
- addScroll : function(){\r
- return false;\r
- },\r
- /**\r
- * Called at destruction time\r
- * Perform all the clean operations (stopping polling queries, etc.) \r
- */\r
- close : function(){\r
- \r
- } \r
- }\r
- \r
- \r
-});
\ No newline at end of file
+++ /dev/null
-qx.Class.define("org.argeo.jcr.ria.views.JcrTreeFolder", {\r
- extend : org.argeo.ria.components.DynamicTreeFolder,\r
- properties : {\r
- jcrNode : {\r
- \r
- }\r
- },\r
- construct : function(jcrNode){\r
- this.base(arguments, jcrNode.getName(), org.argeo.jcr.ria.views.JcrTreeFolder.loader);\r
- this.setJcrNode(jcrNode);\r
- },\r
- \r
- statics : {\r
- loader : function(treeFolder){\r
- if(treeFolder.getState() == "loaded") return;\r
- var jcrNode = treeFolder.getJcrNode();\r
- jcrNode.addListener("changeLoadState", function(event){\r
- if(event.getData() == "loaded"){\r
- org.argeo.jcr.ria.views.JcrTreeFolder.jcrNodeToTreeFolder(jcrNode, treeFolder);\r
- }else if(event.getData() == "empty"){\r
- treeFolder.removeAll();\r
- treeFolder.setOpen(false);\r
- }\r
- });\r
- if(jcrNode.getLoadState()=="loaded"){\r
- org.argeo.jcr.ria.views.JcrTreeFolder.jcrNodeToTreeFolder(jcrNode, treeFolder);\r
- }else if(jcrNode.getLoadState() == "empty"){ \r
- jcrNode.load();\r
- }\r
- },\r
- \r
- jcrNodeToTreeFolder : function(loadedNode, parentTreeFolder){\r
- var children = loadedNode.getChildren();\r
- for(var i=0;i<children.length;i++){\r
- var newFolder = new org.argeo.jcr.ria.views.JcrTreeFolder(children[i]);\r
- parentTreeFolder.add(newFolder);\r
- }\r
- parentTreeFolder.setState("loaded");\r
- parentTreeFolder.setOpen(true);\r
- } \r
- },\r
- members : {\r
- openListener : function(e){\r
- } \r
- }\r
-});
\ No newline at end of file
+++ /dev/null
-qx.Class.define("org.argeo.jcr.ria.views.ListView", {\r
- extend : qx.ui.container.Composite, \r
- implement : [org.argeo.ria.components.IView],\r
- properties : {\r
- /**\r
- * The commands definition Map that will be automatically added and wired to the menubar and toolbar.\r
- * See {@link org.argeo.ria.event.CommandsManager#definitions} for the keys to use for defining commands.\r
- */\r
- commands : {\r
- init : {}\r
- },\r
- viewSelection : {\r
- nullable:false, \r
- check:"org.argeo.ria.components.ViewSelection"\r
- },\r
- instanceId : {\r
- init:"listView",\r
- event : "changeInstanceId"\r
- },\r
- instanceLabel : {\r
- init:"Nodes List",\r
- event : "changeInstanceLabel"\r
- },\r
- dataModel : {\r
- \r
- }\r
- },\r
- \r
- construct : function(){\r
- this.base(arguments);\r
- },\r
- \r
- members : {\r
- /**\r
- * The implementation should contain the GUI initialisation.\r
- * This is the role of the manager to actually add the graphical component to the pane, \r
- * so it's not necessary to do it here. \r
- * @param viewPane {org.argeo.ria.components.ViewPane} The pane manager\r
- * @param data {Mixed} Any object or data passed by the initiator of the view\r
- * @return {Boolean}\r
- */\r
- init : function(viewPane, dataModel){\r
- this.setViewSelection(new org.argeo.ria.components.ViewSelection(viewPane.getViewId())); \r
- this.setLayout(new qx.ui.layout.VBox());\r
- this.setDataModel(dataModel);\r
- \r
- var split = new qx.ui.splitpane.Pane("vertical");\r
- split.setDecorator(null);\r
- this.add(split, {flex:1});\r
- \r
- this.list = new qx.ui.form.List(); \r
- split.add(this.list,1);\r
- \r
- this.propInput = new qx.ui.form.TextArea();\r
- split.add(this.propInput,1);\r
- var call = new qx.util.DeferredCall(function(){\r
- qx.bom.element.Style.set(this.propInput.getContentElement().getDomElement(), "lineHeight", "1.8");\r
- }, this);\r
- call.schedule();\r
- },\r
- /**\r
- * The implementation should contain the real data loading (i.o. query...)\r
- * @return {Boolean}\r
- */\r
- load : function(){\r
- var dataModel = this.getDataModel();\r
- dataModel.addListener("changeSelection", function(event){\r
- if(dataModel.getSelectionSource() == this) return;\r
- var selection = event.getData();\r
- this.list.removeAll();\r
- if(!selection.length) {\r
- return;\r
- }\r
- var contextNode = selection[0];\r
- this._parseNode(contextNode);\r
- }, this);\r
- },\r
- \r
- _parseNode : function (jcrNode){\r
- if(jcrNode.getLoadState() == "loaded"){\r
- this.list.removeAll();\r
- if(jcrNode.getParent()){\r
- this.list.add(this._initListItem(jcrNode.getParent(), ".."));\r
- }\r
- var children = jcrNode.getChildren();\r
- for(var i=0;i<children.length;i++){\r
- this.list.add(this._initListItem(children[i]));\r
- }\r
- if(this.list.hasChildren()){\r
- this.list.setSelection([this.list.getChildren()[0]]);\r
- }\r
- var properties = jcrNode.getProperties();\r
- var propString = "";\r
- for(var i=0;i<properties.length;i++){\r
- propString += properties[i].getName()+"="+properties[i].getValue()+"\n";\r
- }\r
- this.propInput.setValue(propString);\r
- }else{\r
- var listener = function(event){\r
- if(event.getData() == "loaded"){\r
- this._parseNode(jcrNode);\r
- jcrNode.removeListener("changeLoadState", listener, this);\r
- }\r
- };\r
- jcrNode.addListener("changeLoadState", listener, this);\r
- if(jcrNode.getLoadState() != "loading"){\r
- jcrNode.load();\r
- }\r
- }\r
- },\r
- \r
- _initListItem : function(jcrNode, label){\r
- var li = new qx.ui.form.ListItem((label?label:jcrNode.getName()), "org.argeo.jcr.ria/folder.png");\r
- li.setModel(jcrNode);\r
- li.addListener("dblclick", function(){\r
- this.getDataModel().setSelectionWithSource([jcrNode], this);\r
- }, this);\r
- return li;\r
- },\r
- \r
- /**\r
- * Whether this component is already contained in a scroller (return false) or not (return true).\r
- * @return {Boolean}\r
- */\r
- addScroll : function(){\r
- return false;\r
- },\r
- /**\r
- * Called at destruction time\r
- * Perform all the clean operations (stopping polling queries, etc.) \r
- */\r
- close : function(){\r
- \r
- } \r
- \r
- }\r
-});\r
+++ /dev/null
-qx.Class.define("org.argeo.jcr.ria.views.PlainXmlViewer", {\r
- extend : qx.ui.container.Composite,\r
- implement : [org.argeo.ria.components.IView], \r
-\r
- properties : {\r
- /**\r
- * The commands definition Map that will be automatically added and wired to the menubar and toolbar.\r
- * See {@link org.argeo.ria.event.CommandsManager#definitions} for the keys to use for defining commands.\r
- */\r
- commands : {\r
- init : {\r
- "close" : {\r
- label : "Close",\r
- shared : true,\r
- icon : "org.argeo.slc.ria/window-close.png",\r
- shortcut : "Control+w",\r
- enabled : true,\r
- menu : null,\r
- toolbar : null,\r
- callback : function(e){\r
- org.argeo.ria.components.ViewsManager.getInstance().getViewPaneById("editor").closeCurrent();\r
- },\r
- command : null\r
- } \r
- }\r
- },\r
- viewSelection : {\r
- nullable:false, \r
- check:"org.argeo.ria.components.ViewSelection"\r
- },\r
- instanceId : {\r
- init:"XmlEditor",\r
- event : "changeInstanceId"\r
- },\r
- instanceLabel : {\r
- init:"Xml Editor",\r
- event : "changeInstanceLabel"\r
- }\r
- },\r
- \r
- construct : function(){\r
- this.base(arguments);\r
- },\r
- \r
- members : {\r
- /**\r
- * The implementation should contain the GUI initialisation.\r
- * This is the role of the manager to actually add the graphical component to the pane, \r
- * so it's not necessary to do it here. \r
- * @param viewPane {org.argeo.ria.components.ViewPane} The pane manager\r
- * @param data {Mixed} Any object or data passed by the initiator of the view\r
- * @return {Boolean}\r
- */\r
- init : function(viewPane, jcrNode){\r
- this._viewPane = viewPane;\r
- this.setViewSelection(new org.argeo.ria.components.ViewSelection(viewPane.getViewId())); \r
- this.setLayout(new qx.ui.layout.VBox());\r
- \r
- this.setInstanceId("edit:" + jcrNode.getPath());\r
- this.setInstanceLabel("Node '" + jcrNode.getName()+"'");\r
- \r
- this.htmlPane = new qx.ui.embed.Html();\r
- this.htmlPane.setOverflow("auto", "auto");\r
- this.htmlPane.setDecorator("input");\r
- this.add(this.htmlPane, {flex:1});\r
- \r
- },\r
- /**\r
- * The implementation should contain the real data loading (i.o. query...)\r
- * @return {Boolean}\r
- */\r
- load : function(jcrNode){\r
- // Load full XML (deep) \r
- //jcrNode.load(-1);\r
- var fakeNode = new org.argeo.jcr.ria.model.Node(jcrNode.getName(), jcrNode.getNodeProvider(), true);\r
- fakeNode.setPath(jcrNode.getPath());\r
- fakeNode.addListener("changeLoadState", function(event){\r
- if(event.getData() == "loaded"){\r
- var xmlString = fakeNode.toXmlString(true);\r
- this._loadXmlString(xmlString);\r
- }\r
- }, this);\r
- fakeNode.load(-1);\r
- },\r
- \r
- _loadXmlString : function(xmlString){\r
- var TAG_START_PATTERN = new RegExp("<([0-9a-zA-Z\.:]+)([^>]*)>", "gi");\r
- var TAG_END_PATTERN = new RegExp("</([0-9a-zA-Z\.:]+)>", "gi");\r
- var TAG_CLOSE_PATTERN = new RegExp("(/?>)", "gi");\r
- var TAG_ATTRIBUTE = new RegExp("\\s([0-9a-zA-Z:_]+)\\=\"([^\"]*)\"", "gi");\r
- // Not implemented yet\r
- var TAG_COMMENT = new RegExp("(<!--.*-->)", "gi");\r
- var TAG_CDATA_START = new RegExp("(\\<!\\[CDATA\\[).*", "gi");\r
- var TAG_CDATA_END = new RegExp(".*(]]>)", "gi");\r
- \r
- xmlString = xmlString.replace(TAG_START_PATTERN, 'xml_div_begin<xml_tagname_begin$1xml_tagname_end$2>');\r
- xmlString = xmlString.replace(TAG_END_PATTERN, '</xml_tagname_begin$1xml_tagname_end>xml_div_end');\r
- xmlString = xmlString.replace(TAG_CLOSE_PATTERN, '>');\r
- \r
- xmlString = xmlString.replace(TAG_ATTRIBUTE, ' xml_attname_begin$1xml_attname_end="xml_attvalue_begin$2xml_attvalue_end"');\r
- \r
- //xmlString = qx.xml.String.escape(xmlString);\r
- xmlString = xmlString.replace(new RegExp("(xml_div_begin)", "g"), '<div style="padding:1px;line-height:17px;padding-left:15px;">');\r
- xmlString = xmlString.replace(new RegExp("(xml_div_end)", "g"), '</div>');\r
- xmlString = xmlString.replace(new RegExp("(xml_tagname_begin)", "g"), '<b style="color:rgb(63,127,127);">');\r
- xmlString = xmlString.replace(new RegExp("(xml_tagname_end)", "g"), '</b>');\r
- xmlString = xmlString.replace(new RegExp("(xml_attname_begin)", "g"), '<b>');\r
- xmlString = xmlString.replace(new RegExp("(xml_attname_end)", "g"), '</b>');\r
- xmlString = xmlString.replace(new RegExp("(xml_attvalue_begin)", "g"), '<span style="color:rgb(0,0,255)">');\r
- xmlString = xmlString.replace(new RegExp("(xml_attvalue_end)", "g"), '</span>');\r
- xmlString = '<div style="margin-left:-10px;">' + xmlString + '</div>';\r
- this.htmlPane.setHtml(xmlString);\r
- var call = new qx.util.DeferredCall(function(){\r
- var htmlDom = this.htmlPane.getContentElement().getDomElement();\r
- var spans = qx.bom.Selector.query("span", htmlDom);\r
- for(var i=0;i<spans.length;i++){\r
- var oThis = this;\r
- spans[i].onclick = function(){oThis._setAttributesSpanEditable(this)};\r
- }\r
- }, this);\r
- call.schedule(); \r
- },\r
- \r
- _setAttributesSpanEditable : function(span){\r
- var width = qx.bom.element.Dimension.getWidth(span);\r
- var value = span.innerHTML;\r
- qx.bom.element.Style.set(span, "display", "none");\r
- var input = qx.bom.Element.create("input", {value:value, style:'width:'+width+'px;height:14px;border-width:1px;padding:0px;font-size:11px;'});\r
- //var input = new qx.html.Input("text");\r
- //input.setStyles({width:width+'px', height:'14px', borderWidth:'1px', padding:'0px', fontSize:'11px'}); \r
- qx.dom.Element.insertAfter(input, span);\r
- //input.setTextSelection(0);\r
- },\r
- \r
- /**\r
- * Whether this component is already contained in a scroller (return false) or not (return true).\r
- * @return {Boolean}\r
- */\r
- addScroll : function(){\r
- return false;\r
- },\r
- /**\r
- * Called at destruction time\r
- * Perform all the clean operations (stopping polling queries, etc.) \r
- */\r
- close : function(){\r
- \r
- } \r
- }\r
- \r
- \r
-});
\ No newline at end of file
+++ /dev/null
-qx.Class.define("org.argeo.jcr.ria.views.QueriesView", {\r
- extend : qx.ui.container.Composite,\r
- implement : [org.argeo.ria.components.IView], \r
-\r
- properties : {\r
- /**\r
- * The commands definition Map that will be automatically added and wired to the menubar and toolbar.\r
- * See {@link org.argeo.ria.event.CommandsManager#definitions} for the keys to use for defining commands.\r
- */\r
- commands : {\r
- init : {\r
- "refresh_query" : {\r
- label : "Refresh",\r
- icon : "org.argeo.jcr.ria/view-refresh.png",\r
- shortcut : null,\r
- enabled : true,\r
- menu : "Query",\r
- toolbar : null,\r
- callback : function(e) {\r
- var selection = this.tree.getSelection();\r
- if(!selection.length) return;\r
- var treeNode = selection[0];\r
- this._submitQuery(treeNode);\r
- },\r
- selectionChange : function(viewId, selection){\r
- this.setEnabled(false);\r
- if(selection && selection.length && !selection[0].getJcrNode){\r
- this.setEnabled(true);\r
- }\r
- }\r
- },\r
- "remove_query" : {\r
- label : "Remove",\r
- icon : "org.argeo.jcr.ria/edit-delete.png",\r
- shortcut : null,\r
- enabled : true,\r
- menu : "Query",\r
- toolbar : null,\r
- callback : function(e) {\r
- var selection = this.tree.getSelection();\r
- if(!selection.length) return;\r
- var treeNode = selection[0];\r
- treeNode.getParent().remove(treeNode);\r
- },\r
- selectionChange : function(viewId, selection){\r
- this.setEnabled(false);\r
- if(selection && selection.length && !selection[0].getJcrNode){\r
- this.setEnabled(true);\r
- }\r
- }\r
- } \r
- }\r
- },\r
- viewSelection : {\r
- nullable:false, \r
- check:"org.argeo.ria.components.ViewSelection"\r
- },\r
- instanceId : {\r
- init:"queriesView",\r
- event : "changeInstanceId"\r
- },\r
- instanceLabel : {\r
- init:"Queries",\r
- event : "changeInstanceLabel"\r
- },\r
- dataModel : {\r
- \r
- }\r
- },\r
- \r
- construct : function(){\r
- this.base(arguments);\r
- },\r
- \r
- members : {\r
- /**\r
- * The implementation should contain the GUI initialisation.\r
- * This is the role of the manager to actually add the graphical component to the pane, \r
- * so it's not necessary to do it here. \r
- * @param viewPane {org.argeo.ria.components.ViewPane} The pane manager\r
- * @param data {Mixed} Any object or data passed by the initiator of the view\r
- * @return {Boolean}\r
- */\r
- init : function(viewPane, dataModel){\r
- this.setViewSelection(new org.argeo.ria.components.ViewSelection(viewPane.getViewId())); \r
- this.setLayout(new qx.ui.layout.VBox());\r
- this.setDataModel(dataModel);\r
- \r
- this.radio = new qx.ui.form.RadioButtonGroup(new qx.ui.layout.HBox(5));\r
- var xPath = new qx.ui.form.RadioButton("XPath");\r
- xPath.setModel("xpath");\r
- var sql = new qx.ui.form.RadioButton("SQL");\r
- sql.setModel("sql");\r
- this.radio.add(xPath);\r
- this.radio.add(sql);\r
- \r
- var topLayout = new qx.ui.container.Composite(new qx.ui.layout.HBox(5));\r
- topLayout.add(new qx.ui.basic.Label("Query (Ctrl+Enter to submit):"));\r
- topLayout.add(new qx.ui.core.Spacer(), {flex:1});\r
- topLayout.add(this.radio);\r
- topLayout.setPadding(0,2,2,2);\r
- this.add(topLayout);\r
- \r
- this.textarea = new qx.ui.form.TextArea();\r
- this.textarea.setHeight(60);\r
- this.textarea.setMarginBottom(5);\r
- this.add(this.textarea);\r
- this.textarea.addListener("keypress", function(e){\r
- if(e.getKeyIdentifier() == "Enter" && e.isCtrlOrCommandPressed()){\r
- this._submitQuery();\r
- }\r
- }, this);\r
- \r
- \r
- var resLabel = new qx.ui.basic.Label("Results");\r
- resLabel.setPadding(0, 2, 2, 2);\r
- this.add(resLabel);\r
- \r
- this.tree = new qx.ui.tree.Tree(); \r
- this.add(this.tree, {flex:1});\r
- },\r
- /**\r
- * The implementation should contain the real data loading (i.o. query...)\r
- * @return {Boolean}\r
- */\r
- load : function(){\r
- var dataModel = this.getDataModel();\r
- \r
- this.treeBase = new qx.ui.tree.TreeFolder("Queries");\r
- this.tree.setRoot(this.treeBase);\r
- this.tree.setHideRoot(true);\r
- this.treeBase.setOpen(true);\r
- \r
- this.tree.addListener("changeSelection", function(e){\r
- var sel = this.tree.getSelection();\r
- var selection = [];\r
- var viewSelection = this.getViewSelection();\r
- viewSelection.clear(); \r
- for(var i=0;i<sel.length;i++){\r
- if(sel[i].getJcrNode){\r
- selection.push(sel[i].getJcrNode());\r
- }\r
- viewSelection.addNode(sel[i]);\r
- }\r
- this.getDataModel().setSelectionWithSource(selection, this);\r
- }, this);\r
- dataModel.addListener("changeSelection", function(e){\r
- if(this.getDataModel().getSelectionSource() == this) return;\r
- var selection = this.getDataModel().getSelection();\r
- // Arbitrary : for the moment, external select can only apply\r
- // to children of the current selection\r
- var crtSel = this.tree.getSelection();\r
- if(!crtSel.length || !selection.length) return;\r
- var crtTreeSel = crtSel[0];\r
- if(!crtTreeSel.getJcrNode) return;\r
- if(selection[0].getParent() && crtTreeSel.getJcrNode().getPath() == selection[0].getParent().getPath()){\r
- crtTreeSel.setOpen(true);\r
- var crtChildren =crtTreeSel.getChildren(); \r
- for(var i=0;i<crtChildren.length;i++){\r
- if(crtChildren[i].getJcrNode().getPath() == selection[0].getPath()){\r
- this.tree.setSelection([crtChildren[i]]);\r
- return;\r
- }\r
- }\r
- }else if(crtTreeSel.getJcrNode().getParent() && crtTreeSel.getJcrNode().getParent().getPath() == selection[0].getPath()){\r
- this.tree.setSelection([crtTreeSel.getParent()]);\r
- }\r
- \r
- }, this);\r
- this.tree.setContextMenu(org.argeo.ria.event.CommandsManager\r
- .getInstance().createMenuFromIds(["open", "refresh_query", "remove_query"]));\r
- \r
- },\r
- \r
- _submitQuery : function(existingQueryFolder){\r
- var query;\r
- var language;\r
- if(existingQueryFolder){\r
- var model = existingQueryFolder.getModel();\r
- query = model.query;\r
- language = model.language;\r
- existingQueryFolder.removeAll();\r
- }else{\r
- query = this.textarea.getValue();\r
- language = this.radio.getModelSelection()[0];\r
- }\r
- var src = "/org.argeo.slc.webapp/queryJcrNodes.jcr?language="+language+"&statement="+query;\r
- var conn = new org.argeo.ria.remote.Request(src, "GET", "application/json");\r
- conn.addListener("completed", function(response){\r
- var json = response.getContent();\r
- this._addQueryResult(language, query, json, existingQueryFolder);\r
- }, this);\r
- conn.send();\r
- },\r
- \r
- _addQueryResult : function(language, query, results, queryFolder){\r
- \r
- var label = (language=="xpath"?"XPath":"SQL") + " query : '"+query+"' ("+results.length+")";\r
- if(queryFolder){\r
- queryFolder.setLabel(label);\r
- var treeQuery = queryFolder;\r
- }else{\r
- var treeQuery = new qx.ui.tree.TreeFolder(label);\r
- treeQuery.setIcon("org.argeo.jcr.ria/system-search.png");\r
- treeQuery.setModel({language:language, query:query});\r
- this.treeBase.add(treeQuery);\r
- }\r
- var realRoot = this.getDataModel().getRootNode();\r
- var provider = realRoot.getNodeProvider();\r
- for(var i=0;i<results.length;i++){\r
- var child = new org.argeo.jcr.ria.model.Node(results[i], provider, true);\r
- child.setPath(results[i]);\r
- var childTree = new org.argeo.jcr.ria.views.JcrTreeFolder(child);\r
- treeQuery.add(childTree);\r
- } \r
- },\r
- \r
- /**\r
- * Whether this component is already contained in a scroller (return false) or not (return true).\r
- * @return {Boolean}\r
- */\r
- addScroll : function(){\r
- return false;\r
- },\r
- /**\r
- * Called at destruction time\r
- * Perform all the clean operations (stopping polling queries, etc.) \r
- */\r
- close : function(){\r
- \r
- } \r
- \r
- }\r
-});
\ No newline at end of file
+++ /dev/null
-qx.Class.define("org.argeo.jcr.ria.views.TreeView", {\r
- extend : qx.ui.container.Composite,\r
- implement : [org.argeo.ria.components.IView], \r
-\r
- properties : {\r
- /**\r
- * The commands definition Map that will be automatically added and wired to the menubar and toolbar.\r
- * See {@link org.argeo.ria.event.CommandsManager#definitions} for the keys to use for defining commands.\r
- */\r
- commands : {\r
- init : {\r
- "zoom_in" : {\r
- label : "Zoom To Node",\r
- icon : "org.argeo.jcr.ria/zoom-in.png",\r
- shortcut : null,\r
- enabled : true,\r
- menu : "Zoom",\r
- toolbar : null,\r
- callback : function(e) {\r
- var selection = this.tree.getSelection();\r
- if(!selection.length) return;\r
- var path = selection[0].getJcrNode().getPath();\r
- this.getDataModel().requireContextChange(path);\r
- },\r
- selectionChange : function(viewId, selection){\r
- if(viewId != "treeview") return;\r
- if(!selection || !selection.length) return;\r
- var treeNode = selection[0];\r
- if(treeNode.getParent()!=null){\r
- this.setEnabled(true);\r
- }else{\r
- this.setEnabled(false);\r
- }\r
- }\r
- },\r
- "zoom_out" : {\r
- label : "Zoom Out",\r
- icon : "org/argeo/jcr/ria/zoom-out.png",\r
- shortcut : null,\r
- enabled : true,\r
- menu : "Zoom",\r
- toolbar : null,\r
- submenu : [],\r
- callback : function(e) {\r
- },\r
- submenuCallback : function(commandId){\r
- this.getDataModel().requireContextChange(commandId);\r
- },\r
- selectionChange : function(viewId, selection){\r
- if(viewId != "treeview") return;\r
- if(!selection || !selection.length) return;\r
- var treeNode = selection[0];\r
- if(treeNode.getParent()!=null || treeNode.getJcrNode().itemIsRoot()){\r
- this.setEnabled(false);\r
- return;\r
- }\r
- this.setEnabled(true);\r
- var nodePath = treeNode.getJcrNode().getPath();\r
- var parts = nodePath.split("\/");\r
- var pathes = [];\r
- parts.pop();\r
- if(parts.length > 1){\r
- var initLength = parts.length; \r
- for(var i=0;i<initLength;i++){\r
- var newPath = parts.join("/");\r
- pathes.push({label:newPath,icon:'org.argeo.jcr.ria/folder_16.png', commandId:newPath});\r
- parts.pop();\r
- }\r
- }\r
- this.setMenuDef(pathes);\r
- }\r
- },\r
- "refresh" : {\r
- label : "Refresh",\r
- icon : "org/argeo/jcr/ria/view-refresh.png",\r
- shortcut : null,\r
- enabled : true,\r
- menu : "Selection",\r
- toolbar : "selection",\r
- callback : function(e) {\r
- var selection = this.tree.getSelection();\r
- if(!selection.length) return;\r
- var jcrNode = selection[0].getJcrNode();\r
- var children = jcrNode.getChildren();\r
- for(var i=0;i<children.length;i++){\r
- jcrNode.removeChild(children[i]);\r
- }\r
- jcrNode.setLoadState("empty");\r
- jcrNode.load();\r
- },\r
- selectionChange : function(viewId, selection){\r
- this.setEnabled(false);\r
- if(selection && selection.length && selection[0].getJcrNode){\r
- this.setEnabled(true);\r
- }\r
- }\r
- },\r
- "open" : {\r
- label : "Open",\r
- icon : "org.argeo.jcr.ria/document-open.png",\r
- shortcut : null,\r
- enabled : true,\r
- menu : "Selection",\r
- toolbar : "selection",\r
- callback : function(e) {\r
- var selection = this.tree.getSelection();\r
- if(!selection.length) return;\r
- var jcrNode = selection[0].getJcrNode();\r
- var viewsManager = org.argeo.ria.components.ViewsManager.getInstance(); \r
- var testView = viewsManager.initIViewClass(org.argeo.jcr.ria.views.PlainXmlViewer, "editor", jcrNode, "close");\r
- testView.load(jcrNode);\r
- \r
- },\r
- selectionChange : function(viewId, selection){\r
- this.setEnabled(false);\r
- if(selection && selection.length && selection[0].getJcrNode){\r
- this.setEnabled(true);\r
- }\r
- }\r
- },\r
- "dl" : {\r
- label : "Download",\r
- icon : "org.argeo.jcr.ria/go-down.png",\r
- shortcut : null,\r
- enabled : true,\r
- menu : "Selection",\r
- toolbar : "selection",\r
- callback : function(e) {\r
- var selection = this.tree.getSelection();\r
- if(!selection.length) return;\r
- var jcrNode = selection[0].getJcrNode();\r
- var url = '/org.argeo.slc.webapp/getJcrItem.jcr?path=' + jcrNode.getPath() + '&download=true';\r
- org.argeo.ria.Application.INSTANCE.javascriptDownloadLocation(url);\r
- },\r
- selectionChange : function(viewId, selection){\r
- this.setEnabled(false);\r
- if(selection && selection.length && selection[0].getJcrNode){\r
- this.setEnabled(true);\r
- }\r
- }\r
- } \r
- }\r
- },\r
- viewSelection : {\r
- nullable:false, \r
- check:"org.argeo.ria.components.ViewSelection"\r
- },\r
- instanceId : {\r
- init:"treeView",\r
- event : "changeInstanceId"\r
- },\r
- instanceLabel : {\r
- init:"JCR Tree",\r
- event : "changeInstanceLabel"\r
- },\r
- dataModel : {\r
- \r
- }\r
- },\r
- \r
- construct : function(){\r
- this.base(arguments);\r
- },\r
- \r
- members : {\r
- /**\r
- * The implementation should contain the GUI initialisation.\r
- * This is the role of the manager to actually add the graphical component to the pane, \r
- * so it's not necessary to do it here. \r
- * @param viewPane {org.argeo.ria.components.ViewPane} The pane manager\r
- * @param data {Mixed} Any object or data passed by the initiator of the view\r
- * @return {Boolean}\r
- */\r
- init : function(viewPane, dataModel){\r
- this.setViewSelection(new org.argeo.ria.components.ViewSelection(viewPane.getViewId())); \r
- this.setLayout(new qx.ui.layout.VBox());\r
- this.setDataModel(dataModel);\r
- \r
- this.tree = new qx.ui.tree.Tree(); \r
- this.add(this.tree, {flex:1});\r
- },\r
- /**\r
- * The implementation should contain the real data loading (i.o. query...)\r
- * @return {Boolean}\r
- */\r
- load : function(){\r
- var dataModel = this.getDataModel();\r
- dataModel.addListener("changeContextNode", function(event){\r
- var contextNode = event.getData();\r
- var newRoot = new org.argeo.jcr.ria.views.JcrTreeFolder(contextNode);\r
- this.tree.setRoot(newRoot);\r
- this.tree.setSelection([newRoot]);\r
- newRoot.setOpen(true);\r
- }, this);\r
- this.tree.addListener("changeSelection", function(e){\r
- var sel = this.tree.getSelection();\r
- var selection = [];\r
- var viewSelection = this.getViewSelection();\r
- viewSelection.clear(); \r
- for(var i=0;i<sel.length;i++){\r
- if(sel[i].getJcrNode){\r
- selection.push(sel[i].getJcrNode());\r
- }\r
- viewSelection.addNode(sel[i]);\r
- }\r
- this.getDataModel().setSelectionWithSource(selection, this);\r
- }, this);\r
- dataModel.addListener("changeSelection", function(e){\r
- if(this.getDataModel().getSelectionSource() == this) return;\r
- var selection = this.getDataModel().getSelection();\r
- // Arbitrary : for the moment, external select can only apply\r
- // to children of the current selection\r
- var crtSel = this.tree.getSelection();\r
- if(!crtSel.length || !selection.length) return;\r
- var crtTreeSel = crtSel[0];\r
- if(selection[0].getParent() && crtTreeSel.getJcrNode().getPath() == selection[0].getParent().getPath()){\r
- crtTreeSel.setOpen(true);\r
- var crtChildren =crtTreeSel.getChildren(); \r
- for(var i=0;i<crtChildren.length;i++){\r
- if(crtChildren[i].getJcrNode().getPath() == selection[0].getPath()){\r
- this.tree.setSelection([crtChildren[i]]);\r
- return;\r
- }\r
- }\r
- }else if(crtTreeSel.getParent() && crtTreeSel.getJcrNode().getParent().getPath() == selection[0].getPath()){\r
- this.tree.setSelection([crtTreeSel.getParent()]);\r
- }\r
- \r
- }, this);\r
- this.tree.setContextMenu(org.argeo.ria.event.CommandsManager\r
- .getInstance().createMenuFromIds(["open", "dl", "refresh", "zoom_in", "zoom_out"])); \r
- },\r
- \r
- /**\r
- * Whether this component is already contained in a scroller (return false) or not (return true).\r
- * @return {Boolean}\r
- */\r
- addScroll : function(){\r
- return false;\r
- },\r
- /**\r
- * Called at destruction time\r
- * Perform all the clean operations (stopping polling queries, etc.) \r
- */\r
- close : function(){\r
- \r
- } \r
- \r
- }\r
-});
\ No newline at end of file
+++ /dev/null
-{\r
- "info" : \r
- {\r
- "name" : "org.argeo.slc.web",\r
-\r
- "summary" : "Slc Web Application",\r
- "description" : "RIA Implementation for SLC Web",\r
- \r
- "homepage" : "http://www.argeo.org/",\r
-\r
- "license" : "LGPL",\r
- "authors" : \r
- [\r
- {\r
- "name" : "Charles du Jeu",\r
- "email" : "charles.dujeu@gmail.com"\r
- }\r
- ],\r
-\r
- "version" : "trunk",\r
- "qooxdoo-versions": ["1.1"]\r
- },\r
- \r
- "provides" : \r
- {\r
- "namespace" : "org.argeo.slc.web",\r
- "encoding" : "utf-8",\r
- "class" : "class",\r
- "resource" : "resource",\r
- "translation" : "translation",\r
- "type" : "library"\r
- }\r
-}\r
-\r
+++ /dev/null
-/**\r
- * IPerspective Implementation : Horizontal split pane defining two panes, "list" and "applet".\r
- */\r
-qx.Class.define("org.argeo.slc.web.LauncherPerspective",\r
-{\r
- extend : qx.core.Object,\r
- implement : [org.argeo.ria.components.IPerspective], \r
- \r
- construct : function(){\r
- this.base(arguments);\r
- org.argeo.ria.util.Element.DEFAULT_NAMESPACE_MAP = {slc:"http://argeo.org/projects/slc/schemas"};\r
- },\r
-\r
- statics : {\r
- LABEL : "SLC Execution",\r
- ICON : "ria/system-run.png"\r
- },\r
- \r
- members : {\r
- \r
- initViewPanes : function(viewsManager){\r
-\r
- this._splitPane = new qx.ui.splitpane.Pane("horizontal"); \r
- this._secondSplit = new qx.ui.splitpane.Pane("vertical");\r
- this._secondSplit.setDecorator(null);\r
- this._thirdSplit = new qx.ui.splitpane.Pane("horizontal");\r
- this._thirdSplit.setDecorator(null);\r
- \r
- var selectorPane = new org.argeo.ria.components.ViewPane("selector", "Available Scripts");\r
- viewsManager.registerViewPane(selectorPane);\r
- \r
- var batchPane = new org.argeo.ria.components.ViewPane("batch", "Batch");\r
- viewsManager.registerViewPane(batchPane);\r
- \r
- var logPane = new org.argeo.ria.components.ViewPane("main", "Executions Log");\r
- viewsManager.registerViewPane(logPane);\r
- logPane.setMinHeight(120);\r
- \r
- var specEditorPane = new org.argeo.ria.components.ViewPane("editor", "Specs Editor");\r
- viewsManager.registerViewPane(specEditorPane);\r
- \r
- this._secondSplit.add(this._thirdSplit, 3); \r
- this._secondSplit.add(logPane, 2); \r
- \r
- this._thirdSplit.add(batchPane, 4);\r
- this._thirdSplit.add(specEditorPane, 3);\r
- \r
- this._splitPane.add(selectorPane, 1); \r
- this._splitPane.add(this._secondSplit, 3);\r
-\r
- \r
- viewsManager.getViewPanesContainer().add(this._splitPane, {flex:1});\r
- \r
- },\r
- \r
- initViews : function(viewsManager){\r
- var formApplet = viewsManager.initIViewClass(org.argeo.slc.ria.FlowsSelectorView, "selector");\r
- formApplet.load();\r
- \r
- var batchApplet = viewsManager.initIViewClass(org.argeo.slc.ria.BatchView, "batch");\r
- batchApplet.load();\r
- \r
- var editor = viewsManager.initIViewClass(org.argeo.slc.ria.SpecsEditorView, "editor");\r
- editor.load();\r
- \r
- var logger = viewsManager.initIViewClass(org.argeo.slc.ria.SlcExecLoggerApplet, "main");\r
- logger.load();\r
- },\r
- \r
- remove : function(viewsManager){\r
- viewsManager.getViewPanesContainer().remove(this._splitPane); \r
- } \r
- \r
- }\r
-\r
-});
\ No newline at end of file
+++ /dev/null
-/**\r
- * IPerspective Implementation : Horizontal split pane defining two panes, "list" and "applet".\r
- */\r
- \r
-/* ************************************************************************\r
-#require(org.argeo.jcr.ria.JcrBrowser)\r
-#require(org.argeo.security.ria.Perspective)\r
-#asset(org/argeo/slc/ria/*)\r
-\r
-************************************************************************ */ \r
-qx.Class.define("org.argeo.slc.web.MonitorPerspective",\r
-{\r
- extend : qx.core.Object,\r
- implement : [org.argeo.ria.components.IPerspective], \r
- \r
- construct : function(){\r
- this.base(arguments);\r
- org.argeo.ria.util.Element.DEFAULT_NAMESPACE_MAP = {slc:"http://argeo.org/projects/slc/schemas"};\r
- },\r
- \r
- statics : {\r
- LABEL : "SLC Administration",\r
- ICON : "org/argeo/slc/ria/utilities-terminal.png"\r
- //ROLES_RESTRICTION : ["ROLE_ADMIN"]\r
- },\r
- \r
- members : {\r
- _splitPane : null, \r
- \r
- initViewPanes : function(viewsManager){\r
- \r
- this._splitPane = new qx.ui.splitpane.Pane("vertical");\r
- var mainPane = new org.argeo.ria.components.ViewPane("distrib", "Modular Distributions");\r
- this._splitPane.add(mainPane, 10);\r
- var uploadPane = new org.argeo.ria.components.ViewPane("upload", "Upload a distribution");\r
- this._splitPane.add(uploadPane, 1);\r
- viewsManager.registerViewPane(mainPane); \r
- viewsManager.registerViewPane(uploadPane); \r
- viewsManager.getViewPanesContainer().add(this._splitPane, {flex:1});\r
- \r
- },\r
- \r
- initViews : function(viewsManager){\r
- var pView = viewsManager.initIViewClass(org.argeo.slc.ria.monitor.DistListView, "distrib");\r
- var view = viewsManager.initIViewClass(org.argeo.slc.ria.monitor.UploadView, "upload");\r
- pView.load();\r
- view.load();\r
- },\r
- \r
- remove : function(viewsManager){\r
- viewsManager.getViewPanesContainer().remove(this._splitPane); \r
- }\r
- \r
- }\r
-\r
-});
\ No newline at end of file
+++ /dev/null
-/**\r
- * IPerspective Implementation : Horizontal split pane defining two panes, "list" and "applet".\r
- */\r
- \r
-/* ************************************************************************\r
-\r
-#asset(argeo-ria-lib/slc/resource/org.argeo.slc.ria/*)\r
-\r
-************************************************************************ */ \r
-qx.Class.define("org.argeo.slc.web.Perspective",\r
-{\r
- extend : qx.core.Object,\r
- implement : [org.argeo.ria.components.IPerspective], \r
- \r
- construct : function(){\r
- this.base(arguments);\r
- org.argeo.ria.util.Element.DEFAULT_NAMESPACE_MAP = {slc:"http://argeo.org/projects/slc/schemas"};\r
- },\r
- \r
- statics : {\r
- LABEL : "Test Results",\r
- ICON : "org/argeo/slc/ria/office-chart.png"\r
- },\r
- \r
- members : {\r
- _splitPane : null, \r
- \r
- initViewPanes : function(viewsManager){\r
- \r
- this._splitPane = new qx.ui.splitpane.Pane("horizontal");\r
- var topLeft = new org.argeo.ria.components.ViewPane("list", "Collection", {\r
- orientation : "horizontal",\r
- min : 36\r
- });\r
- topLeft.set({width:300});\r
- viewsManager.registerViewPane(topLeft);\r
- \r
- this._splitPane.add(topLeft, 1);\r
- var rightPane = new org.argeo.ria.components.TabbedViewPane("applet", "Test Detail"); \r
- viewsManager.registerViewPane(rightPane);\r
- this._splitPane.add(rightPane, 3);\r
- \r
- viewsManager.getViewPanesContainer().add(this._splitPane, {flex:1});\r
- \r
- },\r
- \r
- initViews : function(viewsManager){\r
- var view = viewsManager.initIViewClass(org.argeo.slc.web.TestList, "list");\r
- view.load();\r
- view.loadCollections();\r
- view.loadList();\r
- },\r
- \r
- remove : function(viewsManager){\r
- viewsManager.getViewPanesContainer().remove(this._splitPane); \r
- }\r
- \r
- }\r
-\r
-});
\ No newline at end of file
+++ /dev/null
-/**
- * Basic IView implementation for displaying the test results list, by collection.
- *
- * This component creates a Table object and feed it with the results. It adds a collection chooser to its viewPane header.
- *
- * It creates the following commands : "loadtestlist", "polllistloading", "opentest", "download", "copytocollection", "deletetest".
- */
-qx.Class.define("org.argeo.slc.web.TestList",
-{
- extend : qx.ui.container.Composite,
- implement : [org.argeo.ria.components.IView],
- include : [org.argeo.ria.session.MPrefHolder],
-
- statics : {
- riaPreferences : {
- "slc.web.TestList.DefaultAction" : {
- label : "Test List : Double Click default action",
- type : "list",
- list : ["Open","Download Xls"],
- defaultValue : "Open"
- }
- }
- },
-
- construct : function(){
- this.base(arguments, new qx.ui.layout.VBox());
- var model = new qx.ui.table.model.Simple();
- model.setColumns(["Test Case", "Date"]);
- this.table = new qx.ui.table.Table(model, {
- tableColumnModel: function(obj){
- return new qx.ui.table.columnmodel.Resize(obj)
- }
- });
- },
-
- properties :
- {
- /**
- * The viewPane containing this applet.
- */
- view : {
- init : null
- },
- viewSelection : {
- nullable:false,
- check:"org.argeo.ria.components.ViewSelection"
- },
- instanceId : {init:""},
- instanceLabel : {init:""},
- /**
- * The load list of available collection (Map of ids => labels)
- */
- collectionList : {
- init : {},
- check : "Map"
- },
- /**
- * The current collection id selected.
- */
- collectionId:{
- init : 'My Collection',
- check : "String"
- },
- currentOpenInstanceId : {
- check : "String",
- nullable:true
- },
- /**
- * The applet commands.
- */
- commands : {
- init : {
- "loadtestlist" : {
- label : "Load Collection",
- icon : "org/argeo/slc/ria/view-refresh.png",
- shortcut : "Control+l",
- enabled : true,
- menu : "Collection",
- toolbar : "collection",
- callback : function(e){
- this.loadList();
- },
- command : null
- },
- "polllistloading" : {
- label : "Auto load",
- icon : "org/argeo/slc/ria/document-open-recent.png",
- shortcut : "Control+l",
- enabled : true,
- toggle : true,
- menu : "Collection",
- toolbar : "collection",
- callback : function(event){
- this.pollListLoading(event.getTarget().getUserData("slc.command.toggleState"));
- },
- command : null
- },
- /*
- "copyfullcollection" : {
- label : "Copy to...",
- icon : "org/argeo/slc/ria/edit-copy.png",
- shortcut : null,
- enabled : false,
- menu : "Collection",
- toolbar : "collection",
- callback : function(e){
- // Call service to copy
- },
- submenu : {},
- submenuCallback : function(commandId){
- this.copySelectionToCollection(commandId, "current_collection");
- },
- init : function(){
- // Call at command creation
- org.argeo.ria.remote.RequestManager.getInstance().addListener("reload", function(event){
- if(event.getDataType() == "collection" || event.getDataType() == "test_cases"){
- var testList = org.argeo.ria.components.ViewsManager.getInstance().getViewPaneById("list").getContent();
- testList.collectionListToMenu(this);
- }
- }, this);
- },
- command : null
- },
- */
- "opentest" : {
- label : "Open",
- icon : "org/argeo/slc/ria/media-playback-start.png",
- shortcut : "Control+o",
- enabled : false,
- menu : "Selection",
- toolbar : "selection",
- callback : function(e){
- var viewsManager = org.argeo.ria.components.ViewsManager.getInstance();
- var classObj = org.argeo.slc.ria.Applet;
- var xmlNodes = viewsManager.getViewPaneSelection("list").getNodes();
- var iView = viewsManager.initIViewClass(classObj, "applet", xmlNodes[0]);
- this.setCurrentOpenInstanceId(iView.getInstanceId());
- iView.load(xmlNodes[0]);
- },
- selectionChange : function(viewId, xmlNodes){
- if(viewId != "list") return;
- this.setEnabled(false);
- if(xmlNodes == null || !xmlNodes.length) return;
- this.setEnabled(true);
- },
- command : null
- },
- "download" : {
- label : "Download as...",
- icon : "org/argeo/slc/ria/go-down.png",
- shortcut : null,
- enabled : false,
- menu : "Selection",
- toolbar : "selection",
- callback : function(e){ },
- command : null,
- submenu : [
- {'label':"Xsl", 'icon':'org/argeo/slc/ria/mime-xsl.png', 'commandId':'xsl'},
- {'label':"Xml", 'icon':'org/argeo/slc/ria/mime-xml.png', 'commandId':'xml'},
- {'label':"Excel", 'icon':'org/argeo/slc/ria/mime-xls.png', 'commandId':'xls'},
- {'label':"Pdf", 'icon':'org/argeo/slc/ria/mime-pdf.png', 'commandId':'pdf'}
- ],
- submenuCallback : function(commandId){
- var uuid = this.extractTestUuid();
- var urls = {
- xsl : "resultView.xslt",
- xml : "resultView.xml",
- xls : "resultView.xls",
- pdf : "resultView.pdf"
- };
- var url = org.argeo.slc.ria.SlcApi.DEFAULT_CONTEXT + "/"+urls[commandId]+"?uuid="+uuid;
- if(commandId == "xls" || commandId == "pdf"){
- org.argeo.ria.Application.INSTANCE.javascriptDownloadLocation(url);
- }else{
- var win = window.open(url);
- }
- },
- selectionChange : function(viewId, xmlNodes){
- if(viewId!="list")return;
- //this.clearMenus();
- this.setEnabled(false);
- if(xmlNodes == null || !xmlNodes.length) return;
- this.setEnabled(true);
- }
- },
- "attachments" : {
- label : "Attachments",
- icon : "org/argeo/slc/ria/document-save-as.png",
- shortcut : null,
- enabled : false,
- menu : "Selection",
- toolbar : "selection",
- callback : function(e){ },
- command : null,
- submenu : [],
- submenuCallback : function(commandId){
- var split = commandId.split("__commandseparator__");
- var uuid = split[0];
- var contentType = split[1];
- var name = split[2];
- var url = org.argeo.slc.ria.SlcApi.buildGetAttachmentUrl(uuid, contentType, name);
- var win = window.open(url);
- },
- selectionChange : function(viewId, xmlNodes){
- if(viewId!="list")return;
- this.clearMenus();
- this.setEnabled(false);
- if(xmlNodes == null || !xmlNodes.length || xmlNodes.length != 1) return;
- // Check slc:simple-attachment tags
- var attachs = org.argeo.ria.util.Element.selectNodes(xmlNodes[0], "slc:attachments/slc:simple-attachment");
- if(attachs && attachs.length){
- var submenus = [];
- for(var i=0;i<attachs.length;i++){
- var uuid = org.argeo.ria.util.Element.getSingleNodeText(attachs[i], "slc:uuid");
- var contentType = (org.argeo.ria.util.Element.getSingleNodeText(attachs[i], "slc:content-type")||'');
- var name = org.argeo.ria.util.Element.getSingleNodeText(attachs[i], "slc:name");
- submenus.push({
- label:name,
- icon : 'org.argeo.slc.ria/mime-text-plain.png',
- commandId:uuid+'__commandseparator__'+contentType+'__commandseparator__'+name
- });
- }
- this.setMenuDef(submenus);
- this.setEnabled(true);
- }
- }
- },
- "copytocollection" : {
- label : "Copy to...",
- icon : "org/argeo/slc/ria/edit-copy.png",
- shortcut : "Control+c",
- enabled : false,
- menu : "Selection",
- toolbar : "selection",
- callback : function(e){
- // Call service to copy
- },
- submenu : {},
- submenuCallback : function(commandId){
- this.copySelectionToCollection(commandId, "current_selection");
- },
- init : function(){
- // Call at command creation
- org.argeo.ria.remote.RequestManager.getInstance().addListener("reload", function(event){
- if(event.getDataType() == "collection" || event.getDataType() == "test_cases"){
- var testList = org.argeo.ria.components.ViewsManager.getInstance().getViewPaneById("list").getContent();
- testList.collectionListToMenu(this, true);
- }
- }, this);
- },
- selectionChange : function(viewId, xmlNodes){
- if(viewId != "list") return;
- this.setEnabled(false);
- if(xmlNodes == null || !xmlNodes.length) return;
- this.setEnabled(true);
- },
- command : null
- },
- "deletetest" : {
- label : "Delete",
- icon : "org/argeo/slc/ria/edit-delete.png",
- shortcut : "Control+d",
- enabled : false,
- menu : "Selection",
- toolbar : "selection",
- callback : function(e){
- var modal = new org.argeo.ria.components.Modal("Confirm", null);
- var testUuid = this.extractTestUuid();
- modal.addConfirm("Are you sure you want to delete<br> test " + testUuid + "?");
- modal.addListener("ok", function(){
- var request = org.argeo.slc.ria.SlcApi.getRemoveResultService(this.getCollectionId(), this.extractTestUuid());
- request.addListener("completed", function(response){
- if(this.getCurrentOpenInstanceId() == "test:"+testUuid){
- var appletView = org.argeo.ria.components.ViewsManager.getInstance().getViewPaneById("applet");
- if(appletView.contentExists(this.getCurrentOpenInstanceId())){
- appletView.closeCurrent();
- }
- this.setCurrentOpenInstanceId(null);
- }
- this.loadCollections();
- this.loadList();
- this.info("Test was successfully deleted");
- }, this);
- request.send();
- }, this);
- modal.attachAndShow();
- },
- selectionChange : function(viewId, xmlNodes){
- if(viewId != "list") return;
- this.setEnabled(false);
- if(xmlNodes == null || !xmlNodes.length) return;
- this.setEnabled(true);
- },
- command : null
- }
- }
- }
- },
-
- members : {
- init : function(viewPane, data){
- this.setView(viewPane);
- this.setViewSelection(new org.argeo.ria.components.ViewSelection(viewPane.getViewId()));
- },
- load : function(){
- this.table.set({
- statusBarVisible: false,
- showCellFocusIndicator:false,
- columnVisibilityButtonVisible:false,
- contextMenu : org.argeo.ria.event.CommandsManager.getInstance().createMenuFromIds(["opentest", "download", "copytocollection", "deletetest"]),
- decorator : new qx.ui.decoration.Background("#fff")
- });
- var viewPane = this.getView();
- this.table.addListener("dblclick", function(e){
- var pref = this.getRiaPreferenceValue("slc.web.TestList.DefaultAction");
- if(pref == "Open"){
- org.argeo.ria.event.CommandsManager.getInstance().executeCommand("opentest");
- }else{
- var uuid = this.extractTestUuid();
- var url = "../resultView.xslt?uuid="+uuid;
- alert('Should download : '+url);
- }
- }, this);
- var columnModel = this.table.getTableColumnModel();
- columnModel.getBehavior().setWidth(0, "60%");
- var renderer = new org.argeo.slc.web.XmlRenderer();
- columnModel.setDataCellRenderer(0, renderer);
- columnModel.setDataCellRenderer(1, renderer);
-
- this.table.getSelectionManager().getSelectionModel().addListener("changeSelection", function(e){
- var viewSelection = this.getViewSelection();
- viewSelection.clear();
- var selectionModel = this.table.getSelectionManager().getSelectionModel();
- if(!selectionModel.getSelectedCount()){
- return;
- }
- var ranges = this.table.getSelectionManager().getSelectionModel().getSelectedRanges();
- var xmlNode = this.table.getTableModel().getRowData(ranges[0].minIndex);
- viewSelection.addNode(xmlNode);
- //viewPane.setViewSelection(viewSelection);
- }, this);
-
- var select = new qx.ui.form.SelectBox();
- this.getView().addHeaderComponent(select);
- this.getView().setViewTitle("");
- this.add(this.table, {flex:1});
-
- select.addListener("changeSelection", this.collectionSelectorListener, this);
-
- org.argeo.ria.remote.RequestManager.getInstance().addListener("reload", function(event){
- if(event.getDataType()!="collection") return;
- select.removeListener("changeSelection", this.collectionSelectorListener, this);
- var collectionList = event.getContent();
- select.removeAll();
- for(key in collectionList){
- var item = new qx.ui.form.ListItem(collectionList[key], "org/argeo/slc/ria/folder.png", key);
- select.add(item);
- if(key == this.getCollectionId()){
- select.setSelection([item]);
- }
- }
- if(qx.lang.Object.getLength(collectionList)){
- var selection = select.getSelection();
- var value = selection[0].getModel();
- this.setCollectionId(value);
- }
- select.addListener("changeSelection", this.collectionSelectorListener, this);
- }, this);
-
- },
-
- /**
- * Use SlcApi to load the available collections.
- */
- loadCollections : function(){
- var request = org.argeo.slc.ria.SlcApi.getListCollectionsService();
- var NSMap = {slc:"http://argeo.org/projects/slc/schemas"};
- request.addListener("completed", function(response){
- var xml = response.getContent();
- var collections = {};
- var nodes = org.argeo.ria.util.Element.selectNodes(xml, "//slc:ref", NSMap);
- for(var i=0;i<nodes.length;i++){
- var collId = qx.xml.Element.getSingleNodeText(nodes[i], ".");
- collections[collId] = collId;
- }
- this.setCollectionList(collections);
- org.argeo.ria.remote.RequestManager.getInstance().fireReloadEvent("collection", this.getCollectionList());
- }, this);
- request.setAsynchronous(false);
- request.send();
- },
-
- /**
- * Load the results of the currently selected collection.
- */
- loadList : function(){
- var model = this.table.getTableModel();
- model.removeRows(0, model.getRowCount());
- var commandManager = org.argeo.ria.event.CommandsManager.getInstance();
- var request = org.argeo.slc.ria.SlcApi.getListResultsService(this.getCollectionId(), null, [commandManager.getCommandById("loadtestlist"), this.getView()]);
- var NSMap = {slc:"http://argeo.org/projects/slc/schemas"};
- request.addListener("completed", function(response){
- var xml = response.getContent();
- this.debug("Successfully loaded XML");
- var nodes = org.argeo.ria.util.Element.selectNodes(xml, "//slc:result-attributes", NSMap);
- //model.addRows(nodes);
-
- for(var i=0; i<nodes.length;i++){
- model.addRows([nodes[i]]);
- }
- }, request);
- request.send();
- },
-
- /**
- * Enable/disable the automatic reloading of the list.
- * @param state {Boolean} Whether the automatic reloading must be started or stopped.
- */
- pollListLoading : function(state){
- if(!this.timer){
- this.timer = new qx.event.Timer(5000);
- this.timer.addListener("interval", this.loadList, this);
- }
- if(state){
- this.loadList();
- this.timer.start();
- }else{
- this.timer.stop();
- }
- },
-
- /**
- * Creates a menu gui component from the currently loaded collectionList.
- * @param command {qx.ui.core.Command} The command on which to attach the created menu.
- * @param checkSelection {Boolean} Whether at the end, we must check the current viewSelection to enable/disable the command accordingly.
- */
- collectionListToMenu : function(command, checkSelection){
- command.setEnabled(false);
- command.clearMenus();
- var collectionList = this.getCollectionList();
- if(!collectionList) return;
- var submenus = [];
- for(var key in collectionList){
- if(this.getCollectionId() && key == this.getCollectionId()) continue;
- submenus.push({
- "label":collectionList[key],
- "icon":"org/argeo/slc/ria/folder.png",
- "commandId":key
- });
- }
- submenus.push({'separator':true});
- submenus.push({"label":"New...", "icon":"org/argeo/slc/ria/folder-new.png", "commandId":"slc.client.create"});
- command.setMenuDef(submenus);
- if(checkSelection){
- var viewSelection = this.getView().getViewSelection();
- if(viewSelection.getCount()) command.setEnabled(true);
- }else{
- command.setEnabled(true);
- }
- },
- /**
- * Use SlcApi "addResult" service to add selected results to a given collection.
- * If collectionId is "slc.client.create", first triggers a modal dialog to enter a new collection name, then retrigger itself with the new id.
- * @param collectionId {String} The id of the destination collection, or "slc.client.create".
- * @param selectionType {String} "current_collection"|"current_selection". The first adds the whole collection content to the destination, the second only selected results.
- */
- copySelectionToCollection:function(collectionId, selectionType){
- if(collectionId == "slc.client.create"){
- var modal = new org.argeo.ria.components.Modal("Create collection", "org/argeo/slc/ria/folder-new.png");
- modal.makePromptForm("Enter the new collection name", function(value){
- if(value == ""){
- alert("Please enter a name for the new collection!");
- return false;
- }
- else {
- // Create the collection now, then recall the callback with the new name.
- this.copySelectionToCollection(value, selectionType);
- return true;
- }
- }, this);
- modal.attachAndShow();
- return;
- }
-
- var currentFocus = org.argeo.ria.components.ViewsManager.getInstance().getCurrentFocus();
- if(currentFocus.getViewId() == "applet"){
- alert("Should copy data from the applet - command was " + collectionId);
- return;
- }
-
- if(selectionType == "current_collection"){
- this.error("Not implemented yet!");
- }else if(selectionType == "current_selection"){
- // get selection ID
- var request = org.argeo.slc.ria.SlcApi.getAddResultService(collectionId,this.extractTestUuid());
- request.addListener("completed", function(response){
- this.info("Result successfully copied to collection!");
- this.loadCollections();
- }, this);
- request.send();
- }
- },
-
- /**
- * Utilitary function to extract test unique id from the currently selected node.
- * @return {String} The test unique id.
- */
- extractTestUuid: function(){
- var NSMap = {slc:"http://argeo.org/projects/slc/schemas"};
- var xmlNodes = this.getView().getViewSelection().getNodes();
- var uuid = qx.dom.Node.getText(org.argeo.ria.util.Element.selectSingleNode(xmlNodes[0], "slc:uuid"));
- return uuid;
- },
-
- /**
- * Listener of the collection selector (select box added to the viewpane header).
- * @param event {qx.event.type.Event} The event.
- */
- collectionSelectorListener : function(event){
- var selection = event.getData();
- this.setCollectionId(selection[0].getModel());
- this.loadList();
- },
-
- addScroll : function(){
- return false;
- },
-
- close : function(){
- if(this.timer){
- this.pollListLoading(false);
- }
- }
-
- }
-});
\ No newline at end of file
+++ /dev/null
-/**\r
- * Basic helper for SLC XML results to be displayed in a qx.ui.table.\r
- * Overrides the html of the standard qx.ui.table.cellrenderer.String\r
- * \r
- * TODO : put in org.argeo.slc.ria package\r
- * \r
- */\r
-qx.Class.define("org.argeo.slc.web.XmlRenderer",\r
-{\r
- extend : qx.ui.table.cellrenderer.String,\r
-\r
- /*\r
- *****************************************************************************\r
- MEMBERS\r
- *****************************************************************************\r
- */\r
-\r
- members :\r
- {\r
- /**\r
- * Overrides the parent method.\r
- * @param cellInfo {Map} The current cell data \r
- * @return {String}\r
- */\r
- _getContentHtml : function(cellInfo) {\r
- var xmlNode = cellInfo.rowData;\r
- if(!xmlNode) return "";\r
- var xPath;\r
- var NSMap = {slc:"http://argeo.org/projects/slc/schemas"};\r
- switch(cellInfo.col){\r
- case 0 :\r
- xPath = "slc:uuid";\r
- var nameParam = org.argeo.ria.util.Element.selectSingleNode(xmlNode, xPath, NSMap);\r
- var value = qx.bom.String.escape(qx.dom.Node.getText(nameParam) || "Not Found");\r
- break;\r
- case 1 : \r
- xPath = "slc:close-date";\r
- var nameParam = org.argeo.ria.util.Element.selectSingleNode(xmlNode, xPath, NSMap);\r
- var value = qx.bom.String.escape(qx.dom.Node.getText(nameParam) || "NOT CLOSED");\r
- if(value == "NOT CLOSED") return value;\r
- var splits = value.split(".");\r
- value = splits[0].replace("T", " "); \r
- var dateFormat = new qx.util.format.DateFormat("yyyy-MM-dd HH:mm:ss");\r
- try {\r
- var date = dateFormat.parse(value);\r
- var dateFormat2 = new qx.util.format.DateFormat("MMM d, yy HH:mm:ss");\r
- return dateFormat2.format(date);\r
- }catch(e){}\r
- break;\r
- default :\r
- return "";\r
- break;\r
- }\r
- \r
- return value;\r
- },\r
- \r
- // overridden\r
- /**\r
- * Overrides parent method\r
- * @param cellInfo {Map} Current cell data\r
- * @return {String}\r
- */\r
- _getCellClass : function(cellInfo) {\r
- return this.base(arguments, cellInfo);\r
- }\r
- \r
- }\r
-});
\ No newline at end of file
+++ /dev/null
-/**\r
- * Specific classes used by the SLC-WEB RIA application.\r
- */
\ No newline at end of file
+++ /dev/null
-{\r
- "info" : \r
- {\r
- "name" : "org.argeo.slc.ria",\r
-\r
- "summary" : "Slc Ria library",\r
- "description" : "Utilities for SLC RIA",\r
- \r
- "homepage" : "http://www.argeo.org/",\r
-\r
- "license" : "LGPL",\r
- "authors" : \r
- [\r
- {\r
- "name" : "Charles du Jeu",\r
- "email" : "charles.dujeu@gmail.com"\r
- }\r
- ],\r
-\r
- "version" : "trunk",\r
- "qooxdoo-versions": ["1.1"]\r
- },\r
- \r
- "provides" : \r
- {\r
- "namespace" : "org.argeo.slc.ria",\r
- "encoding" : "utf-8",\r
- "class" : "class",\r
- "resource" : "resource",\r
- "translation" : "translation",\r
- "type" : "library"\r
- }\r
-}\r
-\r
+++ /dev/null
-/**
- * The canonical SLC applet for test result viewing. It will display a TreeTestResult in a TreeVirtual component
- * composed of four columns : test name, state (passed/failed/error), message and date.
- *
- * It makes use of the StatusCellRenderer class for the "state" cell being a background-colored cell, the color depending on the FAILED or PASSED state message.
- * The only associated command is the "Close" command.
- */
-qx.Class.define("org.argeo.slc.ria.Applet",
-{
- extend : qx.ui.container.Composite,
- implement : [org.argeo.ria.components.IView],
-
- construct : function(){
- this.base(arguments);
- this.setLayout(new qx.ui.layout.VBox());
- this.passedStatus = "PASSED";
- this.failedStatus = "FAILED";
- this.loaded = false;
- },
-
- properties :
- {
- /**
- * The viewPane inside which this applet is added.
- */
- view : {
- init : null
- },
- viewSelection : {
- nullable:false,
- check:"org.argeo.ria.components.ViewSelection"
- },
- instanceId : {
- init : ""
- },
- instanceLabel : {
- init : ""
- },
- /**
- * Commands definition, see {@link org.argeo.ria.event.CommandsManager#definitions}
- */
- commands : {
- init : {
- "close" : {
- label : "Close Current",
- icon : "org/argeo/slc/ria/window-close.png",
- shortcut : "Control+w",
- enabled : true,
- menu : "Test",
- toolbar : "result",
- callback : function(e){
- this.getView().closeCurrent();
- //this.getView().empty();
-
- },
- command : null
- }
- /*,
- "copytocollection" : {
- shared : true,
- selectionChange : function(viewId, xmlNode){
- if(viewId != "applet") return;
- if(!xmlNode){
- this.setEnabled(false);
- }else{
- this.setEnabled(true);
- }
- }
- },
- "deletetest" : {
- shared : true,
- callback : function(e){
- //this.debug(this);
- alert("Should delete applet selection in " + this.getInstanceId());
- },
- selectionChange : function(viewId, xmlNode){
- if(viewId != "applet") return;
- if(!xmlNode){
- this.setEnabled(false);
- }else{
- this.setEnabled(true);
- }
- }
- }
- */
- }
- }
- },
-
- members :
- {
- init : function(viewPane, xmlNode){
- this.setView(viewPane);
- this.setViewSelection(new org.argeo.ria.components.ViewSelection(viewPane.getViewId()));
- this.data = xmlNode;
- if(this.data){
- this.testId = org.argeo.ria.util.Element.getSingleNodeText(this.data, "slc:uuid");
- this.setInstanceId("test:"+this.testId);
- this.setInstanceLabel("Test " + this.testId.substring(0,4)+"...");
- }
- },
-
- load : function(){
- if(!this.data) return;
- if(this.loaded) return;
- // Load XML or Whatever
- var service;
- //this.testId = qx.dom.Node.getText(org.argeo.ria.util.Element.selectSingleNode(this.data, "slc:uuid"));
- this.getView().setViewTitle("Test "+this.testId);
- var request = org.argeo.slc.ria.SlcApi.getLoadResultService(this.testId);
- request.addListener("completed", function(response){
- this.createXmlGui(response.getContent());
- this.getView().setOnLoad(false);
- this.loaded = true;
- }, this);
- this.getView().setOnLoad(true);
- request.send();
-
- },
-
- addScroll : function(){
- return false;
- },
-
- close : function(){
-
- },
-
- /**
- * Creates the GUI.
- * @param responseXml {Document} The xml response of the "load" query.
- */
- createXmlGui : function(responseXml){
- var NSMap = {
- "slc" : "http://argeo.org/projects/slc/schemas"
- }
- if(!qx.Class.hasMixin(qx.ui.treevirtual.TreeVirtual, qx.ui.treevirtual.MNode)){
- qx.Class.include(qx.ui.treevirtual.TreeVirtual,qx.ui.treevirtual.MNode);
- }
- this.tree = new qx.ui.treevirtual.TreeVirtual(["Test", "State", "Message", "Id"]);
- this.tree.getTableColumnModel().setDataCellRenderer(0, new org.argeo.ria.util.TreeDataCellRenderer());
- this.tree.getDataRowRenderer().setHighlightFocusRow(false); // Default row renderer
- this.tree.setRowHeight(18);
- this.tree.setStatusBarVisible(false);
- this.tree.setDecorator(new qx.ui.decoration.Background("#fff"));
- var model = this.tree.getDataModel();
- var resNodes = org.argeo.ria.util.Element.selectNodes(responseXml, "//slc:result-part", NSMap);
- var resultParts = {};
- var addedPaths = {};
- for(var i=0;i<resNodes.length;i++){
- var currentParentId = null;
- var node = resNodes[i];
- var pathAttr = qx.xml.Element.getSingleNodeText(node, "@path");
- var pathParts = pathAttr.split("/");
- if(pathParts[0] == ""){
- pathParts.shift();
- }
- var crtPath = "";
- for(var j=0;j<pathParts.length;j++){
- //if(pathParts[j] == "") continue;
- crtPath = crtPath.concat("/", pathParts[j]);
- if(addedPaths[crtPath]) {
- currentParentId = addedPaths[crtPath];
- continue; // Node already exists, set as parent and go to next!
- }
- var element = org.argeo.ria.util.Element.selectSingleNode(responseXml, '//slc:element[@path="'+crtPath+'"]', NSMap);
- var label;
- if(element != null){
- label = org.argeo.ria.util.Element.getSingleNodeText(element, "*/slc:label", NSMap);
- }else{
- label = crtPath;
- }
- var simpleResults = org.argeo.ria.util.Element.selectNodes(node, "slc:part-sub-list/slc:parts/slc:simple-result-part", NSMap);
-
- var newId;
- //newId = model.addBranch(currentParentId, label, false);
-
- // Test Leaf Node
- if(!simpleResults || !simpleResults.length){
- newId = model.addBranch(currentParentId, label, false);
- addedPaths[crtPath] = newId;
- currentParentId = newId;
- continue;
- }
- if(simpleResults.length == 1){
- //newId = model.addBranch(currentParentId, label, false);
- var sResNode = simpleResults[0];
- newId = model.addBranch(currentParentId, label);
- model.setColumnData(newId, 3, org.argeo.ria.util.Element.getSingleNodeText(sResNode, "slc:test-run-uuid", NSMap));
- model.setColumnData(newId, 2, org.argeo.ria.util.Element.getSingleNodeText(sResNode, "slc:message", NSMap));
- var status = org.argeo.ria.util.Element.getSingleNodeText(sResNode, "slc:status", NSMap);
- if(status != "PASSED"){
- status = this.failedStatus ;
- this._setParentBranchAsFailed(newId);
- }else{
- status = this.passedStatus;
- }
- model.setColumnData(newId, 1, status);
- addedPaths[crtPath] = newId;
- currentParentId = newId;
- continue;
- }
- newId = model.addBranch(currentParentId, label, false);
- for(var k=0;k<simpleResults.length;k++){
- var sResNode = simpleResults[k];
- resId = model.addLeaf(currentParentId, label);
- model.setColumnData(resId, 3, org.argeo.ria.util.Element.getSingleNodeText(sResNode, "slc:test-run-uuid", NSMap));
- model.setColumnData(resId, 2, org.argeo.ria.util.Element.getSingleNodeText(sResNode, "slc:message", NSMap));
- var status = org.argeo.ria.util.Element.getSingleNodeText(sResNode, "slc:status", NSMap);
- if(status != "PASSED"){
- status = this.failedStatus ;
- this._setParentBranchAsFailed(resId);
- }else{
- status = this.passedStatus;
- }
- model.setColumnData(resId, 1, status);
- }
-
- addedPaths[crtPath] = newId;
- currentParentId = newId;
- }
- }
- this._refineLeaves(this.tree, 0);
- this.add(this.tree, {flex:1});
- model.setData();
- var columnModel = this.tree.getTableColumnModel();
- var resize = columnModel.getBehavior();
- resize.set(0, {width:250, minWidth:250});
- resize.set(1, {width:55});
- resize.set(2, {width:"1*"});
- resize.set(3, {width:150});
- columnModel.setDataCellRenderer(1, new org.argeo.slc.ria.StatusCellRenderer());
-
- this.tree.getSelectionManager().getSelectionModel().addListener("changeSelection", function(e){
- var viewSelection = this.getViewSelection();
- viewSelection.clear();
- var nodes = this.tree.getDataModel().getSelectedNodes();
- if(nodes.length){
- viewSelection.addNode(nodes[0]);
- }
- this.getView().focus();
- }, this);
-
- var contextMenu = org.argeo.ria.event.CommandsManager.getInstance().createMenuFromIds(["close"]);
- this.tree.setContextMenu(contextMenu);
-
- },
-
- /**
- * Goes up the parents recursively to set a whole tree branch in "failed" mode.
- * @param id {Integer} The id of the child node.
- */
- _setParentBranchAsFailed : function(id){
- var model = this.tree.getDataModel();
- while(id != null && id!=0){
- var node = this.tree.nodeGet(id);
- id = node.parentNodeId;
- if(id != null && id!=0){
- model.setColumnData(id, 1, this.failedStatus);
- this.tree.nodeSetOpened(id, true);
- }
- }
- },
-
- /**
- * Recursively make sur the last children are of qx.ui.treevirtual.SimpleTreeDataModel.Type.LEAF type.
- *
- * @param tree {qx.ui.treevirtual.TreeVirtual} The main tree of the applet.
- * @param nodeId {Integer} Current node id.
- */
- _refineLeaves : function(tree, nodeId){
- var node = tree.nodeGet(nodeId);
- if(node.children && node.children.length){
- for(var i=0;i<node.children.length;i++){
- this._refineLeaves(tree, node.children[i]);
- }
- }else{
- node.type = qx.ui.treevirtual.SimpleTreeDataModel.Type.LEAF;
- }
- },
-
- /**
- * Alternatively to the createXmlGui, create a simple HtmlElement and append the query responseText.
- * Not used but sample.
- * @param responseText {String} Html code to display.
- */
- createHtmlGui : function(responseText){
- var htmlElement = new qx.ui.embed.Html(responseText);
- htmlElement.setOverflowX("auto");
- htmlElement.setOverflowY("auto");
- this.add(htmlElement, {flex:1});
- }
-
- }
-});
\ No newline at end of file
+++ /dev/null
-/**\r
- * Applet for the batch manager\r
- */\r
-qx.Class.define("org.argeo.slc.ria.BatchView",\r
-{\r
- extend : qx.ui.container.Composite,\r
- implement : [org.argeo.ria.components.IView], \r
- include : [org.argeo.ria.session.MPrefHolder],\r
- statics : {\r
- riaPreferences : {\r
- "slc.batch.delete.confirm" : {\r
- label : "Confirm on batch deletion",\r
- type : "boolean",\r
- defaultValue : true\r
- },\r
- "slc.batch.autoclear" : {\r
- label : "Autoclear batch on execution",\r
- type : "boolean",\r
- defaultValue : false\r
- },\r
- "slc.batch.autoOpenLog" : {\r
- label : "Auto open log on execution",\r
- type : "boolean",\r
- defaultValue : true \r
- }\r
- }\r
- },\r
- properties : \r
- {\r
- /**\r
- * The commands definition Map that will be automatically added and wired to the menubar and toolbar.\r
- * See {@link org.argeo.ria.event.CommandsManager#definitions} for the keys to use for defining commands.\r
- */\r
- commands : {\r
- init : {\r
- "submitform" : {\r
- label : "Execute Batch",\r
- icon : "org/argeo/slc/ria/media-playback-start.png",\r
- shortcut : null,\r
- enabled : false,\r
- menu : "Launcher",\r
- toolbar : "batch",\r
- callback : function(e) {\r
- var batchAgentId = this.getBatchAgentId();\r
- if (!batchAgentId) {\r
- return; \r
- }\r
- var prefName = "slc.batch.autoclear";\r
- var prefValue = this.getRiaPreferenceValue(prefName);\r
- if(( prefValue !== null && prefValue === true ) || this.getForceClearPreference()){\r
- this.executeBatchOnAgent(batchAgentId, true); \r
- }else{\r
- this.executeBatchOnAgent(batchAgentId, false);\r
- }\r
- this.setForceClearPreference(false);\r
- return;\r
- },\r
- command : null\r
- },\r
- "removefrombatch" : {\r
- label : "Remove from batch",\r
- icon : "org/argeo/slc/ria/edit-delete.png",\r
- shortcut : null,\r
- enabled : false,\r
- menu : "Launcher",\r
- toolbar : "batch",\r
- callback : function(e) {\r
- var sel = this.list.getSortedSelection();\r
- var confirmPref = this.getRiaPreferenceValue("slc.batch.delete.confirm"); \r
- var execution = function() {\r
- for (var i = 0; i < sel.length; i++) {\r
- this.list.remove(sel[i]);\r
- }\r
- if (!this.list.hasChildren()) {\r
- this.setBatchAgentId(null);\r
- }\r
- }\r
- if(confirmPref){\r
- var modal = new org.argeo.ria.components.Modal("Confirm", null);\r
- modal.addConfirm("Are you sure you want to remove<br> the selected test"\r
- + (sel.length > 1 ? "s" : "")\r
- + " from the Batch?");\r
- modal.addListener("ok", execution, this);\r
- modal.attachAndShow();\r
- }else{\r
- execution = qx.lang.Function.bind(execution, this);\r
- execution();\r
- }\r
- },\r
- selectionChange : function(viewId, selection) {\r
- if (viewId != "batch:list")\r
- return;\r
- this.setEnabled(false);\r
- if ((selection && selection.length > 0))\r
- this.setEnabled(true);\r
- },\r
- command : null\r
- },\r
- "clearbatch" : {\r
- label : "Clear batch",\r
- icon : "org/argeo/slc/ria/user-trash-full.png",\r
- shortcut : null,\r
- enabled : true,\r
- menu : "Launcher",\r
- toolbar : "batch",\r
- callback : function(e) {\r
- if(!this.list.hasChildren()) return;\r
- this.list.selectAll();\r
- this.getCommands()["removefrombatch"].command.execute();\r
- },\r
- selectionChange : function(viewId, selection) {\r
- },\r
- command : null\r
- } \r
- }\r
- },\r
- view : {\r
- init : null\r
- }, \r
- viewSelection : {\r
- nullable:false, \r
- check:"org.argeo.ria.components.ViewSelection"\r
- },\r
- instanceId : {init:""},\r
- instanceLabel : {init:""},\r
- /**\r
- * A boolean registering whether the SpecEditor must autoOpen or not\r
- * when a spec is added to the Batch.\r
- */\r
- autoOpen : {\r
- init : true,\r
- check : "Boolean"\r
- },\r
- batchAgentId : {\r
- init : null,\r
- nullable : true,\r
- check : "String",\r
- event : "changeBatchAgentId"\r
- },\r
- forceClearPreference : {\r
- init : false,\r
- check : "Boolean"\r
- }\r
- },\r
- \r
- construct : function(){\r
- this.base(arguments);\r
- this.setLayout(new qx.ui.layout.Dock()); \r
- },\r
- \r
- members : {\r
- /**\r
- * The implementation should contain the GUI initialisation.\r
- * This is the role of the manager to actually add the graphical component to the pane, \r
- * so it's not necessary to do it here. \r
- * @param viewPane {org.argeo.ria.components.ViewPane} The pane manager\r
- * @param data {Mixed} Any object or data passed by the initiator of the view\r
- * @return {Boolean}\r
- */\r
- init : function(viewPane, data){\r
- this.setView(viewPane); \r
- this.setViewSelection(new org.argeo.ria.components.ViewSelection(viewPane.getViewId())); \r
- this._emptyAgentString = "Empty Batch (Drop scripts here)";\r
- this._crtAgentString = "Batch Execution on Agent ";\r
- \r
- },\r
- /**\r
- * The implementation should contain the real data loading (i.o. query...)\r
- * @return {Boolean}\r
- */\r
- load : function(){\r
- this._createLayout();\r
- this.getView().setViewTitle(this._emptyAgentString);\r
- //this.getView().setViewTitle("");\r
- },\r
- \r
- /**\r
- * Creates the main applet layout.\r
- */\r
- _createLayout : function() {\r
- this.listPane = new qx.ui.container.Composite(new qx.ui.layout.Dock());\r
- this.addListener("changeBatchAgentId", function(event) {\r
- var value = event.getData();\r
- if (value == null) {\r
- this.getView().setViewTitle(this._emptyAgentString);\r
- } else {\r
- var selectorView = org.argeo.ria.components.ViewsManager.getInstance().getViewPaneById("selector").getContent();\r
- if(selectorView){\r
- var agentsMap = selectorView.getAgentsMap();\r
- this.getView().setViewTitle(this._crtAgentString + "'" + agentsMap[value] + "'");\r
- }\r
- }\r
- }, this);\r
- \r
- var indicator = new qx.ui.core.Widget();\r
- indicator.setDecorator(new qx.ui.decoration.Single().set({\r
- top : [1, "solid", "#33508D"]\r
- }));\r
- indicator.setHeight(0);\r
- indicator.setOpacity(0.5);\r
- indicator.setZIndex(100);\r
- indicator.setLayoutProperties({\r
- left : -1000,\r
- top : -1000\r
- });\r
- org.argeo.ria.Application.INSTANCE.getRoot().add(indicator);\r
-\r
- this.list = new qx.ui.form.List();\r
- this.list.setDecorator(null);\r
- this.list.setSelectionMode("multi");\r
- this.list.setDroppable(true);\r
- this.list.setDraggable(true);\r
- this.list.setContextMenu(org.argeo.ria.event.CommandsManager\r
- .getInstance().createMenuFromIds(["removefrombatch"]));\r
-\r
- this.list.addListener("dragstart", function(e) {\r
- e.addType(["items"]);\r
- e.addAction(["move"]);\r
- }, this);\r
- this.list.addListener("dragend", function(e) {\r
- indicator.setDomPosition(-1000, -1000);\r
- });\r
- this.list.addListener("dragover", function(e) {\r
- var orig = e.getOriginalTarget();\r
- var origCoords = orig.getContainerLocation();\r
- indicator.setWidth(orig.getBounds().width);\r
- indicator.setDomPosition(origCoords.left,\r
- origCoords.bottom);\r
- });\r
- this.list.addListener("drag", function(e) {\r
- var orig = e.getOriginalTarget();\r
- var origCoords = orig.getContainerLocation();\r
- indicator.setWidth(orig.getBounds().width);\r
- indicator.setDomPosition(origCoords.left,\r
- origCoords.bottom);\r
- });\r
-\r
- this.list.addListener("drop", function(e) {\r
- var target = e.getRelatedTarget();\r
- var afterItem = e.getOriginalTarget();\r
- indicator.setDomPosition(-1000, -1000);\r
- if (afterItem.classname != "qx.ui.form.ListItem")\r
- afterItem = null;\r
- if (!target) {\r
- target = this.list.getSortedSelection()[0];\r
- this.addFlowToBatch(target, afterItem);\r
- } else {\r
- org.argeo.ria.event.CommandsManager.getInstance().executeCommand("addtobatch");\r
- }\r
- }, this);\r
- this.listPane.add(this.list, {\r
- edge : "center"\r
- });\r
-\r
- this.list.addListener("changeSelection", function(e) {\r
- var viewSelection = this.getViewSelection();\r
- viewSelection.setViewId("batch:list");\r
- viewSelection.clear();\r
- var listSel = this.list.getSortedSelection();\r
- for (var i = 0; i < listSel.length; i++) {\r
- viewSelection.addNode(listSel[i]);\r
- }\r
- }, this);\r
-\r
- this.dropDecorator = new qx.ui.decoration.Background(); \r
- this.dropDecorator.set({\r
- backgroundImage : "org/argeo/slc/ria/drophere.gif",\r
- backgroundRepeat : "no-repeat"\r
- });\r
-\r
- \r
- listChangeListener = function() {\r
- var command = org.argeo.ria.event.CommandsManager.getInstance()\r
- .getCommandById("submitform");\r
- command.setEnabled(this.list.hasChildren());\r
- var command2 = org.argeo.ria.event.CommandsManager.getInstance()\r
- .getCommandById("clearbatch");\r
- command2.setEnabled(this.list.hasChildren());\r
- this.list.setDecorator((this.list.hasChildren()?null:this.dropDecorator));\r
- };\r
- this.list.addListener("addItem", listChangeListener, this);\r
- this.list.addListener("removeItem", listChangeListener, this);\r
- \r
- this.list.setDecorator(this.dropDecorator);\r
- \r
- this.add(this.listPane);\r
- }, \r
- \r
- \r
- /**\r
- * Adds a given ExecutionFlow to the batch\r
- * \r
- * @param target\r
- * {mixed} The dropped target, can be a TreeFile (add) or a\r
- * ListItem (reorder).\r
- * @param after\r
- * {qx.ui.form.ListItem} Optional list item : if set, the\r
- * flow will be added as a new list item positionned after\r
- * this one.\r
- * @param skipAutoOpen\r
- * {boolean} Whether the formular should open or not.\r
- */\r
- addFlowToBatch : function(target, after, skipAutoOpen) {\r
- if (target && target.classname == "qx.ui.form.ListItem") {\r
- if (!after)\r
- return;\r
- if (after == "first")\r
- this.list.addAt(target, 0);\r
- else\r
- this.list.addAfter(target, after);\r
- return;\r
- }\r
-\r
- // Folder case\r
- if (qx.Class.isSubClassOf(qx.Class.getByName(target.classname),\r
- qx.ui.tree.TreeFolder)) {\r
- var allChildren = target.getItems(true);\r
- for (var i = 0; i < allChildren.length; i++) {\r
- if (allChildren[i].getUserData("executionFlow")) {\r
- try{\r
- this.addFlowToBatch(allChildren[i], null, true);\r
- }catch(e){\r
- return;\r
- }\r
- }\r
- }\r
- return;\r
- }\r
-\r
- // Check agent Uuid against current batch agent Id.\r
- var agentUuid = target.getUserData("agentUuid");\r
- if (!this.getBatchAgentId()) {\r
- this.setBatchAgentId(agentUuid);\r
- } else if (this.getBatchAgentId() != agentUuid) {\r
- this.error("Batch can contain tests only of the same agent!"); \r
- throw new Error("Batch can contain tests only of the same agent!");\r
- }\r
-\r
- var executionModule = target.getUserData("executionModule");\r
- var executionFlow = target.getUserData("executionFlow");\r
- var batchEntry = new org.argeo.slc.ria.execution.BatchEntrySpec(\r
- executionModule, executionFlow);\r
-\r
- this.appendBatchEntrySpec(batchEntry, target.getIcon(), after); \r
- },\r
- \r
- appendBatchEntrySpec: function(batchEntrySpec, icon, after){\r
- \r
- var item = new qx.ui.form.ListItem(batchEntrySpec.getLabel(), icon || "org/argeo/slc/ria/system.png");\r
- item.setUserData("batchEntrySpec", batchEntrySpec);\r
- item.setPaddingTop(1);\r
- item.setPaddingBottom(2);\r
- if (after) {\r
- if (after == "first")\r
- this.list.addAt(item, 0);\r
- else\r
- this.list.addAfter(item, after);\r
- } else {\r
- this.list.add(item);\r
- }\r
- this.list.setSelection([item]);\r
- \r
- },\r
-\r
- /**\r
- * Called at execution\r
- * \r
- * @param agentUuid\r
- * {String} The id of the target agent\r
- */\r
- executeBatchOnAgent : function(agentUuid, clearBatch) {\r
- var selection = this.list.getChildren();\r
- if (!selection.length)\r
- return;\r
- // Get Host\r
- var agentsMap = org.argeo.ria.components.ViewsManager.getInstance().getViewPaneById("selector").getContent().getAgentsMap();\r
- var host = agentsMap[agentUuid];\r
- var slcExecMessage = new org.argeo.slc.ria.execution.Message();\r
- slcExecMessage.setHost(host);\r
- var execUuid = slcExecMessage.getUuid();\r
- for (var i = 0; i < selection.length; i++) {\r
- var batchEntrySpec = selection[i].getUserData("batchEntrySpec");\r
- slcExecMessage.addBatchEntrySpec(batchEntrySpec);\r
- }\r
- try{\r
- var xmlMessage = slcExecMessage.toXml();\r
- var req = org.argeo.slc.ria.SlcApi.getNewSlcExecutionService(\r
- agentUuid, xmlMessage);\r
- req.addListener("completed", function(response){\r
- var loggerView = org.argeo.ria.components.ViewsManager.getInstance().getViewPaneById("main").getContent();\r
- loggerView.reloadLogger();\r
- if(this.getRiaPreferenceValue("slc.batch.autoOpenLog")){\r
- loggerView.openDetail([0,host,execUuid,0]);\r
- }\r
- }, this);\r
- req.send();\r
- if(clearBatch){\r
- req.addListener("completed", function(e){\r
- this.list.removeAll();\r
- this.setBatchAgentId(null);\r
- }, this);\r
- } \r
- }catch(e){\r
- this.error(e); \r
- }\r
- },\r
- \r
- clearBatchForAgentId : function(agentId){\r
- if(this.getBatchAgentId() == agentId){\r
- this.list.removeAll(); \r
- this.setBatchAgentId(null);\r
- }\r
- },\r
- \r
- /**\r
- * Whether this component is already contained in a scroller (return false) or not (return true).\r
- * @return {Boolean}\r
- */\r
- addScroll : function(){return false;},\r
- /**\r
- * Called at destruction time\r
- * Perform all the clean operations (stopping polling queries, etc.) \r
- */\r
- close : function(){return true;}\r
- }\r
- \r
-\r
-});
\ No newline at end of file
+++ /dev/null
-/**\r
- * The selector view\r
- * \r
- */\r
-qx.Class.define("org.argeo.slc.ria.FlowsSelectorView", {\r
- extend : qx.ui.container.Composite,\r
- implement : [org.argeo.ria.components.IView],\r
- include : [org.argeo.ria.session.MPrefHolder],\r
-\r
- construct : function() {\r
- this.base(arguments);\r
- this.setLayout(new qx.ui.layout.Dock());\r
- },\r
-\r
- properties : {\r
- /**\r
- * The viewPane inside which this applet is added.\r
- */\r
- view : {\r
- init : null\r
- },\r
- viewSelection : {\r
- nullable : false,\r
- check : "org.argeo.ria.components.ViewSelection"\r
- },\r
- instanceId : {\r
- init : ""\r
- },\r
- instanceLabel : {\r
- init : ""\r
- },\r
- executeAfterAdd : {\r
- init : false,\r
- check : "Boolean"\r
- },\r
- /**\r
- * Commands definition, see\r
- * {@link org.argeo.ria.event.CommandsManager#definitions}\r
- */\r
- commands : {\r
- init : {\r
- "addtobatch" : {\r
- label : "Add to batch",\r
- icon : "org/argeo/slc/ria/list-add.png",\r
- shortcut : null,\r
- enabled : true,\r
- menu : null,\r
- toolbar : null,\r
- callback : function(e) {\r
- if (this.tree.isSelectionEmpty()) {\r
- return;\r
- }\r
- var batchView = org.argeo.ria.components.ViewsManager.getInstance().getViewPaneById("batch").getContent();\r
- if(!batchView) return;\r
- selection = this.tree.getSelection();\r
- if (selection.length > 1) {\r
- for (var i = 0; i < selection.length; i++) {\r
- try{\r
- batchView.addFlowToBatch(selection[i], null, true);\r
- }catch(e){\r
- return;\r
- }\r
- }\r
- return;\r
- } else {\r
- try{\r
- batchView.addFlowToBatch(selection[0], null);\r
- }catch(e){\r
- return;\r
- }\r
- }\r
- if(this.getExecuteAfterAdd() && batchView.getCommands()){\r
- batchView.setForceClearPreference(true);\r
- batchView.getCommands()["submitform"].command.execute();\r
- }\r
- this.setExecuteAfterAdd(false);\r
- },\r
- selectionChange : function(viewId, selection) {\r
- if (viewId != "form:tree")\r
- return;\r
- if (!selection || selection.length != 1)\r
- return;\r
- var item = selection[0];\r
- this.setEnabled(false);\r
- switch (item.classname) {\r
- case "qx.ui.tree.TreeFile" :\r
- this.setEnabled(true);\r
- break;\r
- case "org.argeo.ria.components.PersistentTreeFolder" :\r
- if (item.getTree() && item.getTree().getRoot() == item)\r
- break;\r
- this.setEnabled(true);\r
- break;\r
- case "org.argeo.ria.components.DynamicTreeFolder" :\r
- if (item.getTree() && item.getTree().getRoot() == item)\r
- break; \r
- if (item.getState() == "loaded")\r
- this.setEnabled(true);\r
- break;\r
- }\r
- },\r
- command : null\r
- },\r
- "preferredHost" : {\r
- label : "Toggle 'Preferred Host'",\r
- icon : "ria/bookmark.png",\r
- shortcut : null,\r
- enabled : true,\r
- menu : null,\r
- toolbar : null,\r
- callback : function(e) {\r
- if (this.tree.isSelectionEmpty()) {\r
- return;\r
- }\r
- var selection = this.tree.getSelection();\r
- if(selection.length != 1) return;\r
- var agentNode = selection[0];\r
- if(!agentNode.getUserData("agentHost")) return;\r
- this.togglePreferredHost(agentNode);\r
- },\r
- selectionChange : function(viewId, selection) {\r
- if (viewId != "form:tree")\r
- return;\r
- if (!selection || selection.length != 1)\r
- return;\r
- var item = selection[0];\r
- this.setEnabled(false);\r
- if(item.getUserData("agentHost")){\r
- this.setEnabled(true);\r
- }\r
- },\r
- command : null\r
- },\r
- "reloadfull" : {\r
- label : "Reload Agents",\r
- icon : "org/argeo/slc/ria/view-refresh.png",\r
- shortcut : "control+h",\r
- enabled : true,\r
- menu : "Launcher",\r
- toolbar : "list",\r
- callback : function(e) {\r
- this.rootNode.setState("loading");\r
- this.rootNode.load();\r
- },\r
- command : null\r
- }, \r
- "reloadtree" : {\r
- label : "Reload Node",\r
- icon : "org/argeo/slc/ria/view-refresh.png",\r
- shortcut : null,\r
- enabled : false,\r
- menu : null,\r
- toolbar : null,\r
- callback : function(e) {\r
- if (this.tree.isSelectionEmpty()) { return; } \r
- var selected = this.tree.getSelection()[0];\r
- if (selected.classname == "org.argeo.ria.components.DynamicTreeFolder") {\r
- if (selected.getUserData("moduleData")) {\r
- // It's a "module" node, first trigger the\r
- // reloadBundle.service\r
- selected.setUserData("dataModel", {});\r
- selected.setEnabled(false);\r
- selected.setOpen(false);\r
- var moduleData = selected\r
- .getUserData("moduleData");\r
- var bundleService = org.argeo.slc.ria.SlcApi\r
- .getReloadBundleService(\r
- moduleData.name,\r
- moduleData.version);\r
- bundleService.addListener("completed",\r
- function(response) {\r
- selected.setEnabled(true);\r
- selected.setOpen(true);\r
- selected.reload();\r
- }, this);\r
- // bundleService.send();\r
- // Do not send, not implemented yet, false timer\r
- // instead.\r
- qx.event.Timer.once(function(response) {\r
- selected.setEnabled(true);\r
- selected.setOpen(true);\r
- selected.reload();\r
- }, this, 2000);\r
- } else {\r
- selected.reload();\r
- }\r
- }\r
- },\r
- selectionChange : function(viewId, selection) {\r
- if (viewId != "form:tree")\r
- return;\r
- if (!selection)\r
- return;\r
- if (selection.length > 1) {\r
- this.setEnabled(false);\r
- return;\r
- }\r
- var item = selection[0];\r
- if (!qx.Class.isSubClassOf(qx.Class\r
- .getByName(item.classname),\r
- qx.ui.tree.AbstractTreeItem))\r
- return;\r
- this.setEnabled(false);\r
- if (qx.Class.isSubClassOf(qx.Class\r
- .getByName(item.classname),\r
- org.argeo.ria.components.DynamicTreeFolder)) {\r
- this.setEnabled(true);\r
- }\r
- },\r
- command : null\r
- }\r
- }\r
- }\r
- },\r
-\r
- statics : { \r
- \r
- riaPreferences : {\r
- "flowSelector.preferred.hosts" : {\r
- label : "Preferred Hosts (Execution View)",\r
- type : "string"\r
- }\r
- },\r
- \r
- /**\r
- * Static loader for the "agent" level (first level)\r
- * \r
- * @param folder\r
- * {org.argeo.ria.components.PersistentTreeFolder} The root Tree Folder.\r
- */\r
- agentLoader : function(folder) {\r
-\r
- var preferredHosts = org.argeo.ria.session.MPrefHolder.loadRiaPreferenceValue("flowSelector.preferred.hosts");\r
- if(preferredHosts && preferredHosts!=""){\r
- preferredHosts = preferredHosts.split(",");\r
- }\r
- var req = org.argeo.slc.ria.SlcApi.getListAgentsService("agents"); \r
- var agents = {};\r
- if(folder.getUserData("agentsMap")){\r
- // Diff loading, just add new nodes.\r
- agents = folder.getUserData("agentsMap");\r
- var newAgents = {};\r
- }\r
- req.addListener("completed", function(response) {\r
- var xmlDoc = response.getContent();\r
- var nodes = org.argeo.ria.util.Element.selectNodes(xmlDoc,\r
- "/slc:object-list/slc:slc-agent-descriptor");\r
- var modulesLoader = org.argeo.slc.ria.FlowsSelectorView.modulesLoader;\r
- \r
- for (var i = 0; i < nodes.length; i++) {\r
- var uuid = org.argeo.ria.util.Element.getSingleNodeText(nodes[i], "@uuid");\r
- var host = org.argeo.ria.util.Element.getSingleNodeText(nodes[i], "slc:host");\r
- if(agents[uuid]){\r
- newAgents[uuid] = host;\r
- continue;\r
- }\r
- agents[uuid] = host;\r
- if(newAgents) newAgents[uuid] = host;\r
- var agentFolder = new org.argeo.ria.components.DynamicTreeFolder(\r
- host, modulesLoader, "Loading Modules...", folder.getDragData());\r
- org.argeo.slc.ria.FlowsSelectorView.attachToolTip(agentFolder, uuid);\r
- agentFolder.setPersistentTreeID(folder.getPersistentTreeID()+"_"+uuid);\r
- agentFolder.setUserData("agentHost", host); // Used by bookmark system\r
- agentFolder.setUserData("agentUuid", uuid);\r
- if(preferredHosts && preferredHosts instanceof Array && qx.lang.Array.contains(preferredHosts, host)){\r
- folder.addAtBegin(agentFolder);\r
- agentFolder.setIcon("org/argeo/slc/ria/computer_bookmarked.png");\r
- }else{\r
- folder.add(agentFolder);\r
- agentFolder.setIcon("org/argeo/slc/ria/computer.png");\r
- }\r
- }\r
- if(newAgents){\r
- // Make sure some agents should not be removed\r
- for(var agentKey in agents){\r
- if(!newAgents[agentKey]){\r
- var node = org.argeo.slc.ria.FlowsSelectorView.findAgentNodeById(folder, agentKey);\r
- if(node) folder.remove(node);\r
- delete agents[agentKey];\r
- var batchView = org.argeo.ria.components.ViewsManager.getInstance().getViewPaneById("batch").getContent();\r
- if(batchView) batchView.clearBatchForAgentId(agentKey);\r
- }\r
- }\r
- }\r
- folder.setUserData("agentsMap", agents);\r
- folder.setLoaded(true);\r
- folder.getTree().fireDataEvent("changeSelection", folder.getTree().getSelection()); \r
- });\r
- req.addListener("failed", function(response) {\r
- folder.setLoaded(true);\r
- });\r
- req.send();\r
-\r
- },\r
-\r
- /**\r
- * Loader for the "modules" level : takes any tree folder, currently the\r
- * root folder.\r
- * \r
- * @param folder\r
- * {org.argeo.ria.components.PersistentTreeFolder} The root folder\r
- */\r
- modulesLoader : function(folder) {\r
- var agentId = folder.getUserData("agentUuid");\r
- var req = org.argeo.slc.ria.SlcApi.getListModulesService(agentId);\r
- req.addListener("completed", function(response) {\r
- var descriptors = org.argeo.ria.util.Element.selectNodes(\r
- response.getContent(),\r
- "slc:object-list/" + org.argeo.slc.ria.execution.Module.XPATH_ROOT);\r
- var mods = {};\r
- for (var i = 0; i < descriptors.length; i++) {\r
- var tmpModule = new org.argeo.slc.ria.execution.Module();\r
- try{ \r
- tmpModule.setXmlNode(descriptors[i]);\r
- }catch(e){\r
- qx.log.Logger.error(e);\r
- }\r
- var name = tmpModule.getName();\r
- var version = tmpModule.getVersion();\r
- if (!mods[name])\r
- mods[name] = [];\r
- mods[name].push(tmpModule);\r
- }\r
- var flowLoader = org.argeo.slc.ria.FlowsSelectorView.flowLoader;\r
- for (var key in mods) {\r
- for (var i = 0; i < mods[key].length; i++) {\r
- var module = mods[key][i];\r
- var versionFolder = new org.argeo.ria.components.DynamicTreeFolder(\r
- module.getLabel(), flowLoader,\r
- "Loading Flows", folder.getDragData());\r
- versionFolder.setUserData("moduleData", {\r
- name : key,\r
- version : module.getVersion()\r
- });\r
- versionFolder.setIcon("org/argeo/slc/ria/archive.png");\r
- versionFolder.setUserData("agentUuid", agentId);\r
- var sep = (module.getDescription()!=""?" - ":"");\r
- org.argeo.slc.ria.FlowsSelectorView.attachToolTip(versionFolder, key + ' (' + module.getVersion() + ')'+sep+module.getDescription());\r
- // Warning, we must add it AFTER setting the user data, \r
- // because of the persistent loading mechanism.\r
- folder.add(versionFolder);\r
- }\r
- }\r
- folder.setLoaded(true);\r
- folder.getTree().fireDataEvent("changeSelection", folder.getTree().getSelection());\r
- });\r
- req.addListener("failed", function(response) {\r
- folder.setLoaded(true);\r
- });\r
- req.send();\r
- },\r
-\r
- /**\r
- * Loader for the "flow" level : takes a folder containing "moduleData"\r
- * and create its children.\r
- * \r
- * @param folder\r
- * {org.argeo.ria.components.PersistentTreeFolder} A Tree folder containing in the\r
- * key "moduleData" of its user data a map containing the\r
- * keys {name,version}\r
- */\r
- flowLoader : function(folder) {\r
- var moduleData = folder.getUserData("moduleData");\r
- var agentUuid = folder.getUserData("agentUuid");\r
-\r
- var req = org.argeo.slc.ria.SlcApi\r
- .getLoadExecutionDescriptorService(agentUuid,\r
- moduleData.name, moduleData.version);\r
- req.addListener("completed", function(response) {\r
- var executionModule = new org.argeo.slc.ria.execution.Module();\r
- try {\r
- executionModule.setXmlNode(response.getContent());\r
- } catch (e) {\r
- this.error(e);\r
- }\r
- var execFlows = executionModule.getExecutionFlows();\r
- for (var key in execFlows) {\r
- var path = execFlows[key].getPath();\r
- var name = execFlows[key].getName();\r
- var nodeLabel = key;\r
- var sep = "\/";\r
- if(name && name.indexOf(sep)>-1 && !path){\r
- // Use given name to build the path.\r
- // split dirname and basename\r
- var parts = name.split(sep);\r
- var basename = parts.pop();\r
- var dirname = parts.join("/");\r
- path = dirname;\r
- nodeLabel = basename;\r
- }\r
- var file = new qx.ui.tree.TreeFile(nodeLabel);\r
- if(execFlows[key].getDescription() != ""){\r
- org.argeo.slc.ria.FlowsSelectorView.attachToolTip(file, execFlows[key].getDescription());\r
- }\r
- file.setIcon("org/argeo/slc/ria/system.png");\r
- file.setUserData("executionModule", executionModule);\r
- file.setUserData("executionFlow", execFlows[key]);\r
- file.setUserData("agentUuid", agentUuid);\r
- org.argeo.slc.ria.FlowsSelectorView.attachNodeByPath(folder, path, file, {\r
- agentUuid : folder.getUserData("agentUuid")\r
- });\r
- folder.appendDragData(file);\r
- }\r
- folder.setLoaded(true);\r
- folder.getTree().fireDataEvent("changeSelection", folder.getTree().getSelection());\r
- });\r
- req.addListener("failed", function(response) {\r
- folder.setLoaded(true);\r
- });\r
- req.send();\r
- },\r
-\r
- attachToolTip : function(nodeItem, description){\r
- var tt = new qx.ui.tooltip.ToolTip(description);\r
- tt.setShowTimeout(0);\r
- nodeItem.setToolTip(tt); \r
- },\r
- \r
- /**\r
- * Parse a string path and search if there is a root node.\r
- * \r
- * @param rootNode\r
- * {org.argeo.ria.components.DynamicTreeFolder} The parent\r
- * node (containing data model)\r
- * @param path\r
- * {String} The path of the node to attach.\r
- * @param childNode\r
- * {qx.ui.tree.TreeFile} The leaf node\r
- * @param userData\r
- * {Map} User data to attach at all levels.\r
- */\r
- attachNodeByPath : function(rootNode, path, childNode, userData) {\r
- if (!path || path == "" || path == "/") {\r
- rootNode.add(childNode);\r
- return;\r
- }\r
- var model = rootNode.getUserData("dataModel");\r
- if (!model) {\r
- model = {};\r
- rootNode.setUserData("dataModel", model);\r
- }\r
- var parts = path.split("/");\r
- var keys = qx.lang.Object.getKeys(model);\r
- var crtPath = "";\r
- var crtFolder = rootNode; \r
- for (var i = 0; i < parts.length; i++) {\r
- if (parts[i] == "")\r
- continue;\r
- crtPath += "/" + parts[i]; \r
- if (!model[crtPath]) {\r
- var virtualFolder = new org.argeo.ria.components.PersistentTreeFolder(parts[i]);\r
- if (userData && qx.lang.Object.getLength(userData)) {\r
- for (var key in userData) {\r
- virtualFolder.setUserData(key, userData[key]);\r
- }\r
- }\r
- rootNode.appendDragData(virtualFolder);\r
- model[crtPath] = virtualFolder;\r
- crtFolder.add(virtualFolder);\r
- crtFolder = virtualFolder;\r
- } else {\r
- crtFolder = model[crtPath];\r
- }\r
- }\r
- crtFolder.add(childNode);\r
- },\r
- \r
- findAgentNodeById : function(node, agentId){\r
- var nodeAgents = node.getItems();\r
- for(var i=0;i<nodeAgents.length;i++){\r
- if(nodeAgents[i].getUserData("agentUuid") == agentId){\r
- return nodeAgents[i];\r
- }\r
- }\r
- } \r
- },\r
-\r
- members : {\r
- /**\r
- * Called at applet creation. Just registers viewPane.\r
- * \r
- * @param viewPane\r
- * {org.argeo.ria.components.ViewPane} The viewPane.\r
- */\r
- init : function(viewPane) {\r
- this.setView(viewPane);\r
- this.setViewSelection(new org.argeo.ria.components.ViewSelection(viewPane.getViewId()));\r
- this.remoteNotifier = new org.argeo.ria.remote.RemoteNotifier(\r
- "/org.argeo.slc.webapp/", "pollEvent.service",\r
- "addEventListener.service", "removeEventListener.service");\r
- this.remoteNotifier.setEventParamName("slc_eventType");\r
- this.remoteNotifier.setEventXPath("/slc:slc-event");\r
- this.remoteNotifier\r
- .setEventTypeXPath('slc:headers/slc:header[@name="slc_eventType"]');\r
- this.remoteNotifier\r
- .setEventDataXPath('slc:headers/slc:header[@name="slc_agentId"]');\r
- this.remoteNotifier.setAnswerStatusXPath("slc:execution-answer/slc:status");\r
- this.remoteNotifier.startPolling();\r
- this.UIBus = org.argeo.ria.event.UIBus.getInstance();\r
- this.UIBus.registerNotifier(this.remoteNotifier);\r
- },\r
-\r
- /**\r
- * \r
- */\r
- load : function() {\r
- this._createLayout();\r
- this.getView().setViewTitle("Available Scripts");\r
- this.UIBus.addListener("agentRegistered", this._addAgentHandler, this);\r
- this.UIBus.addListener("agentUnregistered", this._removeAgentHandler, this);\r
- },\r
-\r
- _addAgentHandler : function(agentId){\r
- this.rootNode.load();\r
- },\r
- \r
- _removeAgentHandler : function(agentId){\r
- var treeNode = this.self(arguments).findAgentNodeById(this.rootNode, agentId);\r
- if(treeNode){\r
- this.rootNode.remove(treeNode);\r
- }\r
- var agentsMap = this.getAgentsMap();\r
- if(agentsMap[agentId]){ \r
- delete agentsMap[agentId];\r
- }\r
- var batchView = org.argeo.ria.components.ViewsManager.getInstance().getViewPaneById("batch").getContent();\r
- if(batchView){\r
- batchView.clearBatchForAgentId(agentId);\r
- }\r
- },\r
- \r
- addScroll : function() {\r
- return false;\r
- },\r
-\r
- close : function() {\r
- this.UIBus.removeListener("agentRegistered", this._addAgentHandler, this);\r
- this.UIBus.removeListener("agentUnregistered", this._removeAgentHandler, this);\r
- this.remoteNotifier.stopPolling();\r
- },\r
-\r
- /**\r
- * \r
- * @param agentNode {qx.ui.tree.AbstractTreeItem}\r
- */\r
- togglePreferredHost : function(agentNode){\r
- var hostName = agentNode.getUserData("agentHost");\r
- var pref = this.getRiaPreferenceValue("flowSelector.preferred.hosts");\r
- var prefArray = [];\r
- if(pref){\r
- prefArray = pref.split(",");\r
- }\r
- if(qx.lang.Array.contains(prefArray, hostName)){\r
- qx.lang.Array.remove(prefArray, hostName);\r
- agentNode.setIcon("org/argeo/slc/ria/computer.png");\r
- }else{\r
- prefArray.push(hostName);\r
- agentNode.setIcon("org/argeo/slc/ria/computer_bookmarked.png");\r
- var parent = agentNode.getParent();\r
- parent.remove(agentNode);\r
- parent.addAtBegin(agentNode);\r
- }\r
- this.setRiaPreferenceValue("flowSelector.preferred.hosts", prefArray.join(","));\r
- },\r
- \r
- /**\r
- * Creates the main applet layout.\r
- */\r
- _createLayout : function() {\r
-\r
- this.tree = new qx.ui.tree.Tree();\r
- this.tree.setDecorator(null);\r
- this.tree.setSelectionMode("multi");\r
- var dragData = {\r
- "file" : {\r
- "type" : ["items"],\r
- "action" : ["move"]\r
- },\r
- "folder" : {\r
- "type" : ["items"],\r
- "action" : ["move"]\r
- }\r
- };\r
-\r
- this.rootNode = new org.argeo.ria.components.DynamicTreeFolder(\r
- "Tests", this.self(arguments).agentLoader,\r
- "Loading Agents", dragData);\r
- this.tree.setRoot(this.rootNode);\r
- this.tree.setHideRoot(true);\r
- this.rootNode.setPersistentTreeID("org/argeo/slc/ria.FlowsSelector")\r
- this.rootNode.setOpen(true);\r
- this.tree.setContextMenu(org.argeo.ria.event.CommandsManager\r
- .getInstance().createMenuFromIds(["addtobatch",\r
- "reloadtree", "preferredHost"]));\r
-\r
- this.tree.addListener("changeSelection", function(e) {\r
- var viewSelection = this.getViewSelection();\r
- viewSelection.setViewId("form:tree");\r
- viewSelection.clear();\r
- var sel = this.tree.getSortedSelection();\r
- for (var i = 0; i < sel.length; i++) {\r
- viewSelection.addNode(sel[i]);\r
- }\r
- }, this);\r
-\r
- this.tree.addListener("dblclick", function(e){\r
- var sel = this.tree.getSortedSelection();\r
- if(sel && sel.length!=1) return;\r
- var origin = sel[0];\r
- if(origin.classname == "qx.ui.tree.TreeFile"){\r
- this.setExecuteAfterAdd(true);\r
- this.getCommands()["addtobatch"].command.execute();\r
- }\r
- }, this);\r
-\r
- this.add(this.tree);\r
- },\r
- \r
- getAgentsMap : function(){\r
- return this.rootNode.getUserData("agentsMap");\r
- } \r
- }\r
-});
\ No newline at end of file
+++ /dev/null
-/**
- * A simple Hello World applet for documentation purpose.
- * The only associated command is the "Close" command.
- */
-qx.Class.define("org.argeo.slc.ria.LauncherApplet",
-{
- extend : qx.ui.container.Composite,
- implement : [org.argeo.ria.components.IView],
-
- construct : function(){
- this.base(arguments);
- this.setLayout(new qx.ui.layout.Dock());
-
- this.COMMON_FORM_HEADER_LABEL = "Choose Agent";
- this.CHOOSE_AGENT_LABEL = "Agent Uuid";
- this.CHOOSE_FORM_PART_LABEL = "Test Type";
- },
-
- properties :
- {
- /**
- * The viewPane inside which this applet is added.
- */
- view : {
- init : null
- },
- viewSelection : {
- nullable:false,
- check:"org.argeo.ria.components.ViewSelection"
- },
- instanceId : {init:""},
- instanceLabel : {init:""},
- /**
- * Commands definition, see {@link org.argeo.ria.event.CommandsManager#definitions}
- */
- commands : {
- init : {
- "submitform" : {
- label : "Execute",
- icon : "resource/org.argeo.slc.ria/media-playback-start.png",
- shortcut : "Control+e",
- enabled : true,
- menu : "Launcher",
- toolbar : "launcher",
- callback : function(e){
- this.submitForm();
- },
- command : null
- },
- "reloadagents" : {
- label : "Reload Agents",
- icon : "org.argeo.slc.ria/view-refresh.png",
- shortcut : "Control+r",
- enabled : true,
- menu : "Launcher",
- toolbar : "launcher",
- callback : function(e){
- var req = org.argeo.slc.ria.SlcApi.getListAgentsService("agents");
- req.send();
- },
- command : null
- }
- }
- },
- /**
- * A map containing all currently registered agents.
- */
- registeredTopics : {
- init : {},
- check : "Map",
- event : "changeRegisteredTopics"
- }
- },
-
- members :
- {
- /**
- * Called at applet creation. Just registers viewPane.
- * @param viewPane {org.argeo.ria.components.ViewPane} The viewPane.
- */
- init : function(viewPane){
- this.setView(viewPane);
- this.setViewSelection(new org.argeo.ria.components.ViewSelection(viewPane.getViewId()));
- this._createLayout();
- this._createForm();
- this._amqClient = org.argeo.ria.remote.JmsClient.getInstance();
- this._amqClient.startPolling();
- },
-
- /**
- *
- */
- load : function(){
- this.getView().setViewTitle("Execution Launcher");
- this.addListener("changeRegisteredTopics", function(event){
- //this._refreshTopicsSubscriptions(event);
- this._feedSelector(event);
- }, this);
- var reloadHandler = function(message){
- // Delay reload to be sure the jms was first integrated by the db, then ask the db.
- qx.event.Timer.once(function(){
- org.argeo.ria.event.CommandsManager.getInstance().getCommandById("reloadagents").execute();
- }, this, 1000);
- }
- this._amqClient.addListener("agentregister", "topic://agent.register", reloadHandler, this);
- this._amqClient.addListener("agentunregister", "topic://agent.unregister", reloadHandler, this);
- reloadHandler();
- },
-
- addScroll : function(){
- return false;
- },
-
- close : function(){
- this._amqClient.removeListener("agentregister", "topic://agent.register");
- this._amqClient.removeListener("agentunregister", "topic://agent.unregister");
-
- this.setRegisteredTopics({});
- this._amqClient.stopPolling();
- },
-
- /**
- * Creates the main applet layout.
- */
- _createLayout : function(){
- this.formPane = new qx.ui.container.Composite(new qx.ui.layout.VBox(5));
- this.scroll = new qx.ui.container.Scroll(this.formPane);
- this.formPane.setPadding(10);
- this.add(this.scroll, {edge:'center'});
-
- },
-
- /**
- * Creates the form.
- */
- _createForm : function(){
- this.fields = {};
- this.hiddenFields = {};
- this.freeFields = [];
-
- var execButtonPane = new qx.ui.container.Composite(new qx.ui.layout.Dock());
- var execButton = new qx.ui.form.Button(
- "Execute",
- "org.argeo.slc.riamedia-playback-start-32.png"
- )
- execButton.addListener("click", function(){
- this.submitForm();
- }, this);
- execButtonPane.setPadding(10, 80);
- execButtonPane.add(execButton, {edge:"center"});
- this.formPane.add(execButtonPane);
-
- this.agentSelector = new qx.ui.form.SelectBox();
- var serviceManager = org.argeo.ria.remote.RequestManager.getInstance();
- serviceManager.addListener("reload", function(reloadEvent){
- if(reloadEvent.getDataType()!= "agents") return ;
- var xmlDoc = reloadEvent.getContent();
- var nodes = org.argeo.ria.util.Element.selectNodes(xmlDoc, "//slc:slc-agent-descriptor");
- var newTopics = {};
- for(var i=0;i<nodes.length;i++){
- var uuid = org.argeo.ria.util.Element.getSingleNodeText(nodes[i], "@uuid");
- var host = org.argeo.ria.util.Element.getSingleNodeText(nodes[i], "slc:host");
- newTopics[uuid] = host+" ("+uuid+")";
- }
- this.setRegisteredTopics(newTopics);
- }, this);
-
- var commonForm = {pane:this.formPane};
- this._addFormHeader(commonForm, this.COMMON_FORM_HEADER_LABEL);
- this._addFormEntry(commonForm, new qx.ui.basic.Label(this.CHOOSE_AGENT_LABEL), this.agentSelector);
- this._createFormVariableParts();
- if(!this.parts) return;
- if(qx.lang.Object.getLength(this.parts) > 1){
- // Add chooser
- this.partChooser = new qx.ui.form.SelectBox();
- for(var key in this.parts){
- this.partChooser.add(new qx.ui.form.ListItem(this.parts[key].label, null, key));
- }
- this._addFormEntry(commonForm, new qx.ui.basic.Label(this.CHOOSE_FORM_PART_LABEL), this.partChooser);
- this.partChooser.addListener("changeValue", function(ev){
- this._showSelectedPart(ev.getData());
- }, this);
- }
- this._showSelectedPart(qx.lang.Object.getKeys(this.parts)[0]);
- },
-
- /**
- * Show a form part given its id.
- * @param partId {String} The part id
- */
- _showSelectedPart : function(partId){
- if(!this.parts) return;
- if(!this.partsContainer){
- this.partsContainer = new qx.ui.container.Composite(new qx.ui.layout.Canvas());
- this.formPane.add(this.partsContainer);
- }
- for(var i in this.parts){
- var formObject = this.parts[i];
- if(!formObject.added){
- this.partsContainer.add(formObject.pane, {top:0, left:0});
- formObject.added = true;
- }
- formObject.pane.hide();
- }
- if(this.parts[partId]){
- this.parts[partId].pane.show();
- }
- },
-
- /**
- * Init a form part : creates a pane, a set of fields, etc.
- * @param formId {String} A unique ID
- * @param label {String} A label
- * @return {Map} The form part.
- */
- _initFormPart : function(formId, label){
- if(!this.parts) this.parts = {};
- var formObject = {};
- formObject.hiddenFields = {};
- formObject.freeFields = [];
- formObject.fields = {};
- formObject.id = formId;
- formObject.label = label;
- this.parts[formId] = formObject;
- formObject.pane = new qx.ui.container.Composite(new qx.ui.layout.VBox(5));
- return formObject;
- },
-
- /**
- * To be overriden by this class children.
- */
- _createFormVariableParts : function(){
- var standard = this._initFormPart("standard", "Canonical");
- this._createStandardForm(standard);
- var simple = this._initFormPart("simple", "SLC Sample");
- this._createSimpleForm(simple);
- },
-
- /**
- * Creates a form for SLC demo
- * @param formObject {Map} The form part
- */
- _createSimpleForm : function(formObject){
-
- this._addFormInputText(formObject, "ant.file", "File", "Category1/SubCategory2/build.xml");
- var moreButton = new qx.ui.basic.Image("org.argeo.slc.ria/list-add.png");
- moreButton.setToolTip(new qx.ui.tooltip.ToolTip("Add a parameter"));
- moreButton.setCursor("pointer");
- moreButton.addListener("click", function(){
- this._addFormInputText(formObject);
- }, this);
- this._addFormHeader(formObject, "Add optionnal parameters", moreButton);
- this._addFormInputText(formObject);
- this._addFormInputText(formObject);
-
- },
-
- /**
- * Create a canonical form.
- * @param formObject {Map} The form part
- */
- _createStandardForm : function(formObject){
-
- this._addFormHeader(formObject, "Set Execution Parameters");
- this._addFormInputText(formObject, "status", "Status", "STARTED");
- this._addFormInputText(formObject, "host", "Host", "localhost");
- this._addFormInputText(formObject, "user", "User", "user");
-
- var moreButton = new qx.ui.basic.Image("org.argeo.slc.ria/list-add.png");
- moreButton.setToolTip(new qx.ui.tooltip.ToolTip("Add a parameter"));
- moreButton.setCursor("pointer");
- moreButton.addListener("click", function(){
- this._addFormInputText(formObject);
- }, this);
- this._addFormHeader(formObject, "Add optionnal parameters", moreButton);
- this._addFormInputText(formObject);
- this._addFormInputText(formObject);
- },
-
- /**
- * Add an hidden field to the form
- * @param formObject {Map} The form part
- * @param fieldName {String} Name
- * @param fieldValue {String} Value
- */
- _addFormHiddenField : function(formObject, fieldName, fieldValue){
- formObject.hiddenFields[fieldName] = fieldValue;
- },
-
- /**
- * Creates a simple label/input form entry.
- * @param formObject {Map} The form part
- * @param fieldName {String} Name
- * @param fieldLabel {String} Label of the field
- * @param defaultValue {String} The default value
- * @param choiceValues {Map} An map of values
- */
- _addFormInputText : function(formObject, fieldName, fieldLabel, defaultValue, choiceValues){
- var labelElement;
- if(choiceValues){
- var fieldElement = new qx.ui.form.SelectBox();
- for(var key in choiceValues){
- fieldElement.add(new qx.ui.form.ListItem(choiceValues[key], null, key));
- }
- }else{
- var fieldElement = new qx.ui.form.TextField();
- }
- if(defaultValue){
- fieldElement.setValue(defaultValue);
- }
- if(fieldName && fieldLabel){
- labelElement = new qx.ui.basic.Label(fieldLabel);
- formObject.fields[fieldName] = fieldElement;
- }else{
- labelElement = new qx.ui.form.TextField();
- formObject.freeFields.push({
- labelEl:labelElement,
- valueEl:fieldElement
- });
- }
- this._addFormEntry(formObject, labelElement, fieldElement);
- },
-
- /**
- * Add an header
- * @param formObject {Map} The form part
- * @param content {Mixed} Content to add.
- * @param additionnalButton {Mixed} Any widget to add on the east.
- */
- _addFormHeader : function(formObject, content, additionnalButton){
- var header = new qx.ui.basic.Label('<b>'+content+'</b>');
- header.setRich(true);
- if(!additionnalButton){
- header.setPaddingTop(10);
- formObject.pane.add(header);
- }else{
- var pane = new qx.ui.container.Composite(new qx.ui.layout.Dock());
- pane.setPaddingTop(10);
- pane.setPaddingRight(10);
- pane.add(header, {edge:'center'});
- pane.add(additionnalButton, {edge:'east'});
- formObject.pane.add(pane);
- }
- },
-
- /**
- * Adds a label/input like entry in the form.
- * @param formObject {Map} The form part
- * @param labelElement {Object} Either a label or an input
- * @param fieldElement {Object} Any form input.
- */
- _addFormEntry : function(formObject, labelElement, fieldElement){
- var entryPane = new qx.ui.container.Composite(new qx.ui.layout.HBox(5));
- labelElement.setWidth(100);
- labelElement.setTextAlign("right");
- entryPane.add(labelElement);
- entryPane.add(new qx.ui.basic.Label(':'));
- fieldElement.setWidth(150);
- entryPane.add(fieldElement);
- formObject.pane.add(entryPane);
- },
-
- /*
- _refreshTopicsSubscriptions : function(changeTopicsEvent){
- var oldTopics = changeTopicsEvent.getOldData() || {};
- var newTopics = changeTopicsEvent.getData();
- var removed = [];
- var added = [];
- for(var key in oldTopics){
- if(!newTopics[key]) {
- //this._removeAmqListener(key);
- }
- }
- for(var key in newTopics){
- if(!oldTopics[key]) {
- //this._addAmqListener(key);
- }
- }
- },
- */
-
- /**
- * Refresh the selector when the topics are updated.
- * @param changeTopicsEvent {qx.event.type.DataEvent} The reload event.
- */
- _feedSelector : function(changeTopicsEvent){
- var topics = changeTopicsEvent.getData();
- this.agentSelector.removeAll();
- var emptyItem = new qx.ui.form.ListItem("", null, "");
- this.agentSelector.add(emptyItem);
- this.agentSelector.setSelected(emptyItem);
- for(var key in topics){
- var listItem = new qx.ui.form.ListItem(topics[key], null, key);
- this.agentSelector.add(listItem);
- }
- },
-
- /*
- _addAmqListener: function(uuid){
- this._amqClient.addListener("slcExec", "topic://agent."+uuid+".newExecution", function(response){
- var message = org.argeo.ria.util.Element.selectSingleNode(response, "slc:slc-execution");
- var slcExec = new org.argeo.slc.ria.SlcExecutionMessage(message.getAttribute("uuid"));
- slcExec.fromXml(message);
- this.logModel.addRows([
- [new Date().toString(), slcExec.getHost()+' ('+slcExec.getUuid()+')', slcExec.getStatus()]
- ]);
- }, this);
- },
-
- _removeAmqListener : function(uuid){
- this._amqClient.removeListener("slcExec", "topic://agent."+uuid+".newExecution");
- },
- */
-
- /**
- * Make an SlcExecutionMessage from the currently displayed form.
- * @param crtPartId {String} The form part currently displayed
- * @param slcExec {org.argeo.slc.ria.SlcExecutionMessage} The message to fill.
- * @param fields {Map} The fields of the form
- * @param hiddenFields {Map} The hidden ones
- * @param freeFields {Array} The free fields.
- */
- _prepareSlcExecutionMessage : function(crtPartId, slcExec, fields, hiddenFields, freeFields){
- if(crtPartId == "standard"){
- slcExec.setStatus(fields.status.getValue());
- slcExec.setHost(fields.host.getValue());
- slcExec.setUser(fields.user.getValue());
- }else{
- slcExec.addAttribute("ant.file", fields["ant.file"].getValue());
- }
- for(var i=0;i<freeFields.length;i++){
- var fF = freeFields[i];
- if(fF.labelEl.getValue() != "" && fF.valueEl.getValue() != ""){
- slcExec.addAttribute(fF.labelEl.getValue(), fF.valueEl.getValue());
- }
- }
- },
-
- /**
- * Called when the user clicks the "Execute" button.
- */
- submitForm : function(){
- var currentUuid = this.agentSelector.getValue();
- if(!currentUuid) return;
- var slcExec = new org.argeo.slc.ria.SlcExecutionMessage();
-
- var fields = {};
- var hiddenFields = {};
- var freeFields = {};
- var crtPartId = "";
- if(this.parts){
- if(this.partChooser){
- crtPartId = this.partChooser.getValue();
- }else{
- crtPartId = qx.lang.Object.getKeys(this.parts)[0];
- }
- var crtPart = this.parts[crtPartId];
- fields = crtPart.fields;
- hiddenFields = crtPart.hiddenFields;
- freeFields = crtPart.freeFields;
- }
-
- this._prepareSlcExecutionMessage(crtPartId, slcExec, fields, hiddenFields, freeFields);
-
- this._amqClient.sendMessage(
- "topic://agent.newExecution",
- slcExec.toXml(),
- {"slc_agentId":currentUuid}
- );
- // Force logs refresh right now!
- qx.event.Timer.once(function(){
- var command = org.argeo.ria.event.CommandsManager.getInstance().getCommandById("reloadlogs");
- if(command){
- command.execute();
- }
- }, this, 2000);
- }
-
- }
-});
\ No newline at end of file
+++ /dev/null
-/**\r
- * SLC API Client implementation :\r
- * This class encapsulate the various SLC services available. It just creates the Request object\r
- * and return them, it does not execute them. \r
- * Available services are : \r
- * + loadResult / removeResult / addResult\r
- * + listCollection / listResults\r
- * When using it, be sure the static constant DEFAULT_CONTEXT is pointing to the right URL.\r
- */\r
-qx.Class.define("org.argeo.slc.ria.SlcApi",\r
-{\r
- extend : qx.core.Object,\r
- \r
- statics : {\r
- DEFAULT_CONTEXT : "/org.argeo.slc.webapp",\r
- \r
- REMOVE_RESULT_FROM_COLL_SERVICE : "removeResultFromCollection.service",\r
- ADD_RESULT_TO_COLL_SERVICE : "addResultToCollection.service",\r
- LIST_COLLECTIONS_SERVICE : "listCollectionRefs.service",\r
- COPY_COLLECTION_TO_COLL_SERVICE : "copyCollectionToCollection.service",\r
- LIST_RESULTS_SERVICE : "listResultAttributes.service",\r
- LIST_RESULTS_LONG_SERVICE : "listResults.service",\r
- GET_RESULT_SERVICE : "getResult.service",\r
- GET_ATTACHEMENT_SERVICE : "getAttachment.service",\r
- LIST_SLCEXEC_SERVICE : "listSlcExecutions.service",\r
- NEW_SLCEXEC_SERVICE : "newSlcExecution.service",\r
- \r
- LIST_AGENTS_SERVICE : "listAgents.service",\r
- LIST_MODULES_SERVICE : "listModulesDescriptors.service",\r
- GET_EXECUTION_DESC_SERVICE : "getExecutionDescriptor.service",\r
- GET_SLC_EXECUTION_SERVICE : "getSlcExecution.service",\r
- TAIL_SLCEXEC_STEP_COUNT : "tailSlcExecutionStepsCount.service",\r
- TAIL_SLCEXEC_STEP_OFFSET : "tailSlcExecutionStepsOffset.service",\r
- DOWNLOAD_SLCEXEC_STEPS : "downloadSlcExecution.service",\r
- \r
- RELOAD_BUNDLE_SERVICE : "reloadBundle.service",\r
- AMQ_SERVICE : "amq",\r
- \r
- LIST_MODULAR_DISTRIB_SERVICE : "listModularDistributions.service",\r
- INSTALL_MODULE_SERVICE : "installModule.service",\r
- UNINSTALL_MODULE_SERVICE : "uninstallModule.service",\r
- \r
- /**\r
- * Standard Request getter\r
- * @param serviceName {String} The name of the service to call (without base context)\r
- * @param fireReloadEventType {String} Whether query should trigger a ReloadEvent\r
- * @param iLoadStatusables {org.argeo.ria.components.ILoadStatusables[]} Gui parts to update\r
- * @return {qx.io.remote.Request}\r
- */\r
- getServiceRequest:function(serviceName, fireReloadEventType, iLoadStatusables){\r
- var serviceManager = org.argeo.ria.remote.RequestManager.getInstance();\r
- return serviceManager.getRequest(\r
- org.argeo.slc.ria.SlcApi.DEFAULT_CONTEXT+"/"+serviceName,\r
- "GET",\r
- "application/xml",\r
- fireReloadEventType,\r
- iLoadStatusables\r
- );\r
- },\r
- \r
- /**\r
- * Remove a result from a collection\r
- * @param collectionId {String} Id of the destination collection\r
- * @param resultId {String} Id of the test result to remove\r
- * @param fireReloadEventType {String} Whether query should trigger a ReloadEvent\r
- * @param iLoadStatusables {org.argeo.ria.components.ILoadStatusables[]} Gui parts to update\r
- * @return {qx.io.remote.Request}\r
- */\r
- getRemoveResultService : function(collectionId, resultId, fireReloadEventType, iLoadStatusables){\r
- var request = org.argeo.slc.ria.SlcApi.getServiceRequest(\r
- org.argeo.slc.ria.SlcApi.REMOVE_RESULT_FROM_COLL_SERVICE, \r
- fireReloadEventType, \r
- iLoadStatusables\r
- );\r
- request.setParameter("collectionId", collectionId);\r
- request.setParameter("resultUuid", resultId);\r
- return request;\r
- },\r
- \r
- /**\r
- * Remove a set of results from a collection. Either filtered by a given pattern, or the whole collection.\r
- * @param collectionId {String} The id of the collection\r
- * @param patternAttribute {String} An optional attribute name on which to filter\r
- * @param patternValue {String} The pattern to use for filtering a subset of result\r
- * @param fireReloadEventType {String} Whether query should trigger a ReloadEvent\r
- * @param iLoadStatusables {org.argeo.ria.components.ILoadStatusables[]} Gui parts to update\r
- * @return {qx.io.remote.Request} The Request object\r
- */\r
- getRemoveFromCollectionService : function(collectionId, patternAttribute, patternValue, fireReloadEventType, iLoadStatusables){\r
- var request = org.argeo.slc.ria.SlcApi.getServiceRequest(\r
- org.argeo.slc.ria.SlcApi.REMOVE_RESULT_FROM_COLL_SERVICE, \r
- fireReloadEventType, \r
- iLoadStatusables\r
- );\r
- request.setParameter("collectionId", collectionId);\r
- if(patternAttribute && patternValue){\r
- request.setParameter("attrName", patternAttribute);\r
- request.setParameter("attrPattern", patternValue);\r
- }\r
- return request;\r
- },\r
- \r
- /**\r
- * Add a result to a given collection\r
- * @param collectionId {String} Id of the destination collection\r
- * @param resultId {String} Id of the test result to add\r
- * @param fireReloadEventType {String} Whether query should trigger a ReloadEvent\r
- * @param iLoadStatusables {org.argeo.ria.components.ILoadStatusables[]} Gui parts to update\r
- * @return {qx.io.remote.Request}\r
- */\r
- getAddResultService : function(collectionId, resultId, fireReloadEventType, iLoadStatusables){\r
- var request = org.argeo.slc.ria.SlcApi.getServiceRequest(\r
- org.argeo.slc.ria.SlcApi.ADD_RESULT_TO_COLL_SERVICE, \r
- fireReloadEventType, \r
- iLoadStatusables\r
- );\r
- request.setParameter("collectionId", collectionId);\r
- request.setParameter("resultUuid", resultId);\r
- return request;\r
- },\r
- \r
- /**\r
- * List current collections\r
- * @param fireReloadEventType {String} Whether query should trigger a ReloadEvent\r
- * @param iLoadStatusables {org.argeo.ria.components.ILoadStatusables[]} Gui parts to update\r
- * @return {qx.io.remote.Request}\r
- */\r
- getListCollectionsService : function(fireReloadEventType, iLoadStatusables){\r
- return org.argeo.slc.ria.SlcApi.getServiceRequest(\r
- org.argeo.slc.ria.SlcApi.LIST_COLLECTIONS_SERVICE, \r
- fireReloadEventType, \r
- iLoadStatusables\r
- );\r
- },\r
- \r
- /**\r
- * Copy a whole collection or a subset of it to another collection. If a new id is provided for the target, it will be created.\r
- * @param sourceCollectionId {String} The current collection from which to copy\r
- * @param targetCollectionId {String} The target collection. If unknown, it will be created.\r
- * @param patternAttribute {String} An optional attribute on which a filter can be applied to create a subset.\r
- * @param patternValue {String} The associated pattern to filter on the atttribute's value.\r
- * @param fireReloadEventType {String} Whether query should trigger a ReloadEvent\r
- * @param iLoadStatusables {org.argeo.ria.components.ILoadStatusables[]} Gui parts to update\r
- * @return {qx.io.remote.Request} The request object\r
- */\r
- getCopyCollectionService : function(sourceCollectionId, targetCollectionId, patternAttribute, patternValue, fireReloadEventType, iLoadStatusables){\r
- var request = org.argeo.slc.ria.SlcApi.getServiceRequest(\r
- org.argeo.slc.ria.SlcApi.COPY_COLLECTION_TO_COLL_SERVICE, \r
- fireReloadEventType, \r
- iLoadStatusables \r
- );\r
- request.setParameter("sourceCollectionId", sourceCollectionId);\r
- request.setParameter("targetCollectionId", targetCollectionId);\r
- if(patternAttribute && patternValue){\r
- request.setParameter("attrName", patternAttribute);\r
- request.setParameter("attrPattern", patternValue);\r
- }\r
- return request;\r
- },\r
- \r
- /**\r
- * List all results or results of a given collection with all details \r
- * @param collectionId {String} Id of the collection to load\r
- * @param fireReloadEventType {String} Whether query should trigger a ReloadEvent\r
- * @param iLoadStatusables {org.argeo.ria.components.ILoadStatusables[]} Gui parts to update\r
- * @return {qx.io.remote.Request}\r
- */\r
- getListResultsLongService : function(collectionId, fireReloadEventType, iLoadStatusables){\r
- var request = org.argeo.slc.ria.SlcApi.getServiceRequest(\r
- org.argeo.slc.ria.SlcApi.LIST_RESULTS_LONG_SERVICE, \r
- fireReloadEventType, \r
- iLoadStatusables\r
- );\r
- if(collectionId){\r
- request.setParameter("id", collectionId);\r
- }\r
- return request;\r
- },\r
- \r
- /**\r
- * List all results or results of a given collection \r
- * @param collectionId {String} Id of the collection to load\r
- * @param fireReloadEventType {String} Whether query should trigger a ReloadEvent\r
- * @param iLoadStatusables {org.argeo.ria.components.ILoadStatusables[]} Gui parts to update\r
- * @return {qx.io.remote.Request}\r
- */\r
- getListResultsService : function(collectionId, fireReloadEventType, iLoadStatusables){\r
- var request = org.argeo.slc.ria.SlcApi.getServiceRequest(\r
- org.argeo.slc.ria.SlcApi.LIST_RESULTS_SERVICE, \r
- fireReloadEventType, \r
- iLoadStatusables\r
- );\r
- if(collectionId){\r
- request.setParameter("id", collectionId);\r
- }\r
- return request;\r
- },\r
- \r
- /**\r
- * Load a result test\r
- * @param resultId {String} Id of the test result to load\r
- * @param fireReloadEventType {String} Whether query should trigger a ReloadEvent\r
- * @param iLoadStatusables {org.argeo.ria.components.ILoadStatusables[]} Gui parts to update\r
- * @return {qx.io.remote.Request}\r
- */\r
- getLoadResultService : function(resultId, fireReloadEventType, iLoadStatusables){\r
- var request = org.argeo.slc.ria.SlcApi.getServiceRequest(\r
- org.argeo.slc.ria.SlcApi.GET_RESULT_SERVICE, \r
- fireReloadEventType, \r
- iLoadStatusables\r
- );\r
- request.setParameter("uuid", resultId);\r
- return request;\r
- },\r
-\r
- buildGetAttachmentUrl : function(attachmentId, contentType, name){\r
- return org.argeo.slc.ria.SlcApi.DEFAULT_CONTEXT + "/" + org.argeo.slc.ria.SlcApi.GET_ATTACHEMENT_SERVICE\r
- + "?uuid=" + attachmentId + "&contentType=" + contentType + "&name=" + name;\r
- },\r
- \r
- /**\r
- * List currently registered SlcExecutions.\r
- * @param fireReloadEventType {String} Event type to trigger (optionnal)\r
- * @param iLoadStatusables {org.argeo.ria.components.ILoadStatusables[]} Gui parts to update \r
- * @return {qx.io.remote.Request}\r
- */\r
- getListSlcExecutionsService:function(fireReloadEventType, iLoadStatusables){\r
- return org.argeo.slc.ria.SlcApi.getServiceRequest(\r
- org.argeo.slc.ria.SlcApi.LIST_SLCEXEC_SERVICE,\r
- fireReloadEventType,\r
- iLoadStatusables\r
- );\r
- },\r
- \r
- /**\r
- * List currently registered SlcExecutions.\r
- * @param fireReloadEventType {String} Event type to trigger (optionnal)\r
- * @param iLoadStatusables {org.argeo.ria.components.ILoadStatusables[]} Gui parts to update \r
- * @return {qx.io.remote.Request}\r
- */\r
- getListModularDistributionsService:function(fireReloadEventType, iLoadStatusables){\r
- return org.argeo.slc.ria.SlcApi.getServiceRequest(\r
- org.argeo.slc.ria.SlcApi.LIST_MODULAR_DISTRIB_SERVICE,\r
- fireReloadEventType,\r
- iLoadStatusables\r
- );\r
- },\r
- \r
- getInstallModuleService : function(){\r
- return org.argeo.slc.ria.SlcApi.DEFAULT_CONTEXT +"/"+ org.argeo.slc.ria.SlcApi.INSTALL_MODULE_SERVICE;\r
- },\r
-\r
- /**\r
- * Load a result test\r
- * @param resultId {String} Id of the test result to load\r
- * @param fireReloadEventType {String} Whether query should trigger a ReloadEvent\r
- * @param iLoadStatusables {org.argeo.ria.components.ILoadStatusables[]} Gui parts to update\r
- * @return {qx.io.remote.Request}\r
- */\r
- getUninstallModuleService : function(moduleName, moduleVersion, fireReloadEventType, iLoadStatusables){\r
- var request = org.argeo.slc.ria.SlcApi.getServiceRequest(\r
- org.argeo.slc.ria.SlcApi.UNINSTALL_MODULE_SERVICE, \r
- fireReloadEventType, \r
- iLoadStatusables\r
- );\r
- request.setParameter("name", moduleName);\r
- request.setParameter("version", moduleVersion);\r
- return request;\r
- },\r
-\r
- \r
- \r
- /**\r
- * New SlcExecution\r
- * @param agentId {String} Agent id target\r
- * @param xmlDescription {String} XML of the Slc Execution\r
- * @param fireReloadEventType {String} Event type to trigger (optionnal)\r
- * @param iLoadStatusables {org.argeo.ria.components.ILoadStatusables[]} Gui parts to update \r
- * @return {qx.io.remote.Request}\r
- */\r
- getNewSlcExecutionService:function(agentId, xmlDescription, fireReloadEventType, iLoadStatusables){\r
- var req = org.argeo.slc.ria.SlcApi.getServiceRequest(\r
- org.argeo.slc.ria.SlcApi.NEW_SLCEXEC_SERVICE + "?slc_agentId="+agentId,\r
- fireReloadEventType,\r
- iLoadStatusables\r
- );\r
- req.setMethod("POST");\r
- //req.setRequestHeader("Content-Type", "text/xml");\r
- req.setData("body=" + encodeURIComponent(xmlDescription));\r
- return req;\r
- },\r
- \r
- getSlcExecutionService :function(executionMessageId, fireReloadEventType, iLoadStatusables){\r
- var request = org.argeo.slc.ria.SlcApi.getServiceRequest(\r
- org.argeo.slc.ria.SlcApi.GET_SLC_EXECUTION_SERVICE,\r
- fireReloadEventType,\r
- iLoadStatusables\r
- );\r
- request.setParameter("uuid", executionMessageId);\r
- return request;\r
- },\r
- \r
- getTailSlcExecutionStepService : function(executionUuid, stepCount, offset, fireReloadEventType, iLoadStatusables){ \r
- var request = org.argeo.slc.ria.SlcApi.getServiceRequest(\r
- (offset?org.argeo.slc.ria.SlcApi.TAIL_SLCEXEC_STEP_OFFSET:org.argeo.slc.ria.SlcApi.TAIL_SLCEXEC_STEP_COUNT),\r
- fireReloadEventType,\r
- iLoadStatusables\r
- );\r
- request.setParameter("uuid", executionUuid);\r
- if(offset){\r
- request.setParameter("stepOffsetUuid", offset);\r
- }else{\r
- request.setParameter("stepCount", stepCount);\r
- }\r
- return request;\r
- }, \r
- \r
- /**\r
- * List currently available agents queues.\r
- * @param fireReloadEventType {String} Event type to trigger (optionnal)\r
- * @param iLoadStatusables {org.argeo.ria.components.ILoadStatusables[]} Gui parts to update \r
- * @return {qx.io.remote.Request}\r
- */\r
- getListAgentsService:function(fireReloadEventType, iLoadStatusables){\r
- return org.argeo.slc.ria.SlcApi.getServiceRequest(\r
- org.argeo.slc.ria.SlcApi.LIST_AGENTS_SERVICE,\r
- fireReloadEventType,\r
- iLoadStatusables\r
- );\r
- },\r
-\r
- /**\r
- * Load the module descriptors\r
- * @param fireReloadEventType {String} Event type to trigger (optionnal)\r
- * @param iLoadStatusables {org.argeo.ria.components.ILoadStatusables[]} Gui parts to update \r
- * @return {qx.io.remote.Request}\r
- */\r
- getListModulesService : function(agentId, fireReloadEventType, iLoadStatusables){\r
- var req = org.argeo.slc.ria.SlcApi.getServiceRequest(\r
- org.argeo.slc.ria.SlcApi.LIST_MODULES_SERVICE,\r
- fireReloadEventType,\r
- iLoadStatusables\r
- );\r
- req.setParameter("agentId", agentId);\r
- return req;\r
- },\r
- \r
- /**\r
- * Get an execution module descriptor by its name and version\r
- * @param moduleName {String} The name of the module to get\r
- * @param moduleVersion {String} Its version, passed directly as a string\r
- * @param fireReloadEventType {String} Event type to trigger (optionnal)\r
- * @param iLoadStatusables {org.argeo.ria.components.ILoadStatusables[]} Gui parts to update \r
- * @return {qx.io.remote.Request}\r
- */\r
- getLoadExecutionDescriptorService : function(agentId,moduleName, moduleVersion, fireReloadEventType, iLoadStatusables){\r
- var req = org.argeo.slc.ria.SlcApi.getServiceRequest(\r
- org.argeo.slc.ria.SlcApi.GET_EXECUTION_DESC_SERVICE,\r
- fireReloadEventType,\r
- iLoadStatusables\r
- ); \r
- req.setParameter("agentId", agentId);\r
- req.setParameter("moduleName", moduleName);\r
- req.setParameter("version", moduleVersion);\r
- return req;\r
- },\r
-\r
- /**\r
- * Fire the reload of an OSGI bundle.\r
- * @param fireReloadEventType {String} Event type to trigger (optionnal)\r
- * @param iLoadStatusables {org.argeo.ria.components.ILoadStatusables[]} Gui parts to update \r
- * @return {qx.io.remote.Request}\r
- */\r
- getReloadBundleService : function(bundleName, bundleVersion, fireReloadEventType, iLoadStatusables){\r
- var req = org.argeo.slc.ria.SlcApi.getServiceRequest(\r
- org.argeo.slc.ria.SlcApi.RELOAD_BUNDLE_SERVICE,\r
- fireReloadEventType,\r
- iLoadStatusables\r
- );\r
- req.setParameter("bundleName", bundleName);\r
- req.setParameter("bundleVersion", bundleVersion);\r
- return req;\r
- },\r
- \r
- \r
- \r
- /**\r
- * Send a JMS message to the AMQ_CONTEXT\r
- * @param destination {String} The destination queue, in the form "topic://destination" \r
- * @param message {org.argeo.slc.ria.SlcExecutionMessage} The message object\r
- * @param iLoadStatusables {org.argeo.ria.components.ILoadStatusables[]} Gui parts to update\r
- */\r
- getSendAmqMessageRequest : function(destination, message, iLoadStatusables){\r
- var serviceManager = org.argeo.ria.remote.RequestManager.getInstance();\r
- var request = serviceManager.getRequest(\r
- org.argeo.slc.ria.SlcApi.DEFAULT_CONTEXT+"/"+org.argeo.slc.ria.SlcApi.AMQ_SERVICE,\r
- "POST",\r
- "text/plain",\r
- null,\r
- iLoadStatusables\r
- );\r
- request.setParameter("destination", destination);\r
- request.setParameter("message", message.toXml());\r
- request.setParameter("type", "send");\r
- return request;\r
- }\r
- \r
- }\r
-});
\ No newline at end of file
+++ /dev/null
-/**\r
- * A simple Hello World applet for documentation purpose. \r
- * The only associated command is the "Close" command.\r
- */\r
-qx.Class.define("org.argeo.slc.ria.SlcExecLoggerApplet",\r
-{\r
- extend : qx.ui.container.Composite,\r
- implement : [org.argeo.ria.components.IView], \r
-\r
- construct : function(){\r
- this.base(arguments);\r
- this.setLayout(new qx.ui.layout.Dock()); \r
- },\r
-\r
- properties : \r
- {\r
- /**\r
- * The viewPane inside which this applet is added. \r
- */\r
- view : {\r
- init : null\r
- },\r
- viewSelection : {\r
- nullable:false, \r
- check:"org.argeo.ria.components.ViewSelection"\r
- }, \r
- instanceId : {init:""},\r
- instanceLabel : {init:""}, \r
- /**\r
- * Commands definition, see {@link org.argeo.ria.event.CommandsManager#definitions} \r
- */\r
- commands : {\r
- init : {\r
- "reloadlogs" : {\r
- label : "Reload Logs", \r
- icon : "org/argeo/slc/ria/view-refresh.png",\r
- shortcut : "Control+r",\r
- enabled : true,\r
- menu : null,\r
- toolbar : null,\r
- callback : function(e){\r
- this.reloadLogger();\r
- },\r
- command : null\r
- },\r
- "opendetail" : {\r
- label : "Logs Detail",\r
- icon : "org/argeo/slc/ria/mime-xls.png",\r
- shortcut : null,\r
- enabled : false,\r
- menu : null,\r
- toolbar : "slc_logs",\r
- callback : function(e){\r
- var selection = this.getViewSelection();\r
- var rowData = selection.getNodes()[0];\r
- this.openDetail(rowData);\r
- },\r
- selectionChange : function(viewId, selection){\r
- if(viewId != "logger") return;\r
- this.setEnabled((selection!=null && selection.length==1));\r
- },\r
- command : null \r
- },\r
- "reopenrealized" : {\r
- label : "Re-open Process",\r
- icon : "org/argeo/slc/ria/document-open.png",\r
- shortcut : "Control+o",\r
- enabled : false,\r
- menu : null,\r
- toolbar : "slc_logs",\r
- callback : function(e){\r
- var selection = this.getViewSelection();\r
- var rowData = selection.getNodes()[0];\r
- this.openRealized(rowData);\r
- },\r
- selectionChange : function(viewId, selection){\r
- if(viewId != "logger") return;\r
- this.setEnabled((selection!=null && selection.length==1));\r
- },\r
- command : null\r
- }\r
- }\r
- }\r
- },\r
-\r
- members :\r
- {\r
- /**\r
- * Called at applet creation. Just registers viewPane.\r
- * @param viewPane {org.argeo.ria.components.ViewPane} The viewPane.\r
- */\r
- init : function(viewPane){\r
- this.setView(viewPane);\r
- this.setViewSelection(new org.argeo.ria.components.ViewSelection(viewPane.getViewId())); \r
- this._createLayout();\r
- this.UIBus = org.argeo.ria.event.UIBus.getInstance();\r
- },\r
- \r
- /**\r
- * \r
- */\r
- load : function(){\r
- this.reloadLogger();\r
- this.UIBus.addListener("newSlcExecution", this.reloadLogger, this);\r
- this.UIBus.addListener("updateSlcExecutionStatus", this.reloadLogger, this);\r
- },\r
- \r
- addScroll : function(){\r
- return false;\r
- },\r
- \r
- close : function(){\r
- this.UIBus.removeListener("newSlcExecution", this.reloadLogger, this);\r
- this.UIBus.removeListener("updateSlcExecutionStatus", this.reloadLogger, this);\r
- },\r
- \r
- openRealized : function(logData){\r
- \r
- // DEBUG PURPOSE\r
- var CHECK_HOST = false;\r
- \r
- var uuid = logData[2];\r
- var host = logData[1];\r
- \r
- \r
- // 1. Check that both associated views are here\r
- var batchView;\r
- var flowsView;\r
- try{\r
- batchView = org.argeo.ria.components.ViewsManager.getInstance().getViewPaneById("batch").getContent();\r
- flowsView = org.argeo.ria.components.ViewsManager.getInstance().getViewPaneById("selector").getContent();\r
- }catch(e){\r
- this.debug("Cannot find either bath or flows IView!");\r
- }\r
- if(!batchView || !flowsView) return; \r
- \r
- // 2. Check that at least a host with the same name exists.\r
- var agentsMap = flowsView.getAgentsMap(); \r
- var currentBatchId = batchView.getBatchAgentId();\r
- if(currentBatchId != null){\r
- var currentHost = agentsMap[currentBatchId];\r
- if(currentHost != host){\r
- this.error("Cannot re-open these flows on a different host. Please clear the batch first.");\r
- return;\r
- }\r
- } \r
- if(!qx.lang.Object.contains(agentsMap, host)){\r
- this.error("Cannot find any agent running on '"+host+"'! Please start an agent on this host.");\r
- return;\r
- }\r
- //console.log(currentBatchId);\r
- if(currentBatchId == null){\r
- var defaultId = qx.lang.Object.getKeyFromValue(agentsMap, host);\r
- batchView.setBatchAgentId(defaultId);\r
- }\r
- \r
- // 3. Call service to load execution message\r
- var req = org.argeo.slc.ria.SlcApi.getSlcExecutionService(uuid);\r
- var handler = function(xmlDoc){ \r
- var realizedFlows = org.argeo.ria.util.Element.selectNodes(xmlDoc, "slc:slc-execution/slc:realized-flows/slc:realized-flow");\r
- for(var i=0;i<realizedFlows.length;i++){ \r
- var newEntrySpec = new org.argeo.slc.ria.execution.BatchEntrySpec(null, null, realizedFlows[i]);\r
- batchView.appendBatchEntrySpec(newEntrySpec);\r
- } \r
- };\r
- req.addListener("completed", function(response){ \r
- handler(response.getContent());\r
- });\r
- // STUB CASE\r
- /*\r
- req.addListener("failed", function(){\r
- if(!window.xmlExecStub || !window.xmlExecStub[uuid]){ \r
- return;\r
- }\r
- var xmlDoc = window.xmlExecStub[uuid];\r
- handler(xmlDoc);\r
- }); \r
- */\r
- req.send();\r
- },\r
- \r
- openDetail : function(logData){\r
- \r
- var uuid = logData[2];\r
- var window = new qx.ui.window.Window("Logs Detail", "org/argeo/slc/ria/mime-xls.png");\r
- window.setLayout(new qx.ui.layout.VBox(0));\r
- window.setContentPadding(0); \r
- window.open();\r
- org.argeo.ria.components.ViewsManager.getInstance().getApplicationRoot().add(window, {\r
- top : '20%',\r
- left : '20%',\r
- width: '60%',\r
- height: '60%'\r
- });\r
- \r
- var tBar = new qx.ui.toolbar.ToolBar();\r
- window.add(tBar);\r
- var menuButton = new qx.ui.toolbar.Button("Close", "org/argeo/slc/ria/window-close.png");\r
- tBar.add(menuButton);\r
- menuButton.addListener("execute", function(e){\r
- window.close();\r
- });\r
- \r
- var tableModel = new qx.ui.table.model.Simple();\r
- var table = new org.argeo.ria.components.ui.Table(tableModel, {\r
- "date":{NAME : "Date", WIDTH:180}, \r
- "type":{NAME : "Type", WIDTH:90, ALIGN:"CENTER"}, \r
- "thread":{NAME : "Thread", WIDTH:90, ALIGN:"CENTER"}, \r
- "log":"Log"\r
- });\r
- table.setStatusBarVisible(true);\r
- window.add(table, {flex:1});\r
- window.setAllowMinimize(false);\r
- window.setResizable(true, true, true, true);\r
- \r
- tableModel.addListener("dataChanged", function(event){\r
- if(!event.getData()) return;\r
- var dataMap = event.getData();\r
- table.scrollCellVisible(0, dataMap.lastRow);\r
- });\r
- \r
- var cpButton = new qx.ui.toolbar.Button("Download", "org/argeo/slc/ria/document-save-as.png");\r
- tBar.add(cpButton);\r
- cpButton.addListener("execute", function(e){\r
- var downloadUrl = org.argeo.slc.ria.SlcApi.DEFAULT_CONTEXT+"/"+org.argeo.slc.ria.SlcApi.DOWNLOAD_SLCEXEC_STEPS + "?ext=log&uuid=" + uuid;\r
- org.argeo.ria.Application.INSTANCE.javascriptDownloadLocation(downloadUrl);\r
- });\r
- \r
- var reopButton = new qx.ui.toolbar.Button("Re-open Process", "org/argeo/slc/ria/document-open.png");\r
- tBar.add(reopButton);\r
- reopButton.addListener("execute", function(e){\r
- this.openRealized(logData);\r
- }, this);\r
- \r
- // Call service to load execution message\r
- this._loadSlcExecutionSteps(uuid, tableModel, false);\r
- \r
- var poller = new qx.event.Timer(3000);\r
- poller.addListener("interval", function(e){\r
- this._loadSlcExecutionSteps(uuid, tableModel, true);\r
- }, this);\r
- \r
- window.addListener("close", function(){\r
- poller.stop();\r
- }, this);\r
- poller.start();\r
- }, \r
-\r
- _loadSlcExecutionSteps : function(uuid, tableModel, poller){\r
- var req;\r
- var lastUuid = tableModel.getUserData("lastStepUuid");\r
- if(!poller || !lastUuid){\r
- req = org.argeo.slc.ria.SlcApi.getTailSlcExecutionStepService(uuid, 200, null);\r
- }else{\r
- req = org.argeo.slc.ria.SlcApi.getTailSlcExecutionStepService(uuid, null, lastUuid);\r
- }\r
- req.addListener("completed", function(response){ \r
- var xmlDoc = response.getContent();\r
- var tableLines = (poller?tableModel.getData():[]);\r
- var parser = org.argeo.ria.util.Element;\r
- var slcSteps = parser.selectNodes(xmlDoc, "slc:object-list/slc:slc-execution-step");\r
- for(var i=0;i<slcSteps.length;i++){ \r
- var step = slcSteps[i];\r
- var stepUuid = parser.getSingleNodeText(step, "@uuid");\r
- var date = parser.getSingleNodeText(step, "slc:timestamp");\r
- var type = parser.getSingleNodeText(step, "slc:type");\r
- var thread = parser.getSingleNodeText(step, "slc:thread");\r
- var logLines = parser.selectNodes(step, "slc:log-lines/slc:log-line");\r
- if(logLines.length > 0){\r
- tableLines.push([date, type, thread, parser.getSingleNodeText(logLines[0], ".")]);\r
- if(logLines.length>1){\r
- for(var j=1;j<logLines.length;j++){\r
- tableLines.push(["", "", "", parser.getSingleNodeText(logLines[j], ".")]); \r
- }\r
- }\r
- }else{\r
- tableLines.push([date, type, thread, ""]);\r
- }\r
- }\r
- if(slcSteps.length){\r
- tableModel.setUserData("lastStepUuid", stepUuid);\r
- }\r
- tableModel.setData(tableLines);\r
- });\r
- req.send();\r
- \r
- },\r
- \r
- /**\r
- * Creates the applet layout\r
- */\r
- _createLayout : function(){\r
- this.logModel = new qx.ui.table.model.Simple();\r
- this.logModel.setColumns(["Date", "Host", "Id", "Status"]);\r
- this.logPane = new qx.ui.table.Table(this.logModel, {\r
- tableColumnModel: function(obj){\r
- return new qx.ui.table.columnmodel.Resize(obj)\r
- }\r
- });\r
- this.logPane.addListener("cellDblclick", function(e){\r
- this.getCommands()["opendetail"].command.execute();\r
- }, this);\r
- \r
- var selectionModel = this.logPane.getSelectionModel();\r
- selectionModel.addListener("changeSelection", function(e){ \r
- var viewSelection = this.getViewSelection(); \r
- viewSelection.setViewId("logger"); \r
- viewSelection.clear(); \r
- selectionModel.iterateSelection(function(index){ \r
- viewSelection.addNode(this.logModel.getRowData(index));\r
- }, this);\r
- }, this);\r
- \r
- this.logPane.set({ \r
- decorator : null,\r
- statusBarVisible: false,\r
- showCellFocusIndicator:false\r
- });\r
- var columnModel = this.logPane.getTableColumnModel();\r
- columnModel.getBehavior().setWidth(0, "30%");\r
- columnModel.getBehavior().setWidth(1, "15%");\r
- columnModel.getBehavior().setWidth(3, "12%"); \r
- \r
- this.add(this.logPane, {edge:'center'});\r
- },\r
- \r
- /**\r
- * Refresh the data model.\r
- */\r
- reloadLogger : function(){\r
- var request = org.argeo.slc.ria.SlcApi.getListSlcExecutionsService();\r
- request.addListener("completed", function(response){ \r
- var messages = org.argeo.ria.util.Element.selectNodes(response.getContent(), "//slc:slc-execution");\r
- this.logModel.setData([]);\r
- for(var i=0;i<messages.length;i++){\r
- var message = messages[i];\r
- var slcExec = new org.argeo.slc.ria.SlcExecutionMessage(message.getAttribute("uuid"));\r
- slcExec.fromXml(message);\r
- this.logModel.addRows([\r
- [slcExec.getDate(), slcExec.getHost(), slcExec.getUuid(), slcExec.getStatus()]\r
- ]); \r
- }\r
- this.logModel.sortByColumn(0, false);\r
- }, this);\r
- request.send(); \r
- }\r
- \r
- }\r
-});
\ No newline at end of file
+++ /dev/null
-/**\r
- * A generic JMS slcExecution message encapsulator.\r
- */\r
-qx.Class.define("org.argeo.slc.ria.SlcExecutionMessage", {\r
- extend : qx.core.Object,\r
- /**\r
- * New instance\r
- * @param uuid {String} The Uuid of the message. If none is passed, one is generated.\r
- */\r
- construct : function(uuid){\r
- this.base(arguments);\r
- if(uuid){\r
- this.setUuid(uuid);\r
- }else{\r
- var s = [];\r
- var itoh = '0123456789ABCDEF';\r
- for (var i = 0; i <36; i++) s[i] = Math.floor(Math.random()*0x10);\r
- s[14] = 4; // Set 4 high bits of time_high field to version\r
- s[19] = (s[19] & 0x3) | 0x8; // Specify 2 high bits of clock sequence\r
- for (var i = 0; i <36; i++) s[i] = itoh[s[i]];\r
- s[8] = s[13] = s[18] = s[23] = '-';\r
- this.setUuid(s.join('').toLowerCase()); \r
- }\r
- this.setAttributes({});\r
- },\r
- properties : {\r
- /**\r
- * The unique id identifying the message\r
- */\r
- uuid : {\r
- check : "String"\r
- },\r
- /**\r
- * Execution status\r
- */\r
- status : {\r
- check : "String",\r
- init : "STARTED"\r
- },\r
- /**\r
- * Execution type\r
- */\r
- type : {\r
- check : "String",\r
- init : "slcAnt"\r
- },\r
- /**\r
- * Execution Host\r
- */\r
- host : {\r
- check : "String",\r
- init : "localhost"\r
- },\r
- /**\r
- * Execution User\r
- */\r
- user : {\r
- check : "String",\r
- init : "user"\r
- },\r
- /**\r
- * Date of the message. now() by default.\r
- */\r
- date : {\r
- check : "String", \r
- init : new Date().toString()\r
- },\r
- /**\r
- * Additionnal attributes as map of key/values\r
- */\r
- attributes : {\r
- check : "Map"\r
- }\r
- },\r
- members : {\r
- \r
- /**\r
- * Add a free attribute to the message\r
- * @param attName {String} Name\r
- * @param attValue {String} Value\r
- */\r
- addAttribute: function(attName, attValue){\r
- var attr = this.getAttributes();\r
- attr[attName] = attValue;\r
- this.setAttributes(attr);\r
- },\r
- /**\r
- * Build the xml formatted message body to send\r
- * \r
- * @return {String} The message content as Xml\r
- */\r
- toXml : function (){\r
- var builder = new qx.util.StringBuilder();\r
- builder.add('<slc:slc-execution xmlns:slc="http://argeo.org/projects/slc/schemas" uuid="'+this.getUuid()+'">');\r
- builder.add('<slc:status>'+this.getStatus()+'</slc:status>');\r
- builder.add('<slc:type>'+this.getType()+'</slc:type>');\r
- builder.add('<slc:host>'+this.getHost()+'</slc:host>');\r
- builder.add('<slc:user>'+this.getUser()+'</slc:user>');\r
- var attr = this.getAttributes();\r
- if(qx.lang.Object.getLength(attr)){\r
- builder.add('<slc:attributes>');\r
- for(var key in attr){\r
- builder.add('<slc:attribute name="'+key+'">'+attr[key]+'</slc:attribute>');\r
- }\r
- builder.add('</slc:attributes>');\r
- }\r
- builder.add('</slc:slc-execution>');\r
- return builder.get();\r
- },\r
- \r
- /**\r
- * Parse an XML answer and fill the object with it.\r
- * @param slcExecXml {String} An slcExecMessage mapped in XML.\r
- */\r
- fromXml : function(slcExecXml){\r
- var NSMap = {slc:"http://argeo.org/projects/slc/schemas"}; \r
- this.setStatus(org.argeo.ria.util.Element.getSingleNodeText(slcExecXml, "slc:status", NSMap));\r
- this.setType(org.argeo.ria.util.Element.getSingleNodeText(slcExecXml, "slc:type", NSMap));\r
- this.setHost(org.argeo.ria.util.Element.getSingleNodeText(slcExecXml, "slc:host", NSMap));\r
- this.setUser(org.argeo.ria.util.Element.getSingleNodeText(slcExecXml, "slc:user", NSMap));\r
- var attributes = org.argeo.ria.util.Element.selectNodes(slcExecXml, "slc:attribute", NSMap);\r
- for(var i=0;i<attributes.length;i++){\r
- this.addAttribute(attribute.getAttribute("name"), attribute.firstChild);\r
- }\r
- var stepsDates = org.argeo.ria.util.Element.selectNodes(slcExecXml, "slc:steps/slc:slc-execution-step/slc:timestamp", NSMap);\r
- if(stepsDates.length){\r
- this.setDate(org.argeo.ria.util.Element.getSingleNodeText(stepsDates[stepsDates.length-1], ".", NSMap));\r
- }\r
- }\r
- } \r
-});
\ No newline at end of file
+++ /dev/null
-/**\r
- * Applet for the batch manager\r
- */\r
-qx.Class.define("org.argeo.slc.ria.SpecsEditorView",\r
-{\r
- extend : qx.ui.container.Composite,\r
- implement : [org.argeo.ria.components.IView], \r
-\r
- properties : \r
- {\r
- /**\r
- * The commands definition Map that will be automatically added and wired to the menubar and toolbar.\r
- * See {@link org.argeo.ria.event.CommandsManager#definitions} for the keys to use for defining commands.\r
- */\r
- commands : {\r
- init : {\r
- "updateData" : {\r
- label : "Edit Execution Specs",\r
- icon : "org/argeo/slc/ria/document-open.png",\r
- shortcut : null,\r
- enabled : false,\r
- menu : null,\r
- toolbar : null,\r
- callback : function(e) {},\r
- selectionChange : function(viewId, selection) {\r
- if (viewId != "batch:list")\r
- return;\r
- var view = org.argeo.ria.components.ViewsManager.getInstance().getViewPaneById("editor").getContent();\r
- if ((selection && selection.length == 1)) {\r
- view.setBatchEntrySpec(selection[0].getUserData("batchEntrySpec"));\r
- }else{\r
- view.setBatchEntrySpec(null);\r
- }\r
- },\r
- command : null \r
- }\r
- }\r
- },\r
- view : {\r
- init : null\r
- }, \r
- viewSelection : {\r
- nullable:false, \r
- check:"org.argeo.ria.components.ViewSelection"\r
- },\r
- instanceId : {init:""},\r
- instanceLabel : {init:""},\r
- batchEntrySpec : {\r
- init : null, \r
- nullable:true,\r
- event : "changeBatchEntrySpec"\r
- }\r
- \r
- },\r
- \r
- construct : function(){\r
- this.base(arguments);\r
- this.setLayout(new qx.ui.layout.Dock()); \r
- },\r
- \r
- members : {\r
- /**\r
- * The implementation should contain the GUI initialisation.\r
- * This is the role of the manager to actually add the graphical component to the pane, \r
- * so it's not necessary to do it here. \r
- * @param viewPane {org.argeo.ria.components.ViewPane} The pane manager\r
- * @param data {Mixed} Any object or data passed by the initiator of the view\r
- * @return {Boolean}\r
- */\r
- init : function(viewPane, data){\r
- this.setView(viewPane); \r
- this.setViewSelection(new org.argeo.ria.components.ViewSelection(viewPane.getViewId()));\r
- \r
- this.addListener("changeBatchEntrySpec", this.updateData, this);\r
- this._emptyTitleString = "Script Parameters (select a script to edit)";\r
- this._editorTitleString = "Script '%1' Parameters";\r
- },\r
- /**\r
- * The implementation should contain the real data loading (i.o. query...)\r
- * @return {Boolean}\r
- */\r
- load : function(){\r
- this._createLayout();\r
- this.getView().setViewTitle(this._emptyTitleString);\r
- },\r
- \r
- /**\r
- * Update the table\r
- * @param event {qx.event.type.DataEvent}\r
- */\r
- updateData : function(event){\r
- var batchEntry = event.getData();\r
- if(batchEntry == null){\r
- this.tableModel.setData([]);\r
- this.getView().setViewTitle(this._emptyTitleString);\r
- return;\r
- }\r
- this.getView().setViewTitle(qx.lang.String.format(this._editorTitleString, [batchEntry.getFlow().getName()]));\r
- var values = batchEntry.getValues();\r
- var data = [];\r
- for(var key in values){\r
- var valueObj = values[key];\r
- var hidden = valueObj.getHidden();\r
- var type = valueObj.getSpecType();\r
- if((type == "primitive" || type== "ref")&& !hidden){\r
- metadata = {\r
- key : key,\r
- disabled : valueObj.getFrozen(),\r
- type : type,\r
- subType : valueObj.getSpecSubType(),\r
- refList : (type=="ref"?valueObj.getRefList():[])\r
- }\r
- data.push([key, valueObj.getValue(), metadata]);\r
- }\r
- } \r
- this.tableModel.setData(data);\r
- },\r
- \r
- /**\r
- * Creates the main applet layout.\r
- */\r
- _createLayout : function() {\r
- this.tableModel = new qx.ui.table.model.Simple(); \r
- this.tableModel.setColumns(["Attribute Name", "Value"]);\r
- this.tableModel.setColumnEditable(1, true);\r
- this.table = new qx.ui.table.Table(this.tableModel, {\r
- tableColumnModel: function(obj){\r
- return new qx.ui.table.columnmodel.Resize(obj)\r
- }\r
- });\r
- this.table.set({\r
- decorator : null,\r
- statusBarVisible: false,\r
- showCellFocusIndicator:true,\r
- columnVisibilityButtonVisible : false\r
- });\r
- \r
- this.table.addListener("dataEdited", function(e){\r
- var data = e.getData();\r
- var rowData = this.tableModel.getRowData(data.row);\r
- var metaData = rowData[2];\r
- var values = this.getBatchEntrySpec().getValues();\r
- values[metaData.key].setValue(data.value);\r
- }, this);\r
- \r
- var columnModel = this.table.getTableColumnModel();\r
- var factory = new org.argeo.slc.ria.execution.CellEditorFactory();\r
- columnModel.setCellEditorFactory(1, factory);\r
- columnModel.setDataCellRenderer(1, factory);\r
- columnModel.getBehavior().setWidth(0, "40%");\r
- this.add(this.table, {edge:"center"});\r
- }, \r
- \r
- /**\r
- * Whether this component is already contained in a scroller (return false) or not (return true).\r
- * @return {Boolean}\r
- */\r
- addScroll : function(){return false;},\r
- /**\r
- * Called at destruction time\r
- * Perform all the clean operations (stopping polling queries, etc.) \r
- */\r
- close : function(){return true;}\r
- }\r
- \r
-\r
-});
\ No newline at end of file
+++ /dev/null
-/* ************************************************************************
-
- qooxdoo - the new era of web development
-
- http://qooxdoo.org
-
- Copyright:
- 2007 OpenHex SPRL, http://www.openhex.org
-
- License:
- LGPL: http://www.gnu.org/licenses/lgpl.html
- EPL: http://www.eclipse.org/org/documents/epl-v10.php
- See the LICENSE file in the project's top-level directory for details.
-
- Authors:
- * Dirk Wellmann (dw(at)piponline.net)
-
-************************************************************************ */
-
-/**
- * This Cellrender is for test status use. It create green or red background
- * cells depending on the status value (PASSED or FAILED).
- */
-qx.Class.define("org.argeo.slc.ria.StatusCellRenderer",
-{
- extend : qx.ui.table.cellrenderer.Html,
-
- construct : function(){
- this.base(arguments);
- var style =
- [
- ".slc-status-passed{background-color:#8fc98f;color:#008300;border-bottom:1px solid #cccccc;text-align:center;filter:alpha(opacity=80);opacity: 0.8;-moz-opacity:0.8;}",
- ".slc-status-failed{background-color:#cb8f8f;color:#830000;border-bottom:1px solid #cccccc;text-align:center;filter:alpha(opacity=80);opacity: 0.8;-moz-opacity:0.8;}"
- ];
- // Include stylesheet
- qx.bom.Stylesheet.createElement(style.join(""));
- },
-
- /*
- *****************************************************************************
- MEMBERS
- *****************************************************************************
- */
-
- members :
- {
- // overridden
- _getContentHtml : function(cellInfo) {
- return (cellInfo.value || "");
- },
-
- // overridden
- _getCellClass : function(cellInfo) {
- if(cellInfo.value == "PASSED"){
- return "qooxdoo-table-cell slc-status-passed";
- }else if(cellInfo.value == "FAILED"){
- return "qooxdoo-table-cell slc-status-failed";
- }else{
- return "qooxdoo-table-cell";
- }
- }
- }
-});
+++ /dev/null
-/**\r
- * Package containing SLC generic components to be used by any RIA SLC applications\r
- * as a library.\r
- * Currently contains the SlcApi client and a canonical Applet for displaying test results.\r
- */
\ No newline at end of file
+++ /dev/null
-/**\r
- * Data model for an entry of the Batch list : original Spec, flow and module, and currently computed value.\r
- */\r
-qx.Class.define("org.argeo.slc.ria.execution.BatchEntrySpec", {\r
- extend : org.argeo.slc.ria.execution.Spec,\r
- \r
- properties : {\r
- /**\r
- * Reference module\r
- */\r
- module :{},\r
- /**\r
- * Reference flow\r
- */\r
- flow : {},\r
- /**\r
- * Original Spec (values shall stay untouched).\r
- */\r
- originalSpec : {} \r
- },\r
- \r
- /**\r
- * Instance of BatchEntrySpec\r
- * @param module {org.argeo.slc.ria.execution.Module} Reference module\r
- * @param flow {org.argeo.slc.ria.execution.Flow} Reference flow\r
- */\r
- construct : function(module, flow, xmlElement){\r
- this.base(arguments);\r
- if(xmlElement){\r
- this.fromXml(xmlElement);\r
- }else{\r
- this.setModule(module);\r
- this.setFlow(flow);\r
- this.setOriginalSpec(flow.getExecutionSpec());\r
- this.setName(flow.getExecutionSpec().getName());\r
- }\r
- this.fetchInstanceValues();\r
- },\r
- \r
- members : {\r
- /**\r
- * Create a label to display in the batch list.\r
- * @return {String} The label\r
- */\r
- getLabel : function(){\r
- var label = this.getModule().getName();\r
- label += "/" + this.getModule().getVersion();\r
- label += "/" + this.getFlow().getName();\r
- return label;\r
- },\r
- \r
- toXml : function(){ \r
- var valuesXml = '';\r
- var values = this.getValues();\r
- for(var key in values){\r
- if(values[key].getValue() == null && !values[key].isFrozen() && !values[key].isHidden()){\r
- throw new Error("Cannot send empty values! (Parameter "+key+")");\r
- }\r
- valuesXml += values[key].toValueXml();\r
- }\r
- var execFlowDescXML = '<slc:execution-flow-descriptor name="'+this.getFlow().getName()+'" executionSpec="'+this.getName()+'">';\r
- if(this.getFlow().getDescription()!=""){\r
- execFlowDescXML += '<slc:description>'+this.getFlow().getDescription()+'</slc:description>';\r
- }\r
- execFlowDescXML += '<slc:values>'+valuesXml+'</slc:values></slc:execution-flow-descriptor>';\r
- \r
- var execSpecDescXML = this.getOriginalSpec().toXml();\r
- \r
- var moduleData = this.getModule().moduleDataToXml();\r
- \r
- return '<slc:realized-flow>'+moduleData + execFlowDescXML + execSpecDescXML +'</slc:realized-flow>';\r
- \r
- },\r
- \r
- fromXml : function(xmlElement){\r
- var parser = org.argeo.ria.util.Element;\r
- var simpleModule = new org.argeo.slc.ria.execution.Module();\r
- simpleModule.setName(parser.getSingleNodeText(xmlElement, "slc:module-name"));\r
- simpleModule.setVersion(parser.getSingleNodeText(xmlElement, "slc:module-version"));\r
- this.setModule(simpleModule);\r
- \r
- var spec = new org.argeo.slc.ria.execution.Spec();\r
- var flow = new org.argeo.slc.ria.execution.Flow();\r
- spec.setXmlNode(parser.selectSingleNode(xmlElement, "slc:default-execution-spec"));\r
- flow.setXmlNode(parser.selectSingleNode(xmlElement, "slc:execution-flow-descriptor"));\r
- flow.setExecutionSpec(spec);\r
- this.setOriginalSpec(spec);\r
- this.setFlow(flow);\r
- this.setName(spec.getName());\r
- \r
- },\r
- \r
- /**\r
- * Fetch the Spec Values with the Flow Values to make the current instance value\r
- */\r
- fetchInstanceValues : function(){\r
- var specValues = this.getOriginalSpec().getValues();\r
- var flow = this.getFlow();\r
- var instanceValues = {};\r
- for(var key in specValues){\r
- var flowValue = flow.getValue(\r
- key, \r
- specValues[key].getSpecType(), \r
- specValues[key].getSpecSubType()\r
- );\r
- var instValue = specValues[key].clone();\r
- if(flowValue){\r
- instValue.setValue(flowValue);\r
- }\r
- instanceValues[key] = instValue;\r
- }\r
- this.setValues(instanceValues); \r
- }\r
- }\r
-});
\ No newline at end of file
+++ /dev/null
-/*******************************************************************************
- *
- * Argeo
- *
- ******************************************************************************/
-
-/**
- * A cell editor factory creating text fields or disabled text fields.
- *
- */
-qx.Class.define("org.argeo.slc.ria.execution.CellEditorFactory",
-{
- extend : qx.ui.table.cellrenderer.Default,
- implement : qx.ui.table.ICellEditorFactory,
-
- /*
- * ****************************************************************************
- * CONSTRUCTOR
- * ****************************************************************************
- */
-
- construct : function() {
- this.base(arguments);
- },
-
- /*
- * ****************************************************************************
- * PROPERTIES
- * ****************************************************************************
- */
-
- properties : {
-
- /**
- * function that validates the result the function will be called with
- * the new value and the old value and is supposed to return the value
- * that is set as the table value.
- */
- validationFunction : {
- check : "Function",
- nullable : true,
- init : null
- }
-
- },
-
- /*
- * ****************************************************************************
- * MEMBERS
- * ****************************************************************************
- */
- members : {
-
- // overridden
- _getContentHtml : function(cellInfo) {
- var table = cellInfo.table;
- var tableModel = table.getTableModel();
- var rowData = tableModel.getRowData(cellInfo.row);
- var metaData = rowData[2];
- if (metaData.disabled) {
- return '<span style="color:#999;">' + qx.bom.String.escape(this._formatValue(cellInfo)) + '</span>';
- }else{
- return qx.bom.String.escape(this._formatValue(cellInfo));
- }
- },
-
-
- // interface implementation
- createCellEditor : function(cellInfo) {
- var table = cellInfo.table;
- var tableModel = table.getTableModel();
- var rowData = tableModel.getRowData(cellInfo.row);
- var metaData = rowData[2];
- if (metaData.disabled) {
- return null; // var cellEditor = new
- // qx.ui.table.celleditor.TextField();
- }
- if(metaData.type == "primitive"){
- var cellEditor = new qx.ui.form.TextField;
- cellEditor.setAppearance("table-editor-textfield");
- cellEditor.originalValue = cellInfo.value;
- if (cellInfo.value === null) {
- cellInfo.value = "";
- }
- cellEditor.setValue("" + cellInfo.value);
-
- cellEditor.addListener("appear", function() {
- cellEditor.selectAllText();
- });
-
- var validationFunc;
- if (metaData.subType == "integer") {
- validationFunc = function(newValue, oldValue){
- var isNum = !isNaN(newValue * 1);
- if (!isNum) {
- alert("Warning, this field only accepts Integers!");
- return oldValue;
- }
- return newValue;
- };
- }
- cellEditor.setUserData("validationFunc", validationFunc);
- }else if(metaData.type == "ref"){
- var cellEditor = new qx.ui.form.SelectBox().set({
- appearance: "table-editor-selectbox"
- });
- cellEditor.setUserData("validationFunc", function(value, oldValue){
- if(value == "__empty__"){
- alert("Warning, value cannot be empty! You must select at least one option below.");
- return oldValue;
- }
- return value;
- });
-
- var value = cellInfo.value;
- cellEditor.originalValue = value;
- // replace null values
- if ( value === null ) {
- value = "";
- }
- if(value == ""){
- var li = new qx.ui.form.ListItem("");
- li.setModel("__empty__");
- cellEditor.add(li);
- }
- var list = metaData.refList;
- if (list)
- {
- var item;
-
- for (var i=0,l=list.length; i<l; i++)
- {
- var row = list[i];
- if ( row instanceof Array ) {
- // Array [key, description] where description can be null
- item = new qx.ui.form.ListItem(row[0]);
- item.setModel(row[0]);
- if(row[1]){
- item.setToolTip(new qx.ui.tooltip.ToolTip(row[1]));
- }
- } else {
- item = new qx.ui.form.ListItem(row);
- item.setModel(row);
- }
- cellEditor.add(item);
- if(value == item.getModel()){
- cellEditor.setSelection([item]);
- }
- };
- }
-
- cellEditor.setModelSelection(["" + value]);
- cellEditor.addListener("appear", function() {
- cellEditor.open();
- });
- }
-
- return cellEditor;
- },
-
- // interface implementation
- getCellEditorValue : function(cellEditor) {
- var value;
- if(cellEditor.classname == "qx.ui.form.TextField"){
- value = cellEditor.getValue();
- }else{
- var sel = cellEditor.getModelSelection();
- value = sel.getItem(0);
- }
- var validationFunc = cellEditor.getUserData("validationFunc");
-
- // validation function will be called with new and old value
- // var validationFunc = this.getValidationFunction();
- if (validationFunc) {
- value = validationFunc(value, cellEditor.originalValue);
- }
-
- if (typeof cellEditor.originalValue == "number") {
- value = parseFloat(value);
- }
-
- return value;
- }
- }
-});
+++ /dev/null
-/**\r
- * Wrapper for ExecutionFlow server object\r
- */\r
-qx.Class.define("org.argeo.slc.ria.execution.Flow", {\r
- \r
- extend : qx.core.Object,\r
- \r
- properties : {\r
- /**\r
- * Name of this Execution Flow \r
- */\r
- name : {\r
- check : "String",\r
- init : ""\r
- },\r
- description : {\r
- check : "String",\r
- init : ""\r
- },\r
- /**\r
- * An optional path describing this flow\r
- */\r
- path : {\r
- check : "String",\r
- nullable : true\r
- },\r
- /**\r
- * Name of the associated spec, to be found in the module \r
- */\r
- executionSpecName : {\r
- check : "String"\r
- },\r
- /**\r
- * Reference the actual ExecutionSpec object\r
- */\r
- executionSpec : {\r
- check : "org.argeo.slc.ria.execution.Spec"\r
- },\r
- /**\r
- * The values to init the ExecutionSpec\r
- */\r
- values : {\r
- check : "Node",\r
- nullable : true\r
- },\r
- /**\r
- * Castor representation of the object \r
- */\r
- xmlNode : {\r
- apply : "_applyXmlNode"\r
- }\r
- },\r
- \r
- statics : {\r
- /**\r
- * Xpath to the name \r
- */\r
- XPATH_NAME : "@name",\r
- /**\r
- * Path to the description\r
- */\r
- XPATH_DESCRIPTION : "slc:description",\r
- /**\r
- * XPath to the ExecutionSpec name\r
- */\r
- XPATH_EXEC_SPEC_NAME : "@executionSpec",\r
- /**\r
- * XPath to the values\r
- */\r
- XPATH_VALUES : "slc:values",\r
- /**\r
- * An optional hierarchical path\r
- */\r
- XPATH_PATH : "@path"\r
- },\r
- \r
- construct : function(){\r
- this.base(arguments);\r
- },\r
- \r
- members : { \r
- /**\r
- * Init the object from an XML representation\r
- * @param xmlNode {Node} Castor representation of this object\r
- */\r
- _applyXmlNode : function(xmlNode){\r
- this.set({\r
- name : org.argeo.ria.util.Element.getSingleNodeText(xmlNode, this.self(arguments).XPATH_NAME),\r
- path : org.argeo.ria.util.Element.getSingleNodeText(xmlNode, this.self(arguments).XPATH_PATH),\r
- description : org.argeo.ria.util.Element.getSingleNodeText(xmlNode, this.self(arguments).XPATH_DESCRIPTION) || "",\r
- executionSpecName : org.argeo.ria.util.Element.getSingleNodeText(xmlNode, this.self(arguments).XPATH_EXEC_SPEC_NAME)\r
- });\r
- var values = org.argeo.ria.util.Element.selectNodes(xmlNode, this.self(arguments).XPATH_VALUES);\r
- if(values[0]){\r
- this.setValues(values[0]);\r
- }\r
- },\r
- /**\r
- * Get a given value inside the values map\r
- * @param key {String} The key of the value \r
- * @param specType {String} Expected type (currently "primitive" and "ref" are supported)\r
- * @param specSubType {String} Expected subtype (depends on the type)\r
- * @return {String} Value if it is set.\r
- */\r
- getValue: function(key, specType, specSubType){\r
- var xpath;\r
- if(specType == "primitive"){\r
- xpath = 'slc:value[@key="'+key+'"]/slc:primitive-value[@type="'+specSubType+'"]';\r
- }else if(specType == "ref"){\r
- xpath = 'slc:value[@key="'+key+'"]/slc:ref-value/@ref';\r
- }\r
- return org.argeo.ria.util.Element.getSingleNodeText(this.getValues(), xpath);\r
- }\r
- } \r
- \r
-});
\ No newline at end of file
+++ /dev/null
-/**\r
- * A generic JMS slcExecution message encapsulator.\r
- */\r
-qx.Class.define("org.argeo.slc.ria.execution.Message", {\r
- extend : qx.core.Object,\r
- /**\r
- * New instance\r
- * @param uuid {String} The Uuid of the message. If none is passed, one is generated.\r
- */\r
- construct : function(uuid){\r
- this.base(arguments);\r
- if(uuid){\r
- this.setUuid(uuid);\r
- }else{\r
- var s = [];\r
- var itoh = '0123456789ABCDEF';\r
- for (var i = 0; i <36; i++) s[i] = Math.floor(Math.random()*0x10);\r
- s[14] = 4; // Set 4 high bits of time_high field to version\r
- s[19] = (s[19] & 0x3) | 0x8; // Specify 2 high bits of clock sequence\r
- for (var i = 0; i <36; i++) s[i] = itoh[s[i]];\r
- s[8] = s[13] = s[18] = s[23] = '-';\r
- this.setUuid(s.join('').toLowerCase()); \r
- }\r
- this.setBatchEntrySpecs([]);\r
- this.setAttributes({});\r
- },\r
- properties : {\r
- /**\r
- * The unique id identifying the message\r
- */\r
- uuid : {\r
- check : "String"\r
- },\r
- /**\r
- * Execution status\r
- */\r
- status : {\r
- check : "String",\r
- init : "STARTED"\r
- },\r
- /**\r
- * Execution type\r
- */\r
- type : {\r
- check : "String",\r
- init : "slcAnt"\r
- },\r
- /**\r
- * Execution Host\r
- */\r
- host : {\r
- check : "String",\r
- init : "localhost"\r
- },\r
- /**\r
- * Execution User\r
- */\r
- user : {\r
- check : "String",\r
- init : "user"\r
- },\r
- /**\r
- * Date of the message. now() by default.\r
- */\r
- date : {\r
- check : "String", \r
- init : new Date().toString()\r
- },\r
- /**\r
- * Additionnal attributes as map of key/values\r
- */\r
- attributes : {\r
- check : "Map"\r
- },\r
- batchEntrySpecs : {\r
- check : "Array"\r
- }\r
- },\r
- members : {\r
- \r
- /**\r
- * Add a free attribute to the message\r
- * @param attName {String} Name\r
- * @param attValue {String} Value\r
- */\r
- addAttribute: function(attName, attValue){\r
- var attr = this.getAttributes();\r
- attr[attName] = attValue;\r
- this.setAttributes(attr);\r
- },\r
- \r
- addBatchEntrySpec : function(entrySpec){\r
- this.getBatchEntrySpecs().push(entrySpec);\r
- },\r
- \r
- /**\r
- * Build the xml formatted message body to send\r
- * \r
- * @return {String} The message content as Xml\r
- */\r
- toXml : function (){\r
- var builder = new qx.util.StringBuilder();\r
- builder.add('<slc:slc-execution xmlns:slc="http://argeo.org/projects/slc/schemas" uuid="'+this.getUuid()+'">');\r
- builder.add('<slc:status>'+this.getStatus()+'</slc:status>');\r
- builder.add('<slc:type>'+this.getType()+'</slc:type>');\r
- builder.add('<slc:host>'+this.getHost()+'</slc:host>');\r
- builder.add('<slc:user>'+this.getUser()+'</slc:user>');\r
- var flows = this.getBatchEntrySpecs();\r
- if(flows.length){\r
- builder.add('<slc:realized-flows>');\r
- for(var i=0;i<flows.length;i++){\r
- builder.add(flows[i].toXml()); \r
- }\r
- builder.add('</slc:realized-flows>');\r
- } \r
- var attr = this.getAttributes();\r
- if(qx.lang.Object.getLength(attr)){\r
- builder.add('<slc:attributes>');\r
- for(var key in attr){\r
- builder.add('<slc:attribute name="'+key+'">'+attr[key]+'</slc:attribute>');\r
- }\r
- builder.add('</slc:attributes>');\r
- }\r
- builder.add('</slc:slc-execution>');\r
- return builder.get();\r
- },\r
- \r
- /**\r
- * Parse an XML answer and fill the object with it.\r
- * @param slcExecXml {String} An slcExecMessage mapped in XML.\r
- */\r
- fromXml : function(slcExecXml){\r
- var NSMap = {slc:"http://argeo.org/projects/slc/schemas"}; \r
- this.setStatus(org.argeo.ria.util.Element.getSingleNodeText(slcExecXml, "slc:status", NSMap));\r
- this.setType(org.argeo.ria.util.Element.getSingleNodeText(slcExecXml, "slc:type", NSMap));\r
- this.setHost(org.argeo.ria.util.Element.getSingleNodeText(slcExecXml, "slc:host", NSMap));\r
- this.setUser(org.argeo.ria.util.Element.getSingleNodeText(slcExecXml, "slc:user", NSMap));\r
- var attributes = org.argeo.ria.util.Element.selectNodes(slcExecXml, "slc:attribute", NSMap);\r
- for(var i=0;i<attributes.length;i++){\r
- this.addAttribute(attribute.getAttribute("name"), attribute.firstChild);\r
- }\r
- var stepsDates = org.argeo.ria.util.Element.selectNodes(slcExecXml, "slc:steps/slc:slc-execution-step/slc:begin", NSMap);\r
- if(stepsDates.length){\r
- this.setDate(org.argeo.ria.util.Element.getSingleNodeText(stepsDates[stepsDates.length-1], ".", NSMap));\r
- }\r
- }\r
- } \r
-});
\ No newline at end of file
+++ /dev/null
-/**\r
- * Wrapper for ExecutionModule server object\r
- */\r
-qx.Class.define("org.argeo.slc.ria.execution.Module", {\r
- \r
- extend : qx.core.Object,\r
- \r
- properties : {\r
- /**\r
- * The name of the module\r
- */\r
- name : {\r
- check : "String",\r
- init : ""\r
- },\r
- label : {\r
- check : "String",\r
- init : "" \r
- },\r
- description : {\r
- check : "String",\r
- init : "" \r
- },\r
- /**\r
- * The version of the module\r
- */\r
- version : {\r
- check : "String",\r
- init : ""\r
- },\r
- /**\r
- * All execution flows registered by their name\r
- */\r
- executionFlows : {\r
- check : "Map"\r
- },\r
- /**\r
- * All execution specs registered by their name\r
- */\r
- executionSpecs : {\r
- check : "Map"\r
- },\r
- /**\r
- * XML description (castor)\r
- */\r
- xmlNode : {\r
- apply : "_applyXmlNode"\r
- }\r
- },\r
- \r
- statics : {\r
- XPATH_ROOT : "slc:execution-module-descriptor", \r
- XPATH_NAME : "slc:name",\r
- XPATH_LABEL : "slc:label",\r
- XPATH_DESCRIPTION : "slc:description",\r
- XPATH_VERSION : "slc:version",\r
- XPATH_EXECUTION_FLOWS : "slc:execution-flows/slc:execution-flow-descriptor",\r
- XPATH_EXECUTION_SPECS : "slc:execution-specs/slc:default-execution-spec"\r
- },\r
- \r
- construct : function(){\r
- this.base(arguments);\r
- this.setExecutionFlows({});\r
- this.setExecutionSpecs({});\r
- },\r
- \r
- members : {\r
- /**\r
- * Add an execution flow to this module\r
- * @param executionFlow {org.argeo.slc.ria.execution.Flow} An instance of execution.Flow\r
- */\r
- addExecutionFlow : function(executionFlow){\r
- var spec = this.getExecutionSpecByName(executionFlow.getExecutionSpecName());\r
- if(spec){\r
- executionFlow.setExecutionSpec(spec);\r
- }else{\r
- this.error("Warning, reference to an unknown ExecutionSpec : "+executionFlow.getExecutionSpecName());\r
- }\r
- this.getExecutionFlows()[executionFlow.getName()] = executionFlow;\r
- },\r
- \r
- /**\r
- * Add an execution Spec to this module\r
- * @param executionSpec {org.argeo.slc.ria.execution.Spec} An instance of ExecutionSpec\r
- */\r
- addExecutionSpec : function(executionSpec){\r
- this.getExecutionSpecs()[executionSpec.getName()] = executionSpec;\r
- },\r
- /**\r
- * Find an execution spec by its name\r
- * @param name {String} Name of the spec\r
- * @return {org.argeo.slc.ria.execution.Spec} The spec\r
- */\r
- getExecutionSpecByName : function(name){\r
- return this.getExecutionSpecs()[name];\r
- },\r
- \r
- /**\r
- * Find an execution flow by its name\r
- * @param name {String} name of the flow\r
- * @return {org.argeo.slc.ria.execution.Flow} The flow\r
- */\r
- getExecutionFlowByName : function(name){\r
- return this.getExecutionFlows()[name];\r
- },\r
- \r
- moduleDataToXml : function(){\r
- var xmlData = '<slc:module-name>'+this.getName()+'</slc:module-name>';\r
- xmlData += '<slc:module-version>'+this.getVersion()+'</slc:module-version>';\r
- return xmlData;\r
- },\r
- \r
- /**\r
- * An xml node containing the castor mapped description of this object\r
- * @param xmlNode {Node}\r
- */\r
- _applyXmlNode : function(xmlNode){\r
- var appendRoot = "";\r
- if(xmlNode.nodeName != this.self(arguments).XPATH_ROOT){\r
- appendRoot = this.self(arguments).XPATH_ROOT+"/";\r
- }\r
- // Parse now \r
- this.setName(org.argeo.ria.util.Element.getSingleNodeText(xmlNode, appendRoot + this.self(arguments).XPATH_NAME) || "Not Found");\r
- this.setVersion(org.argeo.ria.util.Element.getSingleNodeText(xmlNode, appendRoot + this.self(arguments).XPATH_VERSION));\r
- this.setLabel(org.argeo.ria.util.Element.getSingleNodeText(xmlNode, appendRoot + this.self(arguments).XPATH_LABEL) || this.getName());\r
- this.setDescription(org.argeo.ria.util.Element.getSingleNodeText(xmlNode, appendRoot + this.self(arguments).XPATH_DESCRIPTION) || "");\r
- \r
- // Parse Specs first\r
- var specs = org.argeo.ria.util.Element.selectNodes(xmlNode, appendRoot + this.self(arguments).XPATH_EXECUTION_SPECS);\r
- if(specs){\r
- for(i=0; i< specs.length;i++){\r
- var execSpec = new org.argeo.slc.ria.execution.Spec();\r
- execSpec.setXmlNode(specs[i]);\r
- this.addExecutionSpec(execSpec);\r
- }\r
- }\r
- // Now parse Flows : to do AFTER specs\r
- var flows = org.argeo.ria.util.Element.selectNodes(xmlNode, appendRoot + this.self(arguments).XPATH_EXECUTION_FLOWS);\r
- if(flows){\r
- for(var i=0;i<flows.length;i++){\r
- var execFlow = new org.argeo.slc.ria.execution.Flow();\r
- execFlow.setXmlNode(flows[i]);\r
- this.addExecutionFlow(execFlow);\r
- }\r
- }\r
- }\r
- \r
- } \r
- \r
-});
\ No newline at end of file
+++ /dev/null
-/**\r
- * Wrapper for ExecutionSpec server object\r
- */\r
-qx.Class.define("org.argeo.slc.ria.execution.Spec", {\r
- \r
- extend : qx.core.Object,\r
- \r
- properties : {\r
- /**\r
- * Unique name of this spec \r
- */\r
- name : {\r
- check : "String",\r
- init : ""\r
- },\r
- /**\r
- * Defined parameters \r
- */\r
- values : {\r
- check : "Map"\r
- },\r
- /**\r
- * Castor representation of this object\r
- */\r
- xmlNode : {\r
- apply : "_applyXmlNode" \r
- }\r
- },\r
- \r
- statics : {\r
- XPATH_NAME : "@name",\r
- XPATH_VALUES : "slc:values/slc:value"\r
- },\r
- \r
- construct : function(){\r
- this.base(arguments);\r
- this.setValues({});\r
- },\r
- \r
- members : {\r
- hasEditableValues : function(){\r
- var values = this.getValues();\r
- if(!values) return false;\r
- var editables = 0;\r
- for(var key in values){\r
- var valueObj = values[key];\r
- if(!valueObj.getHidden() && !valueObj.getFrozen()){\r
- editables ++;\r
- }\r
- }\r
- return (editables > 0);\r
- },\r
- \r
- /**\r
- * Init the object from an XML representation\r
- * @param xmlNode {Node} Castor representation of this object\r
- */ \r
- _applyXmlNode : function(xmlNode){\r
- // Parse now \r
- this.setName(org.argeo.ria.util.Element.getSingleNodeText(xmlNode, this.self(arguments).XPATH_NAME));\r
- var values = org.argeo.ria.util.Element.selectNodes(xmlNode, this.self(arguments).XPATH_VALUES);\r
- var parsedValues = {};\r
- for(var i=0;i<values.length;i++){\r
- //var valueNode = values[i];\r
- var value = new org.argeo.slc.ria.execution.Value();\r
- value.setXmlSpecNode(values[i]);\r
- parsedValues[value.getKey()] = value;\r
- }\r
- this.setValues(parsedValues);\r
- },\r
- /**\r
- * XML Representation of this object.\r
- * @return {String} An XML String\r
- */\r
- toXml : function(){\r
- return org.argeo.ria.util.Element.getXMLString(this.getXmlNode());\r
- }\r
- } \r
- \r
-});
\ No newline at end of file
+++ /dev/null
-/**\r
- * Wrapper for SlcValue object\r
- */\r
-qx.Class.define("org.argeo.slc.ria.execution.Value", {\r
- \r
- extend : qx.core.Object,\r
- \r
- properties : {\r
- /**\r
- * Name of this Execution Flow \r
- */\r
- key : {\r
- check : "String",\r
- init : ""\r
- },\r
- /**\r
- * The type of this value, for the moment "primitive" and "ref" are supported \r
- */\r
- specType : {\r
- check : "String",\r
- init : "" \r
- },\r
- /**\r
- * Subtype, depending on the "type". \r
- */\r
- specSubType : {\r
- check : "String"\r
- },\r
- /**\r
- * Whether it is a parameter or not \r
- */\r
- parameter : {\r
- check : "Boolean"\r
- },\r
- /**\r
- * Whether it is frozen on the server, i.e. disabled in the form \r
- */\r
- frozen : {\r
- check : "Boolean"\r
- },\r
- /**\r
- * Should not be editable nor seeable, thus hidden \r
- */\r
- hidden : {\r
- check : "Boolean"\r
- },\r
- /**\r
- * The real value \r
- */\r
- value : {\r
- nullable : true\r
- },\r
- /**\r
- * Castor representation of the object \r
- */\r
- xmlSpecNode : {\r
- apply : "_applyXmlSpecNode"\r
- },\r
- refList : {\r
- check : "Array"\r
- }\r
- },\r
- \r
- statics : {\r
- XPATH_KEY : "@key"\r
- },\r
- \r
- construct : function(){\r
- this.base(arguments); \r
- },\r
- \r
- members : { \r
- /**\r
- * Init the object from an XML representation\r
- * @param xmlNode {Node} Castor representation of this object\r
- */\r
- _applyXmlSpecNode : function(xmlNode){\r
- this.setKey(org.argeo.ria.util.Element.getSingleNodeText(xmlNode, "@key"));\r
- var childs = xmlNode.childNodes;\r
- for(var i=0;i<childs.length;i++){\r
- var child = childs[i];\r
- if(child.nodeType != 1) continue;\r
- if(child.nodeName == "slc:primitive-spec-attribute"){\r
- this.setSpecType("primitive");\r
- this.setSpecSubType(org.argeo.ria.util.Element.getSingleNodeText(child, "@type")||"");\r
- if(org.argeo.ria.util.Element.getSingleNodeText(child, ".")){\r
- this.setValue(org.argeo.ria.util.Element.getSingleNodeText(child, "."));\r
- }\r
- }else if(child.nodeName == "slc:ref-spec-attribute"){\r
- this.setSpecType("ref");\r
- this.setSpecSubType(org.argeo.ria.util.Element.getSingleNodeText(child, "@targetClassName")||"");\r
- var choices = org.argeo.ria.util.Element.selectNodes(child, "slc:choices/slc:ref-value-choice");\r
- var refList = []; \r
- for(var k=0;k<choices.length;k++){\r
- var choice = choices[k];\r
- var name = org.argeo.ria.util.Element.getSingleNodeText(choice, "@name");\r
- var description = org.argeo.ria.util.Element.getSingleNodeText(choice, "slc:description");\r
- refList.push([name, (description||"")]);\r
- }\r
- this.setRefList(refList);\r
- }\r
- this.set({\r
- parameter : (org.argeo.ria.util.Element.getSingleNodeText(child, "@isParameter")=="true"?true:false),\r
- frozen : (org.argeo.ria.util.Element.getSingleNodeText(child, "@isFrozen")=="true"?true:false),\r
- hidden : (org.argeo.ria.util.Element.getSingleNodeText(child, "@isHidden")=="true"?true:false)\r
- }); \r
- }\r
- },\r
- \r
- toValueXml : function(){\r
- var valueTag = '';\r
- var specAttribute = '';\r
- if(this.getSpecType() == "primitive"){\r
- valueTag = this.getValue();\r
- specAttribute = '<slc:primitive-value type="'+this.getSpecSubType()+'">'+valueTag+'</slc:primitive-value>';\r
- }else if(this.getSpecType() == "ref"){\r
- specAttribute = '<slc:ref-value ref="'+this.getValue()+'" type="beanName" />';\r
- }\r
- return '<slc:value key="'+this.getKey()+'">'+specAttribute+'</slc:value>'; \r
- }\r
- } \r
- \r
-});
\ No newline at end of file
+++ /dev/null
-qx.Class.define("org.argeo.slc.ria.monitor.DistListView", {\r
- extend : qx.ui.container.Composite,\r
- implement : [org.argeo.ria.components.IView], \r
- \r
- properties : {\r
- /**\r
- * The commands definition Map that will be automatically added and wired to the menubar and toolbar.\r
- * See {@link org.argeo.ria.event.CommandsManager#definitions} for the keys to use for defining commands.\r
- */\r
- commands : {\r
- init : {\r
- "reload" : {\r
- label : "Reload",\r
- icon : "org/argeo/slc/ria/view-refresh.png",\r
- shortcut : "control+h",\r
- enabled : true,\r
- menu : "Distributions",\r
- toolbar : "list",\r
- callback : function(e) {\r
- this.load();\r
- },\r
- command : null\r
- },\r
- "uninstall" : {\r
- label : "Uninstall",\r
- icon : "org/argeo/slc/ria/window-close.png",\r
- shortcut: null,\r
- enabled : false,\r
- menu : "Distributions",\r
- toolbar : "list",\r
- callback: function(e){\r
- var selection = this.getViewSelection();\r
- var node = selection.getNodes()[0];\r
- var request = org.argeo.slc.ria.SlcApi.getUninstallModuleService(node[0], node[1]);\r
- request.addListener("completed", this.load, this);\r
- request.send();\r
- },\r
- selectionChange : function(viewId, selection){\r
- if(viewId != "distrib") return;\r
- this.setEnabled((selection!=null && selection.length==1));\r
- },\r
- command : null\r
- }\r
- }\r
- },\r
- viewSelection : {\r
- nullable:false, \r
- check:"org.argeo.ria.components.ViewSelection"\r
- },\r
- view : {\r
- init : null\r
- }, \r
- instanceId : {init:""},\r
- instanceLabel : {init:""}\r
- },\r
-\r
- construct : function(){\r
- this.base(arguments);\r
- this.setLayout(new qx.ui.layout.Canvas()); \r
- this.xmlStub = '<slc:object-list xmlns:slc="http://argeo.org/projects/slc/schemas">' +\r
- '<slc:modular-distribution-descriptor name="name" version="0.1.0">' +\r
- '<slc:modulesDescriptors><slc:modulesDescriptor type="modularDistribution" url="http://localhost/modularDistribution" >toto</slc:modulesDescriptor>' +\r
- '<slc:modulesDescriptor type="eclipse" url="http://localhost/updateSite" />' +\r
- '</slc:modulesDescriptors></slc:modular-distribution-descriptor>' +\r
- '<slc:modular-distribution-descriptor name="name2" version="0.1.1">' +\r
- '<slc:modulesDescriptors><slc:modulesDescriptor type="modularDistribution" url="http://localhost/modularDistribution2" />' +\r
- '<slc:modulesDescriptor type="eclipse" url="http://localhost/updateSite2" />' +\r
- '</slc:modulesDescriptors></slc:modular-distribution-descriptor>' +\r
- '</slc:object-list>';\r
- }, \r
- \r
- members : {\r
- /**\r
- * The implementation should contain the GUI initialisation.\r
- * This is the role of the manager to actually add the graphical component to the pane, \r
- * so it's not necessary to do it here. \r
- * @param viewPane {org.argeo.ria.components.ViewPane} The pane manager\r
- * @param data {Mixed} Any object or data passed by the initiator of the view\r
- * @return {Boolean}\r
- */\r
- init : function(viewPane, data){\r
- this.setView(viewPane); \r
- this.setViewSelection(new org.argeo.ria.components.ViewSelection(viewPane.getViewId()));\r
- this.tableModel = new qx.ui.table.model.Simple(); \r
- this.tableModel.setColumns(["Name", "Version", "Modular Distribution", "Eclipse Update Site"], ["name","version","modularDistribution","eclipse"]);\r
- this.list = new qx.ui.table.Table(this.tableModel, {\r
- tableColumnModel: function(obj){\r
- return new qx.ui.table.columnmodel.Resize(obj)\r
- } \r
- });\r
- this.list.set({\r
- decorator:null,\r
- statusBarVisible : false\r
- });\r
- this.tableModel.setColumnEditable(2, true);\r
- this.tableModel.setColumnEditable(3, true);\r
- var columnModel = this.list.getTableColumnModel();\r
- columnModel.getBehavior().setWidth(0, "15%");\r
- columnModel.getBehavior().setWidth(1, "15%");\r
- columnModel.getBehavior().setWidth(2, "35%");\r
- columnModel.getBehavior().setWidth(3, "35%");\r
- var factory = function(cellInfo){\r
- var tField = new qx.ui.table.celleditor.TextField();\r
- tField.setValidationFunction(function(newValue, oldValue){return oldValue;});\r
- return tField;\r
- };\r
- columnModel.setCellEditorFactory(2, new qx.ui.table.celleditor.Dynamic(factory));\r
- columnModel.setCellEditorFactory(3, new qx.ui.table.celleditor.Dynamic(factory));\r
- \r
- var selectionModel = this.list.getSelectionModel();\r
- selectionModel.addListener("changeSelection", function(e){\r
- var viewSelection = this.getViewSelection();\r
- viewSelection.clear();\r
- selectionModel.iterateSelection(function(index){\r
- viewSelection.addNode(this.tableModel.getRowData(index));\r
- }, this);\r
- }, this); \r
- \r
- this.add(this.list, {top:0,left:0,width:'100%',height:'100%'}); \r
- },\r
- /**\r
- * The implementation should contain the real data loading (i.o. query...)\r
- * @return {Boolean}\r
- */\r
- load : function(){\r
- this.tableModel.setData([]);\r
- var req = org.argeo.slc.ria.SlcApi.getListModularDistributionsService();\r
- req.addListener("completed", function(response){\r
- this.parseData(response.getContent());\r
- }, this);\r
- req.addListener("failed", function(){\r
- var xmlDoc = qx.xml.Document.fromString(this.xmlStub);\r
- this.parseData(xmlDoc); \r
- }, this);\r
- req.send(); \r
- },\r
- \r
- parseData : function(xmlDoc){\r
- var data = [];\r
- var descriptorPath = 'slc:object-list/slc:modular-distribution-descriptor';\r
- var namePath = '@name';\r
- var versionPath = '@version';\r
- var distribPath = 'slc:modulesDescriptors/slc:modulesDescriptor[@type="modularDistribution"]/@url';\r
- var eclipsePath = 'slc:modulesDescriptors/slc:modulesDescriptor[@type="eclipse"]/@url';\r
- var nodes = org.argeo.ria.util.Element.selectNodes(xmlDoc, descriptorPath); \r
- for(var i=0;i<nodes.length;i++){\r
- var name = org.argeo.ria.util.Element.getSingleNodeText(nodes[i], namePath);\r
- var version = org.argeo.ria.util.Element.getSingleNodeText(nodes[i], versionPath);\r
- var distrib = org.argeo.ria.util.Element.getSingleNodeText(nodes[i], distribPath);\r
- var eclipse = org.argeo.ria.util.Element.getSingleNodeText(nodes[i], eclipsePath);\r
- data.push([name,version,distrib,eclipse]);\r
- }\r
- this.tableModel.setData(data);\r
- },\r
- \r
- /**\r
- * Whether this component is already contained in a scroller (return false) or not (return true).\r
- * @return {Boolean}\r
- */\r
- addScroll : function(){return true;},\r
- /**\r
- * Called at destruction time\r
- * Perform all the clean operations (stopping polling queries, etc.) \r
- */\r
- close : function(){return true;}\r
- }\r
-});
\ No newline at end of file
+++ /dev/null
-qx.Class.define("org.argeo.slc.ria.monitor.UploadView", {\r
- extend : qx.ui.container.Composite,\r
- implement : [org.argeo.ria.components.IView], \r
- \r
- properties : {\r
- /**\r
- * The commands definition Map that will be automatically added and wired to the menubar and toolbar.\r
- * See {@link org.argeo.ria.event.CommandsManager#definitions} for the keys to use for defining commands.\r
- */\r
- commands : {\r
- init : {}\r
- },\r
- viewSelection : {\r
- nullable:false, \r
- check:"org.argeo.ria.components.ViewSelection"\r
- },\r
- view : {\r
- init : null\r
- }, \r
- instanceId : {init:""},\r
- instanceLabel : {init:""}\r
- },\r
-\r
- construct : function(){\r
- this.base(arguments);\r
- this.setLayout(new qx.ui.layout.Basic); \r
- }, \r
- \r
- members : {\r
- /**\r
- * The implementation should contain the GUI initialisation.\r
- * This is the role of the manager to actually add the graphical component to the pane, \r
- * so it's not necessary to do it here. \r
- * @param viewPane {org.argeo.ria.components.ViewPane} The pane manager\r
- * @param data {Mixed} Any object or data passed by the initiator of the view\r
- * @return {Boolean}\r
- */\r
- init : function(viewPane, data){\r
- this.setView(viewPane); \r
- this.setViewSelection(new org.argeo.ria.components.ViewSelection(viewPane.getViewId()));\r
- this.form = new org.argeo.ria.components.upload.UploadForm("uploadFrm", org.argeo.slc.ria.SlcApi.getInstallModuleService());\r
- this.form.setLayout(new qx.ui.layout.HBox(5));\r
- this.fileWidget = new org.argeo.ria.components.upload.UploadField("uploadFile", "Choose a file");\r
- \r
- this.form.addListener("completed", function(e){\r
- this.fileWidget.setFieldValue("");\r
- var response = this.form.getIframeHtmlContent();\r
- this.debug(response);\r
- this.displayMessage(response, 4000);\r
- }, this);\r
- this.form.addListener("sending", function(e){\r
- this.debug("Sending...");\r
- this.displayMessage("Sending...");\r
- }, this);\r
- this.fileWidget.addListener("changeFieldValue", function(e){\r
- if(e.getData()!=""){\r
- this.submitButton.setEnabled(true);\r
- }\r
- }, this);\r
- \r
- this.submitButton = new qx.ui.form.Button("Upload");\r
- this.submitButton.setEnabled(false);\r
- this.submitButton.addListener("execute", function(e){\r
- if(this.fileWidget.getFieldValue()!=""){\r
- this.form.send();\r
- }\r
- }, this);\r
-\r
- this.fileWidget.getTextField().setWidth(200);\r
- this.form.add(this.fileWidget);\r
- this.form.add(this.submitButton);\r
- this.messageLabel = new qx.ui.basic.Label("");\r
- this.messageLabel.setRich(true);\r
- this.messageLabel.setPadding(4,4,4,20);\r
- this.form.add(this.messageLabel);\r
- this.add(this.form, {left : 20, top:20});\r
- },\r
- \r
- displayMessage : function(message, timer){\r
- this.messageLabel.setContent("<i>"+qx.lang.String.stripTags(message)+"</i>");\r
- if(timer){\r
- qx.event.Timer.once(function(){\r
- this.messageLabel.setContent("");\r
- }, this, timer);\r
- }\r
- },\r
- /**\r
- * The implementation should contain the real data loading (i.o. query...)\r
- * @return {Boolean}\r
- */\r
- load : function(){ \r
- },\r
- \r
- /**\r
- * Whether this component is already contained in a scroller (return false) or not (return true).\r
- * @return {Boolean}\r
- */\r
- addScroll : function(){return true;},\r
- /**\r
- * Called at destruction time\r
- * Perform all the clean operations (stopping polling queries, etc.) \r
- */\r
- close : function(){return true;}\r
- }\r
-});
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<%@ page language="java" contentType="text/html"%>\r
-<%\r
-response.sendRedirect("argeo-ria/index.html");\r
-%>\r
+++ /dev/null
-<project 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/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.argeo.slc</groupId>
- <artifactId>argeo-slc</artifactId>
- <version>0.13.1-SNAPSHOT</version>
- <relativePath>..</relativePath>
- </parent>
- <groupId>org.argeo.slc</groupId>
- <artifactId>server</artifactId>
- <packaging>pom</packaging>
- <name>SLC Server</name>
- <modules>
- </modules>
- <profiles>
- <profile>
- <id>withRia</id>
- <activation>
- <activeByDefault>true</activeByDefault>
- </activation>
- <modules>
- <module>org.argeo.slc.ria</module>
- </modules>
- </profile>
- <profile>
- <id>withoutRia</id>
- </profile>
- </profiles>
-</project>