0,0 → 1,137 |
/* |
* Copyright 2010 Brian Rosenberger (Brutex Network) |
* |
* Licensed under the Apache License, Version 2.0 (the "License"); |
* you may not use this file except in compliance with the License. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
|
package net.brutex.xservices.types; |
|
import java.io.File; |
import javax.xml.bind.annotation.XmlElement; |
import javax.xml.bind.annotation.XmlEnum; |
import javax.xml.bind.annotation.XmlType; |
|
import net.brutex.xservices.util.BrutexNamespaces; |
import org.apache.tools.ant.Project; |
import org.apache.tools.ant.types.Resource; |
import org.apache.tools.ant.types.resources.BZip2Resource; |
import org.apache.tools.ant.types.resources.GZipResource; |
import org.apache.tools.ant.types.resources.URLResource; |
|
/** |
* File based resource declaration. |
* |
* |
* @author Brian Rosenberger, bru@brutex.de |
*/ |
@XmlType(name="FileResourceType", namespace=BrutexNamespaces.WS_XSERVICES) |
public class FileResource |
implements ResourceInterface { |
|
/** |
* File resource type. |
*/ |
@XmlElement(defaultValue = "FILE", nillable = false, required = true) |
public Type type = Type.FILE; |
|
/** |
* URI to file. |
* |
* Examples:<br> |
* <code>c:/path/to/myfile.txt<br> |
* /usr/share/file<br> |
* http://server/path/file.zip</code> |
*/ |
@XmlElement(nillable = false, required = true) |
public String uri; |
|
/** |
* File resource type. |
* |
* Defines the wrapper around the source. |
*/ |
@XmlEnum(value=String.class) |
public enum Type { |
|
/** |
* Plain file from OS accessible file system. |
*/ |
FILE, |
|
/** |
* File from URL (http, https, ftp, ...) |
*/ |
URL, |
|
/** |
* File from file system with on-the-fly GZIP decompression |
*/ |
GZIP, |
|
/** |
* File from file system with on-the-fly BZIP2 decompression |
*/ |
BZIP2 |
} |
|
/** |
* Creates a FileResource. |
* |
* @param type file resource type |
* @param uri file resource uri |
*/ |
public FileResource(Type type, String uri) { |
this.type = type; |
this.uri = uri; |
} |
|
/** |
* Create an empty FileResource |
*/ |
public FileResource() { |
} |
|
/** |
* Get Apache Ant Resource type. |
* |
* @param p Ant project |
* @return This FileResource as Ant Resource |
*/ |
public Resource getAntResource(Project p) { |
Resource res = null; |
switch (type) { |
case URL: |
URLResource ures = new URLResource(uri); |
res = ures; |
break; |
|
case GZIP: |
GZipResource gres = new GZipResource( |
new org.apache.tools.ant.types.resources.FileResource(new File(uri))); |
res = gres; |
break; |
|
case BZIP2: |
BZip2Resource bres = new BZip2Resource( |
new org.apache.tools.ant.types.resources.FileResource(new File(uri))); |
res = bres; |
break; |
|
default: |
//Default is Type FILE |
res = new org.apache.tools.ant.types.resources.FileResource(new File(uri)); |
} |
res.setProject(p); |
return res; |
} |
} |