1/**
2 * Copyright 2007 Google Inc.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.tonicsystems.jarjar;
18
19import com.tonicsystems.jarjar.util.*;
20import java.io.File;
21import java.io.IOException;
22import java.util.*;
23import org.apache.tools.ant.BuildException;
24
25public class JarJarTask extends AntJarProcessor
26{
27    private List<PatternElement> patterns = new ArrayList<PatternElement>();
28
29    public void addConfiguredRule(Rule rule) {
30        if (rule.getPattern() == null || rule.getResult() == null)
31            throw new IllegalArgumentException("The <rule> element requires both \"pattern\" and \"result\" attributes.");
32        patterns.add(rule);
33    }
34
35    public void addConfiguredZap(Zap zap) {
36        if (zap.getPattern() == null)
37            throw new IllegalArgumentException("The <zap> element requires a \"pattern\" attribute.");
38        patterns.add(zap);
39    }
40
41    public void addConfiguredKeep(Keep keep) {
42        if (keep.getPattern() == null)
43            throw new IllegalArgumentException("The <keep> element requires a \"pattern\" attribute.");
44        patterns.add(keep);
45    }
46
47    public void execute() throws BuildException {
48        MainProcessor proc = new MainProcessor(patterns, verbose, false);
49        execute(proc);
50        try {
51            proc.strip(getDestFile());
52        } catch (IOException e) {
53            throw new BuildException(e);
54        }
55    }
56
57    protected void cleanHelper() {
58        super.cleanHelper();
59        patterns.clear();
60    }
61}
62