buildframework/helium/sf/java/ccmtask/src/com/nokia/helium/ccmtask/ant/taskdefs/CcmTask.java
author wbernard
Fri, 13 Aug 2010 14:59:05 +0300
changeset 628 7c4a911dc066
parent 588 c7c26511138f
permissions -rw-r--r--
helium_11.0.0-e00f171ca185
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
     1
/*
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
     2
* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies).
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
     3
* All rights reserved.
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
     4
* This component and the accompanying materials are made available
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
     6
* which accompanies this distribution, and is available
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
     8
*
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
     9
* Initial Contributors:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    11
*
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    12
* Contributors:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    13
*
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    14
* Description: 
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    15
*
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    16
*/
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    17
 
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    18
package com.nokia.helium.ccmtask.ant.taskdefs;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    19
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    20
import java.io.File;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    21
import java.io.IOException;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    22
import java.net.MalformedURLException;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    23
import java.net.URL;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    24
import java.util.ArrayList;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    25
import java.util.List;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    26
import java.util.Vector;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    27
import java.util.jar.JarFile;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    28
import java.util.zip.ZipEntry;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    29
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    30
import org.apache.tools.ant.BuildException;
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    31
import org.apache.tools.ant.Task;
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    32
import org.python.util.PythonInterpreter;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    33
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    34
import com.nokia.helium.ccmtask.ant.commands.AddTask;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    35
import com.nokia.helium.ccmtask.ant.commands.CcmCommand;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    36
import com.nokia.helium.ccmtask.ant.commands.ChangeReleaseTag;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    37
import com.nokia.helium.ccmtask.ant.commands.Checkout;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    38
import com.nokia.helium.ccmtask.ant.commands.Close;
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    39
import com.nokia.helium.ccmtask.ant.commands.CreateReleaseTag;
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    40
import com.nokia.helium.ccmtask.ant.commands.DeleteReleaseTag;
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    41
import com.nokia.helium.ccmtask.ant.commands.Reconcile;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    42
import com.nokia.helium.ccmtask.ant.commands.Role;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    43
import com.nokia.helium.ccmtask.ant.commands.Snapshot;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    44
import com.nokia.helium.ccmtask.ant.commands.Synchronize;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    45
import com.nokia.helium.ccmtask.ant.commands.Update;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    46
import com.nokia.helium.ccmtask.ant.commands.Workarea;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    47
import com.nokia.helium.ccmtask.ant.types.SessionSet;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    48
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    49
/**
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    50
 * Synergy task.
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    51
 * <pre>
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    52
 * &lt;hlm:createSessionMacro database="to1tobet" reference="test.session" /&gt;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    53
 * &lt;hlm:ccm verbose="false"&gt;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    54
 *     &lt;hlm:sessionset refid="test.session" /&gt;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    55
 *     &lt;hlm:addtask folder="tr1test1#2079"&gt;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    56
 *         &lt;task name="tr1test1#5310" /&gt;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    57
 *     &lt;/hlm:addtask&gt;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    58
 *     &lt;hlm:snapshot project="helium-to1tobet#helium_3.0:project:vc1s60p1#1" dir="c:\test" fast="true" recursive="true" /&gt;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    59
 *     &lt;hlm:synchronize project="helium-to1tobet#helium_3.0:project:vc1s60p1#1" recursive="true" /&gt;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    60
 *     &lt;hlm:close /&gt;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    61
 * &lt;/hlm:ccm&gt;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    62
 * </pre>
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    63
 * @ant.task category="SCM"
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    64
 */
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    65
public class CcmTask extends Task
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    66
{
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    67
    private String username;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    68
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    69
    private String password;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    70
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    71
    private List<CcmCommand> commands = new ArrayList<CcmCommand>();
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    72
    private Vector<SessionSet> sessionSets = new Vector<SessionSet>();
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    73
    private boolean verbose;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    74
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    75
    public void setVerbose(boolean value) {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    76
        verbose = value;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    77
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    78
    
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    79
    public boolean getVerbose() {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    80
        return verbose;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    81
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    82
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    83
    public String getUsername()
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    84
    {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    85
        return username;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    86
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    87
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    88
    public final void setUsername(final String username)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    89
    {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    90
        this.username = username;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    91
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    92
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    93
    public String getPassword()
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    94
    {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    95
        return password;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    96
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    97
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    98
    public final void setPassword(final String password)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    99
    {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   100
        this.password = password;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   101
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   102
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   103
    public CcmCommand[] getCommands()
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   104
    {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   105
        return commands.toArray(new CcmCommand[commands.size()]);
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   106
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   107
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   108
    public void addUpdate(Update a)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   109
    {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   110
        addCommand(a);
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   111
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   112
    
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   113
    public void addSynchronize(Synchronize a)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   114
    {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   115
        addCommand(a);
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   116
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   117
    
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   118
    public void addReconcile(Reconcile a)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   119
    {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   120
        addCommand(a);
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   121
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   122
    
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   123
    public void addSnapshot(Snapshot a)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   124
    {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   125
        addCommand(a);
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   126
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   127
    
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   128
    public void addChangeReleaseTag(ChangeReleaseTag a)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   129
    {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   130
        addCommand(a);
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   131
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   132
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   133
    public void addCreateReleaseTag(CreateReleaseTag a)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   134
    {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   135
        addCommand(a);
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   136
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   137
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   138
    public void addDeleteReleaseTag(DeleteReleaseTag a)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   139
    {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   140
        addCommand(a);
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   141
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   142
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   143
    public void addCheckout(Checkout a)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   144
    {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   145
        addCommand(a);
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   146
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   147
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   148
    public void addWorkarea(Workarea a)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   149
    {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   150
        addCommand(a);
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   151
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   152
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   153
    public void addRole(Role a)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   154
    {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   155
        addCommand(a);
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   156
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   157
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   158
    private void addCommand(CcmCommand cmd)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   159
    {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   160
        cmd.setTask(this);
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   161
        commands.add(cmd);
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   162
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   163
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   164
    public AddTask createAddTask()
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   165
    {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   166
        AddTask cmd = new AddTask();
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   167
        addCommand(cmd);
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   168
        return cmd;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   169
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   170
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   171
    public Role createRole()
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   172
    {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   173
        Role cmd = new Role();
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   174
        addCommand(cmd);
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   175
        return cmd;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   176
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   177
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   178
    public Close createClose()
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   179
    {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   180
        Close cmd = new Close();
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   181
        addCommand(cmd);
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   182
        return cmd;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   183
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   184
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   185
    public SessionSet createSessionSet()
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   186
    {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   187
        SessionSet sessionSet = new SessionSet();
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   188
        sessionSets.add(sessionSet);
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   189
        return sessionSet;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   190
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   191
    
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   192
    public SessionSet[] getSessionSets() {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   193
        SessionSet[] result = new SessionSet[sessionSets.size()];
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   194
        sessionSets.copyInto(result);
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   195
        return result; 
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   196
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   197
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   198
    public final void execute()
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   199
    {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   200
        File jar = getJarFile();
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   201
        if (jar == null) {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   202
            throw new BuildException("Could not find the jar file for class " + this.getClass().getCanonicalName());
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   203
        }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   204
        try {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   205
            JarFile jarFile = new JarFile(jar);
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   206
            String entryName = this.getClass().getPackage().getName().replace('.', '/') + "/ccmtask.py";
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   207
            ZipEntry entry = jarFile.getEntry(entryName);
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   208
            if (entry == null) {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   209
                throw new BuildException("CcmTask internal error: Could not find the following entry: " + entryName);
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   210
            }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   211
            PythonInterpreter pi = new PythonInterpreter();
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   212
            pi.set("java_ccmtask", this);
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   213
            pi.set("project", getProject());
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   214
            pi.execfile(jarFile.getInputStream(entry), "ccmtask.py");
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   215
        } catch (IOException e) {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   216
            throw new BuildException(e.getMessage(), e);
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   217
        }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   218
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   219
    
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   220
    /**
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   221
     * Returns the jar file name containing this class
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   222
     * @return a File object or null if not found.
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   223
     */
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   224
    protected File getJarFile() {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   225
        URL url = this.getClass().getClassLoader().getResource(this.getClass().getName().replace('.', '/') + ".class");
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   226
        if (url.getProtocol().equals("jar") && url.getPath().contains("!/")) {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   227
            String fileUrl = url.getPath().split("!/")[0];
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   228
            try {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   229
                return new File(new URL(fileUrl).getPath());
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   230
            } catch (MalformedURLException e) {
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   231
                throw new BuildException("Error determining the jar file where "
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   232
                        + this.getClass().getName() + " is located.", e);
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   233
            }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   234
        }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   235
        return null;
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   236
    }
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   237
}