Subversion Repositories XServices

Rev

Rev 65 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 65 Rev 82
1
/*
1
/*
2
 *   Copyright 2010 Brian Rosenberger (Brutex Network)
2
 *   Copyright 2010 Brian Rosenberger (Brutex Network)
3
 *
3
 *
4
 *   Licensed under the Apache License, Version 2.0 (the "License");
4
 *   Licensed under the Apache License, Version 2.0 (the "License");
5
 *   you may not use this file except in compliance with 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
6
 *   You may obtain a copy of the License at
7
 *
7
 *
8
 *       http://www.apache.org/licenses/LICENSE-2.0
8
 *       http://www.apache.org/licenses/LICENSE-2.0
9
 *
9
 *
10
 *   Unless required by applicable law or agreed to in writing, software
10
 *   Unless required by applicable law or agreed to in writing, software
11
 *   distributed under the License is distributed on an "AS IS" BASIS,
11
 *   distributed under the License is distributed on an "AS IS" BASIS,
12
 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
 *   See the License for the specific language governing permissions and
13
 *   See the License for the specific language governing permissions and
14
 *   limitations under the License.
14
 *   limitations under the License.
15
 */
15
 */
16
 
16
 
17
package net.brutex.xservices.types;
17
package net.brutex.xservices.types.ant;
18
 
18
 
19
import java.io.File;
19
import java.io.File;
20
import javax.xml.bind.annotation.XmlElement;
20
import javax.xml.bind.annotation.XmlElement;
21
import javax.xml.bind.annotation.XmlEnum;
21
import javax.xml.bind.annotation.XmlEnum;
22
import javax.xml.bind.annotation.XmlType;
22
import javax.xml.bind.annotation.XmlType;
23
 
23
 
24
import net.brutex.xservices.util.BrutexNamespaces;
24
import net.brutex.xservices.util.BrutexNamespaces;
25
import org.apache.tools.ant.Project;
25
import org.apache.tools.ant.Project;
26
import org.apache.tools.ant.types.Resource;
26
import org.apache.tools.ant.types.Resource;
27
import org.apache.tools.ant.types.resources.BZip2Resource;
27
import org.apache.tools.ant.types.resources.BZip2Resource;
28
import org.apache.tools.ant.types.resources.GZipResource;
28
import org.apache.tools.ant.types.resources.GZipResource;
29
import org.apache.tools.ant.types.resources.URLResource;
29
import org.apache.tools.ant.types.resources.URLResource;
30
 
30
 
31
/**
31
/**
32
 * File based resource declaration.
32
 * File based resource declaration.
33
 *
33
 *
34
 *
34
 *
35
 * @author Brian Rosenberger, bru@brutex.de
35
 * @author Brian Rosenberger, bru@brutex.de
36
 */
36
 */
