first commit
This commit is contained in:
commit
4d332ef662
27586 changed files with 3281783 additions and 0 deletions
125
rus/WEB-INF/lib/activation1.1.1_src/META-INF/MANIFEST.MF
Normal file
125
rus/WEB-INF/lib/activation1.1.1_src/META-INF/MANIFEST.MF
Normal file
|
|
@ -0,0 +1,125 @@
|
|||
Manifest-Version: 1.0
|
||||
Implementation-Version: 1.1.1
|
||||
Specification-Title: JavaBeans(TM) Activation Framework Specification
|
||||
Specification-Version: 1.1
|
||||
Extension-Name: javax.activation
|
||||
Created-By: 1.4.2 (Sun Microsystems Inc.)
|
||||
Implementation-Vendor-Id: com.sun
|
||||
Implementation-Vendor: Sun Microsystems, Inc.
|
||||
Specification-Vendor: Sun Microsystems, Inc.
|
||||
SCCS-ID: @(#)jaf.mf 1.2 05/05/23
|
||||
|
||||
Name: javax/activation/MimeTypeParseException.class
|
||||
SHA1-Digest: lE5grROfW1qsYZdtOlB7SOrtlRU=
|
||||
|
||||
Name: javax/activation/CommandInfo.class
|
||||
SHA1-Digest: pl22Lz5hCL9DxzbXDiAYGov6BtI=
|
||||
|
||||
Name: com/sun/activation/viewers/ImageViewer.class
|
||||
SHA1-Digest: bXGWTdwbhg6wBk+etjItLDUFLIk=
|
||||
|
||||
Name: javax/activation/MimeTypeParameterList.class
|
||||
SHA1-Digest: SH7fkiSZVqz91Nw8syvpDwqJvKY=
|
||||
|
||||
Name: javax/activation/DataContentHandlerFactory.class
|
||||
SHA1-Digest: 3aRLzh4IMVBlbc52F5lBdRQy2Vw=
|
||||
|
||||
Name: javax/activation/DataSourceDataContentHandler.class
|
||||
SHA1-Digest: B9fDqsKQV0NSCkuNJ4wb7WbmXhA=
|
||||
|
||||
Name: javax/activation/DataSource.class
|
||||
SHA1-Digest: g86kGPXVFjqZi+DpfbiLAtS8fo8=
|
||||
|
||||
Name: com/sun/activation/registries/MimeTypeFile.class
|
||||
SHA1-Digest: MXrTTCFqSNCkV3hVkAN/c7hvfnI=
|
||||
|
||||
Name: com/sun/activation/viewers/TextViewer.class
|
||||
SHA1-Digest: x4912AkhlhQk0IRnFO0nC68LrJA=
|
||||
|
||||
Name: com/sun/activation/viewers/TextEditor.class
|
||||
SHA1-Digest: 1gluyNIDHXH0cB3gLOGA1cmc3Zc=
|
||||
|
||||
Name: com/sun/activation/registries/LineTokenizer.class
|
||||
SHA1-Digest: ASySrwRTPgXlyeS5Vc0sF9APu1o=
|
||||
|
||||
Name: javax/activation/DataContentHandler.class
|
||||
SHA1-Digest: 0qTvM4m+cRfMN+3GiqLfn+RLQuU=
|
||||
|
||||
Name: javax/activation/MimeType.class
|
||||
SHA1-Digest: 5J/IFaPH4VsRUvJnUUcre9NOcSc=
|
||||
|
||||
Name: javax/activation/FileDataSource.class
|
||||
SHA1-Digest: srOWvJJJuCB0XF9VtjzGlL+D338=
|
||||
|
||||
Name: javax/activation/SecuritySupport.class
|
||||
SHA1-Digest: OlT7nVMNCa1AvG0cpWsQuPYJ4r4=
|
||||
|
||||
Name: javax/activation/MailcapCommandMap.class
|
||||
SHA1-Digest: KKL+zuO8LMbc3Sq2Yc94nRKdUCg=
|
||||
|
||||
Name: javax/activation/DataHandler$1.class
|
||||
SHA1-Digest: MOvb5tf42ZxACQ9AGHVraSfT0Bw=
|
||||
|
||||
Name: javax/activation/DataHandler.class
|
||||
SHA1-Digest: 6X6xyd3/vc4l1Rm9JKwlSR1eFwI=
|
||||
|
||||
Name: javax/activation/SecuritySupport$1.class
|
||||
SHA1-Digest: hJaO6mfp+nXzmKrCgo2sgqhIT6I=
|
||||
|
||||
Name: com/sun/activation/registries/MimeTypeEntry.class
|
||||
SHA1-Digest: NC8KAn6NE0PRlkM/QGcfsoALPaw=
|
||||
|
||||
Name: javax/activation/SecuritySupport$3.class
|
||||
SHA1-Digest: jsakqVs5MovoJ5n1B4HHmqCbzkc=
|
||||
|
||||
Name: javax/activation/SecuritySupport$5.class
|
||||
SHA1-Digest: ZU4/gFOsfqXPMHWbFQfrVS0S7gI=
|
||||
|
||||
Name: javax/activation/SecuritySupport$2.class
|
||||
SHA1-Digest: wpiFSjqurT2N70VJAhiWF5mPyXA=
|
||||
|
||||
Name: javax/activation/SecuritySupport$4.class
|
||||
SHA1-Digest: QaEpFgwjUvRHGtjkRL4Ni7HP6zI=
|
||||
|
||||
Name: javax/activation/MimetypesFileTypeMap.class
|
||||
SHA1-Digest: Kmb+i/oUh01yBCOsz2s/Zqsy0Xs=
|
||||
|
||||
Name: javax/activation/FileTypeMap.class
|
||||
SHA1-Digest: oQPIbmdNhyb2tF+NEvfUr4/44Fc=
|
||||
|
||||
Name: javax/activation/CommandObject.class
|
||||
SHA1-Digest: ubyjFuSm1evoIOlmhsBcKVCLv/Q=
|
||||
|
||||
Name: javax/activation/DataHandlerDataSource.class
|
||||
SHA1-Digest: aOFfZMPuwIIPoAQ0DznIUiR/FGQ=
|
||||
|
||||
Name: com/sun/activation/registries/MailcapTokenizer.class
|
||||
SHA1-Digest: HHBuPSuIObwgjTCQSN1SSRr/ofs=
|
||||
|
||||
Name: javax/activation/ActivationDataFlavor.class
|
||||
SHA1-Digest: 42Ap4KKKBxMu9oyd0FiYQ4p5SRo=
|
||||
|
||||
Name: com/sun/activation/registries/MailcapFile.class
|
||||
SHA1-Digest: YZeL9KcqU/vcuEBa5pl9XDgTV3c=
|
||||
|
||||
Name: com/sun/activation/registries/MailcapParseException.class
|
||||
SHA1-Digest: KhIBhpK0kOTpOQ5kywdcnoroutE=
|
||||
|
||||
Name: javax/activation/ObjectDataContentHandler.class
|
||||
SHA1-Digest: nuOm0EWsr7Q/DusMfhYphFRMczc=
|
||||
|
||||
Name: javax/activation/URLDataSource.class
|
||||
SHA1-Digest: 9PB/rX9fXZvt05LaClHWlZFoXT4=
|
||||
|
||||
Name: javax/activation/UnsupportedDataTypeException.class
|
||||
SHA1-Digest: bAulVtiUXFxO+U7BUPN03xOaI6Q=
|
||||
|
||||
Name: javax/activation/CommandMap.class
|
||||
SHA1-Digest: LPn5Pq2Y38IX3eguQW+pZQO9f9Y=
|
||||
|
||||
Name: com/sun/activation/viewers/ImageViewerCanvas.class
|
||||
SHA1-Digest: ZEumKnnlGMLiU9imHYs93zphhgw=
|
||||
|
||||
Name: com/sun/activation/registries/LogSupport.class
|
||||
SHA1-Digest: YfcYP39ARserzxjPhP+y/zQySIc=
|
||||
|
||||
BIN
rus/WEB-INF/lib/activation1.1.1_src/META-INF/SUN_MICR.RSA
Normal file
BIN
rus/WEB-INF/lib/activation1.1.1_src/META-INF/SUN_MICR.RSA
Normal file
Binary file not shown.
118
rus/WEB-INF/lib/activation1.1.1_src/META-INF/SUN_MICR.SF
Normal file
118
rus/WEB-INF/lib/activation1.1.1_src/META-INF/SUN_MICR.SF
Normal file
|
|
@ -0,0 +1,118 @@
|
|||
Signature-Version: 1.0
|
||||
SHA1-Digest-Manifest: WJfLq1ILjj2Pn43Eo0FBNVFuG9U=
|
||||
Created-By: 1.3.1_04 (Sun Microsystems Inc.)
|
||||
|
||||
Name: javax/activation/MimeTypeParseException.class
|
||||
SHA1-Digest: UAKWG9VD0+5i0GHxkNysu84wuGQ=
|
||||
|
||||
Name: javax/activation/CommandInfo.class
|
||||
SHA1-Digest: VDih63m/ZVUpovKCWSyMwn4nGV4=
|
||||
|
||||
Name: com/sun/activation/viewers/ImageViewer.class
|
||||
SHA1-Digest: 9E3KC9uK3nTzWjkQTj36XSRLnQU=
|
||||
|
||||
Name: javax/activation/MimeTypeParameterList.class
|
||||
SHA1-Digest: LrrAIguc+rd8z+BJIf/1XF86+iQ=
|
||||
|
||||
Name: javax/activation/DataContentHandlerFactory.class
|
||||
SHA1-Digest: H8MFHeTgXFyAdQvsx9bhF05FNJM=
|
||||
|
||||
Name: javax/activation/DataSourceDataContentHandler.class
|
||||
SHA1-Digest: Enj5TIVyiUdUBhrVUEGXEy8r6K8=
|
||||
|
||||
Name: javax/activation/DataSource.class
|
||||
SHA1-Digest: xcuV/kSNoHUEKL9pMihuvbqPeXY=
|
||||
|
||||
Name: com/sun/activation/registries/MimeTypeFile.class
|
||||
SHA1-Digest: o3GmcG/iTtLrZVJXR4qbGTJnTgc=
|
||||
|
||||
Name: com/sun/activation/viewers/TextViewer.class
|
||||
SHA1-Digest: +4VqRmg3+msbMkgFck+haZSt2ZE=
|
||||
|
||||
Name: com/sun/activation/viewers/TextEditor.class
|
||||
SHA1-Digest: AUSOWNpXJKMzYLdX/LX/N1GWULY=
|
||||
|
||||
Name: com/sun/activation/registries/LineTokenizer.class
|
||||
SHA1-Digest: NDXBPl3ffSOLiWlDLE38UAqGItg=
|
||||
|
||||
Name: javax/activation/DataContentHandler.class
|
||||
SHA1-Digest: hiYywpsCF80301NG9+CDDk8c6tw=
|
||||
|
||||
Name: javax/activation/MimeType.class
|
||||
SHA1-Digest: 5ZaCnaT+peQjkJsJdNa7kNfo1EU=
|
||||
|
||||
Name: javax/activation/FileDataSource.class
|
||||
SHA1-Digest: OC4FAxrJtDS6bqpr29s8qYwwDeU=
|
||||
|
||||
Name: javax/activation/SecuritySupport.class
|
||||
SHA1-Digest: Y07VO5eKeU/cSMvuzMtBAXMZt1I=
|
||||
|
||||
Name: javax/activation/MailcapCommandMap.class
|
||||
SHA1-Digest: KZt5AX4vUUzwW7Mra/EE7xytCDw=
|
||||
|
||||
Name: javax/activation/DataHandler$1.class
|
||||
SHA1-Digest: VVS0ELbBjZ47fMPkmBy8w53Yqmg=
|
||||
|
||||
Name: javax/activation/DataHandler.class
|
||||
SHA1-Digest: tc9if3t3a89BFRGhSAe94jD5cME=
|
||||
|
||||
Name: javax/activation/SecuritySupport$1.class
|
||||
SHA1-Digest: RHgIFMKSHjKWS01D9ufUfr9F5UQ=
|
||||
|
||||
Name: com/sun/activation/registries/MimeTypeEntry.class
|
||||
SHA1-Digest: +DCX8if1Zyrlnqb7lqbQnvfmKnM=
|
||||
|
||||
Name: javax/activation/SecuritySupport$3.class
|
||||
SHA1-Digest: 7mQmmTE8q4BP2w88XGsK7/4SIRI=
|
||||
|
||||
Name: javax/activation/SecuritySupport$5.class
|
||||
SHA1-Digest: UhEZVcxH19nDcKpYxsDsDZlF16s=
|
||||
|
||||
Name: javax/activation/SecuritySupport$2.class
|
||||
SHA1-Digest: Sk/n0XbRI3W/HiIrV+C9RhtcNuU=
|
||||
|
||||
Name: javax/activation/SecuritySupport$4.class
|
||||
SHA1-Digest: 19Hc/6OWiu111sg/bqULPSi93d4=
|
||||
|
||||
Name: javax/activation/MimetypesFileTypeMap.class
|
||||
SHA1-Digest: YV825GZokkldHbuPviThjv4NJsA=
|
||||
|
||||
Name: javax/activation/FileTypeMap.class
|
||||
SHA1-Digest: bYUIkXNQryUXczRMFu48mKcTgYI=
|
||||
|
||||
Name: javax/activation/CommandObject.class
|
||||
SHA1-Digest: FM9PWvMNNkGNzANrAmseoag6Egg=
|
||||
|
||||
Name: javax/activation/DataHandlerDataSource.class
|
||||
SHA1-Digest: QLXuUIt3hdwlxllZQdjMSzO8Lj8=
|
||||
|
||||
Name: com/sun/activation/registries/MailcapTokenizer.class
|
||||
SHA1-Digest: /JS9ASYYwdLkSIn1StECVjiu8dw=
|
||||
|
||||
Name: javax/activation/ActivationDataFlavor.class
|
||||
SHA1-Digest: bbblAeEgIDSOaFMeiSWlm1nFHgQ=
|
||||
|
||||
Name: com/sun/activation/registries/MailcapFile.class
|
||||
SHA1-Digest: UHe2danRISKoxlIjwHBRb7MQ3tk=
|
||||
|
||||
Name: com/sun/activation/registries/MailcapParseException.class
|
||||
SHA1-Digest: ikbzjcimDW0oxbOTvnfaKwESC8Y=
|
||||
|
||||
Name: javax/activation/ObjectDataContentHandler.class
|
||||
SHA1-Digest: pcy9MFQdmbP+ajY2v5pCxdQeWlI=
|
||||
|
||||
Name: javax/activation/URLDataSource.class
|
||||
SHA1-Digest: whry/02ixG6CsCPjnJORPzrcF8A=
|
||||
|
||||
Name: javax/activation/UnsupportedDataTypeException.class
|
||||
SHA1-Digest: SkbJ4oIhmzTPDsTPzD1BNV+MiT4=
|
||||
|
||||
Name: javax/activation/CommandMap.class
|
||||
SHA1-Digest: DDL4jy4cCPF/ke/ochtSNnToVsA=
|
||||
|
||||
Name: com/sun/activation/viewers/ImageViewerCanvas.class
|
||||
SHA1-Digest: I17IMJYkkh6rA4XMmKFeESH572g=
|
||||
|
||||
Name: com/sun/activation/registries/LogSupport.class
|
||||
SHA1-Digest: ceUn0YA2OsQ9w/+MzLrDWHb6qcc=
|
||||
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
#
|
||||
# This is a very simple 'mailcap' file
|
||||
#
|
||||
image/gif;; x-java-view=com.sun.activation.viewers.ImageViewer
|
||||
image/jpeg;; x-java-view=com.sun.activation.viewers.ImageViewer
|
||||
text/*;; x-java-view=com.sun.activation.viewers.TextViewer
|
||||
text/*;; x-java-edit=com.sun.activation.viewers.TextEditor
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
#
|
||||
# A simple, old format, mime.types file
|
||||
#
|
||||
text/html html htm HTML HTM
|
||||
text/plain txt text TXT TEXT
|
||||
image/gif gif GIF
|
||||
image/ief ief
|
||||
image/jpeg jpeg jpg jpe JPG
|
||||
image/tiff tiff tif
|
||||
image/png png PNG
|
||||
image/x-xwindowdump xwd
|
||||
application/postscript ai eps ps
|
||||
application/rtf rtf
|
||||
application/x-tex tex
|
||||
application/x-texinfo texinfo texi
|
||||
application/x-troff t tr roff
|
||||
audio/basic au
|
||||
audio/midi midi mid
|
||||
audio/x-aifc aifc
|
||||
audio/x-aiff aif aiff
|
||||
audio/x-mpeg mpeg mpg
|
||||
audio/x-wav wav
|
||||
video/mpeg mpeg mpg mpe
|
||||
video/quicktime qt mov
|
||||
video/x-msvideo avi
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
package com.sun.activation.registries;
|
||||
|
||||
import java.util.NoSuchElementException;
|
||||
import java.util.Vector;
|
||||
|
||||
class LineTokenizer {
|
||||
private int currentPosition;
|
||||
|
||||
private int maxPosition;
|
||||
|
||||
private String str;
|
||||
|
||||
private Vector stack = new Vector();
|
||||
|
||||
private static final String singles = "=";
|
||||
|
||||
public LineTokenizer(String paramString) {
|
||||
this.currentPosition = 0;
|
||||
this.str = paramString;
|
||||
this.maxPosition = paramString.length();
|
||||
}
|
||||
|
||||
private void skipWhiteSpace() {
|
||||
while (this.currentPosition < this.maxPosition && Character.isWhitespace(this.str.charAt(this.currentPosition)))
|
||||
this.currentPosition++;
|
||||
}
|
||||
|
||||
public boolean hasMoreTokens() {
|
||||
if (this.stack.size() > 0)
|
||||
return true;
|
||||
skipWhiteSpace();
|
||||
return (this.currentPosition < this.maxPosition);
|
||||
}
|
||||
|
||||
public String nextToken() {
|
||||
int i = this.stack.size();
|
||||
if (i > 0) {
|
||||
String str = (String)this.stack.elementAt(i - 1);
|
||||
this.stack.removeElementAt(i - 1);
|
||||
return str;
|
||||
}
|
||||
skipWhiteSpace();
|
||||
if (this.currentPosition >= this.maxPosition)
|
||||
throw new NoSuchElementException();
|
||||
int j = this.currentPosition;
|
||||
char c = this.str.charAt(j);
|
||||
if (c == '"') {
|
||||
this.currentPosition++;
|
||||
boolean bool = false;
|
||||
while (this.currentPosition < this.maxPosition) {
|
||||
c = this.str.charAt(this.currentPosition++);
|
||||
if (c == '\\') {
|
||||
this.currentPosition++;
|
||||
bool = true;
|
||||
continue;
|
||||
}
|
||||
if (c == '"') {
|
||||
String str;
|
||||
if (bool) {
|
||||
StringBuffer stringBuffer = new StringBuffer();
|
||||
for (int k = j + 1; k < this.currentPosition - 1; k++) {
|
||||
c = this.str.charAt(k);
|
||||
if (c != '\\')
|
||||
stringBuffer.append(c);
|
||||
}
|
||||
str = stringBuffer.toString();
|
||||
} else {
|
||||
str = this.str.substring(j + 1, this.currentPosition - 1);
|
||||
}
|
||||
return str;
|
||||
}
|
||||
}
|
||||
} else if ("=".indexOf(c) >= 0) {
|
||||
this.currentPosition++;
|
||||
} else {
|
||||
while (this.currentPosition < this.maxPosition && "=".indexOf(this.str.charAt(this.currentPosition)) < 0 && !Character.isWhitespace(this.str.charAt(this.currentPosition)))
|
||||
this.currentPosition++;
|
||||
}
|
||||
return this.str.substring(j, this.currentPosition);
|
||||
}
|
||||
|
||||
public void pushToken(String paramString) {
|
||||
this.stack.addElement(paramString);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
package com.sun.activation.registries;
|
||||
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
public class LogSupport {
|
||||
private static boolean debug = false;
|
||||
|
||||
private static final Level level = Level.FINE;
|
||||
|
||||
static {
|
||||
try {
|
||||
debug = Boolean.getBoolean("javax.activation.debug");
|
||||
} catch (Throwable e) {}
|
||||
}
|
||||
|
||||
private static Logger logger = Logger.getLogger("javax.activation");
|
||||
|
||||
public static void log(String paramString) {
|
||||
if (debug)
|
||||
System.out.println(paramString);
|
||||
logger.log(level, paramString);
|
||||
}
|
||||
|
||||
public static void log(String paramString, Throwable paramThrowable) {
|
||||
if (debug)
|
||||
System.out.println(paramString + "; Exception: " + paramThrowable);
|
||||
logger.log(level, paramString, paramThrowable);
|
||||
}
|
||||
|
||||
public static boolean isLoggable() {
|
||||
return (debug || logger.isLoggable(level));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,310 @@
|
|||
package com.sun.activation.registries;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.Reader;
|
||||
import java.io.StringReader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
public class MailcapFile {
|
||||
private Map type_hash = new HashMap();
|
||||
|
||||
private Map fallback_hash = new HashMap();
|
||||
|
||||
private Map native_commands = new HashMap();
|
||||
|
||||
private static boolean addReverse = false;
|
||||
|
||||
static {
|
||||
try {
|
||||
addReverse = Boolean.getBoolean("javax.activation.addreverse");
|
||||
} catch (Throwable e) {}
|
||||
}
|
||||
|
||||
public MailcapFile(String paramString) throws IOException {
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("new MailcapFile: file " + paramString);
|
||||
FileReader fileReader = null;
|
||||
try {
|
||||
fileReader = new FileReader(paramString);
|
||||
parse(new BufferedReader(fileReader));
|
||||
} finally {
|
||||
if (fileReader != null)
|
||||
try {
|
||||
fileReader.close();
|
||||
} catch (IOException e) {}
|
||||
}
|
||||
}
|
||||
|
||||
public MailcapFile(InputStream paramInputStream) throws IOException {
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("new MailcapFile: InputStream");
|
||||
parse(new BufferedReader(new InputStreamReader(paramInputStream, "iso-8859-1")));
|
||||
}
|
||||
|
||||
public MailcapFile() {
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("new MailcapFile: default");
|
||||
}
|
||||
|
||||
public Map getMailcapList(String paramString) {
|
||||
Map map1 = null;
|
||||
Map map2 = null;
|
||||
map1 = (Map)this.type_hash.get(paramString);
|
||||
int i = paramString.indexOf('/');
|
||||
String str = paramString.substring(i + 1);
|
||||
if (!str.equals("*")) {
|
||||
String str1 = paramString.substring(0, i + 1) + "*";
|
||||
map2 = (Map)this.type_hash.get(str1);
|
||||
if (map2 != null)
|
||||
if (map1 != null) {
|
||||
map1 = mergeResults(map1, map2);
|
||||
} else {
|
||||
map1 = map2;
|
||||
}
|
||||
}
|
||||
return map1;
|
||||
}
|
||||
|
||||
public Map getMailcapFallbackList(String paramString) {
|
||||
Map map1 = null;
|
||||
Map map2 = null;
|
||||
map1 = (Map)this.fallback_hash.get(paramString);
|
||||
int i = paramString.indexOf('/');
|
||||
String str = paramString.substring(i + 1);
|
||||
if (!str.equals("*")) {
|
||||
String str1 = paramString.substring(0, i + 1) + "*";
|
||||
map2 = (Map)this.fallback_hash.get(str1);
|
||||
if (map2 != null)
|
||||
if (map1 != null) {
|
||||
map1 = mergeResults(map1, map2);
|
||||
} else {
|
||||
map1 = map2;
|
||||
}
|
||||
}
|
||||
return map1;
|
||||
}
|
||||
|
||||
public String[] getMimeTypes() {
|
||||
HashSet hashSet = new HashSet(this.type_hash.keySet());
|
||||
hashSet.addAll(this.fallback_hash.keySet());
|
||||
hashSet.addAll(this.native_commands.keySet());
|
||||
String[] arrayOfString = new String[hashSet.size()];
|
||||
arrayOfString = (String[])hashSet.toArray(arrayOfString);
|
||||
return arrayOfString;
|
||||
}
|
||||
|
||||
public String[] getNativeCommands(String paramString) {
|
||||
String[] arrayOfString = null;
|
||||
List list = (List)this.native_commands.get(paramString.toLowerCase(Locale.ENGLISH));
|
||||
if (list != null) {
|
||||
arrayOfString = new String[list.size()];
|
||||
arrayOfString = (String[])list.toArray(arrayOfString);
|
||||
}
|
||||
return arrayOfString;
|
||||
}
|
||||
|
||||
private Map mergeResults(Map paramMap1, Map paramMap2) {
|
||||
Iterator iterator = paramMap2.keySet().iterator();
|
||||
HashMap hashMap = new HashMap(paramMap1);
|
||||
while (iterator.hasNext()) {
|
||||
String str = (String)iterator.next();
|
||||
List list1 = (List)hashMap.get(str);
|
||||
if (list1 == null) {
|
||||
hashMap.put(str, paramMap2.get(str));
|
||||
continue;
|
||||
}
|
||||
List list2 = (List)paramMap2.get(str);
|
||||
list1 = new ArrayList(list1);
|
||||
list1.addAll(list2);
|
||||
hashMap.put(str, list1);
|
||||
}
|
||||
return hashMap;
|
||||
}
|
||||
|
||||
public void appendToMailcap(String paramString) {
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("appendToMailcap: " + paramString);
|
||||
try {
|
||||
parse(new StringReader(paramString));
|
||||
} catch (IOException e) {}
|
||||
}
|
||||
|
||||
private void parse(Reader paramReader) throws IOException {
|
||||
BufferedReader bufferedReader = new BufferedReader(paramReader);
|
||||
String str1 = null;
|
||||
String str2 = null;
|
||||
while ((str1 = bufferedReader.readLine()) != null) {
|
||||
str1 = str1.trim();
|
||||
try {
|
||||
if (str1.charAt(0) == '#')
|
||||
continue;
|
||||
if (str1.charAt(str1.length() - 1) == '\\') {
|
||||
if (str2 != null) {
|
||||
str2 = str2 + str1.substring(0, str1.length() - 1);
|
||||
continue;
|
||||
}
|
||||
str2 = str1.substring(0, str1.length() - 1);
|
||||
continue;
|
||||
}
|
||||
if (str2 != null) {
|
||||
str2 = str2 + str1;
|
||||
try {
|
||||
parseLine(str2);
|
||||
} catch (MailcapParseException e) {}
|
||||
str2 = null;
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
parseLine(str1);
|
||||
} catch (MailcapParseException e) {}
|
||||
} catch (StringIndexOutOfBoundsException e) {}
|
||||
}
|
||||
}
|
||||
|
||||
protected void parseLine(String paramString) throws MailcapParseException, IOException {
|
||||
MailcapTokenizer mailcapTokenizer = new MailcapTokenizer(paramString);
|
||||
mailcapTokenizer.setIsAutoquoting(false);
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("parse: " + paramString);
|
||||
int i = mailcapTokenizer.nextToken();
|
||||
if (i != 2)
|
||||
reportParseError(2, i, mailcapTokenizer.getCurrentTokenValue());
|
||||
String str1 = mailcapTokenizer.getCurrentTokenValue().toLowerCase(Locale.ENGLISH);
|
||||
String str2 = "*";
|
||||
i = mailcapTokenizer.nextToken();
|
||||
if (i != 47 && i != 59)
|
||||
reportParseError(47, 59, i, mailcapTokenizer.getCurrentTokenValue());
|
||||
if (i == 47) {
|
||||
i = mailcapTokenizer.nextToken();
|
||||
if (i != 2)
|
||||
reportParseError(2, i, mailcapTokenizer.getCurrentTokenValue());
|
||||
str2 = mailcapTokenizer.getCurrentTokenValue().toLowerCase(Locale.ENGLISH);
|
||||
i = mailcapTokenizer.nextToken();
|
||||
}
|
||||
String str3 = str1 + "/" + str2;
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log(" Type: " + str3);
|
||||
LinkedHashMap linkedHashMap = new LinkedHashMap();
|
||||
if (i != 59)
|
||||
reportParseError(59, i, mailcapTokenizer.getCurrentTokenValue());
|
||||
mailcapTokenizer.setIsAutoquoting(true);
|
||||
i = mailcapTokenizer.nextToken();
|
||||
mailcapTokenizer.setIsAutoquoting(false);
|
||||
if (i != 2 && i != 59)
|
||||
reportParseError(2, 59, i, mailcapTokenizer.getCurrentTokenValue());
|
||||
if (i == 2) {
|
||||
List list = (List)this.native_commands.get(str3);
|
||||
if (list == null) {
|
||||
list = new ArrayList();
|
||||
list.add(paramString);
|
||||
this.native_commands.put(str3, list);
|
||||
} else {
|
||||
list.add(paramString);
|
||||
}
|
||||
}
|
||||
if (i != 59)
|
||||
i = mailcapTokenizer.nextToken();
|
||||
if (i == 59) {
|
||||
boolean bool = false;
|
||||
do {
|
||||
i = mailcapTokenizer.nextToken();
|
||||
if (i != 2)
|
||||
reportParseError(2, i, mailcapTokenizer.getCurrentTokenValue());
|
||||
String str4 = mailcapTokenizer.getCurrentTokenValue().toLowerCase(Locale.ENGLISH);
|
||||
i = mailcapTokenizer.nextToken();
|
||||
if (i != 61 && i != 59 && i != 5)
|
||||
reportParseError(61, 59, 5, i, mailcapTokenizer.getCurrentTokenValue());
|
||||
if (i != 61)
|
||||
continue;
|
||||
mailcapTokenizer.setIsAutoquoting(true);
|
||||
i = mailcapTokenizer.nextToken();
|
||||
mailcapTokenizer.setIsAutoquoting(false);
|
||||
if (i != 2)
|
||||
reportParseError(2, i, mailcapTokenizer.getCurrentTokenValue());
|
||||
String str5 = mailcapTokenizer.getCurrentTokenValue();
|
||||
if (str4.startsWith("x-java-")) {
|
||||
String str = str4.substring(7);
|
||||
if (str.equals("fallback-entry") && str5.equalsIgnoreCase("true")) {
|
||||
bool = true;
|
||||
} else {
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log(" Command: " + str + ", Class: " + str5);
|
||||
List list = (List)linkedHashMap.get(str);
|
||||
if (list == null) {
|
||||
list = new ArrayList();
|
||||
linkedHashMap.put(str, list);
|
||||
}
|
||||
if (addReverse) {
|
||||
list.add(0, str5);
|
||||
} else {
|
||||
list.add(str5);
|
||||
}
|
||||
}
|
||||
}
|
||||
i = mailcapTokenizer.nextToken();
|
||||
} while (i == 59);
|
||||
Map map1 = bool ? this.fallback_hash : this.type_hash;
|
||||
Map map2 = (Map)map1.get(str3);
|
||||
if (map2 == null) {
|
||||
map1.put(str3, linkedHashMap);
|
||||
} else {
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("Merging commands for type " + str3);
|
||||
Iterator iterator = map2.keySet().iterator();
|
||||
while (iterator.hasNext()) {
|
||||
String str = (String)iterator.next();
|
||||
List list1 = (List)map2.get(str);
|
||||
List list2 = (List)linkedHashMap.get(str);
|
||||
if (list2 == null)
|
||||
continue;
|
||||
Iterator iterator1 = list2.iterator();
|
||||
while (iterator1.hasNext()) {
|
||||
String str4 = (String)iterator1.next();
|
||||
if (!list1.contains(str4)) {
|
||||
if (addReverse) {
|
||||
list1.add(0, str4);
|
||||
continue;
|
||||
}
|
||||
list1.add(str4);
|
||||
}
|
||||
}
|
||||
}
|
||||
iterator = linkedHashMap.keySet().iterator();
|
||||
while (iterator.hasNext()) {
|
||||
String str = (String)iterator.next();
|
||||
if (map2.containsKey(str))
|
||||
continue;
|
||||
List list = (List)linkedHashMap.get(str);
|
||||
map2.put(str, list);
|
||||
}
|
||||
}
|
||||
} else if (i != 5) {
|
||||
reportParseError(5, 59, i, mailcapTokenizer.getCurrentTokenValue());
|
||||
}
|
||||
}
|
||||
|
||||
protected static void reportParseError(int paramInt1, int paramInt2, String paramString) throws MailcapParseException {
|
||||
throw new MailcapParseException("Encountered a " + MailcapTokenizer.nameForToken(paramInt2) + " token (" + paramString + ") while expecting a " + MailcapTokenizer.nameForToken(paramInt1) + " token.");
|
||||
}
|
||||
|
||||
protected static void reportParseError(int paramInt1, int paramInt2, int paramInt3, String paramString) throws MailcapParseException {
|
||||
throw new MailcapParseException("Encountered a " + MailcapTokenizer.nameForToken(paramInt3) + " token (" + paramString + ") while expecting a " + MailcapTokenizer.nameForToken(paramInt1) + " or a " + MailcapTokenizer.nameForToken(paramInt2) + " token.");
|
||||
}
|
||||
|
||||
protected static void reportParseError(int paramInt1, int paramInt2, int paramInt3, int paramInt4, String paramString) throws MailcapParseException {
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("PARSE ERROR: Encountered a " + MailcapTokenizer.nameForToken(paramInt4) + " token (" + paramString + ") while expecting a " + MailcapTokenizer.nameForToken(paramInt1) + ", a " + MailcapTokenizer.nameForToken(paramInt2) + ", or a " + MailcapTokenizer.nameForToken(paramInt3) + " token.");
|
||||
throw new MailcapParseException("Encountered a " + MailcapTokenizer.nameForToken(paramInt4) + " token (" + paramString + ") while expecting a " + MailcapTokenizer.nameForToken(paramInt1) + ", a " + MailcapTokenizer.nameForToken(paramInt2) + ", or a " + MailcapTokenizer.nameForToken(paramInt3) + " token.");
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
package com.sun.activation.registries;
|
||||
|
||||
public class MailcapParseException extends Exception {
|
||||
public MailcapParseException() {}
|
||||
|
||||
public MailcapParseException(String paramString) {
|
||||
super(paramString);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,195 @@
|
|||
package com.sun.activation.registries;
|
||||
|
||||
public class MailcapTokenizer {
|
||||
public static final int UNKNOWN_TOKEN = 0;
|
||||
|
||||
public static final int START_TOKEN = 1;
|
||||
|
||||
public static final int STRING_TOKEN = 2;
|
||||
|
||||
public static final int EOI_TOKEN = 5;
|
||||
|
||||
public static final int SLASH_TOKEN = 47;
|
||||
|
||||
public static final int SEMICOLON_TOKEN = 59;
|
||||
|
||||
public static final int EQUALS_TOKEN = 61;
|
||||
|
||||
private String data;
|
||||
|
||||
private int dataIndex;
|
||||
|
||||
private int dataLength;
|
||||
|
||||
private int currentToken;
|
||||
|
||||
private String currentTokenValue;
|
||||
|
||||
private boolean isAutoquoting;
|
||||
|
||||
private char autoquoteChar;
|
||||
|
||||
public MailcapTokenizer(String paramString) {
|
||||
this.data = paramString;
|
||||
this.dataIndex = 0;
|
||||
this.dataLength = paramString.length();
|
||||
this.currentToken = 1;
|
||||
this.currentTokenValue = "";
|
||||
this.isAutoquoting = false;
|
||||
this.autoquoteChar = ';';
|
||||
}
|
||||
|
||||
public void setIsAutoquoting(boolean paramBoolean) {
|
||||
this.isAutoquoting = paramBoolean;
|
||||
}
|
||||
|
||||
public int getCurrentToken() {
|
||||
return this.currentToken;
|
||||
}
|
||||
|
||||
public static String nameForToken(int paramInt) {
|
||||
String str = "really unknown";
|
||||
switch (paramInt) {
|
||||
case 0:
|
||||
str = "unknown";
|
||||
break;
|
||||
case 1:
|
||||
str = "start";
|
||||
break;
|
||||
case 2:
|
||||
str = "string";
|
||||
break;
|
||||
case 5:
|
||||
str = "EOI";
|
||||
break;
|
||||
case 47:
|
||||
str = "'/'";
|
||||
break;
|
||||
case 59:
|
||||
str = "';'";
|
||||
break;
|
||||
case 61:
|
||||
str = "'='";
|
||||
break;
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
public String getCurrentTokenValue() {
|
||||
return this.currentTokenValue;
|
||||
}
|
||||
|
||||
public int nextToken() {
|
||||
if (this.dataIndex < this.dataLength) {
|
||||
while (this.dataIndex < this.dataLength && isWhiteSpaceChar(this.data.charAt(this.dataIndex)))
|
||||
this.dataIndex++;
|
||||
if (this.dataIndex < this.dataLength) {
|
||||
char c = this.data.charAt(this.dataIndex);
|
||||
if (this.isAutoquoting) {
|
||||
if (c == ';' || c == '=') {
|
||||
this.currentToken = c;
|
||||
this.currentTokenValue = new Character(c).toString();
|
||||
this.dataIndex++;
|
||||
} else {
|
||||
processAutoquoteToken();
|
||||
}
|
||||
} else if (isStringTokenChar(c)) {
|
||||
processStringToken();
|
||||
} else if (c == '/' || c == ';' || c == '=') {
|
||||
this.currentToken = c;
|
||||
this.currentTokenValue = new Character(c).toString();
|
||||
this.dataIndex++;
|
||||
} else {
|
||||
this.currentToken = 0;
|
||||
this.currentTokenValue = new Character(c).toString();
|
||||
this.dataIndex++;
|
||||
}
|
||||
} else {
|
||||
this.currentToken = 5;
|
||||
this.currentTokenValue = null;
|
||||
}
|
||||
} else {
|
||||
this.currentToken = 5;
|
||||
this.currentTokenValue = null;
|
||||
}
|
||||
return this.currentToken;
|
||||
}
|
||||
|
||||
private void processStringToken() {
|
||||
int i = this.dataIndex;
|
||||
while (this.dataIndex < this.dataLength && isStringTokenChar(this.data.charAt(this.dataIndex)))
|
||||
this.dataIndex++;
|
||||
this.currentToken = 2;
|
||||
this.currentTokenValue = this.data.substring(i, this.dataIndex);
|
||||
}
|
||||
|
||||
private void processAutoquoteToken() {
|
||||
int i = this.dataIndex;
|
||||
boolean bool = false;
|
||||
while (this.dataIndex < this.dataLength && !bool) {
|
||||
char c = this.data.charAt(this.dataIndex);
|
||||
if (c != this.autoquoteChar) {
|
||||
this.dataIndex++;
|
||||
continue;
|
||||
}
|
||||
bool = true;
|
||||
}
|
||||
this.currentToken = 2;
|
||||
this.currentTokenValue = fixEscapeSequences(this.data.substring(i, this.dataIndex));
|
||||
}
|
||||
|
||||
private static boolean isSpecialChar(char paramChar) {
|
||||
boolean bool = false;
|
||||
switch (paramChar) {
|
||||
case '"':
|
||||
case '(':
|
||||
case ')':
|
||||
case ',':
|
||||
case '/':
|
||||
case ':':
|
||||
case ';':
|
||||
case '<':
|
||||
case '=':
|
||||
case '>':
|
||||
case '?':
|
||||
case '@':
|
||||
case '[':
|
||||
case '\\':
|
||||
case ']':
|
||||
bool = true;
|
||||
break;
|
||||
}
|
||||
return bool;
|
||||
}
|
||||
|
||||
private static boolean isControlChar(char paramChar) {
|
||||
return Character.isISOControl(paramChar);
|
||||
}
|
||||
|
||||
private static boolean isWhiteSpaceChar(char paramChar) {
|
||||
return Character.isWhitespace(paramChar);
|
||||
}
|
||||
|
||||
private static boolean isStringTokenChar(char paramChar) {
|
||||
return (!isSpecialChar(paramChar) && !isControlChar(paramChar) && !isWhiteSpaceChar(paramChar));
|
||||
}
|
||||
|
||||
private static String fixEscapeSequences(String paramString) {
|
||||
int i = paramString.length();
|
||||
StringBuffer stringBuffer = new StringBuffer();
|
||||
stringBuffer.ensureCapacity(i);
|
||||
for (int j = 0; j < i; j++) {
|
||||
char c = paramString.charAt(j);
|
||||
if (c != '\\') {
|
||||
stringBuffer.append(c);
|
||||
} else if (j < i - 1) {
|
||||
char c1 = paramString.charAt(j + 1);
|
||||
stringBuffer.append(c1);
|
||||
j++;
|
||||
} else {
|
||||
stringBuffer.append(c);
|
||||
}
|
||||
}
|
||||
return stringBuffer.toString();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
package com.sun.activation.registries;
|
||||
|
||||
public class MimeTypeEntry {
|
||||
private String type;
|
||||
|
||||
private String extension;
|
||||
|
||||
public MimeTypeEntry(String paramString1, String paramString2) {
|
||||
this.type = paramString1;
|
||||
this.extension = paramString2;
|
||||
}
|
||||
|
||||
public String getMIMEType() {
|
||||
return this.type;
|
||||
}
|
||||
|
||||
public String getFileExtension() {
|
||||
return this.extension;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return "MIMETypeEntry: " + this.type + ", " + this.extension;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,127 @@
|
|||
package com.sun.activation.registries;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.StringReader;
|
||||
import java.util.Hashtable;
|
||||
import java.util.StringTokenizer;
|
||||
|
||||
public class MimeTypeFile {
|
||||
private String fname = null;
|
||||
|
||||
private Hashtable type_hash = new Hashtable();
|
||||
|
||||
public MimeTypeFile(String paramString) throws IOException {
|
||||
File file = null;
|
||||
FileReader fileReader = null;
|
||||
this.fname = paramString;
|
||||
file = new File(this.fname);
|
||||
fileReader = new FileReader(file);
|
||||
try {
|
||||
parse(new BufferedReader(fileReader));
|
||||
} finally {
|
||||
try {
|
||||
fileReader.close();
|
||||
} catch (IOException e) {}
|
||||
}
|
||||
}
|
||||
|
||||
public MimeTypeFile(InputStream paramInputStream) throws IOException {
|
||||
parse(new BufferedReader(new InputStreamReader(paramInputStream, "iso-8859-1")));
|
||||
}
|
||||
|
||||
public MimeTypeFile() {}
|
||||
|
||||
public MimeTypeEntry getMimeTypeEntry(String paramString) {
|
||||
return (MimeTypeEntry)this.type_hash.get(paramString);
|
||||
}
|
||||
|
||||
public String getMIMETypeString(String paramString) {
|
||||
MimeTypeEntry mimeTypeEntry = getMimeTypeEntry(paramString);
|
||||
if (mimeTypeEntry != null)
|
||||
return mimeTypeEntry.getMIMEType();
|
||||
return null;
|
||||
}
|
||||
|
||||
public void appendToRegistry(String paramString) {
|
||||
try {
|
||||
parse(new BufferedReader(new StringReader(paramString)));
|
||||
} catch (IOException e) {}
|
||||
}
|
||||
|
||||
private void parse(BufferedReader paramBufferedReader) throws IOException {
|
||||
String str1 = null, str2 = null;
|
||||
while ((str1 = paramBufferedReader.readLine()) != null) {
|
||||
if (str2 == null) {
|
||||
str2 = str1;
|
||||
} else {
|
||||
str2 = str2 + str1;
|
||||
}
|
||||
int i = str2.length();
|
||||
if (str2.length() > 0 && str2.charAt(i - 1) == '\\') {
|
||||
str2 = str2.substring(0, i - 1);
|
||||
continue;
|
||||
}
|
||||
parseEntry(str2);
|
||||
str2 = null;
|
||||
}
|
||||
if (str2 != null)
|
||||
parseEntry(str2);
|
||||
}
|
||||
|
||||
private void parseEntry(String paramString) {
|
||||
String str1 = null;
|
||||
String str2 = null;
|
||||
paramString = paramString.trim();
|
||||
if (paramString.length() == 0)
|
||||
return;
|
||||
if (paramString.charAt(0) == '#')
|
||||
return;
|
||||
if (paramString.indexOf('=') > 0) {
|
||||
LineTokenizer lineTokenizer = new LineTokenizer(paramString);
|
||||
while (lineTokenizer.hasMoreTokens()) {
|
||||
String str3 = lineTokenizer.nextToken();
|
||||
String str4 = null;
|
||||
if (lineTokenizer.hasMoreTokens() && lineTokenizer.nextToken().equals("=") && lineTokenizer.hasMoreTokens())
|
||||
str4 = lineTokenizer.nextToken();
|
||||
if (str4 == null) {
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("Bad .mime.types entry: " + paramString);
|
||||
return;
|
||||
}
|
||||
if (str3.equals("type")) {
|
||||
str1 = str4;
|
||||
continue;
|
||||
}
|
||||
if (str3.equals("exts")) {
|
||||
StringTokenizer stringTokenizer = new StringTokenizer(str4, ",");
|
||||
while (stringTokenizer.hasMoreTokens()) {
|
||||
str2 = stringTokenizer.nextToken();
|
||||
MimeTypeEntry mimeTypeEntry = new MimeTypeEntry(str1, str2);
|
||||
this.type_hash.put(str2, mimeTypeEntry);
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("Added: " + mimeTypeEntry.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
StringTokenizer stringTokenizer = new StringTokenizer(paramString);
|
||||
int i = stringTokenizer.countTokens();
|
||||
if (i == 0)
|
||||
return;
|
||||
str1 = stringTokenizer.nextToken();
|
||||
while (stringTokenizer.hasMoreTokens()) {
|
||||
MimeTypeEntry mimeTypeEntry = null;
|
||||
str2 = stringTokenizer.nextToken();
|
||||
mimeTypeEntry = new MimeTypeEntry(str1, str2);
|
||||
this.type_hash.put(str2, mimeTypeEntry);
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("Added: " + mimeTypeEntry.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
package com.sun.activation.viewers;
|
||||
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Image;
|
||||
import java.awt.MediaTracker;
|
||||
import java.awt.Panel;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import javax.activation.CommandObject;
|
||||
import javax.activation.DataHandler;
|
||||
|
||||
public class ImageViewer extends Panel implements CommandObject {
|
||||
private ImageViewerCanvas canvas = null;
|
||||
|
||||
private Image image = null;
|
||||
|
||||
private DataHandler _dh = null;
|
||||
|
||||
private boolean DEBUG = false;
|
||||
|
||||
public ImageViewer() {
|
||||
this.canvas = new ImageViewerCanvas();
|
||||
add(this.canvas);
|
||||
}
|
||||
|
||||
public void setCommandContext(String paramString, DataHandler paramDataHandler) throws IOException {
|
||||
this._dh = paramDataHandler;
|
||||
setInputStream(this._dh.getInputStream());
|
||||
}
|
||||
|
||||
private void setInputStream(InputStream paramInputStream) throws IOException {
|
||||
MediaTracker mediaTracker = new MediaTracker(this);
|
||||
int i = 0;
|
||||
byte[] arrayOfByte = new byte[1024];
|
||||
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
|
||||
while ((i = paramInputStream.read(arrayOfByte)) > 0)
|
||||
byteArrayOutputStream.write(arrayOfByte, 0, i);
|
||||
paramInputStream.close();
|
||||
this.image = getToolkit().createImage(byteArrayOutputStream.toByteArray());
|
||||
mediaTracker.addImage(this.image, 0);
|
||||
try {
|
||||
mediaTracker.waitForID(0);
|
||||
mediaTracker.waitForAll();
|
||||
if (mediaTracker.statusID(0, true) != 8)
|
||||
System.out.println("Error occured in image loading = " + mediaTracker.getErrorsID(0));
|
||||
} catch (InterruptedException e) {
|
||||
throw new IOException("Error reading image data");
|
||||
}
|
||||
this.canvas.setImage(this.image);
|
||||
if (this.DEBUG)
|
||||
System.out.println("calling invalidate");
|
||||
}
|
||||
|
||||
public void addNotify() {
|
||||
super.addNotify();
|
||||
invalidate();
|
||||
validate();
|
||||
doLayout();
|
||||
}
|
||||
|
||||
public Dimension getPreferredSize() {
|
||||
return this.canvas.getPreferredSize();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
package com.sun.activation.viewers;
|
||||
|
||||
import java.awt.Canvas;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Image;
|
||||
|
||||
public class ImageViewerCanvas extends Canvas {
|
||||
private Image canvas_image = null;
|
||||
|
||||
public void setImage(Image paramImage) {
|
||||
this.canvas_image = paramImage;
|
||||
invalidate();
|
||||
repaint();
|
||||
}
|
||||
|
||||
public Dimension getPreferredSize() {
|
||||
Dimension dimension = null;
|
||||
if (this.canvas_image == null) {
|
||||
dimension = new Dimension(200, 200);
|
||||
} else {
|
||||
dimension = new Dimension(this.canvas_image.getWidth(this), this.canvas_image.getHeight(this));
|
||||
}
|
||||
return dimension;
|
||||
}
|
||||
|
||||
public void paint(Graphics paramGraphics) {
|
||||
if (this.canvas_image != null)
|
||||
paramGraphics.drawImage(this.canvas_image, 0, 0, this);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,121 @@
|
|||
package com.sun.activation.viewers;
|
||||
|
||||
import java.awt.Button;
|
||||
import java.awt.Component;
|
||||
import java.awt.Container;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.FlowLayout;
|
||||
import java.awt.GridBagConstraints;
|
||||
import java.awt.GridBagLayout;
|
||||
import java.awt.Panel;
|
||||
import java.awt.TextArea;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import javax.activation.CommandObject;
|
||||
import javax.activation.DataHandler;
|
||||
|
||||
public class TextEditor extends Panel implements CommandObject, ActionListener {
|
||||
private TextArea text_area = null;
|
||||
|
||||
private GridBagLayout panel_gb = null;
|
||||
|
||||
private Panel button_panel = null;
|
||||
|
||||
private Button save_button = null;
|
||||
|
||||
private File text_file = null;
|
||||
|
||||
private String text_buffer = null;
|
||||
|
||||
private InputStream data_ins = null;
|
||||
|
||||
private FileInputStream fis = null;
|
||||
|
||||
private DataHandler _dh = null;
|
||||
|
||||
private boolean DEBUG = false;
|
||||
|
||||
public TextEditor() {
|
||||
this.panel_gb = new GridBagLayout();
|
||||
setLayout(this.panel_gb);
|
||||
this.button_panel = new Panel();
|
||||
this.button_panel.setLayout(new FlowLayout());
|
||||
this.save_button = new Button("SAVE");
|
||||
this.button_panel.add(this.save_button);
|
||||
addGridComponent(this, this.button_panel, this.panel_gb, 0, 0, 1, 1, 1, 0);
|
||||
this.text_area = new TextArea("This is text", 24, 80, 1);
|
||||
this.text_area.setEditable(true);
|
||||
addGridComponent(this, this.text_area, this.panel_gb, 0, 1, 1, 2, 1, 1);
|
||||
this.save_button.addActionListener(this);
|
||||
}
|
||||
|
||||
private void addGridComponent(Container paramContainer, Component paramComponent, GridBagLayout paramGridBagLayout, int paramInt1, int paramInt2, int paramInt3, int paramInt4, int paramInt5, int paramInt6) {
|
||||
GridBagConstraints gridBagConstraints = new GridBagConstraints();
|
||||
gridBagConstraints.gridx = paramInt1;
|
||||
gridBagConstraints.gridy = paramInt2;
|
||||
gridBagConstraints.gridwidth = paramInt3;
|
||||
gridBagConstraints.gridheight = paramInt4;
|
||||
gridBagConstraints.fill = 1;
|
||||
gridBagConstraints.weighty = (double)paramInt6;
|
||||
gridBagConstraints.weightx = (double)paramInt5;
|
||||
gridBagConstraints.anchor = 10;
|
||||
paramGridBagLayout.setConstraints(paramComponent, gridBagConstraints);
|
||||
paramContainer.add(paramComponent);
|
||||
}
|
||||
|
||||
public void setCommandContext(String paramString, DataHandler paramDataHandler) throws IOException {
|
||||
this._dh = paramDataHandler;
|
||||
setInputStream(this._dh.getInputStream());
|
||||
}
|
||||
|
||||
public void setInputStream(InputStream paramInputStream) throws IOException {
|
||||
byte[] arrayOfByte = new byte[1024];
|
||||
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
|
||||
int i = 0;
|
||||
while ((i = paramInputStream.read(arrayOfByte)) > 0)
|
||||
byteArrayOutputStream.write(arrayOfByte, 0, i);
|
||||
paramInputStream.close();
|
||||
this.text_buffer = byteArrayOutputStream.toString();
|
||||
this.text_area.setText(this.text_buffer);
|
||||
}
|
||||
|
||||
private void performSaveOperation() {
|
||||
OutputStream outputStream = null;
|
||||
try {
|
||||
outputStream = this._dh.getOutputStream();
|
||||
} catch (Exception e) {}
|
||||
String str = this.text_area.getText();
|
||||
if (outputStream == null) {
|
||||
System.out.println("Invalid outputstream in TextEditor!");
|
||||
System.out.println("not saving!");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
outputStream.write(str.getBytes());
|
||||
outputStream.flush();
|
||||
outputStream.close();
|
||||
} catch (IOException e) {
|
||||
System.out.println("TextEditor Save Operation failed with: " + e);
|
||||
}
|
||||
}
|
||||
|
||||
public void addNotify() {
|
||||
super.addNotify();
|
||||
invalidate();
|
||||
}
|
||||
|
||||
public Dimension getPreferredSize() {
|
||||
return this.text_area.getMinimumSize(24, 80);
|
||||
}
|
||||
|
||||
public void actionPerformed(ActionEvent paramActionEvent) {
|
||||
if (paramActionEvent.getSource() == this.save_button)
|
||||
performSaveOperation();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
package com.sun.activation.viewers;
|
||||
|
||||
import java.awt.Dimension;
|
||||
import java.awt.GridLayout;
|
||||
import java.awt.Panel;
|
||||
import java.awt.TextArea;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import javax.activation.CommandObject;
|
||||
import javax.activation.DataHandler;
|
||||
|
||||
public class TextViewer extends Panel implements CommandObject {
|
||||
private TextArea text_area = null;
|
||||
|
||||
private File text_file = null;
|
||||
|
||||
private String text_buffer = null;
|
||||
|
||||
private DataHandler _dh = null;
|
||||
|
||||
private boolean DEBUG = false;
|
||||
|
||||
public TextViewer() {
|
||||
setLayout(new GridLayout(1, 1));
|
||||
this.text_area = new TextArea("", 24, 80, 1);
|
||||
this.text_area.setEditable(false);
|
||||
add(this.text_area);
|
||||
}
|
||||
|
||||
public void setCommandContext(String paramString, DataHandler paramDataHandler) throws IOException {
|
||||
this._dh = paramDataHandler;
|
||||
setInputStream(this._dh.getInputStream());
|
||||
}
|
||||
|
||||
public void setInputStream(InputStream paramInputStream) throws IOException {
|
||||
int i = 0;
|
||||
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
|
||||
byte[] arrayOfByte = new byte[1024];
|
||||
while ((i = paramInputStream.read(arrayOfByte)) > 0)
|
||||
byteArrayOutputStream.write(arrayOfByte, 0, i);
|
||||
paramInputStream.close();
|
||||
this.text_buffer = byteArrayOutputStream.toString();
|
||||
this.text_area.setText(this.text_buffer);
|
||||
}
|
||||
|
||||
public void addNotify() {
|
||||
super.addNotify();
|
||||
invalidate();
|
||||
}
|
||||
|
||||
public Dimension getPreferredSize() {
|
||||
return this.text_area.getMinimumSize(24, 80);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
package javax.activation;
|
||||
|
||||
import java.awt.datatransfer.DataFlavor;
|
||||
|
||||
public class ActivationDataFlavor extends DataFlavor {
|
||||
private String mimeType = null;
|
||||
|
||||
private MimeType mimeObject = null;
|
||||
|
||||
private String humanPresentableName = null;
|
||||
|
||||
private Class representationClass = null;
|
||||
|
||||
public ActivationDataFlavor(Class paramClass, String paramString1, String paramString2) {
|
||||
super(paramString1, paramString2);
|
||||
this.mimeType = paramString1;
|
||||
this.humanPresentableName = paramString2;
|
||||
this.representationClass = paramClass;
|
||||
}
|
||||
|
||||
public ActivationDataFlavor(Class paramClass, String paramString) {
|
||||
super(paramClass, paramString);
|
||||
this.mimeType = super.getMimeType();
|
||||
this.representationClass = paramClass;
|
||||
this.humanPresentableName = paramString;
|
||||
}
|
||||
|
||||
public ActivationDataFlavor(String paramString1, String paramString2) {
|
||||
super(paramString1, paramString2);
|
||||
this.mimeType = paramString1;
|
||||
try {
|
||||
this.representationClass = Class.forName("java.io.InputStream");
|
||||
} catch (ClassNotFoundException e) {}
|
||||
this.humanPresentableName = paramString2;
|
||||
}
|
||||
|
||||
public String getMimeType() {
|
||||
return this.mimeType;
|
||||
}
|
||||
|
||||
public Class getRepresentationClass() {
|
||||
return this.representationClass;
|
||||
}
|
||||
|
||||
public String getHumanPresentableName() {
|
||||
return this.humanPresentableName;
|
||||
}
|
||||
|
||||
public void setHumanPresentableName(String paramString) {
|
||||
this.humanPresentableName = paramString;
|
||||
}
|
||||
|
||||
public boolean equals(DataFlavor paramDataFlavor) {
|
||||
return (isMimeTypeEqual(paramDataFlavor) && paramDataFlavor.getRepresentationClass() == this.representationClass);
|
||||
}
|
||||
|
||||
public boolean isMimeTypeEqual(String paramString) {
|
||||
MimeType mimeType = null;
|
||||
try {
|
||||
if (this.mimeObject == null)
|
||||
this.mimeObject = new MimeType(this.mimeType);
|
||||
mimeType = new MimeType(paramString);
|
||||
} catch (MimeTypeParseException e) {
|
||||
return this.mimeType.equalsIgnoreCase(paramString);
|
||||
}
|
||||
return this.mimeObject.match(mimeType);
|
||||
}
|
||||
|
||||
protected String normalizeMimeTypeParameter(String paramString1, String paramString2) {
|
||||
return paramString2;
|
||||
}
|
||||
|
||||
protected String normalizeMimeType(String paramString) {
|
||||
return paramString;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
package javax.activation;
|
||||
|
||||
import java.beans.Beans;
|
||||
import java.io.Externalizable;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.ObjectInputStream;
|
||||
|
||||
public class CommandInfo {
|
||||
private String verb;
|
||||
|
||||
private String className;
|
||||
|
||||
public CommandInfo(String paramString1, String paramString2) {
|
||||
this.verb = paramString1;
|
||||
this.className = paramString2;
|
||||
}
|
||||
|
||||
public String getCommandName() {
|
||||
return this.verb;
|
||||
}
|
||||
|
||||
public String getCommandClass() {
|
||||
return this.className;
|
||||
}
|
||||
|
||||
public Object getCommandObject(DataHandler paramDataHandler, ClassLoader paramClassLoader) throws IOException, ClassNotFoundException {
|
||||
Object object = null;
|
||||
object = Beans.instantiate(paramClassLoader, this.className);
|
||||
if (object != null)
|
||||
if (object instanceof CommandObject) {
|
||||
((CommandObject)object).setCommandContext(this.verb, paramDataHandler);
|
||||
} else if (object instanceof Externalizable &&
|
||||
paramDataHandler != null) {
|
||||
InputStream inputStream = paramDataHandler.getInputStream();
|
||||
if (inputStream != null)
|
||||
((Externalizable)object).readExternal(new ObjectInputStream(inputStream));
|
||||
}
|
||||
return object;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
package javax.activation;
|
||||
|
||||
public abstract class CommandMap {
|
||||
private static CommandMap defaultCommandMap = null;
|
||||
|
||||
public static CommandMap getDefaultCommandMap() {
|
||||
if (defaultCommandMap == null)
|
||||
defaultCommandMap = new MailcapCommandMap();
|
||||
return defaultCommandMap;
|
||||
}
|
||||
|
||||
public static void setDefaultCommandMap(CommandMap paramCommandMap) {
|
||||
SecurityManager securityManager = System.getSecurityManager();
|
||||
if (securityManager != null)
|
||||
try {
|
||||
securityManager.checkSetFactory();
|
||||
} catch (SecurityException e) {
|
||||
if (CommandMap.class.getClassLoader() != paramCommandMap.getClass().getClassLoader())
|
||||
throw e;
|
||||
}
|
||||
defaultCommandMap = paramCommandMap;
|
||||
}
|
||||
|
||||
public CommandInfo[] getPreferredCommands(String paramString, DataSource paramDataSource) {
|
||||
return getPreferredCommands(paramString);
|
||||
}
|
||||
|
||||
public CommandInfo[] getAllCommands(String paramString, DataSource paramDataSource) {
|
||||
return getAllCommands(paramString);
|
||||
}
|
||||
|
||||
public CommandInfo getCommand(String paramString1, String paramString2, DataSource paramDataSource) {
|
||||
return getCommand(paramString1, paramString2);
|
||||
}
|
||||
|
||||
public DataContentHandler createDataContentHandler(String paramString, DataSource paramDataSource) {
|
||||
return createDataContentHandler(paramString);
|
||||
}
|
||||
|
||||
public String[] getMimeTypes() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public abstract CommandInfo[] getPreferredCommands(String paramString);
|
||||
|
||||
public abstract CommandInfo[] getAllCommands(String paramString);
|
||||
|
||||
public abstract CommandInfo getCommand(String paramString1, String paramString2);
|
||||
|
||||
public abstract DataContentHandler createDataContentHandler(String paramString);
|
||||
}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
package javax.activation;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public interface CommandObject {
|
||||
void setCommandContext(String paramString, DataHandler paramDataHandler) throws IOException;
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
package javax.activation;
|
||||
|
||||
import java.awt.datatransfer.DataFlavor;
|
||||
import java.awt.datatransfer.UnsupportedFlavorException;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
|
||||
public interface DataContentHandler {
|
||||
DataFlavor[] getTransferDataFlavors();
|
||||
|
||||
Object getTransferData(DataFlavor paramDataFlavor, DataSource paramDataSource) throws UnsupportedFlavorException, IOException;
|
||||
|
||||
Object getContent(DataSource paramDataSource) throws IOException;
|
||||
|
||||
void writeTo(Object paramObject, String paramString, OutputStream paramOutputStream) throws IOException;
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
package javax.activation;
|
||||
|
||||
public interface DataContentHandlerFactory {
|
||||
DataContentHandler createDataContentHandler(String paramString);
|
||||
}
|
||||
|
|
@ -0,0 +1,259 @@
|
|||
package javax.activation;
|
||||
|
||||
import java.awt.datatransfer.DataFlavor;
|
||||
import java.awt.datatransfer.Transferable;
|
||||
import java.awt.datatransfer.UnsupportedFlavorException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.io.PipedInputStream;
|
||||
import java.io.PipedOutputStream;
|
||||
import java.net.URL;
|
||||
|
||||
public class DataHandler implements Transferable {
|
||||
private DataSource dataSource = null;
|
||||
|
||||
private DataSource objDataSource = null;
|
||||
|
||||
private Object object = null;
|
||||
|
||||
private String objectMimeType = null;
|
||||
|
||||
private CommandMap currentCommandMap = null;
|
||||
|
||||
private static final DataFlavor[] emptyFlavors = new DataFlavor[0];
|
||||
|
||||
private DataFlavor[] transferFlavors = emptyFlavors;
|
||||
|
||||
private DataContentHandler dataContentHandler = null;
|
||||
|
||||
private DataContentHandler factoryDCH = null;
|
||||
|
||||
private static DataContentHandlerFactory factory = null;
|
||||
|
||||
private DataContentHandlerFactory oldFactory = null;
|
||||
|
||||
private String shortType = null;
|
||||
|
||||
public DataHandler(DataSource paramDataSource) {
|
||||
this.dataSource = paramDataSource;
|
||||
this.oldFactory = factory;
|
||||
}
|
||||
|
||||
public DataHandler(Object paramObject, String paramString) {
|
||||
this.object = paramObject;
|
||||
this.objectMimeType = paramString;
|
||||
this.oldFactory = factory;
|
||||
}
|
||||
|
||||
public DataHandler(URL paramURL) {
|
||||
this.dataSource = new URLDataSource(paramURL);
|
||||
this.oldFactory = factory;
|
||||
}
|
||||
|
||||
private synchronized CommandMap getCommandMap() {
|
||||
if (this.currentCommandMap != null)
|
||||
return this.currentCommandMap;
|
||||
return CommandMap.getDefaultCommandMap();
|
||||
}
|
||||
|
||||
public DataSource getDataSource() {
|
||||
if (this.dataSource == null) {
|
||||
if (this.objDataSource == null)
|
||||
this.objDataSource = new DataHandlerDataSource(this);
|
||||
return this.objDataSource;
|
||||
}
|
||||
return this.dataSource;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
if (this.dataSource != null)
|
||||
return this.dataSource.getName();
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getContentType() {
|
||||
if (this.dataSource != null)
|
||||
return this.dataSource.getContentType();
|
||||
return this.objectMimeType;
|
||||
}
|
||||
|
||||
public InputStream getInputStream() throws IOException {
|
||||
InputStream inputStream = null;
|
||||
if (this.dataSource != null) {
|
||||
inputStream = this.dataSource.getInputStream();
|
||||
} else {
|
||||
DataContentHandler dataContentHandler1 = getDataContentHandler();
|
||||
if (dataContentHandler1 == null)
|
||||
throw new UnsupportedDataTypeException("no DCH for MIME type " + getBaseType());
|
||||
if (dataContentHandler1 instanceof ObjectDataContentHandler && (
|
||||
(ObjectDataContentHandler)dataContentHandler1).getDCH() == null)
|
||||
throw new UnsupportedDataTypeException("no object DCH for MIME type " + getBaseType());
|
||||
final DataContentHandler fdch = dataContentHandler1;
|
||||
final PipedOutputStream pos = new PipedOutputStream();
|
||||
PipedInputStream pipedInputStream = new PipedInputStream(pos);
|
||||
new Thread(new Runnable() {
|
||||
public void run() {
|
||||
try {
|
||||
fdch.writeTo(DataHandler.this.object, DataHandler.this.objectMimeType, pos);
|
||||
} catch (IOException e) {
|
||||
|
||||
} finally {
|
||||
try {
|
||||
pos.close();
|
||||
} catch (IOException e) {}
|
||||
}
|
||||
}
|
||||
}, "DataHandler.getInputStream").start();
|
||||
inputStream = pipedInputStream;
|
||||
}
|
||||
return inputStream;
|
||||
}
|
||||
|
||||
public void writeTo(OutputStream paramOutputStream) throws IOException {
|
||||
if (this.dataSource != null) {
|
||||
InputStream inputStream = null;
|
||||
byte[] arrayOfByte = new byte[8192];
|
||||
inputStream = this.dataSource.getInputStream();
|
||||
try {
|
||||
int i;
|
||||
while ((i = inputStream.read(arrayOfByte)) > 0)
|
||||
paramOutputStream.write(arrayOfByte, 0, i);
|
||||
} finally {
|
||||
inputStream.close();
|
||||
inputStream = null;
|
||||
}
|
||||
} else {
|
||||
DataContentHandler dataContentHandler = getDataContentHandler();
|
||||
dataContentHandler.writeTo(this.object, this.objectMimeType, paramOutputStream);
|
||||
}
|
||||
}
|
||||
|
||||
public OutputStream getOutputStream() throws IOException {
|
||||
if (this.dataSource != null)
|
||||
return this.dataSource.getOutputStream();
|
||||
return null;
|
||||
}
|
||||
|
||||
public synchronized DataFlavor[] getTransferDataFlavors() {
|
||||
if (factory != this.oldFactory)
|
||||
this.transferFlavors = emptyFlavors;
|
||||
if (this.transferFlavors == emptyFlavors)
|
||||
this.transferFlavors = getDataContentHandler().getTransferDataFlavors();
|
||||
return this.transferFlavors;
|
||||
}
|
||||
|
||||
public boolean isDataFlavorSupported(DataFlavor paramDataFlavor) {
|
||||
DataFlavor[] arrayOfDataFlavor = getTransferDataFlavors();
|
||||
for (int i = 0; i < arrayOfDataFlavor.length; i++) {
|
||||
if (arrayOfDataFlavor[i].equals(paramDataFlavor))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public Object getTransferData(DataFlavor paramDataFlavor) throws UnsupportedFlavorException, IOException {
|
||||
return getDataContentHandler().getTransferData(paramDataFlavor, this.dataSource);
|
||||
}
|
||||
|
||||
public synchronized void setCommandMap(CommandMap paramCommandMap) {
|
||||
if (paramCommandMap != this.currentCommandMap || paramCommandMap == null) {
|
||||
this.transferFlavors = emptyFlavors;
|
||||
this.dataContentHandler = null;
|
||||
this.currentCommandMap = paramCommandMap;
|
||||
}
|
||||
}
|
||||
|
||||
public CommandInfo[] getPreferredCommands() {
|
||||
if (this.dataSource != null)
|
||||
return getCommandMap().getPreferredCommands(getBaseType(), this.dataSource);
|
||||
return getCommandMap().getPreferredCommands(getBaseType());
|
||||
}
|
||||
|
||||
public CommandInfo[] getAllCommands() {
|
||||
if (this.dataSource != null)
|
||||
return getCommandMap().getAllCommands(getBaseType(), this.dataSource);
|
||||
return getCommandMap().getAllCommands(getBaseType());
|
||||
}
|
||||
|
||||
public CommandInfo getCommand(String paramString) {
|
||||
if (this.dataSource != null)
|
||||
return getCommandMap().getCommand(getBaseType(), paramString, this.dataSource);
|
||||
return getCommandMap().getCommand(getBaseType(), paramString);
|
||||
}
|
||||
|
||||
public Object getContent() throws IOException {
|
||||
if (this.object != null)
|
||||
return this.object;
|
||||
return getDataContentHandler().getContent(getDataSource());
|
||||
}
|
||||
|
||||
public Object getBean(CommandInfo paramCommandInfo) {
|
||||
Object object = null;
|
||||
try {
|
||||
ClassLoader classLoader = null;
|
||||
classLoader = SecuritySupport.getContextClassLoader();
|
||||
if (classLoader == null)
|
||||
classLoader = getClass().getClassLoader();
|
||||
object = paramCommandInfo.getCommandObject(this, classLoader);
|
||||
} catch (IOException e) {
|
||||
|
||||
} catch (ClassNotFoundException e) {}
|
||||
return object;
|
||||
}
|
||||
|
||||
private synchronized DataContentHandler getDataContentHandler() {
|
||||
if (factory != this.oldFactory) {
|
||||
this.oldFactory = factory;
|
||||
this.factoryDCH = null;
|
||||
this.dataContentHandler = null;
|
||||
this.transferFlavors = emptyFlavors;
|
||||
}
|
||||
if (this.dataContentHandler != null)
|
||||
return this.dataContentHandler;
|
||||
String str = getBaseType();
|
||||
if (this.factoryDCH == null && factory != null)
|
||||
this.factoryDCH = factory.createDataContentHandler(str);
|
||||
if (this.factoryDCH != null)
|
||||
this.dataContentHandler = this.factoryDCH;
|
||||
if (this.dataContentHandler == null)
|
||||
if (this.dataSource != null) {
|
||||
this.dataContentHandler = getCommandMap().createDataContentHandler(str, this.dataSource);
|
||||
} else {
|
||||
this.dataContentHandler = getCommandMap().createDataContentHandler(str);
|
||||
}
|
||||
if (this.dataSource != null) {
|
||||
this.dataContentHandler = new DataSourceDataContentHandler(this.dataContentHandler, this.dataSource);
|
||||
} else {
|
||||
this.dataContentHandler = new ObjectDataContentHandler(this.dataContentHandler, this.object, this.objectMimeType);
|
||||
}
|
||||
return this.dataContentHandler;
|
||||
}
|
||||
|
||||
private synchronized String getBaseType() {
|
||||
if (this.shortType == null) {
|
||||
String str = getContentType();
|
||||
try {
|
||||
MimeType mimeType = new MimeType(str);
|
||||
this.shortType = mimeType.getBaseType();
|
||||
} catch (MimeTypeParseException e) {
|
||||
this.shortType = str;
|
||||
}
|
||||
}
|
||||
return this.shortType;
|
||||
}
|
||||
|
||||
public static synchronized void setDataContentHandlerFactory(DataContentHandlerFactory paramDataContentHandlerFactory) {
|
||||
if (factory != null)
|
||||
throw new Error("DataContentHandlerFactory already defined");
|
||||
SecurityManager securityManager = System.getSecurityManager();
|
||||
if (securityManager != null)
|
||||
try {
|
||||
securityManager.checkSetFactory();
|
||||
} catch (SecurityException e) {
|
||||
if (DataHandler.class.getClassLoader() != paramDataContentHandlerFactory.getClass().getClassLoader())
|
||||
throw e;
|
||||
}
|
||||
factory = paramDataContentHandlerFactory;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
package javax.activation;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
|
||||
class DataHandlerDataSource implements DataSource {
|
||||
DataHandler dataHandler = null;
|
||||
|
||||
public DataHandlerDataSource(DataHandler paramDataHandler) {
|
||||
this.dataHandler = paramDataHandler;
|
||||
}
|
||||
|
||||
public InputStream getInputStream() throws IOException {
|
||||
return this.dataHandler.getInputStream();
|
||||
}
|
||||
|
||||
public OutputStream getOutputStream() throws IOException {
|
||||
return this.dataHandler.getOutputStream();
|
||||
}
|
||||
|
||||
public String getContentType() {
|
||||
return this.dataHandler.getContentType();
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return this.dataHandler.getName();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
package javax.activation;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
|
||||
public interface DataSource {
|
||||
InputStream getInputStream() throws IOException;
|
||||
|
||||
OutputStream getOutputStream() throws IOException;
|
||||
|
||||
String getContentType();
|
||||
|
||||
String getName();
|
||||
}
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
package javax.activation;
|
||||
|
||||
import java.awt.datatransfer.DataFlavor;
|
||||
import java.awt.datatransfer.UnsupportedFlavorException;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
|
||||
class DataSourceDataContentHandler implements DataContentHandler {
|
||||
private DataSource ds = null;
|
||||
|
||||
private DataFlavor[] transferFlavors = null;
|
||||
|
||||
private DataContentHandler dch = null;
|
||||
|
||||
public DataSourceDataContentHandler(DataContentHandler paramDataContentHandler, DataSource paramDataSource) {
|
||||
this.ds = paramDataSource;
|
||||
this.dch = paramDataContentHandler;
|
||||
}
|
||||
|
||||
public DataFlavor[] getTransferDataFlavors() {
|
||||
if (this.transferFlavors == null)
|
||||
if (this.dch != null) {
|
||||
this.transferFlavors = this.dch.getTransferDataFlavors();
|
||||
} else {
|
||||
this.transferFlavors = new DataFlavor[1];
|
||||
this.transferFlavors[0] = new ActivationDataFlavor(this.ds.getContentType(), this.ds.getContentType());
|
||||
}
|
||||
return this.transferFlavors;
|
||||
}
|
||||
|
||||
public Object getTransferData(DataFlavor paramDataFlavor, DataSource paramDataSource) throws UnsupportedFlavorException, IOException {
|
||||
if (this.dch != null)
|
||||
return this.dch.getTransferData(paramDataFlavor, paramDataSource);
|
||||
if (paramDataFlavor.equals(getTransferDataFlavors()[0]))
|
||||
return paramDataSource.getInputStream();
|
||||
throw new UnsupportedFlavorException(paramDataFlavor);
|
||||
}
|
||||
|
||||
public Object getContent(DataSource paramDataSource) throws IOException {
|
||||
if (this.dch != null)
|
||||
return this.dch.getContent(paramDataSource);
|
||||
return paramDataSource.getInputStream();
|
||||
}
|
||||
|
||||
public void writeTo(Object paramObject, String paramString, OutputStream paramOutputStream) throws IOException {
|
||||
if (this.dch != null) {
|
||||
this.dch.writeTo(paramObject, paramString, paramOutputStream);
|
||||
} else {
|
||||
throw new UnsupportedDataTypeException("no DCH for content type " + this.ds.getContentType());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
package javax.activation;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
|
||||
public class FileDataSource implements DataSource {
|
||||
private File _file = null;
|
||||
|
||||
private FileTypeMap typeMap = null;
|
||||
|
||||
public FileDataSource(File paramFile) {
|
||||
this._file = paramFile;
|
||||
}
|
||||
|
||||
public FileDataSource(String paramString) {
|
||||
this(new File(paramString));
|
||||
}
|
||||
|
||||
public InputStream getInputStream() throws IOException {
|
||||
return new FileInputStream(this._file);
|
||||
}
|
||||
|
||||
public OutputStream getOutputStream() throws IOException {
|
||||
return new FileOutputStream(this._file);
|
||||
}
|
||||
|
||||
public String getContentType() {
|
||||
if (this.typeMap == null)
|
||||
return FileTypeMap.getDefaultFileTypeMap().getContentType(this._file);
|
||||
return this.typeMap.getContentType(this._file);
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return this._file.getName();
|
||||
}
|
||||
|
||||
public File getFile() {
|
||||
return this._file;
|
||||
}
|
||||
|
||||
public void setFileTypeMap(FileTypeMap paramFileTypeMap) {
|
||||
this.typeMap = paramFileTypeMap;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
package javax.activation;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public abstract class FileTypeMap {
|
||||
private static FileTypeMap defaultMap = null;
|
||||
|
||||
public static void setDefaultFileTypeMap(FileTypeMap paramFileTypeMap) {
|
||||
SecurityManager securityManager = System.getSecurityManager();
|
||||
if (securityManager != null)
|
||||
try {
|
||||
securityManager.checkSetFactory();
|
||||
} catch (SecurityException e) {
|
||||
if (FileTypeMap.class.getClassLoader() != paramFileTypeMap.getClass().getClassLoader())
|
||||
throw e;
|
||||
}
|
||||
defaultMap = paramFileTypeMap;
|
||||
}
|
||||
|
||||
public static FileTypeMap getDefaultFileTypeMap() {
|
||||
if (defaultMap == null)
|
||||
defaultMap = new MimetypesFileTypeMap();
|
||||
return defaultMap;
|
||||
}
|
||||
|
||||
public abstract String getContentType(File paramFile);
|
||||
|
||||
public abstract String getContentType(String paramString);
|
||||
}
|
||||
|
|
@ -0,0 +1,392 @@
|
|||
package javax.activation;
|
||||
|
||||
import com.sun.activation.registries.LogSupport;
|
||||
import com.sun.activation.registries.MailcapFile;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
public class MailcapCommandMap extends CommandMap {
|
||||
private static MailcapFile defDB = null;
|
||||
|
||||
private MailcapFile[] DB;
|
||||
|
||||
private static final int PROG = 0;
|
||||
|
||||
public MailcapCommandMap() {
|
||||
ArrayList arrayList = new ArrayList(5);
|
||||
MailcapFile mailcapFile = null;
|
||||
arrayList.add(null);
|
||||
LogSupport.log("MailcapCommandMap: load HOME");
|
||||
try {
|
||||
String str = System.getProperty("user.home");
|
||||
if (str != null) {
|
||||
String str1 = str + File.separator + ".mailcap";
|
||||
mailcapFile = loadFile(str1);
|
||||
if (mailcapFile != null)
|
||||
arrayList.add(mailcapFile);
|
||||
}
|
||||
} catch (SecurityException e) {}
|
||||
LogSupport.log("MailcapCommandMap: load SYS");
|
||||
try {
|
||||
String str = System.getProperty("java.home") + File.separator + "lib" + File.separator + "mailcap";
|
||||
mailcapFile = loadFile(str);
|
||||
if (mailcapFile != null)
|
||||
arrayList.add(mailcapFile);
|
||||
} catch (SecurityException e) {}
|
||||
LogSupport.log("MailcapCommandMap: load JAR");
|
||||
loadAllResources(arrayList, "META-INF/mailcap");
|
||||
LogSupport.log("MailcapCommandMap: load DEF");
|
||||
synchronized (MailcapCommandMap.class) {
|
||||
if (defDB == null)
|
||||
defDB = loadResource("/META-INF/mailcap.default");
|
||||
}
|
||||
if (defDB != null)
|
||||
arrayList.add(defDB);
|
||||
this.DB = new MailcapFile[arrayList.size()];
|
||||
this.DB = (MailcapFile[])arrayList.toArray(this.DB);
|
||||
}
|
||||
|
||||
private MailcapFile loadResource(String paramString) {
|
||||
InputStream inputStream = null;
|
||||
try {
|
||||
inputStream = SecuritySupport.getResourceAsStream(getClass(), paramString);
|
||||
if (inputStream != null) {
|
||||
MailcapFile mailcapFile = new MailcapFile(inputStream);
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("MailcapCommandMap: successfully loaded mailcap file: " + paramString);
|
||||
return mailcapFile;
|
||||
}
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("MailcapCommandMap: not loading mailcap file: " + paramString);
|
||||
} catch (IOException e) {
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("MailcapCommandMap: can't load " + paramString, e);
|
||||
} catch (SecurityException e) {
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("MailcapCommandMap: can't load " + paramString, e);
|
||||
} finally {
|
||||
try {
|
||||
if (inputStream != null)
|
||||
inputStream.close();
|
||||
} catch (IOException e) {}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private void loadAllResources(List paramList, String paramString) {
|
||||
boolean bool = false;
|
||||
try {
|
||||
URL[] arrayOfURL;
|
||||
ClassLoader classLoader = null;
|
||||
classLoader = SecuritySupport.getContextClassLoader();
|
||||
if (classLoader == null)
|
||||
classLoader = getClass().getClassLoader();
|
||||
if (classLoader != null) {
|
||||
arrayOfURL = SecuritySupport.getResources(classLoader, paramString);
|
||||
} else {
|
||||
arrayOfURL = SecuritySupport.getSystemResources(paramString);
|
||||
}
|
||||
if (arrayOfURL != null) {
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("MailcapCommandMap: getResources");
|
||||
for (int i = 0; i < arrayOfURL.length; i++) {
|
||||
URL uRL = arrayOfURL[i];
|
||||
InputStream inputStream = null;
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("MailcapCommandMap: URL " + uRL);
|
||||
try {
|
||||
inputStream = SecuritySupport.openStream(uRL);
|
||||
if (inputStream != null) {
|
||||
paramList.add(new MailcapFile(inputStream));
|
||||
bool = true;
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("MailcapCommandMap: successfully loaded mailcap file from URL: " + uRL);
|
||||
} else if (LogSupport.isLoggable()) {
|
||||
LogSupport.log("MailcapCommandMap: not loading mailcap file from URL: " + uRL);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("MailcapCommandMap: can't load " + uRL, e);
|
||||
} catch (SecurityException e) {
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("MailcapCommandMap: can't load " + uRL, e);
|
||||
} finally {
|
||||
try {
|
||||
if (inputStream != null)
|
||||
inputStream.close();
|
||||
} catch (IOException e) {}
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("MailcapCommandMap: can't load " + paramString, e);
|
||||
}
|
||||
if (!bool) {
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("MailcapCommandMap: !anyLoaded");
|
||||
MailcapFile mailcapFile = loadResource("/" + paramString);
|
||||
if (mailcapFile != null)
|
||||
paramList.add(mailcapFile);
|
||||
}
|
||||
}
|
||||
|
||||
private MailcapFile loadFile(String paramString) {
|
||||
MailcapFile mailcapFile = null;
|
||||
try {
|
||||
mailcapFile = new MailcapFile(paramString);
|
||||
} catch (IOException e) {}
|
||||
return mailcapFile;
|
||||
}
|
||||
|
||||
public MailcapCommandMap(String paramString) throws IOException {
|
||||
this();
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("MailcapCommandMap: load PROG from " + paramString);
|
||||
if (this.DB[0] == null)
|
||||
this.DB[0] = new MailcapFile(paramString);
|
||||
}
|
||||
|
||||
public MailcapCommandMap(InputStream paramInputStream) {
|
||||
this();
|
||||
LogSupport.log("MailcapCommandMap: load PROG");
|
||||
if (this.DB[0] == null)
|
||||
try {
|
||||
this.DB[0] = new MailcapFile(paramInputStream);
|
||||
} catch (IOException e) {}
|
||||
}
|
||||
|
||||
public synchronized CommandInfo[] getPreferredCommands(String paramString) {
|
||||
ArrayList arrayList = new ArrayList();
|
||||
if (paramString != null)
|
||||
paramString = paramString.toLowerCase(Locale.ENGLISH);
|
||||
for (int j = 0; j < this.DB.length; j++) {
|
||||
if (this.DB[j] != null) {
|
||||
Map map = this.DB[j].getMailcapList(paramString);
|
||||
if (map != null)
|
||||
appendPrefCmdsToList(map, arrayList);
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < this.DB.length; i++) {
|
||||
if (this.DB[i] != null) {
|
||||
Map map = this.DB[i].getMailcapFallbackList(paramString);
|
||||
if (map != null)
|
||||
appendPrefCmdsToList(map, arrayList);
|
||||
}
|
||||
}
|
||||
CommandInfo[] arrayOfCommandInfo = new CommandInfo[arrayList.size()];
|
||||
arrayOfCommandInfo = (CommandInfo[])arrayList.toArray(arrayOfCommandInfo);
|
||||
return arrayOfCommandInfo;
|
||||
}
|
||||
|
||||
private void appendPrefCmdsToList(Map paramMap, List paramList) {
|
||||
Iterator iterator = paramMap.keySet().iterator();
|
||||
while (iterator.hasNext()) {
|
||||
String str = (String)iterator.next();
|
||||
if (!checkForVerb(paramList, str)) {
|
||||
List list = (List)paramMap.get(str);
|
||||
String str1 = (String)list.get(0);
|
||||
paramList.add(new CommandInfo(str, str1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean checkForVerb(List paramList, String paramString) {
|
||||
Iterator iterator = paramList.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
String str = ((CommandInfo)iterator.next()).getCommandName();
|
||||
if (str.equals(paramString))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public synchronized CommandInfo[] getAllCommands(String paramString) {
|
||||
ArrayList arrayList = new ArrayList();
|
||||
if (paramString != null)
|
||||
paramString = paramString.toLowerCase(Locale.ENGLISH);
|
||||
for (int j = 0; j < this.DB.length; j++) {
|
||||
if (this.DB[j] != null) {
|
||||
Map map = this.DB[j].getMailcapList(paramString);
|
||||
if (map != null)
|
||||
appendCmdsToList(map, arrayList);
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < this.DB.length; i++) {
|
||||
if (this.DB[i] != null) {
|
||||
Map map = this.DB[i].getMailcapFallbackList(paramString);
|
||||
if (map != null)
|
||||
appendCmdsToList(map, arrayList);
|
||||
}
|
||||
}
|
||||
CommandInfo[] arrayOfCommandInfo = new CommandInfo[arrayList.size()];
|
||||
arrayOfCommandInfo = (CommandInfo[])arrayList.toArray(arrayOfCommandInfo);
|
||||
return arrayOfCommandInfo;
|
||||
}
|
||||
|
||||
private void appendCmdsToList(Map paramMap, List paramList) {
|
||||
Iterator iterator = paramMap.keySet().iterator();
|
||||
while (iterator.hasNext()) {
|
||||
String str = (String)iterator.next();
|
||||
List list = (List)paramMap.get(str);
|
||||
Iterator iterator1 = list.iterator();
|
||||
while (iterator1.hasNext()) {
|
||||
String str1 = (String)iterator1.next();
|
||||
paramList.add(new CommandInfo(str, str1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public synchronized CommandInfo getCommand(String paramString1, String paramString2) {
|
||||
if (paramString1 != null)
|
||||
paramString1 = paramString1.toLowerCase(Locale.ENGLISH);
|
||||
for (int j = 0; j < this.DB.length; j++) {
|
||||
if (this.DB[j] != null) {
|
||||
Map map = this.DB[j].getMailcapList(paramString1);
|
||||
if (map != null) {
|
||||
List list = (List)map.get(paramString2);
|
||||
if (list != null) {
|
||||
String str = (String)list.get(0);
|
||||
if (str != null)
|
||||
return new CommandInfo(paramString2, str);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < this.DB.length; i++) {
|
||||
if (this.DB[i] != null) {
|
||||
Map map = this.DB[i].getMailcapFallbackList(paramString1);
|
||||
if (map != null) {
|
||||
List list = (List)map.get(paramString2);
|
||||
if (list != null) {
|
||||
String str = (String)list.get(0);
|
||||
if (str != null)
|
||||
return new CommandInfo(paramString2, str);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public synchronized void addMailcap(String paramString) {
|
||||
LogSupport.log("MailcapCommandMap: add to PROG");
|
||||
if (this.DB[0] == null)
|
||||
this.DB[0] = new MailcapFile();
|
||||
this.DB[0].appendToMailcap(paramString);
|
||||
}
|
||||
|
||||
public synchronized DataContentHandler createDataContentHandler(String paramString) {
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("MailcapCommandMap: createDataContentHandler for " + paramString);
|
||||
if (paramString != null)
|
||||
paramString = paramString.toLowerCase(Locale.ENGLISH);
|
||||
for (int j = 0; j < this.DB.length; j++) {
|
||||
if (this.DB[j] != null) {
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log(" search DB #" + j);
|
||||
Map map = this.DB[j].getMailcapList(paramString);
|
||||
if (map != null) {
|
||||
List list = (List)map.get("content-handler");
|
||||
if (list != null) {
|
||||
String str = (String)list.get(0);
|
||||
DataContentHandler dataContentHandler = getDataContentHandler(str);
|
||||
if (dataContentHandler != null)
|
||||
return dataContentHandler;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < this.DB.length; i++) {
|
||||
if (this.DB[i] != null) {
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log(" search fallback DB #" + i);
|
||||
Map map = this.DB[i].getMailcapFallbackList(paramString);
|
||||
if (map != null) {
|
||||
List list = (List)map.get("content-handler");
|
||||
if (list != null) {
|
||||
String str = (String)list.get(0);
|
||||
DataContentHandler dataContentHandler = getDataContentHandler(str);
|
||||
if (dataContentHandler != null)
|
||||
return dataContentHandler;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private DataContentHandler getDataContentHandler(String paramString) {
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log(" got content-handler");
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log(" class " + paramString);
|
||||
try {
|
||||
ClassLoader classLoader = null;
|
||||
classLoader = SecuritySupport.getContextClassLoader();
|
||||
if (classLoader == null)
|
||||
classLoader = getClass().getClassLoader();
|
||||
Class clazz = null;
|
||||
try {
|
||||
clazz = classLoader.loadClass(paramString);
|
||||
} catch (Exception e) {
|
||||
clazz = Class.forName(paramString);
|
||||
}
|
||||
if (clazz != null)
|
||||
return (DataContentHandler)clazz.newInstance();
|
||||
} catch (IllegalAccessException e) {
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("Can't load DCH " + paramString, e);
|
||||
} catch (ClassNotFoundException e) {
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("Can't load DCH " + paramString, e);
|
||||
} catch (InstantiationException e) {
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("Can't load DCH " + paramString, e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public synchronized String[] getMimeTypes() {
|
||||
ArrayList arrayList = new ArrayList();
|
||||
for (int i = 0; i < this.DB.length; i++) {
|
||||
if (this.DB[i] != null) {
|
||||
String[] arrayOfString1 = this.DB[i].getMimeTypes();
|
||||
if (arrayOfString1 != null)
|
||||
for (int j = 0; j < arrayOfString1.length; j++) {
|
||||
if (!arrayList.contains(arrayOfString1[j]))
|
||||
arrayList.add(arrayOfString1[j]);
|
||||
}
|
||||
}
|
||||
}
|
||||
String[] arrayOfString = new String[arrayList.size()];
|
||||
arrayOfString = (String[])arrayList.toArray(arrayOfString);
|
||||
return arrayOfString;
|
||||
}
|
||||
|
||||
public synchronized String[] getNativeCommands(String paramString) {
|
||||
ArrayList arrayList = new ArrayList();
|
||||
if (paramString != null)
|
||||
paramString = paramString.toLowerCase(Locale.ENGLISH);
|
||||
for (int i = 0; i < this.DB.length; i++) {
|
||||
if (this.DB[i] != null) {
|
||||
String[] arrayOfString1 = this.DB[i].getNativeCommands(paramString);
|
||||
if (arrayOfString1 != null)
|
||||
for (int j = 0; j < arrayOfString1.length; j++) {
|
||||
if (!arrayList.contains(arrayOfString1[j]))
|
||||
arrayList.add(arrayOfString1[j]);
|
||||
}
|
||||
}
|
||||
}
|
||||
String[] arrayOfString = new String[arrayList.size()];
|
||||
arrayOfString = (String[])arrayList.toArray(arrayOfString);
|
||||
return arrayOfString;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,147 @@
|
|||
package javax.activation;
|
||||
|
||||
import java.io.Externalizable;
|
||||
import java.io.IOException;
|
||||
import java.io.ObjectInput;
|
||||
import java.io.ObjectOutput;
|
||||
import java.util.Locale;
|
||||
|
||||
public class MimeType implements Externalizable {
|
||||
private String primaryType;
|
||||
|
||||
private String subType;
|
||||
|
||||
private MimeTypeParameterList parameters;
|
||||
|
||||
private static final String TSPECIALS = "()<>@,;:/[]?=\\\"";
|
||||
|
||||
public MimeType() {
|
||||
this.primaryType = "application";
|
||||
this.subType = "*";
|
||||
this.parameters = new MimeTypeParameterList();
|
||||
}
|
||||
|
||||
public MimeType(String paramString) throws MimeTypeParseException {
|
||||
parse(paramString);
|
||||
}
|
||||
|
||||
public MimeType(String paramString1, String paramString2) throws MimeTypeParseException {
|
||||
if (isValidToken(paramString1)) {
|
||||
this.primaryType = paramString1.toLowerCase(Locale.ENGLISH);
|
||||
} else {
|
||||
throw new MimeTypeParseException("Primary type is invalid.");
|
||||
}
|
||||
if (isValidToken(paramString2)) {
|
||||
this.subType = paramString2.toLowerCase(Locale.ENGLISH);
|
||||
} else {
|
||||
throw new MimeTypeParseException("Sub type is invalid.");
|
||||
}
|
||||
this.parameters = new MimeTypeParameterList();
|
||||
}
|
||||
|
||||
private void parse(String paramString) throws MimeTypeParseException {
|
||||
int i = paramString.indexOf('/');
|
||||
int j = paramString.indexOf(';');
|
||||
if (i < 0 && j < 0)
|
||||
throw new MimeTypeParseException("Unable to find a sub type.");
|
||||
if (i < 0 && j >= 0)
|
||||
throw new MimeTypeParseException("Unable to find a sub type.");
|
||||
if (i >= 0 && j < 0) {
|
||||
this.primaryType = paramString.substring(0, i).trim().toLowerCase(Locale.ENGLISH);
|
||||
this.subType = paramString.substring(i + 1).trim().toLowerCase(Locale.ENGLISH);
|
||||
this.parameters = new MimeTypeParameterList();
|
||||
} else if (i < j) {
|
||||
this.primaryType = paramString.substring(0, i).trim().toLowerCase(Locale.ENGLISH);
|
||||
this.subType = paramString.substring(i + 1, j).trim().toLowerCase(Locale.ENGLISH);
|
||||
this.parameters = new MimeTypeParameterList(paramString.substring(j));
|
||||
} else {
|
||||
throw new MimeTypeParseException("Unable to find a sub type.");
|
||||
}
|
||||
if (!isValidToken(this.primaryType))
|
||||
throw new MimeTypeParseException("Primary type is invalid.");
|
||||
if (!isValidToken(this.subType))
|
||||
throw new MimeTypeParseException("Sub type is invalid.");
|
||||
}
|
||||
|
||||
public String getPrimaryType() {
|
||||
return this.primaryType;
|
||||
}
|
||||
|
||||
public void setPrimaryType(String paramString) throws MimeTypeParseException {
|
||||
if (!isValidToken(this.primaryType))
|
||||
throw new MimeTypeParseException("Primary type is invalid.");
|
||||
this.primaryType = paramString.toLowerCase(Locale.ENGLISH);
|
||||
}
|
||||
|
||||
public String getSubType() {
|
||||
return this.subType;
|
||||
}
|
||||
|
||||
public void setSubType(String paramString) throws MimeTypeParseException {
|
||||
if (!isValidToken(this.subType))
|
||||
throw new MimeTypeParseException("Sub type is invalid.");
|
||||
this.subType = paramString.toLowerCase(Locale.ENGLISH);
|
||||
}
|
||||
|
||||
public MimeTypeParameterList getParameters() {
|
||||
return this.parameters;
|
||||
}
|
||||
|
||||
public String getParameter(String paramString) {
|
||||
return this.parameters.get(paramString);
|
||||
}
|
||||
|
||||
public void setParameter(String paramString1, String paramString2) {
|
||||
this.parameters.set(paramString1, paramString2);
|
||||
}
|
||||
|
||||
public void removeParameter(String paramString) {
|
||||
this.parameters.remove(paramString);
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return getBaseType() + this.parameters.toString();
|
||||
}
|
||||
|
||||
public String getBaseType() {
|
||||
return this.primaryType + "/" + this.subType;
|
||||
}
|
||||
|
||||
public boolean match(MimeType paramMimeType) {
|
||||
return (this.primaryType.equals(paramMimeType.getPrimaryType()) && (this.subType.equals("*") || paramMimeType.getSubType().equals("*") || this.subType.equals(paramMimeType.getSubType())));
|
||||
}
|
||||
|
||||
public boolean match(String paramString) throws MimeTypeParseException {
|
||||
return match(new MimeType(paramString));
|
||||
}
|
||||
|
||||
public void writeExternal(ObjectOutput paramObjectOutput) throws IOException {
|
||||
paramObjectOutput.writeUTF(toString());
|
||||
paramObjectOutput.flush();
|
||||
}
|
||||
|
||||
public void readExternal(ObjectInput paramObjectInput) throws IOException, ClassNotFoundException {
|
||||
try {
|
||||
parse(paramObjectInput.readUTF());
|
||||
} catch (MimeTypeParseException e) {
|
||||
throw new IOException(e.toString());
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean isTokenChar(char paramChar) {
|
||||
return (paramChar > ' ' && paramChar < '\u007F' && "()<>@,;:/[]?=\\\"".indexOf(paramChar) < 0);
|
||||
}
|
||||
|
||||
private boolean isValidToken(String paramString) {
|
||||
int i = paramString.length();
|
||||
if (i > 0) {
|
||||
for (int j = 0; j < i; j++) {
|
||||
char c = paramString.charAt(j);
|
||||
if (!isTokenChar(c))
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,167 @@
|
|||
package javax.activation;
|
||||
|
||||
import java.util.Enumeration;
|
||||
import java.util.Hashtable;
|
||||
import java.util.Locale;
|
||||
|
||||
public class MimeTypeParameterList {
|
||||
private Hashtable parameters;
|
||||
|
||||
private static final String TSPECIALS = "()<>@,;:/[]?=\\\"";
|
||||
|
||||
public MimeTypeParameterList() {
|
||||
this.parameters = new Hashtable();
|
||||
}
|
||||
|
||||
public MimeTypeParameterList(String paramString) throws MimeTypeParseException {
|
||||
this.parameters = new Hashtable();
|
||||
parse(paramString);
|
||||
}
|
||||
|
||||
protected void parse(String paramString) throws MimeTypeParseException {
|
||||
if (paramString == null)
|
||||
return;
|
||||
int i = paramString.length();
|
||||
if (i <= 0)
|
||||
return;
|
||||
int j = skipWhiteSpace(paramString, 0);
|
||||
char c;
|
||||
for (; j < i && (c = paramString.charAt(j)) == ';';
|
||||
j = skipWhiteSpace(paramString, j)) {
|
||||
String str2;
|
||||
j++;
|
||||
j = skipWhiteSpace(paramString, j);
|
||||
if (j >= i)
|
||||
return;
|
||||
int k = j;
|
||||
while (j < i && isTokenChar(paramString.charAt(j)))
|
||||
j++;
|
||||
String str1 = paramString.substring(k, j).toLowerCase(Locale.ENGLISH);
|
||||
j = skipWhiteSpace(paramString, j);
|
||||
if (j >= i || paramString.charAt(j) != '=')
|
||||
throw new MimeTypeParseException("Couldn't find the '=' that separates a parameter name from its value.");
|
||||
j++;
|
||||
j = skipWhiteSpace(paramString, j);
|
||||
if (j >= i)
|
||||
throw new MimeTypeParseException("Couldn't find a value for parameter named " + str1);
|
||||
c = paramString.charAt(j);
|
||||
if (c == '"') {
|
||||
j++;
|
||||
if (j >= i)
|
||||
throw new MimeTypeParseException("Encountered unterminated quoted parameter value.");
|
||||
k = j;
|
||||
while (j < i) {
|
||||
c = paramString.charAt(j);
|
||||
if (c == '"')
|
||||
break;
|
||||
if (c == '\\')
|
||||
j++;
|
||||
j++;
|
||||
}
|
||||
if (c != '"')
|
||||
throw new MimeTypeParseException("Encountered unterminated quoted parameter value.");
|
||||
str2 = unquote(paramString.substring(k, j));
|
||||
j++;
|
||||
} else if (isTokenChar(c)) {
|
||||
k = j;
|
||||
while (j < i && isTokenChar(paramString.charAt(j)))
|
||||
j++;
|
||||
str2 = paramString.substring(k, j);
|
||||
} else {
|
||||
throw new MimeTypeParseException("Unexpected character encountered at index " + j);
|
||||
}
|
||||
this.parameters.put(str1, str2);
|
||||
}
|
||||
if (j < i)
|
||||
throw new MimeTypeParseException("More characters encountered in input than expected.");
|
||||
}
|
||||
|
||||
public int size() {
|
||||
return this.parameters.size();
|
||||
}
|
||||
|
||||
public boolean isEmpty() {
|
||||
return this.parameters.isEmpty();
|
||||
}
|
||||
|
||||
public String get(String paramString) {
|
||||
return (String)this.parameters.get(paramString.trim().toLowerCase(Locale.ENGLISH));
|
||||
}
|
||||
|
||||
public void set(String paramString1, String paramString2) {
|
||||
this.parameters.put(paramString1.trim().toLowerCase(Locale.ENGLISH), paramString2);
|
||||
}
|
||||
|
||||
public void remove(String paramString) {
|
||||
this.parameters.remove(paramString.trim().toLowerCase(Locale.ENGLISH));
|
||||
}
|
||||
|
||||
public Enumeration getNames() {
|
||||
return this.parameters.keys();
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
StringBuffer stringBuffer = new StringBuffer();
|
||||
stringBuffer.ensureCapacity(this.parameters.size() * 16);
|
||||
Enumeration enumeration = this.parameters.keys();
|
||||
while (enumeration.hasMoreElements()) {
|
||||
String str = (String)enumeration.nextElement();
|
||||
stringBuffer.append("; ");
|
||||
stringBuffer.append(str);
|
||||
stringBuffer.append('=');
|
||||
stringBuffer.append(quote((String)this.parameters.get(str)));
|
||||
}
|
||||
return stringBuffer.toString();
|
||||
}
|
||||
|
||||
private static boolean isTokenChar(char paramChar) {
|
||||
return (paramChar > ' ' && paramChar < '\u007F' && "()<>@,;:/[]?=\\\"".indexOf(paramChar) < 0);
|
||||
}
|
||||
|
||||
private static int skipWhiteSpace(String paramString, int paramInt) {
|
||||
int i = paramString.length();
|
||||
while (paramInt < i && Character.isWhitespace(paramString.charAt(paramInt)))
|
||||
paramInt++;
|
||||
return paramInt;
|
||||
}
|
||||
|
||||
private static String quote(String paramString) {
|
||||
boolean bool = false;
|
||||
int i = paramString.length();
|
||||
for (int j = 0; j < i && !bool; j++)
|
||||
bool = !isTokenChar(paramString.charAt(j)) ? true : false;
|
||||
if (bool) {
|
||||
StringBuffer stringBuffer = new StringBuffer();
|
||||
stringBuffer.ensureCapacity((int)((double)i * 1.5D));
|
||||
stringBuffer.append('"');
|
||||
for (int k = 0; k < i; k++) {
|
||||
char c = paramString.charAt(k);
|
||||
if (c == '\\' || c == '"')
|
||||
stringBuffer.append('\\');
|
||||
stringBuffer.append(c);
|
||||
}
|
||||
stringBuffer.append('"');
|
||||
return stringBuffer.toString();
|
||||
}
|
||||
return paramString;
|
||||
}
|
||||
|
||||
private static String unquote(String paramString) {
|
||||
int i = paramString.length();
|
||||
StringBuffer stringBuffer = new StringBuffer();
|
||||
stringBuffer.ensureCapacity(i);
|
||||
boolean bool = false;
|
||||
for (int j = 0; j < i; j++) {
|
||||
char c = paramString.charAt(j);
|
||||
if (!bool && c != '\\') {
|
||||
stringBuffer.append(c);
|
||||
} else if (bool) {
|
||||
stringBuffer.append(c);
|
||||
bool = false;
|
||||
} else {
|
||||
bool = true;
|
||||
}
|
||||
}
|
||||
return stringBuffer.toString();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
package javax.activation;
|
||||
|
||||
public class MimeTypeParseException extends Exception {
|
||||
public MimeTypeParseException() {}
|
||||
|
||||
public MimeTypeParseException(String paramString) {
|
||||
super(paramString);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,184 @@
|
|||
package javax.activation;
|
||||
|
||||
import com.sun.activation.registries.LogSupport;
|
||||
import com.sun.activation.registries.MimeTypeFile;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.URL;
|
||||
import java.util.Vector;
|
||||
|
||||
public class MimetypesFileTypeMap extends FileTypeMap {
|
||||
private static MimeTypeFile defDB = null;
|
||||
|
||||
private MimeTypeFile[] DB;
|
||||
|
||||
private static final int PROG = 0;
|
||||
|
||||
private static String defaultType = "application/octet-stream";
|
||||
|
||||
public MimetypesFileTypeMap() {
|
||||
Vector vector = new Vector(5);
|
||||
MimeTypeFile mimeTypeFile = null;
|
||||
vector.addElement(null);
|
||||
LogSupport.log("MimetypesFileTypeMap: load HOME");
|
||||
try {
|
||||
String str = System.getProperty("user.home");
|
||||
if (str != null) {
|
||||
String str1 = str + File.separator + ".mime.types";
|
||||
mimeTypeFile = loadFile(str1);
|
||||
if (mimeTypeFile != null)
|
||||
vector.addElement(mimeTypeFile);
|
||||
}
|
||||
} catch (SecurityException e) {}
|
||||
LogSupport.log("MimetypesFileTypeMap: load SYS");
|
||||
try {
|
||||
String str = System.getProperty("java.home") + File.separator + "lib" + File.separator + "mime.types";
|
||||
mimeTypeFile = loadFile(str);
|
||||
if (mimeTypeFile != null)
|
||||
vector.addElement(mimeTypeFile);
|
||||
} catch (SecurityException e) {}
|
||||
LogSupport.log("MimetypesFileTypeMap: load JAR");
|
||||
loadAllResources(vector, "META-INF/mime.types");
|
||||
LogSupport.log("MimetypesFileTypeMap: load DEF");
|
||||
synchronized (MimetypesFileTypeMap.class) {
|
||||
if (defDB == null)
|
||||
defDB = loadResource("/META-INF/mimetypes.default");
|
||||
}
|
||||
if (defDB != null)
|
||||
vector.addElement(defDB);
|
||||
this.DB = new MimeTypeFile[vector.size()];
|
||||
vector.copyInto(this.DB);
|
||||
}
|
||||
|
||||
private MimeTypeFile loadResource(String paramString) {
|
||||
InputStream inputStream = null;
|
||||
try {
|
||||
inputStream = SecuritySupport.getResourceAsStream(getClass(), paramString);
|
||||
if (inputStream != null) {
|
||||
MimeTypeFile mimeTypeFile = new MimeTypeFile(inputStream);
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("MimetypesFileTypeMap: successfully loaded mime types file: " + paramString);
|
||||
return mimeTypeFile;
|
||||
}
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("MimetypesFileTypeMap: not loading mime types file: " + paramString);
|
||||
} catch (IOException e) {
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("MimetypesFileTypeMap: can't load " + paramString, e);
|
||||
} catch (SecurityException e) {
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("MimetypesFileTypeMap: can't load " + paramString, e);
|
||||
} finally {
|
||||
try {
|
||||
if (inputStream != null)
|
||||
inputStream.close();
|
||||
} catch (IOException e) {}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private void loadAllResources(Vector paramVector, String paramString) {
|
||||
boolean bool = false;
|
||||
try {
|
||||
URL[] arrayOfURL;
|
||||
ClassLoader classLoader = null;
|
||||
classLoader = SecuritySupport.getContextClassLoader();
|
||||
if (classLoader == null)
|
||||
classLoader = getClass().getClassLoader();
|
||||
if (classLoader != null) {
|
||||
arrayOfURL = SecuritySupport.getResources(classLoader, paramString);
|
||||
} else {
|
||||
arrayOfURL = SecuritySupport.getSystemResources(paramString);
|
||||
}
|
||||
if (arrayOfURL != null) {
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("MimetypesFileTypeMap: getResources");
|
||||
for (int i = 0; i < arrayOfURL.length; i++) {
|
||||
URL uRL = arrayOfURL[i];
|
||||
InputStream inputStream = null;
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("MimetypesFileTypeMap: URL " + uRL);
|
||||
try {
|
||||
inputStream = SecuritySupport.openStream(uRL);
|
||||
if (inputStream != null) {
|
||||
paramVector.addElement(new MimeTypeFile(inputStream));
|
||||
bool = true;
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("MimetypesFileTypeMap: successfully loaded mime types from URL: " + uRL);
|
||||
} else if (LogSupport.isLoggable()) {
|
||||
LogSupport.log("MimetypesFileTypeMap: not loading mime types from URL: " + uRL);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("MimetypesFileTypeMap: can't load " + uRL, e);
|
||||
} catch (SecurityException e) {
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("MimetypesFileTypeMap: can't load " + uRL, e);
|
||||
} finally {
|
||||
try {
|
||||
if (inputStream != null)
|
||||
inputStream.close();
|
||||
} catch (IOException e) {}
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
if (LogSupport.isLoggable())
|
||||
LogSupport.log("MimetypesFileTypeMap: can't load " + paramString, e);
|
||||
}
|
||||
if (!bool) {
|
||||
LogSupport.log("MimetypesFileTypeMap: !anyLoaded");
|
||||
MimeTypeFile mimeTypeFile = loadResource("/" + paramString);
|
||||
if (mimeTypeFile != null)
|
||||
paramVector.addElement(mimeTypeFile);
|
||||
}
|
||||
}
|
||||
|
||||
private MimeTypeFile loadFile(String paramString) {
|
||||
MimeTypeFile mimeTypeFile = null;
|
||||
try {
|
||||
mimeTypeFile = new MimeTypeFile(paramString);
|
||||
} catch (IOException e) {}
|
||||
return mimeTypeFile;
|
||||
}
|
||||
|
||||
public MimetypesFileTypeMap(String paramString) throws IOException {
|
||||
this();
|
||||
this.DB[0] = new MimeTypeFile(paramString);
|
||||
}
|
||||
|
||||
public MimetypesFileTypeMap(InputStream paramInputStream) {
|
||||
this();
|
||||
try {
|
||||
this.DB[0] = new MimeTypeFile(paramInputStream);
|
||||
} catch (IOException e) {}
|
||||
}
|
||||
|
||||
public synchronized void addMimeTypes(String paramString) {
|
||||
if (this.DB[0] == null)
|
||||
this.DB[0] = new MimeTypeFile();
|
||||
this.DB[0].appendToRegistry(paramString);
|
||||
}
|
||||
|
||||
public String getContentType(File paramFile) {
|
||||
return getContentType(paramFile.getName());
|
||||
}
|
||||
|
||||
public synchronized String getContentType(String paramString) {
|
||||
int i = paramString.lastIndexOf(".");
|
||||
if (i < 0)
|
||||
return defaultType;
|
||||
String str = paramString.substring(i + 1);
|
||||
if (str.length() == 0)
|
||||
return defaultType;
|
||||
for (int j = 0; j < this.DB.length; j++) {
|
||||
if (this.DB[j] != null) {
|
||||
String str1 = this.DB[j].getMIMETypeString(str);
|
||||
if (str1 != null)
|
||||
return str1;
|
||||
}
|
||||
}
|
||||
return defaultType;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
package javax.activation;
|
||||
|
||||
import java.awt.datatransfer.DataFlavor;
|
||||
import java.awt.datatransfer.UnsupportedFlavorException;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.io.OutputStreamWriter;
|
||||
|
||||
class ObjectDataContentHandler implements DataContentHandler {
|
||||
private DataFlavor[] transferFlavors = null;
|
||||
|
||||
private Object obj;
|
||||
|
||||
private String mimeType;
|
||||
|
||||
private DataContentHandler dch = null;
|
||||
|
||||
public ObjectDataContentHandler(DataContentHandler paramDataContentHandler, Object paramObject, String paramString) {
|
||||
this.obj = paramObject;
|
||||
this.mimeType = paramString;
|
||||
this.dch = paramDataContentHandler;
|
||||
}
|
||||
|
||||
public DataContentHandler getDCH() {
|
||||
return this.dch;
|
||||
}
|
||||
|
||||
public synchronized DataFlavor[] getTransferDataFlavors() {
|
||||
if (this.transferFlavors == null)
|
||||
if (this.dch != null) {
|
||||
this.transferFlavors = this.dch.getTransferDataFlavors();
|
||||
} else {
|
||||
this.transferFlavors = new DataFlavor[1];
|
||||
this.transferFlavors[0] = new ActivationDataFlavor(this.obj.getClass(), this.mimeType, this.mimeType);
|
||||
}
|
||||
return this.transferFlavors;
|
||||
}
|
||||
|
||||
public Object getTransferData(DataFlavor paramDataFlavor, DataSource paramDataSource) throws UnsupportedFlavorException, IOException {
|
||||
if (this.dch != null)
|
||||
return this.dch.getTransferData(paramDataFlavor, paramDataSource);
|
||||
if (paramDataFlavor.equals(getTransferDataFlavors()[0]))
|
||||
return this.obj;
|
||||
throw new UnsupportedFlavorException(paramDataFlavor);
|
||||
}
|
||||
|
||||
public Object getContent(DataSource paramDataSource) {
|
||||
return this.obj;
|
||||
}
|
||||
|
||||
public void writeTo(Object paramObject, String paramString, OutputStream paramOutputStream) throws IOException {
|
||||
if (this.dch != null) {
|
||||
this.dch.writeTo(paramObject, paramString, paramOutputStream);
|
||||
} else if (paramObject instanceof byte[]) {
|
||||
paramOutputStream.write((byte[])paramObject);
|
||||
} else if (paramObject instanceof String) {
|
||||
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(paramOutputStream);
|
||||
outputStreamWriter.write((String)paramObject);
|
||||
outputStreamWriter.flush();
|
||||
} else {
|
||||
throw new UnsupportedDataTypeException("no object DCH for MIME type " + this.mimeType);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,97 @@
|
|||
package javax.activation;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.URL;
|
||||
import java.security.AccessController;
|
||||
import java.security.PrivilegedAction;
|
||||
import java.security.PrivilegedActionException;
|
||||
import java.security.PrivilegedExceptionAction;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Enumeration;
|
||||
|
||||
class SecuritySupport {
|
||||
public static ClassLoader getContextClassLoader() {
|
||||
return (ClassLoader)AccessController.doPrivileged(new PrivilegedAction() {
|
||||
public Object run() {
|
||||
ClassLoader classLoader = null;
|
||||
try {
|
||||
classLoader = Thread.currentThread().getContextClassLoader();
|
||||
} catch (SecurityException e) {}
|
||||
return classLoader;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static InputStream getResourceAsStream(final Class c, final String name) throws IOException {
|
||||
try {
|
||||
return (InputStream)AccessController.doPrivileged(new PrivilegedExceptionAction() {
|
||||
public Object run() throws IOException {
|
||||
return c.getResourceAsStream(name);
|
||||
}
|
||||
});
|
||||
} catch (PrivilegedActionException e) {
|
||||
throw (IOException)e.getException();
|
||||
}
|
||||
}
|
||||
|
||||
public static URL[] getResources(final ClassLoader cl, final String name) {
|
||||
return (URL[])AccessController.doPrivileged(new PrivilegedAction() {
|
||||
public Object run() {
|
||||
URL[] arrayOfURL = null;
|
||||
try {
|
||||
ArrayList arrayList = new ArrayList();
|
||||
Enumeration enumeration = cl.getResources(name);
|
||||
while (enumeration != null && enumeration.hasMoreElements()) {
|
||||
URL uRL = (URL)enumeration.nextElement();
|
||||
if (uRL != null)
|
||||
arrayList.add(uRL);
|
||||
}
|
||||
if (arrayList.size() > 0) {
|
||||
arrayOfURL = new URL[arrayList.size()];
|
||||
arrayOfURL = (URL[])arrayList.toArray(arrayOfURL);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
|
||||
} catch (SecurityException e) {}
|
||||
return arrayOfURL;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static URL[] getSystemResources(final String name) {
|
||||
return (URL[])AccessController.doPrivileged(new PrivilegedAction() {
|
||||
public Object run() {
|
||||
URL[] arrayOfURL = null;
|
||||
try {
|
||||
ArrayList arrayList = new ArrayList();
|
||||
Enumeration enumeration = ClassLoader.getSystemResources(name);
|
||||
while (enumeration != null && enumeration.hasMoreElements()) {
|
||||
URL uRL = (URL)enumeration.nextElement();
|
||||
if (uRL != null)
|
||||
arrayList.add(uRL);
|
||||
}
|
||||
if (arrayList.size() > 0) {
|
||||
arrayOfURL = new URL[arrayList.size()];
|
||||
arrayOfURL = (URL[])arrayList.toArray(arrayOfURL);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
|
||||
} catch (SecurityException e) {}
|
||||
return arrayOfURL;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static InputStream openStream(final URL url) throws IOException {
|
||||
try {
|
||||
return (InputStream)AccessController.doPrivileged(new PrivilegedExceptionAction() {
|
||||
public Object run() throws IOException {
|
||||
return url.openStream();
|
||||
}
|
||||
});
|
||||
} catch (PrivilegedActionException e) {
|
||||
throw (IOException)e.getException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
package javax.activation;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
|
||||
public class URLDataSource implements DataSource {
|
||||
private URL url = null;
|
||||
|
||||
private URLConnection url_conn = null;
|
||||
|
||||
public URLDataSource(URL paramURL) {
|
||||
this.url = paramURL;
|
||||
}
|
||||
|
||||
public String getContentType() {
|
||||
String str = null;
|
||||
try {
|
||||
if (this.url_conn == null)
|
||||
this.url_conn = this.url.openConnection();
|
||||
} catch (IOException e) {}
|
||||
if (this.url_conn != null)
|
||||
str = this.url_conn.getContentType();
|
||||
if (str == null)
|
||||
str = "application/octet-stream";
|
||||
return str;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return this.url.getFile();
|
||||
}
|
||||
|
||||
public InputStream getInputStream() throws IOException {
|
||||
return this.url.openStream();
|
||||
}
|
||||
|
||||
public OutputStream getOutputStream() throws IOException {
|
||||
this.url_conn = this.url.openConnection();
|
||||
if (this.url_conn != null) {
|
||||
this.url_conn.setDoOutput(true);
|
||||
return this.url_conn.getOutputStream();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public URL getURL() {
|
||||
return this.url;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
package javax.activation;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public class UnsupportedDataTypeException extends IOException {
|
||||
public UnsupportedDataTypeException() {}
|
||||
|
||||
public UnsupportedDataTypeException(String paramString) {
|
||||
super(paramString);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue