View Javadoc
1   /**
2    *
3    * Copyright 2004 The Apache Software Foundation
4    *
5    * Licensed under the Apache License, Version 2.0 (the "License");
6    * you may not use this file except in compliance with the License.
7    * 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  package org.codehaus.plexus.archiver;
18  
19  import java.io.File;
20  
21  import org.codehaus.plexus.components.io.filemappers.FileMapper;
22  import org.codehaus.plexus.components.io.fileselectors.FileSelector;
23  
24  public interface UnArchiver {
25      /**
26       * Extract the archive.
27       *
28       * @throws ArchiverException
29       */
30      void extract() throws ArchiverException;
31  
32      /**
33       * Take a path into the archive and extract it to the specified directory.
34       *
35       * @param path Path inside the archive to be extracted.
36       * @param outputDirectory Directory to extract to.
37       *
38       * @throws ArchiverException
39       */
40      void extract(String path, File outputDirectory) throws ArchiverException;
41  
42      File getDestDirectory();
43  
44      void setDestDirectory(File destDirectory);
45  
46      // todo What is this? If you're extracting isn't it always to a directory. I think it would be cool to extract an
47      // archive to another archive but I don't think we support this right now.
48      File getDestFile();
49  
50      void setDestFile(File destFile);
51  
52      File getSourceFile();
53  
54      void setSourceFile(File sourceFile);
55  
56      /**
57       * Gets a flag indicating destination files are always overwritten.
58       *
59       * @return {@code true}, if destination files are overwritten, even if they are newer than the corresponding entry
60       * in the archive.
61       *
62       * @since 3.4
63       */
64      boolean isOverwrite();
65  
66      /**
67       * Should we overwrite files in dest, even if they are newer than the corresponding entries in the archive?
68       */
69      void setOverwrite(boolean b);
70  
71      /**
72       * Get chain of components which rewrite the target path of each unpacked file.
73       *
74       * @return {@link FileMapper}s to be used for rewriting each target path, or {@code null} if no rewriting shall happen.
75       *
76       * @since 3.7.0
77       */
78      FileMapper[] getFileMappers();
79  
80      /***
81       * Sets chain of components to be used for rewriting target path of each unpacked file.
82       *
83       * @param fileMappers {@link FileMapper} to be used for rewriting each target path, or {@code null} if no
84       * rewriting shall happen.
85       *
86       * @since 3.7.0
87       */
88      void setFileMappers(FileMapper[] fileMappers);
89  
90      /**
91       * Sets a set of {@link FileSelector} instances, which may be used to select the files to extract from the archive.
92       * If file selectors are present, then a file is only extracted, if it is confirmed by all file selectors.
93       */
94      void setFileSelectors(FileSelector[] selectors);
95  
96      /**
97       * Returns a set of {@link FileSelector} instances, which may be used to select the files to extract from the
98       * archive. If file selectors are present, then a file is only extracted, if it is confirmed by all file selectors.
99       */
100     FileSelector[] getFileSelectors();
101 
102     /**
103      * to use or not the jvm method for file permissions: user all <b>not active for group permissions</b>
104      *
105      * @since 1.1
106      * @param useJvmChmod
107      * @deprecated this setting is now ignored. The jvm is always used.
108      */
109     @Deprecated
110     void setUseJvmChmod(boolean useJvmChmod);
111 
112     /**
113      * @since 1.1
114      * @return
115      * @deprecated this setting is now ignored. The jvm is always used.
116      */
117     @Deprecated
118     boolean isUseJvmChmod();
119 
120     /**
121      * @since 1.1
122      */
123     boolean isIgnorePermissions();
124 
125     /**
126      * @since 1.1
127      */
128     void setIgnorePermissions(final boolean ignorePermissions);
129 }