PatternAction.java revision 1870:4aa2e64eff30
1/*
2 * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24package jdk.test.failurehandler.action;
25
26import jdk.test.failurehandler.value.InvalidValueException;
27import jdk.test.failurehandler.HtmlSection;
28import jdk.test.failurehandler.value.Value;
29import jdk.test.failurehandler.value.ValueHandler;
30
31import java.util.Properties;
32
33public class PatternAction implements Action {
34    @Value(name = "pattern")
35    private String pattern = null;
36
37    private final SimpleAction action;
38    private final String[] originalArgs;
39
40    public PatternAction(String id, Properties properties)
41            throws InvalidValueException {
42        this(id, id, properties);
43    }
44
45    public PatternAction(String name, String id, Properties properties)
46            throws InvalidValueException {
47        action = new SimpleAction(("pattern." + name), id, properties);
48        ValueHandler.apply(this, properties, id);
49        originalArgs = action.args.clone();
50    }
51
52    public ProcessBuilder prepareProcess(HtmlSection section,
53                                         ActionHelper helper, String value) {
54        action.sections[0] = value;
55        section = getSection(section);
56        String[] args = action.args;
57        System.arraycopy(originalArgs, 0, args, 0, originalArgs.length);
58
59        for (int i = 0, n = args.length; i < n; ++i) {
60            args[i] = args[i].replace(pattern, value) ;
61        }
62        return action.prepareProcess(section.getWriter(), helper);
63    }
64
65    @Override
66    public HtmlSection getSection(HtmlSection section) {
67        return action.getSection(section);
68    }
69
70    @Override
71    public ActionParameters getParameters() {
72        return action.getParameters();
73    }
74
75    @Override
76    public boolean isJavaOnly() {
77        return action.isJavaOnly();
78    }
79}
80