diff options
author | Markus Tiede | 2013-09-11 12:46:42 +0000 |
---|---|---|
committer | Markus Tiede | 2013-09-11 12:46:42 +0000 |
commit | 28533033b967e155ccbb3f28118e730fcc4e6563 (patch) | |
tree | c87de452247068b0b143a653d40e815428c35422 | |
parent | f010f2aac451d1b80be0b96e4c6e923e4db8b027 (diff) | |
download | org.eclipse.jubula.core-28533033b967e155ccbb3f28118e730fcc4e6563.tar.gz org.eclipse.jubula.core-28533033b967e155ccbb3f28118e730fcc4e6563.tar.xz org.eclipse.jubula.core-28533033b967e155ccbb3f28118e730fcc4e6563.zip |
Sprint task - open source ITE dashboard implementation.
83 files changed, 2565 insertions, 20 deletions
diff --git a/org.eclipse.jubula.app.dashboard/.checkstyle b/org.eclipse.jubula.app.dashboard/.checkstyle new file mode 100644 index 000000000..16d1c45d0 --- /dev/null +++ b/org.eclipse.jubula.app.dashboard/.checkstyle @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<fileset-config file-format-version="1.2.0" simple-config="true"> + <fileset name="all" enabled="true" check-config-name="Jubula" local="false"> + <file-match-pattern match-pattern="." include-pattern="true"/> + </fileset> + <filter name="FilesFromPackage" enabled="true"> + <filter-data value="src/org/eclipse/jubula/app/dashboard/i18n"/> + </filter> +</fileset-config> diff --git a/org.eclipse.jubula.app.dashboard/.classpath b/org.eclipse.jubula.app.dashboard/.classpath new file mode 100644 index 000000000..64c5e31b7 --- /dev/null +++ b/org.eclipse.jubula.app.dashboard/.classpath @@ -0,0 +1,7 @@ +<?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.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/org.eclipse.jubula.app.dashboard/.gitignore b/org.eclipse.jubula.app.dashboard/.gitignore new file mode 100644 index 000000000..84a4913a9 --- /dev/null +++ b/org.eclipse.jubula.app.dashboard/.gitignore @@ -0,0 +1,2 @@ +/target +/bin
\ No newline at end of file diff --git a/org.eclipse.jubula.app.dashboard/.project b/org.eclipse.jubula.app.dashboard/.project new file mode 100644 index 000000000..53098b67d --- /dev/null +++ b/org.eclipse.jubula.app.dashboard/.project @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>org.eclipse.jubula.app.dashboard</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>net.sf.eclipsecs.core.CheckstyleBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>net.sf.eclipsecs.core.CheckstyleNature</nature> + </natures> +</projectDescription> diff --git a/org.eclipse.jubula.app.dashboard/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.jubula.app.dashboard/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 000000000..8621f0834 --- /dev/null +++ b/org.eclipse.jubula.app.dashboard/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,8 @@ +#Thu Sep 22 11:36:27 CEST 2011 +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.compliance=1.5 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.5 diff --git a/org.eclipse.jubula.app.dashboard/META-INF/MANIFEST.MF b/org.eclipse.jubula.app.dashboard/META-INF/MANIFEST.MF new file mode 100644 index 000000000..b7a521808 --- /dev/null +++ b/org.eclipse.jubula.app.dashboard/META-INF/MANIFEST.MF @@ -0,0 +1,19 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Dashboard Application +Bundle-SymbolicName: org.eclipse.jubula.app.dashboard;singleton:=true +Bundle-Version: 2.2.0.qualifier +Bundle-Vendor: Eclipse Jubula +Bundle-RequiredExecutionEnvironment: J2SE-1.5 +Require-Bundle: org.eclipse.equinox.app;bundle-version="[1.3.100,2.0.0)", + org.eclipse.rap.ui;bundle-version="[1.4.0,2.0.0)", + org.eclipse.core.jobs;bundle-version="[3.0.0,4.0.0)", + org.slf4j.api;bundle-version="[1.5.11,2.0.0)", + org.apache.commons.cli;bundle-version="[1.2.0,2.0.0)", + org.eclipse.jubula.client.core;bundle-version="[2.2.0,2.3.0)", + org.eclipse.jubula.client.ui;bundle-version="[2.2.0,2.3.0)", + org.eclipse.equinox.http.jetty;bundle-version="[2.0.100,4.0.0)", + javax.servlet;bundle-version="[3.0.0,4.0.0)", + org.eclipse.core.expressions;bundle-version="[3.0.0,4.0.0)" +Bundle-ActivationPolicy: lazy +Eclipse-BundleShape: dir diff --git a/org.eclipse.jubula.app.dashboard/about.html b/org.eclipse.jubula.app.dashboard/about.html new file mode 100644 index 000000000..f1be81099 --- /dev/null +++ b/org.eclipse.jubula.app.dashboard/about.html @@ -0,0 +1,28 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/> +<title>About</title> +</head> +<body lang="EN-US"> +<h2>About This Content</h2> + +<p>June 22, 2011</p> +<h3>License</h3> + +<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise +indicated below, the Content is provided to you under the terms and conditions of the +Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available +at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>. +For purposes of the EPL, "Program" will mean the Content.</p> + +<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is +being redistributed by another party ("Redistributor") and different terms and conditions may +apply to your use of any object code in the Content. Check the Redistributor's license that was +provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise +indicated below, the terms and conditions of the EPL still apply to any source code in the Content +and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p> + +</body> +</html> diff --git a/org.eclipse.jubula.app.dashboard/build.properties b/org.eclipse.jubula.app.dashboard/build.properties new file mode 100644 index 000000000..0b4012e19 --- /dev/null +++ b/org.eclipse.jubula.app.dashboard/build.properties @@ -0,0 +1,14 @@ +############################################################################### +# Copyright (c) 2004, 2013 BREDEX GmbH. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +############################################################################### +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + plugin.xml,\ + resources/,\ + about.html diff --git a/org.eclipse.jubula.app.dashboard/plugin.xml b/org.eclipse.jubula.app.dashboard/plugin.xml new file mode 100644 index 000000000..ed695a801 --- /dev/null +++ b/org.eclipse.jubula.app.dashboard/plugin.xml @@ -0,0 +1,104 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.4"?> +<!-- + Copyright (c) 2004, 2013 BREDEX GmbH. + All rights reserved. This program and the accompanying materials + are made available under the terms of the Eclipse Public License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/legal/epl-v10.html + --> +<plugin> + <extension + id="dashboard" + point="org.eclipse.core.runtime.applications"> + <application + cardinality="singleton-global" + thread="main" + visible="true"> + <run + class="org.eclipse.jubula.app.dashboard.DashboardApp"> + <parameter + name="org.eclipse.jubula.app.dashboard.defaultPort" + value="60001"> + </parameter> + </run> + </application> + </extension> + <extension + id="org.eclipse.jubula.app.dashboard.product" + name="ITE - Functional Testing Dashboard" + point="org.eclipse.core.runtime.products"> + <product + application="org.eclipse.jubula.app.dashboard.dashboardHttpServer" + name="ITE - Functional Testing Dashboard"> + </product> + </extension> + <extension + id="dashboardHttpServer" + point="org.eclipse.core.runtime.applications"> + <application + cardinality="singleton-global" + thread="main" + visible="true"> + <run + class="org.eclipse.jubula.app.dashboard.DashboardHttpServerApp"> + </run> + </application> + </extension> + + <extension + point="org.eclipse.rap.ui.branding"> + <branding + servletName="dashboard" + themeId="org.eclipse.rap.design.example.business.theme" + defaultEntrypointId="org.eclipse.jubula.app.dashboard.dashboard" + title="ITE - Functional Testing Dashboard" + id="org.eclipse.jubula.app.dashboard.branding"> + <presentationFactory + defaultLayoutId="org.eclipse.rap.design.example.business.layout" + id="org.eclipse.rap.design.example.business.factory" + viewActionsVisible="false"> + <defaultStackPresentation + id="org.eclipse.rap.design.example.stack.view"> + </defaultStackPresentation> + </presentationFactory> + </branding> + </extension> + + <extension + point="org.eclipse.rap.ui.layouts"> + <layout + id="org.eclipse.rap.design.example.business.layout" + name="Business Layout Extended"> + <layoutSet + class="org.eclipse.jubula.app.dashboard.logo.BusinessLogoInitializer" + id="org.eclipse.rap.design.example.layoutset.logo.extended" + name="Logo Overridding" + overridesId="org.eclipse.rap.design.example.layoutset.logo"> + </layoutSet> + </layout> + </extension> + <extension + point="org.eclipse.core.expressions.definitions"> + <!-- The following expressions containing "distinct" are Dashboard-specific - + Other plugins define the same ID with another expression --> + <definition + id="org.eclipse.jubula.client.ui.reference.distinct.visibleWhen.TestResultToolbar"> + <with + variable="activeEditorId"> + <equals + value="org.eclipse.jubula.client.ui.editors.TestResultViewer"> + </equals> + </with> + </definition> + <definition + id="org.eclipse.jubula.client.ui.reference.distinct.activeWhen.GoToTestResultError"> + <with + variable="activeEditorId"> + <equals + value="org.eclipse.jubula.client.ui.editors.TestResultViewer"> + </equals> + </with> + </definition> + </extension> +</plugin> diff --git a/org.eclipse.jubula.app.dashboard/pom.xml b/org.eclipse.jubula.app.dashboard/pom.xml new file mode 100644 index 000000000..635575617 --- /dev/null +++ b/org.eclipse.jubula.app.dashboard/pom.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Copyright (c) 2004, 2013 BREDEX GmbH. + All rights reserved. This program and the accompanying materials + are made available under the terms of the Eclipse Public License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/legal/epl-v10.html + --> +<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.eclipse.jubula</groupId> + <artifactId>org.eclipse.jubula.releng.dashboard</artifactId> + <version>2.2.0-SNAPSHOT</version> + <relativePath>../org.eclipse.jubula.releng.dashboard</relativePath> + </parent> + + <groupId>org.eclipse.jubula</groupId> + <artifactId>org.eclipse.jubula.app.dashboard</artifactId> + <version>2.2.0-SNAPSHOT</version> + <packaging>eclipse-plugin</packaging> + +</project> diff --git a/org.eclipse.jubula.app.dashboard/resources/logo.png b/org.eclipse.jubula.app.dashboard/resources/logo.png Binary files differnew file mode 100644 index 000000000..8bc5e7351 --- /dev/null +++ b/org.eclipse.jubula.app.dashboard/resources/logo.png diff --git a/org.eclipse.jubula.app.dashboard/src/org/eclipse/jubula/app/dashboard/DashboardApp.java b/org.eclipse.jubula.app.dashboard/src/org/eclipse/jubula/app/dashboard/DashboardApp.java new file mode 100644 index 000000000..2c7641423 --- /dev/null +++ b/org.eclipse.jubula.app.dashboard/src/org/eclipse/jubula/app/dashboard/DashboardApp.java @@ -0,0 +1,285 @@ +/******************************************************************************* + * Copyright (c) 2004, 2013 BREDEX GmbH. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * BREDEX GmbH - initial API and implementation and/or initial documentation + *******************************************************************************/ +package org.eclipse.jubula.app.dashboard; + +import java.util.HashMap; +import java.util.Map; + +import org.eclipse.core.commands.Command; +import org.eclipse.core.commands.ParameterizedCommand; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.core.runtime.jobs.Job; +import org.eclipse.equinox.app.IApplication; +import org.eclipse.equinox.app.IApplicationContext; +import org.eclipse.jubula.app.dashboard.i18n.Messages; +import org.eclipse.jubula.client.core.constants.Constants; +import org.eclipse.jubula.client.core.persistence.DatabaseConnectionInfo; +import org.eclipse.jubula.client.core.persistence.Persistor; +import org.eclipse.jubula.client.ui.constants.CommandIDs; +import org.eclipse.jubula.client.ui.perspective.ReportPerspective; +import org.eclipse.jubula.client.ui.utils.CommandHelper; +import org.eclipse.osgi.util.NLS; +import org.eclipse.rwt.RWT; +import org.eclipse.rwt.lifecycle.UICallBack; +import org.eclipse.swt.widgets.Display; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.application.IWorkbenchWindowConfigurer; +import org.eclipse.ui.application.WorkbenchAdvisor; +import org.eclipse.ui.application.WorkbenchWindowAdvisor; + +/** + * @author BREDEX GmbH + * @created Sep 22, 2011 + */ +public class DashboardApp implements IApplication { + /** + * @author BREDEX GmbH + */ + private static class DashboardWorkbenchWindowAdvisor + extends WorkbenchWindowAdvisor { + + /** + * Constructor + * + * @param configurer + * an IWorkbenchWindowConfigurer + */ + public DashboardWorkbenchWindowAdvisor( + IWorkbenchWindowConfigurer configurer) { + super(configurer); + } + + @Override + public void preWindowOpen() { + IWorkbenchWindowConfigurer config = getWindowConfigurer(); + config.setShowMenuBar(false); + config.setShowStatusLine(false); + super.preWindowOpen(); + } + + @Override + public void postWindowOpen() { + super.postWindowOpen(); + } + } + + /** + * @author BREDEX GmbH + */ + private static class DashboardWindowAdvisor extends WorkbenchAdvisor { + /** the connection info */ + private DatabaseConnectionInfo m_connectionInfo; + /** the user name */ + private String m_username; + /** the password */ + private String m_password; + + /** + * Constructor + * + * @param connectionInfo + * connectionInfo + * @param username + * users name + * @param password + * password + */ + public DashboardWindowAdvisor(DatabaseConnectionInfo connectionInfo, + String username, String password) { + m_connectionInfo = connectionInfo; + m_username = username; + m_password = password; + } + + @Override + public String getInitialWindowPerspectiveId() { + return ReportPerspective.PERSPECTIVE_ID; + } + + @Override + public WorkbenchWindowAdvisor createWorkbenchWindowAdvisor( + IWorkbenchWindowConfigurer configurer) { + return new DashboardWorkbenchWindowAdvisor(configurer); + } + + @Override + public void postStartup() { + Persistor.setDbConnectionName(m_connectionInfo); + Persistor.setUser(m_username); + Persistor.setPw(m_password); + + m_connectionInfo = null; + m_username = null; + m_password = null; + + Persistor.init(); + + Map<String, String[]> parameterMap = RWT + .getRequest().getParameterMap(); + handleDashboardRequestParameter(parameterMap); + + super.postStartup(); + } + + /** + * @param parameterMap + * the parameter map to handle + */ + private void handleDashboardRequestParameter( + Map<String, String[]> parameterMap) { + String[] summaryIdParameter = parameterMap + .get(Constants.DASHBOARD_SUMMARY_PARAM); + String[] resultNodeParameter = parameterMap + .get(Constants.DASHBOARD_RESULT_NODE_PARAM); + if (summaryIdParameter != null && resultNodeParameter != null) { + try { + Long summaryId = Long.valueOf(summaryIdParameter[0]); + Long nodeCount = Long.valueOf(resultNodeParameter[0]); + openTestResultDetailAndSelectNode(summaryId, nodeCount); + } catch (NumberFormatException nfe) { + // ignore + } + } + } + + /** + * @param summaryId + * the summary id + * @param nodeCount + * the index of the node to select + */ + private void openTestResultDetailAndSelectNode(final Long summaryId, + final Long nodeCount) { + new OpenTestResultDetailsJob(NLS.bind( + Messages.OpeningTestResultDetailsJobName, summaryId), + summaryId, nodeCount, PlatformUI.getWorkbench().getDisplay()) + .schedule(1000); + } + } + + /** + * @author BREDEX GmbH + */ + private static class OpenTestResultDetailsJob extends Job { + /** + * the id of the summary + */ + private Long m_summaryId; + + /** + * the node to select by index (count) + */ + private Long m_nodeCount; + /** + * the display + */ + private Display m_display; + + /** + * Constructor + * + * @param name + * the name of the job + * @param nodeCount + * the node to select + * @param summaryId + * the summary id to open the details for + * @param display + * the display to use + */ + public OpenTestResultDetailsJob(String name, Long summaryId, + Long nodeCount, Display display) { + super(name); + m_summaryId = summaryId; + m_nodeCount = nodeCount; + m_display = display; + } + + @Override + protected IStatus run(IProgressMonitor monitor) { + UICallBack.runNonUIThreadWithFakeContext(m_display, new Runnable() { + public void run() { + final Command projectPropertiesCommand = CommandHelper + .getCommandService().getCommand( + CommandIDs.OPEN_TEST_RESULT_DETAIL_COMMAND_ID); + final Map<String, String> parameters = + new HashMap<String, String>(); + parameters.put(CommandIDs. + OPEN_TEST_RESULT_DETAIL_COMMAND_PARAMETER_SUMMARY_ID, + m_summaryId.toString()); + parameters.put(CommandIDs. + OPEN_TEST_RESULT_DETAIL_COMMAND_PARAMETER_NODE_ID, + m_nodeCount.toString()); + CommandHelper + .executeParameterizedCommand(ParameterizedCommand + .generateCommand(projectPropertiesCommand, + parameters)); + } + }); + return Status.OK_STATUS; + } + } + + + /** Property name: JDBC driver class name */ + private static final String PROP_DRIVER_CLASS_NAME = + "org.eclipse.jubula.dashboard.jdbc_driver"; //$NON-NLS-1$ + + /** Property name: JDBC connection URL */ + private static final String PROP_JDBC_URL = + "org.eclipse.jubula.dashboard.jdbc_url"; //$NON-NLS-1$ + + /** Property name: JDBC connection user name */ + private static final String PROP_USERNAME = + "org.eclipse.jubula.dashboard.database_username"; //$NON-NLS-1$ + + /** Property name: JDBC connection password */ + private static final String PROP_PASSWORD = + "org.eclipse.jubula.dashboard.database_password"; //$NON-NLS-1$ + + /** + * + * {@inheritDoc} + */ + public Object start(IApplicationContext context) throws Exception { + final String driverClassName = System + .getProperty(PROP_DRIVER_CLASS_NAME); + final String connectionUrl = System.getProperty(PROP_JDBC_URL); + final String username = System.getProperty(PROP_USERNAME); + final String password = System.getProperty(PROP_PASSWORD); + + final DatabaseConnectionInfo connectionInfo = + new DatabaseConnectionInfo() { + @Override + public String getDriverClassName() { + return driverClassName; + } + + @Override + public String getConnectionUrl() { + return connectionUrl; + } + }; + + return PlatformUI.createAndRunWorkbench(PlatformUI.createDisplay(), + new DashboardWindowAdvisor(connectionInfo, username, password)); + } + + /** + * + * {@inheritDoc} + */ + public void stop() { + // currently empty + } +} diff --git a/org.eclipse.jubula.app.dashboard/src/org/eclipse/jubula/app/dashboard/DashboardHttpServerApp.java b/org.eclipse.jubula.app.dashboard/src/org/eclipse/jubula/app/dashboard/DashboardHttpServerApp.java new file mode 100644 index 000000000..44c343d6e --- /dev/null +++ b/org.eclipse.jubula.app.dashboard/src/org/eclipse/jubula/app/dashboard/DashboardHttpServerApp.java @@ -0,0 +1,173 @@ +/******************************************************************************* + * Copyright (c) 2004, 2013 BREDEX GmbH. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * BREDEX GmbH - initial API and implementation and/or initial documentation + *******************************************************************************/ +package org.eclipse.jubula.app.dashboard; + +import java.io.FileInputStream; +import java.util.Dictionary; +import java.util.Hashtable; +import java.util.Properties; + +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.HelpFormatter; +import org.apache.commons.cli.Option; +import org.apache.commons.cli.Options; +import org.apache.commons.cli.PosixParser; +import org.eclipse.equinox.app.IApplication; +import org.eclipse.equinox.app.IApplicationContext; +import org.eclipse.equinox.http.jetty.JettyConfigurator; +import org.eclipse.equinox.http.jetty.JettyConstants; +import org.eclipse.jubula.app.dashboard.i18n.Messages; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author BREDEX GmbH + */ +public class DashboardHttpServerApp implements IApplication { + + /** the logger */ + private static final Logger LOG = + LoggerFactory.getLogger(DashboardHttpServerApp.class); + + /** ID for HTTP server instance */ + private static final String HTTP_SERVER_ID = "dashboard"; //$NON-NLS-1$ + + /** + * command line argument: path to configuration file + */ + private static final String OPTION_CONFIG_PATH = "c"; //$NON-NLS-1$ + + /** default path to configuration file */ + private static final String DEFAULT_CONFIG_PATH = + "dashboardserver.properties"; //$NON-NLS-1$ + + /** + * command line argument: help / usage + */ + private static final String OPTION_HELP = "h"; //$NON-NLS-1$ + + /** + * configuration file property: port + */ + private static final String PROP_PORT = "org.eclipse.jubula.dashboard.port"; //$NON-NLS-1$ + + /** default port */ + private static final int DEFAULT_PORT = 60002; + + /** + * FQN of Dashboard Jetty customizer + */ + private static final String CUSTOMIZER_CLASS_NAME = + "org.eclipse.jubula.dashboard.jettycustomizer.DashboardSessionCustomizer"; //$NON-NLS-1$ + + /** + * + * {@inheritDoc} + */ + public Object start(IApplicationContext context) throws Exception { + + Options options = createOptions(); + + String [] applicationArgs = (String[])context.getArguments().get( + IApplicationContext.APPLICATION_ARGS); + CommandLine commandLine = + new PosixParser().parse(options, applicationArgs); + + if (commandLine.hasOption(OPTION_HELP)) { + new HelpFormatter().printHelp("dashboardserver", options, true); //$NON-NLS-1$ + System.exit(0); + } else { + try { + String configPath = DEFAULT_CONFIG_PATH; + if (commandLine.hasOption(OPTION_CONFIG_PATH)) { + configPath = + commandLine.getOptionValue(OPTION_CONFIG_PATH); + } + + FileInputStream configFileInputStream = null; + Properties configuration = new Properties(); + try { + configFileInputStream = new FileInputStream(configPath); + configuration.load(configFileInputStream); + System.getProperties().putAll(configuration); + } finally { + if (configFileInputStream != null) { + configFileInputStream.close(); + } + } + + JettyConfigurator.startServer( + HTTP_SERVER_ID, createJettySettings(configuration)); + } catch (Exception e) { + LOG.error("Fatal error occurred. Application will be shutdown.", e); //$NON-NLS-1$ + System.exit(1); + } + } + + return IApplication.EXIT_OK; + } + + /** + * + * @return the command line options for this application. + */ + private static Options createOptions() { + Options options = new Options(); + + Option configPathOption = + new Option(OPTION_CONFIG_PATH, true, "the path to the configuration file"); //$NON-NLS-1$ + configPathOption.setArgName("path"); //$NON-NLS-1$ + options.addOption(configPathOption); + + options.addOption(OPTION_HELP, false, "print this message"); //$NON-NLS-1$ + + return options; + } + + /** + * + * {@inheritDoc} + */ + public void stop() { + // currently empty + } + + /** + * Creates and returns settings suitable for use in starting a Jetty + * instance based on the given command line arguments. + * + * @param configuration The configuration properties. + * @return the created settings. + */ + private Dictionary<String, Object> createJettySettings( + Properties configuration) { + + Hashtable<String, Object> settings = new Hashtable<String, Object>(); + + String portArgValue = + configuration.getProperty(PROP_PORT); + if (portArgValue == null) { + LOG.info(Messages.MissingArgument_PortNumber); + portArgValue = String.valueOf(DEFAULT_PORT); + } + + try { + settings.put(JettyConstants.HTTP_PORT, + Integer.parseInt(portArgValue)); + } catch (NumberFormatException nfe) { + LOG.error(Messages.InvalidArgument_PortNumber, nfe); + } + + settings.put(JettyConstants.CUSTOMIZER_CLASS, CUSTOMIZER_CLASS_NAME); + + return settings; + } +} diff --git a/org.eclipse.jubula.app.dashboard/src/org/eclipse/jubula/app/dashboard/i18n/Messages.java b/org.eclipse.jubula.app.dashboard/src/org/eclipse/jubula/app/dashboard/i18n/Messages.java new file mode 100644 index 000000000..c28b77e64 --- /dev/null +++ b/org.eclipse.jubula.app.dashboard/src/org/eclipse/jubula/app/dashboard/i18n/Messages.java @@ -0,0 +1,28 @@ +/******************************************************************************* + * Copyright (c) 2004, 2013 BREDEX GmbH. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * BREDEX GmbH - initial API and implementation and/or initial documentation + *******************************************************************************/ +package org.eclipse.jubula.app.dashboard.i18n; + +import org.eclipse.osgi.util.NLS; + +public class Messages extends NLS { + private static final String BUNDLE_NAME = "org.eclipse.jubula.app.dashboard.i18n.messages"; //$NON-NLS-1$ + public static String InvalidArgument_PortNumber; + public static String MissingArgument_PortNumber; + public static String OpeningTestResultDetailsJobName; + + static { + // initialize resource bundle + NLS.initializeMessages(BUNDLE_NAME, Messages.class); + } + + private Messages() { + } +} diff --git a/org.eclipse.jubula.app.dashboard/src/org/eclipse/jubula/app/dashboard/i18n/messages.properties b/org.eclipse.jubula.app.dashboard/src/org/eclipse/jubula/app/dashboard/i18n/messages.properties new file mode 100644 index 000000000..2c52a5a74 --- /dev/null +++ b/org.eclipse.jubula.app.dashboard/src/org/eclipse/jubula/app/dashboard/i18n/messages.properties @@ -0,0 +1,3 @@ +InvalidArgument_PortNumber=Invalid port number. Default port will be used. +MissingArgument_PortNumber=No port argument provided. Default port will be used. +OpeningTestResultDetailsJobName=Opening Test Result Details for summary "{0}"...
\ No newline at end of file diff --git a/org.eclipse.jubula.app.dashboard/src/org/eclipse/jubula/app/dashboard/logo/BusinessLogoInitializer.java b/org.eclipse.jubula.app.dashboard/src/org/eclipse/jubula/app/dashboard/logo/BusinessLogoInitializer.java new file mode 100644 index 000000000..3d3fcc446 --- /dev/null +++ b/org.eclipse.jubula.app.dashboard/src/org/eclipse/jubula/app/dashboard/logo/BusinessLogoInitializer.java @@ -0,0 +1,46 @@ +/******************************************************************************* + * Copyright (c) 2004, 2013 BREDEX GmbH. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * BREDEX GmbH - initial API and implementation and/or initial documentation + *******************************************************************************/ +package org.eclipse.jubula.app.dashboard.logo; + +import org.eclipse.rap.ui.interactiondesign.layout.model.ILayoutSetInitializer; +import org.eclipse.rap.ui.interactiondesign.layout.model.LayoutSet; +import org.eclipse.swt.layout.FormAttachment; +import org.eclipse.swt.layout.FormData; + +/** + * @author BREDEX GmbH + */ +public class BusinessLogoInitializer implements ILayoutSetInitializer { + /** The set id */ + public static final String SET_ID = "org.eclipse.rap.design.example.business.layoutset.logo"; //$NON-NLS-1$ + + /** + * the logo path property + */ + + public static final String LOGO = "header.logo"; + /** + * the logo position property + */ + + public static final String LOGO_POSITION = "header.logo.position"; + + /** {@inheritDoc} */ + public void initializeLayoutSet(final LayoutSet layoutSet) { + layoutSet.addImagePath(LOGO, "resources/logo.png"); + + // positions + FormData fdLogo = new FormData(); + fdLogo.right = new FormAttachment(100, -75); + fdLogo.top = new FormAttachment(0, 7); + layoutSet.addPosition(LOGO_POSITION, fdLogo); + } +} diff --git a/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/businessprocess/CentralTestDataBP.java b/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/businessprocess/CentralTestDataBP.java index ad6ca6bb3..95deac5ff 100644 --- a/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/businessprocess/CentralTestDataBP.java +++ b/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/businessprocess/CentralTestDataBP.java @@ -17,7 +17,7 @@ import org.apache.commons.lang.Validate; import org.eclipse.jubula.client.core.model.ITestDataCategoryPO; /** - * @author Zeb Ford-Reitz + * @author BREDEX GmbH * @created Nov 03, 2011 */ public class CentralTestDataBP { diff --git a/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/businessprocess/compcheck/ProblemPropagator.java b/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/businessprocess/compcheck/ProblemPropagator.java index 9eb84a9f5..b49e293a3 100644 --- a/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/businessprocess/compcheck/ProblemPropagator.java +++ b/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/businessprocess/compcheck/ProblemPropagator.java @@ -25,7 +25,7 @@ import org.eclipse.jubula.client.core.utils.ITreeTraverserContext; import org.eclipse.jubula.client.core.utils.TreeTraverser; /** - * @author Markus Tiede + * @author BREDEX GmbH * @created 27.10.2011 */ public class ProblemPropagator { @@ -69,7 +69,7 @@ public class ProblemPropagator { } /** - * @author Marcell Salvage + * @author BREDEX GmbH */ public static class ProblemPropagationOperation implements ITreeNodeOperation<INodePO> { diff --git a/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/businessprocess/db/TestJobBP.java b/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/businessprocess/db/TestJobBP.java index 71636307d..79c233810 100644 --- a/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/businessprocess/db/TestJobBP.java +++ b/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/businessprocess/db/TestJobBP.java @@ -20,7 +20,7 @@ import org.eclipse.jubula.client.core.persistence.GeneralStorage; import org.eclipse.jubula.client.core.utils.TreeTraverser; /** - * @author Markus Tiede + * @author BREDEX GmbH * @created Oct 14, 2011 */ public class TestJobBP extends NodeBP { diff --git a/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/businessprocess/db/TestSuiteBP.java b/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/businessprocess/db/TestSuiteBP.java index 2bb5da018..a64fc99a6 100644 --- a/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/businessprocess/db/TestSuiteBP.java +++ b/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/businessprocess/db/TestSuiteBP.java @@ -135,7 +135,7 @@ public class TestSuiteBP extends NodeBP { } /** - * @author Markus Tiede + * @author BREDEX GmbH */ public static class ExecNodeFinder <T> extends AbstractNonPostOperatingTreeNodeOperation<INodePO> { diff --git a/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/events/DataChangedEvent.java b/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/events/DataChangedEvent.java index f47855082..4dc41f6a4 100644 --- a/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/events/DataChangedEvent.java +++ b/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/events/DataChangedEvent.java @@ -15,7 +15,7 @@ import org.eclipse.jubula.client.core.events.DataEventDispatcher.UpdateState; import org.eclipse.jubula.client.core.model.IPersistentObject; /** - * @author Markus Tiede + * @author BREDEX GmbH * @created Aug 12, 2011 */ public class DataChangedEvent { diff --git a/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/functions/FormateDateEvaluator.java b/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/functions/FormateDateEvaluator.java index 92271870b..083d1edd0 100644 --- a/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/functions/FormateDateEvaluator.java +++ b/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/functions/FormateDateEvaluator.java @@ -17,7 +17,7 @@ import org.eclipse.jubula.tools.exception.InvalidDataException; import org.eclipse.jubula.tools.messagehandling.MessageIDs; /** - * @author al + * @author BREDEX GmbH * */ public final class FormateDateEvaluator extends AbstractFunctionEvaluator { diff --git a/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/functions/ModifyDateEvaluator.java b/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/functions/ModifyDateEvaluator.java index d4d743f98..c23dd5633 100644 --- a/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/functions/ModifyDateEvaluator.java +++ b/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/functions/ModifyDateEvaluator.java @@ -10,7 +10,7 @@ import org.eclipse.jubula.tools.exception.InvalidDataException; import org.eclipse.jubula.tools.messagehandling.MessageIDs; /** - * @author al + * @author BREDEX GmbH * */ public final class ModifyDateEvaluator extends AbstractFunctionEvaluator { diff --git a/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/functions/NowEvaluator.java b/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/functions/NowEvaluator.java index 22684a0c6..461b65960 100644 --- a/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/functions/NowEvaluator.java +++ b/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/functions/NowEvaluator.java @@ -6,7 +6,7 @@ package org.eclipse.jubula.client.core.functions; import java.util.Date; /** - * @author al + * @author BREDEX GmbH * */ public final class NowEvaluator implements IFunctionEvaluator { diff --git a/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/functions/ParseDateEvaluator.java b/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/functions/ParseDateEvaluator.java index 8267aaa55..4b2f9dd9b 100644 --- a/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/functions/ParseDateEvaluator.java +++ b/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/functions/ParseDateEvaluator.java @@ -11,7 +11,7 @@ import org.eclipse.jubula.tools.exception.InvalidDataException; import org.eclipse.jubula.tools.messagehandling.MessageIDs; /** - * @author al + * @author BREDEX GmbH * */ public final class ParseDateEvaluator extends AbstractFunctionEvaluator { diff --git a/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/model/ExecObjContPO.java b/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/model/ExecObjContPO.java index 87c16a2fb..e571bf47d 100644 --- a/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/model/ExecObjContPO.java +++ b/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/model/ExecObjContPO.java @@ -28,7 +28,7 @@ import org.eclipse.persistence.annotations.BatchFetchType; /**
- * @author Markus Tiede + * @author BREDEX GmbH * @created 14.10.2011
*/
@Entity
diff --git a/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/model/IExecObjContPO.java b/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/model/IExecObjContPO.java index 105f3e02e..27b7bcaaa 100644 --- a/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/model/IExecObjContPO.java +++ b/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/model/IExecObjContPO.java @@ -16,7 +16,7 @@ import org.eclipse.jubula.client.core.persistence.IExecPersistable; /**
- * @author Markus Tiede + * @author BREDEX GmbH * @created 14.10.2011
*/
public interface IExecObjContPO extends IPersistentObject { diff --git a/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/model/ITestDataNodePO.java b/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/model/ITestDataNodePO.java index aee5fd1f6..86f38be67 100644 --- a/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/model/ITestDataNodePO.java +++ b/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/model/ITestDataNodePO.java @@ -11,7 +11,7 @@ package org.eclipse.jubula.client.core.model; /** - * @author Zeb Ford-Reitz + * @author BREDEX GmbH * @created Nov 04, 2011 */ public interface ITestDataNodePO extends IPersistentObject { diff --git a/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/persistence/IExecPersistable.java b/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/persistence/IExecPersistable.java index c53e6bf2e..20d7cf80e 100644 --- a/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/persistence/IExecPersistable.java +++ b/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/persistence/IExecPersistable.java @@ -16,7 +16,7 @@ import org.eclipse.jubula.client.core.model.INodePO; /** * Interface for tagging classes as persistable in the ExecStore. * - * @author Markus Tiede + * @author BREDEX GmbH * @created 14.10.2011 */ public interface IExecPersistable extends INodePO { diff --git a/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/propertytester/AbstractBooleanPropertyTester.java b/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/propertytester/AbstractBooleanPropertyTester.java index d39c3a8e5..d9d994659 100644 --- a/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/propertytester/AbstractBooleanPropertyTester.java +++ b/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/propertytester/AbstractBooleanPropertyTester.java @@ -18,7 +18,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** - * @author Markus Tiede + * @author BREDEX GmbH * @created Jul 20, 2011 */ public abstract class AbstractBooleanPropertyTester extends PropertyTester { diff --git a/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/utils/ControlledCache.java b/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/utils/ControlledCache.java index 032e5edf8..672083eed 100644 --- a/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/utils/ControlledCache.java +++ b/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/utils/ControlledCache.java @@ -13,7 +13,7 @@ import org.eclipse.jubula.client.core.events.DataEventDispatcher.IProjectLoadedL /** * - * @author al + * @author BREDEX GmbH * * This is basically a Map used as a cache which supports * invalidation based on predefined events. diff --git a/org.eclipse.jubula.client.ui.rap/.checkstyle b/org.eclipse.jubula.client.ui.rap/.checkstyle new file mode 100644 index 000000000..afbd8c957 --- /dev/null +++ b/org.eclipse.jubula.client.ui.rap/.checkstyle @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<fileset-config file-format-version="1.2.0" simple-config="true"> + <fileset name="all" enabled="true" check-config-name="Jubula" local="false"> + <file-match-pattern match-pattern="." include-pattern="true"/> + </fileset> + <filter name="FilesFromPackage" enabled="true"> + <filter-data value="src/org/eclipse/jubula/client/ui/i18n"/> + </filter> +</fileset-config> diff --git a/org.eclipse.jubula.client.ui.rap/.classpath b/org.eclipse.jubula.client.ui.rap/.classpath new file mode 100644 index 000000000..64c5e31b7 --- /dev/null +++ b/org.eclipse.jubula.client.ui.rap/.classpath @@ -0,0 +1,7 @@ +<?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.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/org.eclipse.jubula.client.ui.rap/.gitignore b/org.eclipse.jubula.client.ui.rap/.gitignore new file mode 100644 index 000000000..84a4913a9 --- /dev/null +++ b/org.eclipse.jubula.client.ui.rap/.gitignore @@ -0,0 +1,2 @@ +/target +/bin
\ No newline at end of file diff --git a/org.eclipse.jubula.client.ui.rap/.project b/org.eclipse.jubula.client.ui.rap/.project new file mode 100644 index 000000000..88c68eabe --- /dev/null +++ b/org.eclipse.jubula.client.ui.rap/.project @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>org.eclipse.jubula.client.ui.rap</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>net.sf.eclipsecs.core.CheckstyleBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>net.sf.eclipsecs.core.CheckstyleNature</nature> + </natures> +</projectDescription> diff --git a/org.eclipse.jubula.client.ui.rap/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.jubula.client.ui.rap/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 000000000..7ee812594 --- /dev/null +++ b/org.eclipse.jubula.client.ui.rap/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,8 @@ +#Wed Oct 12 14:21:15 CEST 2011 +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.compliance=1.5 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.5 diff --git a/org.eclipse.jubula.client.ui.rap/META-INF/MANIFEST.MF b/org.eclipse.jubula.client.ui.rap/META-INF/MANIFEST.MF new file mode 100644 index 000000000..83ee938f3 --- /dev/null +++ b/org.eclipse.jubula.client.ui.rap/META-INF/MANIFEST.MF @@ -0,0 +1,19 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Jubula UI (RAP implementation) +Bundle-SymbolicName: org.eclipse.jubula.client.ui.rap;singleton:=true +Bundle-Version: 2.2.0.qualifier +Bundle-Vendor: Eclipse Jubula +Bundle-RequiredExecutionEnvironment: J2SE-1.5 +Require-Bundle: ch.qos.logback.core;bundle-version="[1.0.0,2.0.0)", + ch.qos.logback.classic;bundle-version="[1.0.0,2.0.0)", + org.slf4j.api;bundle-version="[1.5.11,2.0.0)", + org.eclipse.equinox.common;bundle-version="[3.6.0,4.0.0)", + org.eclipse.core.commands;bundle-version="[3.6.0,4.0.0)", + org.eclipse.rap.jface;bundle-version="[1.4.0,2.0.0)", + org.eclipse.rap.ui;bundle-version="[1.4.0,2.0.0)", + javax.persistence;bundle-version="[2.0.3,3.0.0)", + org.eclipse.jubula.client.core;bundle-version="[2.2.0,2.3.0)", + org.eclipse.jubula.client.ui;bundle-version="[2.2.0,2.3.0)", + javax.servlet;bundle-version="[2.5.0,4.0.0)" +Bundle-ClassPath: . diff --git a/org.eclipse.jubula.client.ui.rap/META-INF/p2.inf b/org.eclipse.jubula.client.ui.rap/META-INF/p2.inf new file mode 100644 index 000000000..c8b33ef5b --- /dev/null +++ b/org.eclipse.jubula.client.ui.rap/META-INF/p2.inf @@ -0,0 +1,3 @@ +provides.0.namespace = A.PDE.Target.Platform +provides.0.name = Cannot be installed into the IDE +provides.0.version = 1.0.0
\ No newline at end of file diff --git a/org.eclipse.jubula.client.ui.rap/about.html b/org.eclipse.jubula.client.ui.rap/about.html new file mode 100644 index 000000000..f1be81099 --- /dev/null +++ b/org.eclipse.jubula.client.ui.rap/about.html @@ -0,0 +1,28 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/> +<title>About</title> +</head> +<body lang="EN-US"> +<h2>About This Content</h2> + +<p>June 22, 2011</p> +<h3>License</h3> + +<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise +indicated below, the Content is provided to you under the terms and conditions of the +Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available +at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>. +For purposes of the EPL, "Program" will mean the Content.</p> + +<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is +being redistributed by another party ("Redistributor") and different terms and conditions may +apply to your use of any object code in the Content. Check the Redistributor's license that was +provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise +indicated below, the terms and conditions of the EPL still apply to any source code in the Content +and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p> + +</body> +</html> diff --git a/org.eclipse.jubula.client.ui.rap/build.properties b/org.eclipse.jubula.client.ui.rap/build.properties new file mode 100644 index 000000000..340656f80 --- /dev/null +++ b/org.eclipse.jubula.client.ui.rap/build.properties @@ -0,0 +1,14 @@ +############################################################################### +# Copyright (c) 2004, 2013 BREDEX GmbH. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +############################################################################### +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + plugin.xml,\ + about.html +source.. = src/ diff --git a/org.eclipse.jubula.client.ui.rap/plugin.xml b/org.eclipse.jubula.client.ui.rap/plugin.xml new file mode 100644 index 000000000..6b74f0f39 --- /dev/null +++ b/org.eclipse.jubula.client.ui.rap/plugin.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.4"?> +<!-- + Copyright (c) 2004, 2013 BREDEX GmbH. + All rights reserved. This program and the accompanying materials + are made available under the terms of the Eclipse Public License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/legal/epl-v10.html + --> +<plugin> + <extension + point="org.eclipse.ui.handlers"> + <handler + class="org.eclipse.jubula.client.ui.rap.handler.project.RapSelectDatabaseHandler" + commandId="org.eclipse.jubula.client.ui.commands.SelectDatabase"> + </handler> + <handler + class="org.eclipse.jubula.client.ui.rap.handler.ExportTestResultsHandler" + commandId="org.eclipse.jubula.client.ui.commands.ExportTestResults"> + <enabledWhen> + <and> + <iterate + ifEmpty="false" + operator="and"> + <instanceof + value="org.eclipse.jubula.client.core.model.ITestResultSummaryPO"> + </instanceof> + </iterate> + </and> + </enabledWhen> + </handler> + </extension> + <extension + point="org.eclipse.rap.ui.serviceHandler"> + <serviceHandler + class="org.eclipse.jubula.client.ui.rap.servicehandler.DownloadTestResultsServiceHandler" + id="org.eclipse.jubula.client.ui.rap.servicehandler.DownloadTestResultsServiceHandler"> + </serviceHandler> + </extension> + +</plugin> diff --git a/org.eclipse.jubula.client.ui.rap/pom.xml b/org.eclipse.jubula.client.ui.rap/pom.xml new file mode 100644 index 000000000..e3407ba20 --- /dev/null +++ b/org.eclipse.jubula.client.ui.rap/pom.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Copyright (c) 2004, 2013 BREDEX GmbH. + All rights reserved. This program and the accompanying materials + are made available under the terms of the Eclipse Public License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/legal/epl-v10.html + --> +<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.eclipse.jubula</groupId> + <artifactId>org.eclipse.jubula.releng.dashboard</artifactId> + <version>2.2.0-SNAPSHOT</version> + <relativePath>../org.eclipse.jubula.releng.dashboard</relativePath> + </parent> + + <groupId>org.eclipse.jubula</groupId> + <artifactId>org.eclipse.jubula.client.ui.rap</artifactId> + <version>2.2.0-SNAPSHOT</version> + <packaging>eclipse-plugin</packaging> + +</project> diff --git a/org.eclipse.jubula.client.ui.rap/src/org/eclipse/jubula/client/ui/rap/constants/IdConstants.java b/org.eclipse.jubula.client.ui.rap/src/org/eclipse/jubula/client/ui/rap/constants/IdConstants.java new file mode 100644 index 000000000..b54c73316 --- /dev/null +++ b/org.eclipse.jubula.client.ui.rap/src/org/eclipse/jubula/client/ui/rap/constants/IdConstants.java @@ -0,0 +1,29 @@ +/******************************************************************************* + * Copyright (c) 2004, 2013 BREDEX GmbH. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * BREDEX GmbH - initial API and implementation and/or initial documentation + *******************************************************************************/ +package org.eclipse.jubula.client.ui.rap.constants; + +/** + * Constants class containing IDs relevant to the bundle. + * + * @author BREDEX GmbH + */ +public final class IdConstants { + + /** ID of the bundle itself */ + public static final String BUNDLE_ID = "org.eclipse.jubula.client.ui.rap"; //$NON-NLS-1$ + + /** + * Private constructor to prevent instantiation of constants class. + */ + private IdConstants() { + // nothing to initialize + } +} diff --git a/org.eclipse.jubula.client.ui.rap/src/org/eclipse/jubula/client/ui/rap/handler/ExportTestResultsHandler.java b/org.eclipse.jubula.client.ui.rap/src/org/eclipse/jubula/client/ui/rap/handler/ExportTestResultsHandler.java new file mode 100644 index 000000000..69237762c --- /dev/null +++ b/org.eclipse.jubula.client.ui.rap/src/org/eclipse/jubula/client/ui/rap/handler/ExportTestResultsHandler.java @@ -0,0 +1,290 @@ +/******************************************************************************* + * Copyright (c) 2004, 2013 BREDEX GmbH. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * BREDEX GmbH - initial API and implementation and/or initial documentation + *******************************************************************************/ +package org.eclipse.jubula.client.ui.rap.handler; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStreamWriter; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.List; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +import javax.persistence.EntityManager; +import javax.servlet.http.HttpServletResponse; + +import org.dom4j.Document; +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.core.runtime.SubMonitor; +import org.eclipse.core.runtime.jobs.Job; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jubula.client.core.businessprocess.AbstractXMLReportGenerator; +import org.eclipse.jubula.client.core.businessprocess.CompleteXMLReportGenerator; +import org.eclipse.jubula.client.core.businessprocess.HtmlResultReportWriter; +import org.eclipse.jubula.client.core.businessprocess.TestResultReportNamer; +import org.eclipse.jubula.client.core.businessprocess.XmlResultReportWriter; +import org.eclipse.jubula.client.core.model.ITestResultSummaryPO; +import org.eclipse.jubula.client.core.model.SummarizedTestResult; +import org.eclipse.jubula.client.core.model.TestResultNode; +import org.eclipse.jubula.client.core.persistence.GeneralStorage; +import org.eclipse.jubula.client.core.persistence.Persistor; +import org.eclipse.jubula.client.core.persistence.TestResultPM; +import org.eclipse.jubula.client.ui.editors.TestResultViewer.GenerateTestResultTreeOperation; +import org.eclipse.jubula.client.ui.rap.constants.IdConstants; +import org.eclipse.jubula.client.ui.rap.servicehandler.DownloadTestResultsServiceHandler; +import org.eclipse.jubula.client.ui.utils.JobUtils; +import org.eclipse.rwt.RWT; +import org.eclipse.rwt.service.IServiceHandler; +import org.eclipse.rwt.widgets.ExternalBrowser; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Display; +import org.eclipse.ui.handlers.HandlerUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Handler for exporting Test Result Report(s). + * + * @author BREDEX GmbH + */ +public class ExportTestResultsHandler extends AbstractHandler { + + /** the logger */ + private static final Logger LOG = + LoggerFactory.getLogger(ExportTestResultsHandler.class); + + /** + * Job for exporting Test Results. + * + * @author BREDEX GmbH + */ + private static class ExportTestResultsJob extends Job { + + /** the Test Result Summaries for which to export Test Results */ + private ITestResultSummaryPO[] m_summariesToExport; + + /** the display to use for UI operations */ + private Display m_display; + + /** the base Dashboard URL */ + private String m_baseUrl; + + /** the response to use for encoding the download link */ + private HttpServletResponse m_response; + + /** + * Constructor + * + * @param summariesToExport The Test Result Summaries for which to + * export Test Results. + * @param baseUrl The display to use for UI operations. + * @param display The base Dashboard URL. + * @param response The response to use for encoding the download link. + */ + public ExportTestResultsJob(ITestResultSummaryPO[] summariesToExport, + String baseUrl, Display display, + HttpServletResponse response) { + super("Export Test Results"); //$NON-NLS-1$ + m_summariesToExport = summariesToExport; + m_baseUrl = baseUrl; + m_display = display; + m_response = response; + } + + /** + * {@inheritDoc} + */ + protected IStatus run(IProgressMonitor monitor) { + try { + URI downloadFileUri = + performExport(m_summariesToExport, monitor).toURI(); + + final StringBuilder urlBuilder = new StringBuilder(); + urlBuilder.append(m_baseUrl).append("?").append(IServiceHandler.REQUEST_PARAM) //$NON-NLS-1$ + .append("=").append(DownloadTestResultsServiceHandler.SERVICE_HANDLER_ID) //$NON-NLS-1$ + .append("&").append(DownloadTestResultsServiceHandler.PARAM_FILENAME) //$NON-NLS-1$ + .append("="); //$NON-NLS-1$ + urlBuilder.append(URLEncoder.encode(downloadFileUri.toString(), + TestResultReportNamer.ENCODING)); + final URI uri = new URI(urlBuilder.toString()); + + if (m_display != null && !m_display.isDisposed()) { + m_display.asyncExec(new Runnable() { + + public void run() { + ExternalBrowser.open("_blank", //$NON-NLS-1$ + m_response.encodeURL( + uri.toASCIIString()), + SWT.NONE); + } + }); + } else { + LOG.warn("Could not initiate download. Display is null or disposed."); //$NON-NLS-1$ + } + return Status.OK_STATUS; + } catch (IOException e) { + return new Status(IStatus.ERROR, IdConstants.BUNDLE_ID, + "Error occurred while exporting Test Results.", e); //$NON-NLS-1$ + } catch (URISyntaxException e) { + return new Status(IStatus.ERROR, IdConstants.BUNDLE_ID, + "Error occurred while downloading Test Results.", e); //$NON-NLS-1$ + } + } + + /** + * Exports the given Test Result Summaries to a ZIP file. + * + * @param selectedSummaries The Summaries to export. + * @param monitor The progress monitor. + * @return the exported file. + * + * @throws IOException if an I/O error occurs during export. + */ + private File performExport(ITestResultSummaryPO[] selectedSummaries, + IProgressMonitor monitor) throws IOException { + + SubMonitor subMonitor = + SubMonitor.convert(monitor, "Exporting...", //$NON-NLS-1$ + selectedSummaries.length * 2); + + ZipOutputStream zipOutputStream = null; + OutputStreamWriter zipWriter = null; + Persistor persistor = Persistor.instance(); + EntityManager session = persistor.openSession(); + try { + final File exportDest = File.createTempFile("dashboard_results", ".zip"); //$NON-NLS-1$ //$NON-NLS-2$ + zipOutputStream = + new ZipOutputStream(new FileOutputStream(exportDest)); + zipWriter = new OutputStreamWriter( + zipOutputStream, TestResultReportNamer.ENCODING); + + for (ITestResultSummaryPO summary : selectedSummaries) { + GenerateTestResultTreeOperation operation = + new GenerateTestResultTreeOperation( + summary.getId(), + summary.getInternalProjectID(), + session); + + operation.run(subMonitor.newChild(1)); + + TestResultNode rootDetailNode = operation.getRootNode(); + AbstractXMLReportGenerator generator = + new CompleteXMLReportGenerator( + new SummarizedTestResult( + summary, rootDetailNode)); + + Document reportDocument = generator.generateXmlReport(); + + TestResultReportNamer reportNamer = + new TestResultReportNamer(summary.getTestsuiteName() + "_" + summary.getTestsuiteStartTime().getTime()); //$NON-NLS-1$ + zipOutputStream.putNextEntry( + new ZipEntry(reportNamer.getXmlEntryName())); + XmlResultReportWriter xmlWriter = + new XmlResultReportWriter(zipWriter); + xmlWriter.write(reportDocument); + zipWriter.flush(); + + zipOutputStream.putNextEntry( + new ZipEntry(reportNamer.getHtmlEntryName())); + HtmlResultReportWriter htmlWriter = + new HtmlResultReportWriter(zipWriter); + htmlWriter.write(reportDocument); + zipWriter.flush(); + subMonitor.worked(1); + } + return exportDest; + } finally { + persistor.dropSession(session); + monitor.done(); + if (zipWriter != null) { + try { + zipWriter.close(); + } catch (IOException e) { + LOG.warn("Error while closing ZIP writer.", e); //$NON-NLS-1$ + } + } + if (zipOutputStream != null) { + try { + zipOutputStream.close(); + } catch (IOException e) { + LOG.warn("Error while closing ZIP output stream.", e); //$NON-NLS-1$ + } + } + } + } + } + + /** + * + * {@inheritDoc} + */ + public Object execute(ExecutionEvent event) throws ExecutionException { + ISelection selection = HandlerUtil.getCurrentSelection(event); + IStructuredSelection structuredSelection = null; + if (selection instanceof IStructuredSelection) { + structuredSelection = (IStructuredSelection)selection; + } + List<ITestResultSummaryPO> selectedSummaryList = + new ArrayList<ITestResultSummaryPO>(structuredSelection.size()); + + // Only try to compute the details if there is an active + // DB connection. Otherwise we will receive an NPE + // while trying to initialize the Master Session. + if (Persistor.instance() != null) { + List<Number> idsWithDetails = + TestResultPM.computeTestresultIdsWithDetails( + GeneralStorage.getInstance().getMasterSession()); + for (Object selectedElement : structuredSelection.toArray()) { + if (selectedElement instanceof ITestResultSummaryPO + && idsWithDetails.contains( + ((ITestResultSummaryPO)selectedElement).getId())) { + + selectedSummaryList.add( + (ITestResultSummaryPO)selectedElement); + } + } + } + + final ITestResultSummaryPO [] selectedSummaries = + selectedSummaryList.toArray( + new ITestResultSummaryPO[selectedSummaryList.size()]); + + if (selectedSummaries.length == 0) { + MessageDialog.openInformation(HandlerUtil.getActiveShell(event), + "Export Test Results", //$NON-NLS-1$ + "No Test Results were selected for export."); //$NON-NLS-1$ + return null; + } + + Job exportJob = new ExportTestResultsJob(selectedSummaries, + RWT.getRequest().getContextPath() + + RWT.getRequest().getServletPath(), + Display.getCurrent(), + RWT.getResponse()); + exportJob.setUser(true); + + JobUtils.executeJob(exportJob, HandlerUtil.getActivePart(event)); + + return null; + } + +} diff --git a/org.eclipse.jubula.client.ui.rap/src/org/eclipse/jubula/client/ui/rap/handler/project/RapSelectDatabaseHandler.java b/org.eclipse.jubula.client.ui.rap/src/org/eclipse/jubula/client/ui/rap/handler/project/RapSelectDatabaseHandler.java new file mode 100644 index 000000000..2080247b8 --- /dev/null +++ b/org.eclipse.jubula.client.ui.rap/src/org/eclipse/jubula/client/ui/rap/handler/project/RapSelectDatabaseHandler.java @@ -0,0 +1,31 @@ +/******************************************************************************* + * Copyright (c) 2004, 2013 BREDEX GmbH. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * BREDEX GmbH - initial API and implementation and/or initial documentation + *******************************************************************************/ +package org.eclipse.jubula.client.ui.rap.handler.project; + +import org.eclipse.jubula.client.ui.handlers.project.AbstractSelectDatabaseHandler; + +/** + * @author BREDEX GmbH + * @created Oct 05, 2011 + */ +public class RapSelectDatabaseHandler extends AbstractSelectDatabaseHandler { + + @Override + protected void clearClient() { + // no-op + } + + @Override + protected void writeLineToConsole(String line) { + // no-op + } + +} diff --git a/org.eclipse.jubula.client.ui.rap/src/org/eclipse/jubula/client/ui/rap/servicehandler/DownloadTestResultsServiceHandler.java b/org.eclipse.jubula.client.ui.rap/src/org/eclipse/jubula/client/ui/rap/servicehandler/DownloadTestResultsServiceHandler.java new file mode 100644 index 000000000..aa9130ef2 --- /dev/null +++ b/org.eclipse.jubula.client.ui.rap/src/org/eclipse/jubula/client/ui/rap/servicehandler/DownloadTestResultsServiceHandler.java @@ -0,0 +1,90 @@ +/******************************************************************************* + * Copyright (c) 2004, 2013 BREDEX GmbH. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * BREDEX GmbH - initial API and implementation and/or initial documentation + *******************************************************************************/ +package org.eclipse.jubula.client.ui.rap.servicehandler; + +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletResponse; + +import org.eclipse.rwt.RWT; +import org.eclipse.rwt.service.IServiceHandler; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Handles service requests for downloading exported Test Results. + * + * This Service Handler has the following parameters:<ul> + * <li>{@link DownloadTestResultsServiceHandler#PARAM_FILENAME}.</li> + * </ul> + * @author BREDEX GmbH + */ +public class DownloadTestResultsServiceHandler implements IServiceHandler { + + /** service handler ID */ + public static final String SERVICE_HANDLER_ID = + "org.eclipse.jubula.client.ui.rap.servicehandler.DownloadTestResultsServiceHandler"; //$NON-NLS-1$ + + /** name of parameter for name of downloadable file */ + public static final String PARAM_FILENAME = "filename"; //$NON-NLS-1$ + + /** the logger */ + private static final Logger LOG = + LoggerFactory.getLogger(DownloadTestResultsServiceHandler.class); + + /** + * + * {@inheritDoc} + */ + public void service() throws IOException, ServletException { + File downloadFile; + try { + downloadFile = new File( + new URI(RWT.getRequest().getParameter(PARAM_FILENAME)) + .toURL().getFile()); + HttpServletResponse response = RWT.getResponse(); + response.setContentType("application/octet-stream"); //$NON-NLS-1$ + response.setContentLength((int)downloadFile.length()); + response.setHeader("Content-Disposition", //$NON-NLS-1$ + "attachment; filename=\"" + downloadFile.getName() + "\""); //$NON-NLS-1$ //$NON-NLS-2$ + BufferedOutputStream outputStream = + new BufferedOutputStream(response.getOutputStream()); + BufferedInputStream inputStream = + new BufferedInputStream(new FileInputStream(downloadFile)); + + try { + int b; + while ((b = inputStream.read()) != -1) { + outputStream.write(b); + } + } finally { + try { + inputStream.close(); + outputStream.close(); + } finally { + if (!downloadFile.delete()) { + downloadFile.deleteOnExit(); + } + } + } + } catch (URISyntaxException use) { + LOG.error("Unable to initiate Test Result download.", use); //$NON-NLS-1$ + } + } + +} diff --git a/org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/controllers/propertysources/AbstractPropertySource.java b/org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/controllers/propertysources/AbstractPropertySource.java index 1ecaabfde..3aa781d7e 100644 --- a/org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/controllers/propertysources/AbstractPropertySource.java +++ b/org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/controllers/propertysources/AbstractPropertySource.java @@ -22,7 +22,7 @@ import org.eclipse.ui.views.properties.IPropertyDescriptor; import org.eclipse.ui.views.properties.IPropertySource; /** - * @author Markus Tiede + * @author BREDEX GmbH * @created 22.11.2011 */ public abstract class AbstractPropertySource implements IPropertySource { diff --git a/org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/controllers/propertysources/TestResultNodePropertySource.java b/org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/controllers/propertysources/TestResultNodePropertySource.java index f790e69fd..c85594190 100644 --- a/org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/controllers/propertysources/TestResultNodePropertySource.java +++ b/org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/controllers/propertysources/TestResultNodePropertySource.java @@ -33,7 +33,7 @@ import org.eclipse.ui.views.properties.PropertyDescriptor; /** - * @author Markus Tiede + * @author BREDEX GmbH * @created 22.11.2011 */ @SuppressWarnings("synthetic-access") diff --git a/org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/views/NonSortedPropertySheetPage.java b/org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/views/NonSortedPropertySheetPage.java index 09a32bb18..d2fd487d3 100644 --- a/org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/views/NonSortedPropertySheetPage.java +++ b/org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/views/NonSortedPropertySheetPage.java @@ -22,7 +22,7 @@ import org.eclipse.ui.views.properties.PropertySheetPage; import org.eclipse.ui.views.properties.PropertySheetSorter; /** - * @author Markus Tiede + * @author BREDEX GmbH * @created 23.11.2011 */ public class NonSortedPropertySheetPage extends PropertySheetPage { @@ -51,7 +51,7 @@ public class NonSortedPropertySheetPage extends PropertySheetPage { } /** - * @author Markus Tiede + * @author BREDEX GmbH * @created 23.11.2011 */ private static class NonSortingPropertySheetSorter extends diff --git a/org.eclipse.jubula.dashboard.jettycustomizer/.checkstyle b/org.eclipse.jubula.dashboard.jettycustomizer/.checkstyle new file mode 100644 index 000000000..afbd8c957 --- /dev/null +++ b/org.eclipse.jubula.dashboard.jettycustomizer/.checkstyle @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<fileset-config file-format-version="1.2.0" simple-config="true"> + <fileset name="all" enabled="true" check-config-name="Jubula" local="false"> + <file-match-pattern match-pattern="." include-pattern="true"/> + </fileset> + <filter name="FilesFromPackage" enabled="true"> + <filter-data value="src/org/eclipse/jubula/client/ui/i18n"/> + </filter> +</fileset-config> diff --git a/org.eclipse.jubula.dashboard.jettycustomizer/.classpath b/org.eclipse.jubula.dashboard.jettycustomizer/.classpath new file mode 100644 index 000000000..64c5e31b7 --- /dev/null +++ b/org.eclipse.jubula.dashboard.jettycustomizer/.classpath @@ -0,0 +1,7 @@ +<?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.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/org.eclipse.jubula.dashboard.jettycustomizer/.gitignore b/org.eclipse.jubula.dashboard.jettycustomizer/.gitignore new file mode 100644 index 000000000..84a4913a9 --- /dev/null +++ b/org.eclipse.jubula.dashboard.jettycustomizer/.gitignore @@ -0,0 +1,2 @@ +/target +/bin
\ No newline at end of file diff --git a/org.eclipse.jubula.dashboard.jettycustomizer/.project b/org.eclipse.jubula.dashboard.jettycustomizer/.project new file mode 100644 index 000000000..084968d8c --- /dev/null +++ b/org.eclipse.jubula.dashboard.jettycustomizer/.project @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>org.eclipse.jubula.dashboard.jettycustomizer</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>net.sf.eclipsecs.core.CheckstyleBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>net.sf.eclipsecs.core.CheckstyleNature</nature> + </natures> +</projectDescription> diff --git a/org.eclipse.jubula.dashboard.jettycustomizer/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.jubula.dashboard.jettycustomizer/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 000000000..b167067a1 --- /dev/null +++ b/org.eclipse.jubula.dashboard.jettycustomizer/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,8 @@ +#Mon Nov 21 14:34:38 CET 2011 +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.compliance=1.5 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.5 diff --git a/org.eclipse.jubula.dashboard.jettycustomizer/META-INF/MANIFEST.MF b/org.eclipse.jubula.dashboard.jettycustomizer/META-INF/MANIFEST.MF new file mode 100644 index 000000000..05a29321d --- /dev/null +++ b/org.eclipse.jubula.dashboard.jettycustomizer/META-INF/MANIFEST.MF @@ -0,0 +1,8 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Dashboard Jetty Customizer +Bundle-SymbolicName: org.eclipse.jubula.dashboard.jettycustomizer;singleton:=true +Bundle-Version: 2.2.0.qualifier +Bundle-Vendor: Eclipse Jubula +Fragment-Host: org.eclipse.equinox.http.jetty;bundle-version="[2.0.100,4.0.0)" +Bundle-RequiredExecutionEnvironment: J2SE-1.5 diff --git a/org.eclipse.jubula.dashboard.jettycustomizer/about.html b/org.eclipse.jubula.dashboard.jettycustomizer/about.html new file mode 100644 index 000000000..f1be81099 --- /dev/null +++ b/org.eclipse.jubula.dashboard.jettycustomizer/about.html @@ -0,0 +1,28 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/> +<title>About</title> +</head> +<body lang="EN-US"> +<h2>About This Content</h2> + +<p>June 22, 2011</p> +<h3>License</h3> + +<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise +indicated below, the Content is provided to you under the terms and conditions of the +Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available +at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>. +For purposes of the EPL, "Program" will mean the Content.</p> + +<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is +being redistributed by another party ("Redistributor") and different terms and conditions may +apply to your use of any object code in the Content. Check the Redistributor's license that was +provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise +indicated below, the terms and conditions of the EPL still apply to any source code in the Content +and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p> + +</body> +</html> diff --git a/org.eclipse.jubula.dashboard.jettycustomizer/build.properties b/org.eclipse.jubula.dashboard.jettycustomizer/build.properties new file mode 100644 index 000000000..4d84152a6 --- /dev/null +++ b/org.eclipse.jubula.dashboard.jettycustomizer/build.properties @@ -0,0 +1,12 @@ +############################################################################### +# Copyright (c) 2004, 2013 BREDEX GmbH. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +############################################################################### +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + about.html diff --git a/org.eclipse.jubula.dashboard.jettycustomizer/pom.xml b/org.eclipse.jubula.dashboard.jettycustomizer/pom.xml new file mode 100644 index 000000000..06560652c --- /dev/null +++ b/org.eclipse.jubula.dashboard.jettycustomizer/pom.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Copyright (c) 2004, 2013 BREDEX GmbH. + All rights reserved. This program and the accompanying materials + are made available under the terms of the Eclipse Public License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/legal/epl-v10.html + --> +<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.eclipse.jubula</groupId> + <artifactId>org.eclipse.jubula.releng.dashboard</artifactId> + <version>2.2.0-SNAPSHOT</version> + <relativePath>../org.eclipse.jubula.releng.dashboard</relativePath> + </parent> + + <groupId>org.eclipse.jubula</groupId> + <artifactId>org.eclipse.jubula.dashboard.jettycustomizer</artifactId> + <version>2.2.0-SNAPSHOT</version> + <packaging>eclipse-plugin</packaging> + +</project> diff --git a/org.eclipse.jubula.dashboard.jettycustomizer/src/org/eclipse/jubula/dashboard/jettycustomizer/DashboardSessionCustomizer.java b/org.eclipse.jubula.dashboard.jettycustomizer/src/org/eclipse/jubula/dashboard/jettycustomizer/DashboardSessionCustomizer.java new file mode 100644 index 000000000..33ed813b6 --- /dev/null +++ b/org.eclipse.jubula.dashboard.jettycustomizer/src/org/eclipse/jubula/dashboard/jettycustomizer/DashboardSessionCustomizer.java @@ -0,0 +1,69 @@ +/******************************************************************************* + * Copyright (c) 2004, 2013 BREDEX GmbH. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * BREDEX GmbH - initial API and implementation and/or initial documentation + *******************************************************************************/ +package org.eclipse.jubula.dashboard.jettycustomizer; + +import java.util.Dictionary; + +import org.eclipse.equinox.http.jetty.JettyCustomizer; +import org.eclipse.jetty.server.AbstractConnector; +import org.eclipse.jetty.server.SessionManager; +import org.eclipse.jetty.server.session.AbstractSessionManager; +import org.eclipse.jetty.servlet.ServletContextHandler; +import org.eclipse.jetty.server.session.SessionHandler; + +/** + * Jetty customizer for dashboard. + * + * @author BREDEX GmbH + * @created Oct 05, 2011 + */ +public class DashboardSessionCustomizer extends JettyCustomizer { + + @SuppressWarnings("rawtypes") + @Override + public Object customizeContext(Object context, Dictionary settings) { + Object result = super.customizeContext(context, settings); + + // disables cookies for session management + // see http://wiki.eclipse.org/RAP/FAQ#Jetty + if (context instanceof ServletContextHandler) { + ServletContextHandler jettyContext = (ServletContextHandler)context; + SessionHandler sessionHandler = jettyContext.getSessionHandler(); + if (sessionHandler != null) { + SessionManager sessionManager = + sessionHandler.getSessionManager(); + if (sessionManager instanceof AbstractSessionManager) { + ((AbstractSessionManager)sessionManager) + .setUsingCookies(false); + } + } + } + + return result; + } + + @SuppressWarnings("rawtypes") + @Override + public Object customizeHttpConnector( + Object connector, Dictionary settings) { + + Object result = super.customizeHttpConnector(connector, settings); + + if (result instanceof AbstractConnector) { + // disable Reuse Address to prevent starting on occupied port + // on Windows from failing silently (see + // http://docs.codehaus.org/display/JETTY/Socket+reuse+on+Windows) + ((AbstractConnector)result).setReuseAddress(false); + } + + return result; + } +} diff --git a/org.eclipse.jubula.dashboard.starter/.checkstyle b/org.eclipse.jubula.dashboard.starter/.checkstyle new file mode 100644 index 000000000..37984e459 --- /dev/null +++ b/org.eclipse.jubula.dashboard.starter/.checkstyle @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<fileset-config file-format-version="1.2.0" simple-config="true"> + <fileset name="all" enabled="true" check-config-name="Jubula" local="false"> + <file-match-pattern match-pattern="." include-pattern="true"/> + </fileset> +</fileset-config> diff --git a/org.eclipse.jubula.dashboard.starter/.classpath b/org.eclipse.jubula.dashboard.starter/.classpath new file mode 100644 index 000000000..c44d4a4f2 --- /dev/null +++ b/org.eclipse.jubula.dashboard.starter/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src/main/java"/> + <classpathentry kind="src" path="src/main/resources"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/org.eclipse.jubula.dashboard.starter/.gitignore b/org.eclipse.jubula.dashboard.starter/.gitignore new file mode 100644 index 000000000..84a4913a9 --- /dev/null +++ b/org.eclipse.jubula.dashboard.starter/.gitignore @@ -0,0 +1,2 @@ +/target +/bin
\ No newline at end of file diff --git a/org.eclipse.jubula.dashboard.starter/.project b/org.eclipse.jubula.dashboard.starter/.project new file mode 100644 index 000000000..37d051537 --- /dev/null +++ b/org.eclipse.jubula.dashboard.starter/.project @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>org.eclipse.jubula.dashboard.starter</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>net.sf.eclipsecs.core.CheckstyleBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>net.sf.eclipsecs.core.CheckstyleNature</nature> + </natures> +</projectDescription> diff --git a/org.eclipse.jubula.dashboard.starter/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.jubula.dashboard.starter/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 000000000..d3e816bff --- /dev/null +++ b/org.eclipse.jubula.dashboard.starter/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,12 @@ +#Mon Nov 21 17:40:07 CET 2011 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.6 +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.6 diff --git a/org.eclipse.jubula.dashboard.starter/about.html b/org.eclipse.jubula.dashboard.starter/about.html new file mode 100644 index 000000000..f1be81099 --- /dev/null +++ b/org.eclipse.jubula.dashboard.starter/about.html @@ -0,0 +1,28 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/> +<title>About</title> +</head> +<body lang="EN-US"> +<h2>About This Content</h2> + +<p>June 22, 2011</p> +<h3>License</h3> + +<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise +indicated below, the Content is provided to you under the terms and conditions of the +Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available +at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>. +For purposes of the EPL, "Program" will mean the Content.</p> + +<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is +being redistributed by another party ("Redistributor") and different terms and conditions may +apply to your use of any object code in the Content. Check the Redistributor's license that was +provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise +indicated below, the terms and conditions of the EPL still apply to any source code in the Content +and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p> + +</body> +</html> diff --git a/org.eclipse.jubula.dashboard.starter/pom.xml b/org.eclipse.jubula.dashboard.starter/pom.xml new file mode 100644 index 000000000..5fb66af77 --- /dev/null +++ b/org.eclipse.jubula.dashboard.starter/pom.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Copyright (c) 2004, 2013 BREDEX GmbH. + All rights reserved. This program and the accompanying materials + are made available under the terms of the Eclipse Public License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/legal/epl-v10.html + --> +<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <modelVersion>4.0.0</modelVersion> + + <groupId>org.eclipse.jubula</groupId> + <artifactId>dashboard-starter</artifactId> + <version>2.2.0-SNAPSHOT</version> + <packaging>jar</packaging> + +</project> diff --git a/org.eclipse.jubula.dashboard.starter/src/main/java/org/eclipse/jubula/dashboard/starter/DashboardStarter.java b/org.eclipse.jubula.dashboard.starter/src/main/java/org/eclipse/jubula/dashboard/starter/DashboardStarter.java new file mode 100644 index 000000000..0e207b7d5 --- /dev/null +++ b/org.eclipse.jubula.dashboard.starter/src/main/java/org/eclipse/jubula/dashboard/starter/DashboardStarter.java @@ -0,0 +1,342 @@ +/******************************************************************************* + * Copyright (c) 2004, 2013 BREDEX GmbH. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * BREDEX GmbH - initial API and implementation and/or initial documentation + *******************************************************************************/ +package org.eclipse.jubula.dashboard.starter; + +import java.awt.AWTException; +import java.awt.Desktop; +import java.awt.Image; +import java.awt.MenuItem; +import java.awt.PopupMenu; +import java.awt.SystemTray; +import java.awt.Toolkit; +import java.awt.TrayIcon; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.URL; +import java.util.logging.Level; +import java.util.logging.Logger; + +import javax.swing.JOptionPane; + +/** + * Starts the Dashboard server as well as a browser to view the started server. + * + * @author BREDEX GmbH + */ +public class DashboardStarter { + /** the logger */ + private static final Logger LOG = + Logger.getLogger(DashboardStarter.class.getName()); + + /** + * Property name for the port on which the Dashboard server will start. + * The value for this property should be loaded from the + * dashboardserver.properties file. + */ + private static final String PROP_PORT = "org.eclipse.jubula.dashboard.port"; //$NON-NLS-1$ + + /** command to start the Dashboard server */ + private static final String DASHBOARD_SERVER_CMD = "dashboardserver"; //$NON-NLS-1$ + + /** Dashboard server command path */ + private static final File DASHBOARD_SERVER_CMD_FILE = + new File(DASHBOARD_SERVER_CMD).getAbsoluteFile(); + + /** working directory for the Dashboard server on Mac OS */ + private static final File DASHBOARD_SERVER_BASE_DIR_MAC = new File( + DASHBOARD_SERVER_CMD + ".app/Contents/MacOS/").getAbsoluteFile(); //$NON-NLS-1$ + + /** the name of the properties file to load */ + private static final String PROPERTIES_FILE_NAME = "dashboardserver.properties"; //$NON-NLS-1$ + + /** the properties file to load */ + private static final File PROPERTIES_FILE = isMac() + ? new File(DASHBOARD_SERVER_BASE_DIR_MAC, PROPERTIES_FILE_NAME) + : new File(PROPERTIES_FILE_NAME); + + /** OSGi command line argument to provide an OSGi console */ + private static final String OSGI_ARG_CONSOLE = "-console"; //$NON-NLS-1$ + + /** + * OSGi console command to shutdown the OSGi framework and exit + * the application + */ + private static final String OSGI_COMMAND_EXIT = "close"; //$NON-NLS-1$ + + /** + * Reads an input stream, ignoring the data that is read. + * + * @author BREDEX GmbH + */ + private static final class StreamSink implements Runnable { + + /** the stream to read */ + private InputStream m_stream; + + /** + * Constructor + * + * @param stream The stream to read. + */ + public StreamSink(InputStream stream) { + m_stream = stream; + } + + @Override + public void run() { + InputStreamReader isr = new InputStreamReader(m_stream); + BufferedReader br = new BufferedReader(isr); + String line; + try { + line = br.readLine(); + while (line != null) { + line = br.readLine(); + } + } catch (IOException e) { + LOG.log(Level.SEVERE, "Error occurred while reading from stream.", e); //$NON-NLS-1$ + } + } + + } + + /** + * Private constructor for utility class. + */ + private DashboardStarter() { + // nothing to initialize + } + + /** + * Starts the Dashboard server as well as a browser to view the + * started server. + * + * @param args The program arguments. + * @throws URISyntaxException if the programmatically generated URI is + * invalid. + * @throws IOException if an error occurs while finding or launching + * the default browser. + * @throws AWTException + */ + public static void main(String[] args) + throws IOException, URISyntaxException, AWTException { + + loadProperties(PROPERTIES_FILE); + + StringBuilder uriBuilder = new StringBuilder(); + uriBuilder.append("http://localhost:"); //$NON-NLS-1$ + uriBuilder.append(System.getProperty(PROP_PORT)); + uriBuilder.append("/dashboard"); //$NON-NLS-1$ + + URI dashboardUri = new URI(uriBuilder.toString()); + + addSystemTrayIcon(dashboardUri); + + ProcessBuilder processBuilder = isMac() + ? new ProcessBuilder( + new File(DASHBOARD_SERVER_BASE_DIR_MAC, + DASHBOARD_SERVER_CMD).getAbsolutePath(), + OSGI_ARG_CONSOLE) + : new ProcessBuilder(DASHBOARD_SERVER_CMD_FILE.getAbsolutePath(), + OSGI_ARG_CONSOLE); + if (isMac()) { + processBuilder.directory(DASHBOARD_SERVER_BASE_DIR_MAC); + } + + processBuilder.redirectErrorStream(true); + final Process dashboardServerProcess = processBuilder.start(); + + new Thread(new StreamSink(dashboardServerProcess.getInputStream())) + .start(); + + registerProcessListener(dashboardServerProcess); + + Runtime.getRuntime().addShutdownHook(new Thread() { + @Override + public void run() { + if (dashboardServerProcess != null) { + BufferedWriter writer = new BufferedWriter( + new OutputStreamWriter( + dashboardServerProcess.getOutputStream())); + try { + writer.write(OSGI_COMMAND_EXIT); + writer.newLine(); + writer.flush(); + } catch (IOException ioe) { + LOG.log(Level.WARNING, + "Unable to send shutdown command to Dashboard.", //$NON-NLS-1$ + ioe); + } + } + } + }); + + + Desktop desktop = Desktop.getDesktop(); + + waitForServer(dashboardUri.toURL()); + + desktop.browse(dashboardUri); + } + + /** + * + * @param propFile The file to load. + * @throws IOException if an error occurs while trying to read the file. + */ + private static void loadProperties(File propFile) throws IOException { + InputStream in = null; + try { + in = new FileInputStream(propFile); + System.getProperties().load(in); + } finally { + if (in != null) { + in.close(); + } + } + } + + /** + * Adds the Dashboard Starter icon to the system tray and registers the + * corresponding context menu. + * + * @param dashboardUri The URI for the Dashboard server. + * + * @throws AWTException if the desktop system tray is missing. + */ + private static void addSystemTrayIcon(final URI dashboardUri) + throws AWTException { + + if (SystemTray.isSupported()) { + ActionListener exitListener = new ActionListener() { + public void actionPerformed(ActionEvent e) { + System.exit(0); + } + }; + + ActionListener browseListener = new ActionListener() { + public void actionPerformed(ActionEvent e) { + try { + Desktop.getDesktop().browse(dashboardUri); + } catch (IOException ioe) { + JOptionPane.showMessageDialog(null, "See the log for further details.", //$NON-NLS-1$ + "Error Occurred", JOptionPane.ERROR_MESSAGE); //$NON-NLS-1$ + LOG.log(Level.SEVERE, "An error has occurred while browsing to Dashboard URL.", //$NON-NLS-1$ + ioe); + } + } + }; + + Image trayIconImage = Toolkit.getDefaultToolkit().getImage( + DashboardStarter.class.getClassLoader().getResource( + "dashboard_32x32.png")); //$NON-NLS-1$ + + PopupMenu popup = new PopupMenu(); + MenuItem defaultItem = new MenuItem("Exit"); //$NON-NLS-1$ + defaultItem.addActionListener(exitListener); + + MenuItem browseItem = new MenuItem("Open Dashboard in browser"); //$NON-NLS-1$ + browseItem.addActionListener(browseListener); + + popup.add(browseItem); + popup.add(defaultItem); + + TrayIcon trayIcon = + new TrayIcon(trayIconImage, "ITE Dashboard", popup); //$NON-NLS-1$ + trayIcon.setImageAutoSize(true); + + trayIcon.setToolTip(dashboardUri.toString()); + + SystemTray.getSystemTray().add(trayIcon); + } + } + + /** + * Starts a thread that waits for the given process to end. When the process + * ends, the JVM will be terminated as well. + * + * @param process The process. + */ + private static void registerProcessListener( + final Process process) { + + new Thread() { + @Override + public void run() { + while (true) { + try { + int exitCode = process.waitFor(); + System.exit(exitCode); + } catch (InterruptedException e) { + LOG.log(Level.WARNING, "Interrupted while waiting for Dashboard to close.", e); //$NON-NLS-1$ + } + } + } + } .start(); + } + + /** + * Polls the given URL, returning when a connection can be successfully + * established. + * + * @param serverUrl The URL to poll. + */ + private static void waitForServer(URL serverUrl) { + + boolean connectionWasSuccessful = false; + while (!connectionWasSuccessful) { + InputStream stream = null; + try { + stream = serverUrl.openStream(); + connectionWasSuccessful = true; + } catch (IOException ioe) { + try { + Thread.sleep(500); + } catch (InterruptedException e) { + // nothing to handle + // looping will continue + } + } finally { + if (stream != null) { + try { + stream.close(); + } catch (IOException e) { + LOG.log(Level.WARNING, "Error while closing stream", e); //$NON-NLS-1$ + } + } + } + } + + } + + /** + * + * @return <code>true</code> if the current OS is a Mac. Otherwise, + * <code>false</code>. + */ + private static boolean isMac() { + String os = System.getProperty("os.name"); //$NON-NLS-1$ + if (os != null) { + return os.startsWith("Mac"); //$NON-NLS-1$ + } + + return false; + } +} diff --git a/org.eclipse.jubula.dashboard.starter/src/main/resources/dashboard_32x32.png b/org.eclipse.jubula.dashboard.starter/src/main/resources/dashboard_32x32.png Binary files differnew file mode 100644 index 000000000..96de6b614 --- /dev/null +++ b/org.eclipse.jubula.dashboard.starter/src/main/resources/dashboard_32x32.png diff --git a/org.eclipse.jubula.product.dashboard/.gitignore b/org.eclipse.jubula.product.dashboard/.gitignore new file mode 100644 index 000000000..5b670009e --- /dev/null +++ b/org.eclipse.jubula.product.dashboard/.gitignore @@ -0,0 +1,2 @@ +/target +/workspace diff --git a/org.eclipse.jubula.product.dashboard/.project b/org.eclipse.jubula.product.dashboard/.project new file mode 100644 index 000000000..5c978a0de --- /dev/null +++ b/org.eclipse.jubula.product.dashboard/.project @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>org.eclipse.jubula.product.dashboard</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + </buildSpec> + <natures> + </natures> +</projectDescription> diff --git a/org.eclipse.jubula.product.dashboard/about.html b/org.eclipse.jubula.product.dashboard/about.html new file mode 100644 index 000000000..f1be81099 --- /dev/null +++ b/org.eclipse.jubula.product.dashboard/about.html @@ -0,0 +1,28 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/> +<title>About</title> +</head> +<body lang="EN-US"> +<h2>About This Content</h2> + +<p>June 22, 2011</p> +<h3>License</h3> + +<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise +indicated below, the Content is provided to you under the terms and conditions of the +Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available +at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>. +For purposes of the EPL, "Program" will mean the Content.</p> + +<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is +being redistributed by another party ("Redistributor") and different terms and conditions may +apply to your use of any object code in the Content. Check the Redistributor's license that was +provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise +indicated below, the terms and conditions of the EPL still apply to any source code in the Content +and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p> + +</body> +</html> diff --git a/org.eclipse.jubula.product.dashboard/org.eclipse.jubula.product.dashboard.product b/org.eclipse.jubula.product.dashboard/org.eclipse.jubula.product.dashboard.product new file mode 100644 index 000000000..f95887de7 --- /dev/null +++ b/org.eclipse.jubula.product.dashboard/org.eclipse.jubula.product.dashboard.product @@ -0,0 +1,135 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?pde version="3.5"?> +<!-- + Copyright (c) 2004, 2013 BREDEX GmbH. + All rights reserved. This program and the accompanying materials + are made available under the terms of the Eclipse Public License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/legal/epl-v10.html + --> + +<product name="dashboard" uid="org.eclipse.jubula.product.dashboard" id="org.eclipse.jubula.app.dashboard.product" application="org.eclipse.jubula.app.dashboard.dashboardHttpServer" version="2.2.0.qualifier" useFeatures="false" includeLaunchers="true"> + + <configIni use="default"> + </configIni> + + <launcherArgs> + <programArgs>-data +@user.home/.jubula/dashboardWorkspace</programArgs> + <programArgsLin>-vm ../jre/bin</programArgsLin> + <programArgsWin>-vm ../jre/bin</programArgsWin> + <vmArgs>-server +-Dosgi.noShutdown=true +-Dorg.eclipse.equinox.http.jetty.context.sessioninactiveinterval=0 +-Dorg.eclipse.equinox.http.jetty.autostart=false +-Xms128m +-Xmx1024m +-XX:MaxPermSize=256m</vmArgs> + </launcherArgs> + + <windowImages/> + + <launcher name="dashboardserver"> + <solaris/> + <win useIco="false"> + <bmp/> + </win> + </launcher> + + <vm> + </vm> + + <plugins> + <plugin id="ch.qos.logback.classic"/> + <plugin id="ch.qos.logback.core"/> + <plugin id="ch.qos.logback.slf4j" fragment="true"/> + <plugin id="org.eclipse.jubula.app.dashboard"/> + <plugin id="org.eclipse.jubula.client.ui.rap"/> + <plugin id="org.eclipse.jubula.dashboard.jettycustomizer" fragment="true"/> + <plugin id="com.bredexsw.jubula.client.core.driver" fragment="true"/> + <plugin id="com.ibm.icu.base"/> + <plugin id="javax.activation"/> + <plugin id="javax.mail"/> + <plugin id="javax.persistence"/> + <plugin id="javax.servlet"/> + <plugin id="javax.servlet.jsp"/> + <plugin id="javax.xml"/> + <plugin id="javax.xml.stream"/> + <plugin id="org.apache.commons.beanutils"/> + <plugin id="org.apache.commons.cli"/> + <plugin id="org.apache.commons.codec"/> + <plugin id="org.apache.commons.collections"/> + <plugin id="org.apache.commons.lang"/> + <plugin id="org.apache.commons.logging"/> + <plugin id="org.apache.oro"/> + <plugin id="org.apache.poi"/> + <plugin id="org.apache.felix.gogo.runtime"/> + <plugin id="org.apache.felix.gogo.shell"/> + <plugin id="org.apache.felix.gogo.command"/> + <plugin id="org.eclipse.core.commands"/> + <plugin id="org.eclipse.core.contenttype"/> + <plugin id="org.eclipse.core.databinding"/> + <plugin id="org.eclipse.core.databinding.beans"/> + <plugin id="org.eclipse.core.databinding.observable"/> + <plugin id="org.eclipse.core.databinding.property"/> + <plugin id="org.eclipse.core.expressions"/> + <plugin id="org.eclipse.core.jobs"/> + <plugin id="org.eclipse.core.runtime"/> + <plugin id="org.eclipse.equinox.app"/> + <plugin id="org.eclipse.equinox.common"/> + <plugin id="org.eclipse.equinox.console"/> + <plugin id="org.eclipse.equinox.http.jetty"/> + <plugin id="org.eclipse.equinox.http.registry"/> + <plugin id="org.eclipse.equinox.http.servlet"/> + <plugin id="org.eclipse.equinox.preferences"/> + <plugin id="org.eclipse.equinox.registry"/> + <plugin id="org.eclipse.equinox.security"/> + <plugin id="org.eclipse.equinox.servletbridge.extensionbundle" fragment="true"/> + <plugin id="org.eclipse.equinox.transforms.hook" fragment="true"/> + <plugin id="org.eclipse.equinox.weaving.hook" fragment="true"/> + <plugin id="org.eclipse.help"/> + <plugin id="org.eclipse.jubula.client.core"/> + <plugin id="org.eclipse.jubula.client.ui"/> + <plugin id="org.eclipse.jubula.communication"/> + <plugin id="org.eclipse.jubula.toolkit.common"/> + <plugin id="org.eclipse.jubula.toolkit.provider.base"/> + <plugin id="org.eclipse.jubula.toolkit.provider.concrete"/> + <plugin id="org.eclipse.jubula.toolkit.provider.html"/> + <plugin id="org.eclipse.jubula.toolkit.provider.rcp"/> + <plugin id="org.eclipse.jubula.toolkit.provider.rcp.gef"/> + <plugin id="org.eclipse.jubula.toolkit.provider.swing"/> + <plugin id="org.eclipse.jubula.toolkit.provider.swt"/> + <plugin id="org.eclipse.jubula.toolkit.provider.win"/> + <plugin id="org.eclipse.jubula.tools"/> + <plugin id="org.eclipse.jubula.ui.compatibility"/> + <plugin id="org.eclipse.osgi"/> + <plugin id="org.eclipse.osgi.services"/> + <plugin id="org.eclipse.persistence.antlr"/> + <plugin id="org.eclipse.persistence.asm"/> + <plugin id="org.eclipse.persistence.core"/> + <plugin id="org.eclipse.persistence.jpa"/> + <plugin id="org.eclipse.persistence.jpa.osgi"/> + <plugin id="org.eclipse.persistence.oracle" fragment="true"/> + <plugin id="org.eclipse.rap.design.example"/> + <plugin id="org.eclipse.rap.jface"/> + <plugin id="org.eclipse.rap.jface.databinding"/> + <plugin id="org.eclipse.rap.rwt"/> + <plugin id="org.eclipse.rap.ui"/> + <plugin id="org.eclipse.rap.ui.views"/> + <plugin id="org.eclipse.rap.ui.workbench"/> + <plugin id="org.h2"/> + <plugin id="org.eclipse.jetty.server"/> + <plugin id="org.eclipse.jetty.util"/> + <plugin id="org.slf4j.api"/> + <plugin id="org.slf4j.jcl"/> + </plugins> + + <configurations> + <plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="4" /> + <plugin id="org.eclipse.rap.rwt.osgi" autoStart="true" startLevel="4" /> + <plugin id="org.eclipse.equinox.common" autoStart="false" startLevel="2" /> + <plugin id="org.eclipse.equinox.http.registry" autoStart="true" startLevel="3" /> + <plugin id="org.eclipse.osgi" autoStart="true" startLevel="0" /> + </configurations> + +</product> diff --git a/org.eclipse.jubula.product.dashboard/p2.inf b/org.eclipse.jubula.product.dashboard/p2.inf new file mode 100644 index 000000000..c8b33ef5b --- /dev/null +++ b/org.eclipse.jubula.product.dashboard/p2.inf @@ -0,0 +1,3 @@ +provides.0.namespace = A.PDE.Target.Platform +provides.0.name = Cannot be installed into the IDE +provides.0.version = 1.0.0
\ No newline at end of file diff --git a/org.eclipse.jubula.product.dashboard/pom.xml b/org.eclipse.jubula.product.dashboard/pom.xml new file mode 100644 index 000000000..f6958323d --- /dev/null +++ b/org.eclipse.jubula.product.dashboard/pom.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Copyright (c) 2004, 2013 BREDEX GmbH. + All rights reserved. This program and the accompanying materials + are made available under the terms of the Eclipse Public License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/legal/epl-v10.html + --> +<project + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" + xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.eclipse.jubula</groupId> + <artifactId>org.eclipse.jubula.releng.dashboard</artifactId> + <version>2.2.0-SNAPSHOT</version> + <relativePath>../org.eclipse.jubula.releng.dashboard</relativePath> + </parent> + + <groupId>org.eclipse.jubula</groupId> + <artifactId>org.eclipse.jubula.product.dashboard</artifactId> + <version>2.2.0-SNAPSHOT</version> + <packaging>eclipse-repository</packaging> + + <build> + <plugins> + <plugin> + <groupId>org.eclipse.tycho</groupId> + <artifactId>tycho-p2-director-plugin</artifactId> + <version>${tycho-version}</version> + <configuration> + <includeAllDependencies>true</includeAllDependencies> + </configuration> + <executions> + <execution> + <id>materialize-products</id> + <goals> + <goal>materialize-products</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + +</project> diff --git a/org.eclipse.jubula.project.configuration/ide-launch/dashboard.launch b/org.eclipse.jubula.project.configuration/ide-launch/dashboard.launch new file mode 100644 index 000000000..a0ae2f587 --- /dev/null +++ b/org.eclipse.jubula.project.configuration/ide-launch/dashboard.launch @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<launchConfiguration type="org.eclipse.rap.ui.launch.RAPLauncher"> +<booleanAttribute key="append.args" value="true"/> +<booleanAttribute key="askclear" value="false"/> +<booleanAttribute key="automaticAdd" value="true"/> +<booleanAttribute key="automaticValidate" value="false"/> +<stringAttribute key="bootstrap" value=""/> +<stringAttribute key="checked" value="[NONE]"/> +<booleanAttribute key="clearConfig" value="false"/> +<booleanAttribute key="clearws" value="false"/> +<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/dashboard"/> +<booleanAttribute key="default" value="true"/> +<booleanAttribute key="default_auto_start" value="true"/> +<intAttribute key="default_start_level" value="4"/> +<booleanAttribute key="includeOptional" value="false"/> +<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> +<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog -console -clean -debug"/> +<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/> +<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Declipse.ignoreApp=true -Dosgi.noShutdown=true -Dorg.eclipse.jubula.dashboard.jdbc_driver=oracle.jdbc.driver.OracleDriver -Dorg.eclipse.jubula.dashboard.jdbc_url=jdbc:oracle:thin:@dbbxtest.bredex.de:1521:bxutf -Dorg.eclipse.jubula.dashboard.database_username=markus -Dorg.eclipse.jubula.dashboard.database_password=bxtest"/> +<stringAttribute key="org.eclipse.rap.launch.browserMode" value="INTERNAL"/> +<stringAttribute key="org.eclipse.rap.launch.contextpath" value=""/> +<stringAttribute key="org.eclipse.rap.launch.dataLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.rap.tools.launch/dashboard"/> +<booleanAttribute key="org.eclipse.rap.launch.developmentMode" value="true"/> +<stringAttribute key="org.eclipse.rap.launch.entryPoint" value="org.eclipse.jubula.app.dashboard.dashboard"/> +<stringAttribute key="org.eclipse.rap.launch.libraryVariant" value="STANDARD"/> +<booleanAttribute key="org.eclipse.rap.launch.openBrowser" value="false"/> +<intAttribute key="org.eclipse.rap.launch.port" value="60001"/> +<stringAttribute key="org.eclipse.rap.launch.servletName" value="/rap"/> +<stringAttribute key="org.eclipse.rap.launch.servletPath" value="/dashboard"/> +<intAttribute key="org.eclipse.rap.launch.sessionTimeout" value="0"/> +<booleanAttribute key="org.eclipse.rap.launch.terminatePrevious" value="true"/> +<booleanAttribute key="org.eclipse.rap.launch.useDefaultDataLocation" value="true"/> +<booleanAttribute key="org.eclipse.rap.launch.useManualContextPath" value="false"/> +<booleanAttribute key="org.eclipse.rap.launch.useManualPort" value="true"/> +<booleanAttribute key="org.eclipse.rap.launch.useSessionTimeout" value="false"/> +<booleanAttribute key="pde.generated.config" value="true"/> +<stringAttribute key="pde.version" value="3.3"/> +<booleanAttribute key="show_selected_only" value="false"/> +<stringAttribute key="target_bundles" value="ch.qos.logback.classic@default:default,ch.qos.logback.core@default:default,ch.qos.logback.slf4j@default:false,com.ibm.icu.base@default:default,javax.persistence@default:default,javax.servlet@default:true,org.apache.commons.beanutils@default:default,org.apache.commons.cli@default:default,org.apache.commons.codec@default:default,org.apache.commons.collections@default:default,org.apache.commons.lang@default:default,org.apache.commons.logging*1.1.1.v201101211721@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.apache.poi@default:default,org.eclipse.birt.jetty.overlay@default:false,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.beans@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions*3.4.401.v20120912-155018@default:default,org.eclipse.core.jobs*3.5.300.v20120912-155018@default:default,org.eclipse.core.runtime*3.8.0.v20120912-155025@default:true,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.console@default:default,org.eclipse.equinox.http.jetty*3.0.1.v20121109-203239@default:default,org.eclipse.equinox.http.registry*1.1.200.v20120912-130548@default:default,org.eclipse.equinox.http.servlet*1.1.300.v20120912-130548@default:default,org.eclipse.equinox.preferences*3.5.1.v20121031-182809@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security@default:default,org.eclipse.equinox.servletbridge.extensionbundle@default:false,org.eclipse.equinox.transforms.hook@default:false,org.eclipse.equinox.weaving.hook@default:false,org.eclipse.help@default:default,org.eclipse.jetty.continuation@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,org.eclipse.jetty.security@default:default,org.eclipse.jetty.server@default:default,org.eclipse.jetty.servlet@default:default,org.eclipse.jetty.util@default:default,org.eclipse.osgi*3.8.2.v20130124-134944@-1:true,org.eclipse.osgi.services@default:default,org.eclipse.persistence.antlr@default:default,org.eclipse.persistence.asm@default:default,org.eclipse.persistence.core@default:default,org.eclipse.persistence.jpa.equinox.weaving@default:false,org.eclipse.persistence.jpa.equinox@default:false,org.eclipse.persistence.jpa.osgi@default:default,org.eclipse.persistence.jpa@default:default,org.eclipse.persistence.oracle@default:false,org.eclipse.rap.design.example@default:default,org.eclipse.rap.jface.databinding@default:default,org.eclipse.rap.jface@default:default,org.eclipse.rap.rwt.osgi@default:default,org.eclipse.rap.rwt@default:default,org.eclipse.rap.ui.forms@default:default,org.eclipse.rap.ui.views@default:default,org.eclipse.rap.ui.workbench@default:default,org.eclipse.rap.ui@default:default,org.eclipse.swt@default:default,org.h2@default:default,org.slf4j.api@default:default,org.slf4j.jcl@default:default"/> +<booleanAttribute key="tracing" value="false"/> +<booleanAttribute key="useCustomFeatures" value="false"/> +<booleanAttribute key="useDefaultConfigArea" value="true"/> +<stringAttribute key="workspace_bundles" value="org.eclipse.jubula.app.dashboard@default:default,org.eclipse.jubula.client.ui.rap@default:default,org.eclipse.jubula.dashboard.jettycustomizer@default:false,com.bredexsw.jubula.client.core.driver@default:false,org.eclipse.jubula.client.core@default:default,org.eclipse.jubula.client.ui@default:default,org.eclipse.jubula.communication@default:default,org.eclipse.jubula.toolkit.common@default:default,org.eclipse.jubula.toolkit.provider.base@default:default,org.eclipse.jubula.toolkit.provider.concrete@default:default,org.eclipse.jubula.toolkit.provider.html@default:default,org.eclipse.jubula.toolkit.provider.rcp.gef@default:default,org.eclipse.jubula.toolkit.provider.rcp@default:default,org.eclipse.jubula.toolkit.provider.swing@default:default,org.eclipse.jubula.toolkit.provider.swt@default:default,org.eclipse.jubula.toolkit.provider.win@default:default,org.eclipse.jubula.tools@default:default,org.eclipse.jubula.ui.compatibility@default:default"/> +</launchConfiguration> diff --git a/org.eclipse.jubula.project.configuration/target/definitions/dashboard-local.target b/org.eclipse.jubula.project.configuration/target/definitions/dashboard-local.target new file mode 100644 index 000000000..c395667f5 --- /dev/null +++ b/org.eclipse.jubula.project.configuration/target/definitions/dashboard-local.target @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<?pde version="3.8"?><target name="dashboard-local" sequenceNumber="0"> +<locations> +<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit"> +<unit id="org.apache.commons.cli" version="1.2.0.v201105210650"/> +<unit id="org.apache.commons.logging" version="1.1.1.v201101211721"/> +<unit id="org.apache.commons.beanutils" version="1.8.0.v201205091237"/> +<unit id="org.apache.commons.codec" version="1.4.0.v201209201156"/> +<unit id="org.apache.commons.collections" version="3.2.0.v2013030210310"/> +<unit id="org.apache.commons.lang" version="2.6.0.v201205030909"/> +<unit id="org.apache.oro" version="2.0.8.v201005080400"/> +<unit id="org.h2" version="1.3.168.v201212121212"/> +<unit id="ch.qos.logback.classic" version="1.0.7.v20121108-1250"/> +<unit id="ch.qos.logback.core" version="1.0.7.v20121108-1250"/> +<unit id="ch.qos.logback.slf4j" version="1.0.7.v20121108-1250"/> +<unit id="org.slf4j.api" version="1.7.2.v20121108-1250"/> +<unit id="org.slf4j.jcl" version="1.7.2.v20130115-1340"/> +<unit id="org.apache.poi" version="3.9.0.v201303080712"/> +<repository id="eclipse-orbit-R20130827064939" location="http://download.eclipse.org/tools/orbit/downloads/drops/R20130827064939/repository"/> +</location> +<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit"> +<unit id="org.eclipse.equinox.sdk.feature.group" version="0.0.0"/> +<unit id="org.eclipse.rap.runtime.feature.group" version="0.0.0"/> +<unit id="org.eclipse.rap.runtime.requirements.feature.group" version="0.0.0"/> +<unit id="org.eclipse.birt.osgi.runtime.sdk.feature.group" version="0.0.0"/> +<unit id="javax.xml" version="0.0.0"/> +<unit id="org.eclipse.ui.workbench" version="0.0.0"/> +<unit id="org.eclipse.ui" version="0.0.0"/> +<unit id="org.eclipse.swt" version="0.0.0"/> +<unit id="org.eclipse.jface.databinding" version="0.0.0"/> +<unit id="org.eclipse.jface" version="0.0.0"/> +<unit id="org.eclipse.ui.views" version="0.0.0"/> +<repository id="eclipse-juno" location="http://download.eclipse.org/releases/juno"/> +</location> +<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit"> +<unit id="org.eclipse.persistence.jpa.feature.group" version="0.0.0"/> +<repository location="http://download.eclipse.org/releases/indigo"/> +</location> +</locations> +</target> diff --git a/org.eclipse.jubula.project.configuration/target/definitions/dashboard.target b/org.eclipse.jubula.project.configuration/target/definitions/dashboard.target new file mode 100644 index 000000000..8c814c9d9 --- /dev/null +++ b/org.eclipse.jubula.project.configuration/target/definitions/dashboard.target @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<?pde version="3.8"?><target name="dashboard" sequenceNumber="0"> +<locations> +<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit"> +<unit id="org.apache.commons.cli" version="1.2.0.v201105210650"/> +<unit id="org.apache.commons.logging" version="1.1.1.v201101211721"/> +<unit id="org.apache.commons.beanutils" version="1.8.0.v201205091237"/> +<unit id="org.apache.commons.codec" version="1.4.0.v201209201156"/> +<unit id="org.apache.commons.collections" version="3.2.0.v2013030210310"/> +<unit id="org.apache.commons.lang" version="2.6.0.v201205030909"/> +<unit id="org.apache.oro" version="2.0.8.v201005080400"/> +<unit id="org.h2" version="1.3.168.v201212121212"/> +<unit id="ch.qos.logback.classic" version="1.0.7.v20121108-1250"/> +<unit id="ch.qos.logback.core" version="1.0.7.v20121108-1250"/> +<unit id="ch.qos.logback.slf4j" version="1.0.7.v20121108-1250"/> +<unit id="org.slf4j.api" version="1.7.2.v20121108-1250"/> +<unit id="org.slf4j.jcl" version="1.7.2.v20130115-1340"/> +<unit id="org.apache.poi" version="3.9.0.v201303080712"/> +<repository id="eclipse-orbit-R20130827064939" location="http://download.eclipse.org/tools/orbit/downloads/drops/R20130827064939/repository"/> +</location> +<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit"> +<unit id="org.eclipse.equinox.sdk.feature.group" version="0.0.0"/> +<unit id="org.eclipse.rap.runtime.feature.group" version="0.0.0"/> +<unit id="org.eclipse.rap.runtime.requirements.feature.group" version="0.0.0"/> +<unit id="org.eclipse.birt.osgi.runtime.sdk.feature.group" version="0.0.0"/> +<unit id="javax.xml" version="0.0.0"/> +<repository id="eclipse-juno" location="http://download.eclipse.org/releases/juno"/> +</location> +<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit"> +<unit id="org.eclipse.jubula.feature.feature.group" version="0.0.0"/> +<repository location="http://download.eclipse.org/jubula/development"/> +</location> +<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit"> +<unit id="org.eclipse.persistence.jpa.feature.group" version="0.0.0"/> +<repository location="http://download.eclipse.org/releases/indigo"/> +</location> +</locations> +</target> diff --git a/org.eclipse.jubula.releng.dashboard/.gitignore b/org.eclipse.jubula.releng.dashboard/.gitignore new file mode 100644 index 000000000..a7ca88086 --- /dev/null +++ b/org.eclipse.jubula.releng.dashboard/.gitignore @@ -0,0 +1 @@ +/workspace diff --git a/org.eclipse.jubula.releng.dashboard/.project b/org.eclipse.jubula.releng.dashboard/.project new file mode 100644 index 000000000..af70e58ae --- /dev/null +++ b/org.eclipse.jubula.releng.dashboard/.project @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>org.eclipse.jubula.releng.dashboard</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + </buildSpec> + <natures> + </natures> +</projectDescription> diff --git a/org.eclipse.jubula.releng.dashboard/about.html b/org.eclipse.jubula.releng.dashboard/about.html new file mode 100644 index 000000000..f1be81099 --- /dev/null +++ b/org.eclipse.jubula.releng.dashboard/about.html @@ -0,0 +1,28 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/> +<title>About</title> +</head> +<body lang="EN-US"> +<h2>About This Content</h2> + +<p>June 22, 2011</p> +<h3>License</h3> + +<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise +indicated below, the Content is provided to you under the terms and conditions of the +Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available +at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>. +For purposes of the EPL, "Program" will mean the Content.</p> + +<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is +being redistributed by another party ("Redistributor") and different terms and conditions may +apply to your use of any object code in the Content. Check the Redistributor's license that was +provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise +indicated below, the terms and conditions of the EPL still apply to any source code in the Content +and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p> + +</body> +</html> diff --git a/org.eclipse.jubula.releng.dashboard/pom.xml b/org.eclipse.jubula.releng.dashboard/pom.xml new file mode 100644 index 000000000..d5c5fdadc --- /dev/null +++ b/org.eclipse.jubula.releng.dashboard/pom.xml @@ -0,0 +1,88 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Copyright (c) 2004, 2013 BREDEX GmbH. + All rights reserved. This program and the accompanying materials + are made available under the terms of the Eclipse Public License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/legal/epl-v10.html + --> +<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <modelVersion>4.0.0</modelVersion> + <groupId>org.eclipse.jubula</groupId> + <artifactId>org.eclipse.jubula.releng.dashboard</artifactId> + <version>2.2.0-SNAPSHOT</version> + <packaging>pom</packaging> + <description>Release engineering for ITE Dashboard.</description> + <url>http://www.eclipse.org/jubula</url> + + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <tycho-version>0.18.0</tycho-version> + <target-platform-base-path>../org.eclipse.jubula.project.configuration/target/definitions/</target-platform-base-path> + <target-platform-path>${target-platform-base-path}dashboard-local</target-platform-path> + </properties> + + <modules> + <module>../org.eclipse.jubula.releng</module> + <module>../org.eclipse.jubula.client.ui.rap</module> + <module>../org.eclipse.jubula.dashboard.jettycustomizer</module> + <module>../org.eclipse.jubula.app.dashboard</module> + <module>../org.eclipse.jubula.product.dashboard</module> + <module>../org.eclipse.jubula.dashboard.starter</module> + </modules> + + <build> + <plugins> + <plugin> + <groupId>org.eclipse.tycho</groupId> + <artifactId>tycho-maven-plugin</artifactId> + <version>${tycho-version}</version> + <extensions>true</extensions> + </plugin> + <plugin> + <groupId>org.eclipse.tycho</groupId> + <artifactId>target-platform-configuration</artifactId> + <version>${tycho-version}</version> + <configuration> + <resolver>p2</resolver> + <target> + <artifact> + <groupId>${project.groupId}</groupId> + <artifactId>${project.artifactId}</artifactId> + <version>${project.version}</version> + <classifier>${target-platform-path}</classifier> + </artifact> + </target> + <environments> + <environment> + <os>win32</os> + <ws>win32</ws> + <arch>x86</arch> + </environment> + <environment> + <os>win32</os> + <ws>win32</ws> + <arch>x86_64</arch> + </environment> + <environment> + <os>linux</os> + <ws>gtk</ws> + <arch>x86_64</arch> + </environment> + <environment> + <os>linux</os> + <ws>gtk</ws> + <arch>x86</arch> + </environment> + <environment> + <os>macosx</os> + <ws>cocoa</ws> + <arch>x86_64</arch> + </environment> + </environments> + </configuration> + </plugin> + </plugins> + </build> +</project>
\ No newline at end of file diff --git a/org.eclipse.jubula.toolkit.common/pom.xml b/org.eclipse.jubula.toolkit.common/pom.xml index 04ba864eb..f622af646 100644 --- a/org.eclipse.jubula.toolkit.common/pom.xml +++ b/org.eclipse.jubula.toolkit.common/pom.xml @@ -1,4 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> +<!-- + Copyright (c) 2004, 2013 BREDEX GmbH. + All rights reserved. This program and the accompanying materials + are made available under the terms of the Eclipse Public License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/legal/epl-v10.html + --> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> diff --git a/org.eclipse.jubula.ui.compatibility/build.properties b/org.eclipse.jubula.ui.compatibility/build.properties index c1aa048db..6ba72b0a0 100644 --- a/org.eclipse.jubula.ui.compatibility/build.properties +++ b/org.eclipse.jubula.ui.compatibility/build.properties @@ -1,3 +1,10 @@ +###############################################################################
+# Copyright (c) 2004, 2013 BREDEX GmbH.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+###############################################################################
bin.includes = META-INF/,\
about.html,\
.
|