KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > tools > ant > util > ChainedMapper


1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements. See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License. You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */

18
19 package org.apache.tools.ant.util;
20
21 import java.util.List JavaDoc;
22 import java.util.Arrays JavaDoc;
23 import java.util.Iterator JavaDoc;
24 import java.util.ArrayList JavaDoc;
25
26 /**
27  * A <CODE>ContainerMapper</CODE> that chains the results of the first
28  * nested <CODE>FileNameMapper</CODE>s into sourcefiles for the second,
29  * the second to the third, and so on, returning the resulting mapped
30  * filenames from the last nested <CODE>FileNameMapper</CODE>.
31  */

32 public class ChainedMapper extends ContainerMapper {
33
34     /** {@inheritDoc}. */
35     public String JavaDoc[] mapFileName(String JavaDoc sourceFileName) {
36         List JavaDoc inputs = new ArrayList JavaDoc();
37         List JavaDoc results = new ArrayList JavaDoc();
38         results.add(sourceFileName);
39         FileNameMapper mapper = null;
40
41         for (Iterator JavaDoc mIter = getMappers().iterator(); mIter.hasNext();) {
42             mapper = (FileNameMapper) (mIter.next());
43             if (mapper != null) {
44                 inputs.clear();
45                 inputs.addAll(results);
46                 results.clear();
47
48                 for (Iterator JavaDoc it = inputs.iterator(); it.hasNext();) {
49                     String JavaDoc[] mapped = mapper.mapFileName((String JavaDoc) (it.next()));
50                     if (mapped != null) {
51                         results.addAll(Arrays.asList(mapped));
52                     }
53                 }
54             }
55         }
56         return (results.size() == 0) ? null
57             : (String JavaDoc[]) results.toArray(new String JavaDoc[results.size()]);
58     }
59 }
60
61
Popular Tags