37
@XmlType(name="FileResourceType", namespace=BrutexNamespaces.WS_XSERVICES)
37
@XmlType(name="FileResourceType", namespace=BrutexNamespaces.WS_XSERVICES)
38
public class FileResource
38
public class FileResource
39
implements ResourceInterface {
39
implements ResourceInterface {
40
 
40
 
41
	public static final String XML_NAME = "file";
41
	public static final String XML_NAME = "file";
42
	
42
	
43
    /**
43
    /**
44
     * File resource type.
44
     * File resource type.
45
     */
45
     */
46
    @XmlElement(defaultValue = "FILE", nillable = false, required = true)
46
    @XmlElement(defaultValue = "FILE", nillable = false, required = true)
47
    public Type type = Type.FILE;
47
    public Type type = Type.FILE;
48
 
48
 
49
    /**
49
    /**
50
     * URI to file.
50
     * URI to file.
51
     *
51
     *
52
     * Examples:<br>
52
     * Examples:<br>
53
     * <code>c:/path/to/myfile.txt<br>
53
     * <code>c:/path/to/myfile.txt<br>
54
     * /usr/share/file<br>
54
     * /usr/share/file<br>
55
     * http://server/path/file.zip</code>
55
     * http://server/path/file.zip</code>
56
     */
56
     */
57
    @XmlElement(nillable = false, required = true)
57
    @XmlElement(nillable = false, required = true)
58
    public String uri;
58
    public String uri;
59
 
59
 
60
    /**
60
    /**
61
     * File resource type.
61
     * File resource type.
62
     * 
62
     * 
63
     * Defines the wrapper around the source.
63
     * Defines the wrapper around the source.
64
     */
64
     */
65
    @XmlEnum(value=String.class)
65
    @XmlEnum(value=String.class)
66
    public enum Type {
66
    public enum Type {
67
 
67
 
68
        /**
68
        /**
69
         * Plain file from OS accessible file system.
69
         * Plain file from OS accessible file system.
70
         */
70
         */
71
        FILE,
71
        FILE,
72
 
72
 
73
        /**
73
        /**
74
         * File from URL (http, https, ftp, ...)
74
         * File from URL (http, https, ftp, ...)
75
         */
75
         */
76
        URL,
76
        URL,
77
 
77
 
78
        /**
78
        /**
79
         * File from file system with on-the-fly GZIP decompression
79
         * File from file system with on-the-fly GZIP decompression
80
         */
80
         */
81
        GZIP,
81
        GZIP,
82
 
82
 
83
        /**
83
        /**
84
         * File from file system with on-the-fly BZIP2 decompression
84
         * File from file system with on-the-fly BZIP2 decompression
85
         */
85
         */
86
        BZIP2
86
        BZIP2
87
    }
87
    }
88
 
88
 
89
    /**
89
    /**
90
     * Creates a FileResource.
90
     * Creates a FileResource.
91
     *
91
     *
92
     * @param type      file resource type
92
     * @param type      file resource type
93
     * @param uri       file resource uri
93
     * @param uri       file resource uri
94
     */
94
     */
95
    public FileResource(Type type, String uri) {
95
    public FileResource(Type type, String uri) {
96
        this.type = type;
96
        this.type = type;
97
        this.uri = uri;
97
        this.uri = uri;
98
    }
98
    }
99
 
99
 
100
    /**
100
    /**
101
     * Create an empty FileResource
101
     * Create an empty FileResource
102
     */
102
     */
103
    public FileResource() {
103
    public FileResource() {
104
    }
104
    }
105
 
105
 
106
    /**
106
    /**
107
     * Get Apache Ant Resource type.
107
     * Get Apache Ant Resource type.
108
     *
108
     *
109
     * @param p     Ant project
109
     * @param p     Ant project
110
     * @return      This FileResource as Ant Resource
110
     * @return      This FileResource as Ant Resource
111
     */
111
     */
112
    public Resource getAntResource(Project p) {
112
    public Resource getAntResource(Project p) {
113
        Resource res = null;
113
        Resource res = null;
114
        switch (type) {
114
        switch (type) {
115
            case URL:
115
            case URL:
116
                URLResource ures = new URLResource(uri);
116
                URLResource ures = new URLResource(uri);
117
                res = ures;
117
                res = ures;
118
                break;
118
                break;
119
 
119
 
120
            case GZIP:
120
            case GZIP:
121
                GZipResource gres = new GZipResource(
121
                GZipResource gres = new GZipResource(
122
                        new org.apache.tools.ant.types.resources.FileResource(new File(uri)));
122
                        new org.apache.tools.ant.types.resources.FileResource(new File(uri)));
123
                res = gres;
123
                res = gres;
124
                break;
124
                break;
125
 
125
 
126
            case BZIP2:
126
            case BZIP2:
127
                BZip2Resource bres = new BZip2Resource(
127
                BZip2Resource bres = new BZip2Resource(
128
                        new org.apache.tools.ant.types.resources.FileResource(new File(uri)));
128
                        new org.apache.tools.ant.types.resources.FileResource(new File(uri)));
129
                res = bres;
129
                res = bres;
130
                break;
130
                break;
131
 
131
 
132
            default:
132
            default:
133
                //Default is Type FILE
133
                //Default is Type FILE
134
                res = new org.apache.tools.ant.types.resources.FileResource(new File(uri));
134
                res = new org.apache.tools.ant.types.resources.FileResource(new File(uri));
135
        }
135
        }
136
        res.setProject(p);
136
        res.setProject(p);
137
        return res;
137
        return res;
138
    }
138
    }
139
}
139
}