home *** CD-ROM | disk | FTP | other *** search
- package java.awt.datatransfer;
-
- import java.awt.Toolkit;
- import java.io.ByteArrayInputStream;
- import java.io.Externalizable;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.ObjectInput;
- import java.io.ObjectOutput;
- import java.io.Reader;
- import java.io.UnsupportedEncodingException;
- import java.security.AccessController;
- import sun.awt.SunToolkit;
-
- public class DataFlavor implements Externalizable, Cloneable {
- static final long serialVersionUID = 8367026044764648243L;
- static final Class ioInputStreamClass;
- public static final DataFlavor stringFlavor;
- public static final DataFlavor plainTextFlavor;
- public static final String javaSerializedObjectMimeType = "application/x-java-serialized-object";
- public static final DataFlavor javaFileListFlavor;
- public static final String javaJVMLocalObjectMimeType = "application/x-java-jvm-local-objectref";
- public static final String javaRemoteObjectMimeType = "application/x-java-remote-object";
- transient int atom;
- MimeType mimeType;
- private static String[] knownEncodings;
- private String humanPresentableName;
- private Class representationClass;
- // $FF: synthetic field
- static Class class$java$io$InputStream;
- // $FF: synthetic field
- static Class class$java$lang$String;
- // $FF: synthetic field
- static Class class$java$io$Serializable;
- // $FF: synthetic field
- static Class class$java$rmi$Remote;
- // $FF: synthetic field
- static Class class$java$util$List;
-
- protected static final Class tryToLoadClass(String var0, ClassLoader var1) throws ClassNotFoundException {
- ClassLoader var2 = (ClassLoader)AccessController.doPrivileged(new 1());
-
- try {
- return Class.forName(var0, true, var2);
- } catch (ClassNotFoundException var4) {
- if (var1 != null) {
- return Class.forName(var0, true, var1);
- } else {
- throw new ClassNotFoundException(var0);
- }
- }
- }
-
- private static DataFlavor createConstant(Class var0, String var1) {
- try {
- return new DataFlavor(var0, var1);
- } catch (Exception var3) {
- return null;
- }
- }
-
- private static DataFlavor createConstant(String var0, String var1) {
- try {
- return new DataFlavor(var0, var1);
- } catch (Exception var3) {
- return null;
- }
- }
-
- public DataFlavor() {
- }
-
- DataFlavor(DataFlavor var1) {
- this.mimeType = null;
- if (var1.mimeType != null) {
- try {
- this.mimeType = (MimeType)var1.mimeType.clone();
- } catch (CloneNotSupportedException var3) {
- }
- }
-
- this.representationClass = var1.representationClass;
- this.humanPresentableName = var1.humanPresentableName;
- this.atom = var1.atom;
- }
-
- private DataFlavor(String var1, String var2, MimeTypeParameterList var3, Class var4, String var5) {
- if (var3 == null) {
- var3 = new MimeTypeParameterList();
- }
-
- var3.set("class", var4.getName());
- if (var5 == null) {
- var5 = var3.get("humanPresentableName");
- if (var5 == null) {
- var5 = var1 + "/" + var2;
- }
- }
-
- try {
- this.mimeType = new MimeType(var1, var2, var3);
- } catch (MimeTypeParseException var7) {
- throw new IllegalArgumentException("MimeType Parse Exception: " + ((Throwable)var7).getMessage());
- }
-
- this.representationClass = var4;
- this.humanPresentableName = var5;
- this.mimeType.removeParameter("humanPresentableName");
- }
-
- public DataFlavor(Class var1, String var2) {
- this("application", "x-java-serialized-object", (MimeTypeParameterList)null, var1, var2);
- }
-
- public DataFlavor(String var1, String var2) {
- try {
- this.initialize(var1, var2, this.getClass().getClassLoader());
- } catch (MimeTypeParseException var5) {
- throw new IllegalArgumentException("failed to parse:" + var1);
- } catch (ClassNotFoundException var6) {
- throw new IllegalArgumentException("cant find specified class: " + ((Throwable)var6).getMessage());
- }
- }
-
- public DataFlavor(String var1, String var2, ClassLoader var3) throws ClassNotFoundException {
- try {
- this.initialize(var1, var2, var3);
- } catch (MimeTypeParseException var5) {
- throw new IllegalArgumentException("failed to parse:" + var1);
- }
- }
-
- public DataFlavor(String var1) throws ClassNotFoundException {
- try {
- this.initialize(var1, (String)null, this.getClass().getClassLoader());
- } catch (MimeTypeParseException var3) {
- throw new IllegalArgumentException("failed to parse:" + var1);
- }
- }
-
- private void initialize(String var1, String var2, ClassLoader var3) throws MimeTypeParseException, ClassNotFoundException {
- this.mimeType = new MimeType(var1);
- String var4 = this.getParameter("class");
- if (var4 == null) {
- if ("application/x-java-serialized-object".equals(this.mimeType.getBaseType())) {
- throw new IllegalArgumentException("no representation class specified for:" + var1);
- }
-
- this.representationClass = class$java$io$InputStream == null ? (class$java$io$InputStream = class$("java.io.InputStream")) : class$java$io$InputStream;
- } else {
- this.representationClass = tryToLoadClass(var4, var3);
- }
-
- this.mimeType.setParameter("class", this.representationClass.getName());
- if (var2 == null) {
- var2 = this.mimeType.getParameter("humanPresentableName");
- if (var2 == null) {
- var2 = this.mimeType.getPrimaryType() + "/" + this.mimeType.getSubType();
- }
- }
-
- this.humanPresentableName = var2;
- this.mimeType.removeParameter("humanPresentableName");
- }
-
- private DataFlavor(MimeType var1, Class var2, String var3, int var4) {
- this.mimeType = var1;
- this.representationClass = var2;
- this.humanPresentableName = var3;
- this.atom = var4;
- }
-
- public String toString() {
- String var1 = this.getClass().getName();
- var1 = var1 + "[" + this.paramString() + "]";
- return var1;
- }
-
- private String paramString() {
- String var1 = "";
- var1 = var1 + "representationclass=";
- if (this.representationClass == null) {
- var1 = var1 + "null";
- } else {
- var1 = var1 + this.representationClass.getName();
- }
-
- var1 = var1 + ";mimetype=";
- if (this.mimeType == null) {
- var1 = var1 + "null";
- } else {
- var1 = var1 + this.mimeType.getBaseType();
- }
-
- return var1;
- }
-
- public static final DataFlavor getTextPlainUnicodeFlavor() {
- Toolkit var0 = Toolkit.getDefaultToolkit();
- Object var1 = null;
- String var2 = null;
- if (var0 instanceof SunToolkit) {
- var2 = ((SunToolkit)var0).getDefaultUnicodeEncoding();
- }
-
- return new DataFlavor("text/plain; charset=" + var2 + "; class=java.io.InputStream", "Plain Text");
- }
-
- public static final DataFlavor selectBestTextFlavor(DataFlavor[] var0) {
- if (var0 == null) {
- return null;
- } else {
- DataFlavor var1 = null;
-
- for(int var2 = 0; var1 == null && var2 < var0.length; ++var2) {
- DataFlavor var3 = var0[var2];
- if (var3.match(stringFlavor)) {
- var1 = var3;
- } else {
- String var4 = var3.getPrimaryType();
- if (var4 != null && "text".equals(var4)) {
- String var5 = var3.getParameter("charset");
- if (var5 == null) {
- var1 = var3;
- } else if (encodingIsSupported(var5)) {
- var1 = var3;
- }
- }
- }
- }
-
- return var1;
- }
- }
-
- public Reader getReaderForText(Transferable var1) throws UnsupportedFlavorException, IOException {
- Object var2 = var1.getTransferData(this);
- if (var2 == null) {
- throw new IllegalArgumentException("getTransferData() returned null");
- } else {
- boolean var3 = var2 instanceof String;
- boolean var4 = var2 instanceof InputStream;
- boolean var5 = var2 instanceof Reader;
- if (!var3 && !var4 && !var5) {
- throw new IllegalArgumentException("transfer data is not InputStream or String or Reader");
- } else {
- String var6 = this.getParameter("charset");
- Object var7 = null;
- if (var4) {
- var7 = (InputStream)var2;
- } else if (var3) {
- if (var6 == null) {
- var7 = new ByteArrayInputStream(((String)var2).getBytes());
- } else {
- var7 = new ByteArrayInputStream(((String)var2).getBytes(var6));
- }
- }
-
- Object var8 = null;
- if (var5) {
- var8 = (Reader)var2;
- } else if (var6 == null) {
- var8 = new InputStreamReader((InputStream)var7);
- } else {
- var8 = new InputStreamReader((InputStream)var7, var6);
- }
-
- return (Reader)var8;
- }
- }
- }
-
- public String getMimeType() {
- return this.mimeType.toString();
- }
-
- public Class getRepresentationClass() {
- return this.representationClass;
- }
-
- public String getHumanPresentableName() {
- return this.humanPresentableName;
- }
-
- public String getPrimaryType() {
- return this.mimeType.getPrimaryType();
- }
-
- public String getSubType() {
- return this.mimeType.getSubType();
- }
-
- public String getParameter(String var1) {
- return var1.equals("humanPresentableName") ? this.humanPresentableName : this.mimeType.getParameter(var1);
- }
-
- public void setHumanPresentableName(String var1) {
- this.humanPresentableName = var1;
- }
-
- public boolean equals(Object var1) {
- return var1 instanceof DataFlavor && this.equals((DataFlavor)var1);
- }
-
- public boolean equals(DataFlavor var1) {
- if (var1 == null) {
- return false;
- } else if (this == var1) {
- return true;
- } else {
- if (this.representationClass == null) {
- if (var1.getRepresentationClass() != null) {
- return false;
- }
- } else if (!this.representationClass.equals(var1.getRepresentationClass())) {
- return false;
- }
-
- if (this.mimeType == null) {
- if (var1.mimeType != null) {
- return false;
- }
- } else if (!this.mimeType.match(var1.mimeType)) {
- return false;
- }
-
- if ("text".equals(this.getPrimaryType())) {
- String var2 = this.getTextCharset();
- String var3 = var1.getTextCharset();
- if (var2 == null) {
- if (var3 != null) {
- return false;
- }
- } else if (!var2.equals(var3)) {
- return false;
- }
- }
-
- return true;
- }
- }
-
- public boolean equals(String var1) {
- return var1 != null && this.mimeType != null ? this.isMimeTypeEqual(var1) : false;
- }
-
- public int hashCode() {
- int var1 = 0;
- int var2 = 0;
- int var3 = 0;
- if (this.representationClass != null) {
- var1 = this.representationClass.hashCode();
- }
-
- if (this.mimeType != null) {
- String var4 = this.mimeType.getPrimaryType();
- if (var4 != null) {
- var2 = var4.hashCode();
- if ("text".equals(var4)) {
- String var5 = this.getTextCharset();
- if (var5 != null) {
- var3 = var5.hashCode();
- }
- }
- }
- }
-
- int var6 = var1 + var2 + var3;
- return var6 != 0 ? var6 : 25431009;
- }
-
- public boolean match(DataFlavor var1) {
- if (var1 == null) {
- return false;
- } else if (this.mimeType != null && var1.mimeType != null) {
- String var2 = this.getPrimaryType();
- String var3 = var1.getPrimaryType();
- if (var2 != null && var3 != null && var2.equals(var3)) {
- String var4 = this.getSubType();
- String var5 = var1.getSubType();
- if (var4 != null && var5 != null && var4.equals(var5)) {
- Class var6 = this.getRepresentationClass();
- Class var7 = var1.getRepresentationClass();
- if (var6 != null && var7 != null && var6.equals(var7)) {
- if (var2.equals("text")) {
- String var8 = this.getTextCharset();
- String var9 = var1.getTextCharset();
- if (var8 == null || var9 == null || !var8.equals(var9)) {
- return false;
- }
- }
-
- return true;
- } else {
- return false;
- }
- } else {
- return false;
- }
- } else {
- return false;
- }
- } else {
- return false;
- }
- }
-
- public boolean isMimeTypeEqual(String var1) {
- if (this.mimeType != null && var1 != null) {
- try {
- return this.mimeType.match(new MimeType(var1));
- } catch (MimeTypeParseException var3) {
- return false;
- }
- } else {
- return false;
- }
- }
-
- public final boolean isMimeTypeEqual(DataFlavor var1) {
- return this.isMimeTypeEqual(var1.mimeType);
- }
-
- private boolean isMimeTypeEqual(MimeType var1) {
- return this.mimeType.match(var1);
- }
-
- public boolean isMimeTypeSerializedObject() {
- return this.isMimeTypeEqual("application/x-java-serialized-object");
- }
-
- public final Class getDefaultRepresentationClass() {
- return ioInputStreamClass;
- }
-
- public final String getDefaultRepresentationClassAsString() {
- return this.getDefaultRepresentationClass().getName();
- }
-
- public boolean isRepresentationClassInputStream() {
- return ioInputStreamClass.isAssignableFrom(this.representationClass);
- }
-
- public boolean isRepresentationClassSerializable() {
- return (class$java$io$Serializable == null ? (class$java$io$Serializable = class$("java.io.Serializable")) : class$java$io$Serializable).isAssignableFrom(this.representationClass);
- }
-
- public boolean isRepresentationClassRemote() {
- return (class$java$rmi$Remote == null ? (class$java$rmi$Remote = class$("java.rmi.Remote")) : class$java$rmi$Remote).isAssignableFrom(this.representationClass);
- }
-
- public boolean isFlavorSerializedObjectType() {
- return this.isRepresentationClassSerializable() && this.isMimeTypeEqual("application/x-java-serialized-object");
- }
-
- public boolean isFlavorRemoteObjectType() {
- return this.isRepresentationClassRemote() && this.isRepresentationClassSerializable() && this.isMimeTypeEqual("application/x-java-remote-object");
- }
-
- public boolean isFlavorJavaFileListType() {
- if (this.mimeType != null && this.representationClass != null) {
- return (class$java$util$List == null ? (class$java$util$List = class$("java.util.List")) : class$java$util$List).isAssignableFrom(this.representationClass) && this.mimeType.match(javaFileListFlavor.mimeType);
- } else {
- return false;
- }
- }
-
- public synchronized void writeExternal(ObjectOutput var1) throws IOException {
- this.mimeType.setParameter("humanPresentableName", this.humanPresentableName);
- var1.writeObject(this.mimeType);
- this.mimeType.removeParameter("humanPresentableName");
- }
-
- public synchronized void readExternal(ObjectInput var1) throws IOException, ClassNotFoundException {
- this.mimeType = (MimeType)var1.readObject();
- this.humanPresentableName = this.mimeType.getParameter("humanPresentableName");
- this.mimeType.removeParameter("humanPresentableName");
- String var2 = this.mimeType.getParameter("class");
- if (var2 == null) {
- throw new IOException("no class parameter specified in: " + this.mimeType);
- } else {
- this.representationClass = tryToLoadClass(var2, this.getClass().getClassLoader());
- }
- }
-
- public Object clone() throws CloneNotSupportedException {
- DataFlavor var1 = new DataFlavor(this);
- return var1;
- }
-
- protected String normalizeMimeTypeParameter(String var1, String var2) {
- return var2;
- }
-
- protected String normalizeMimeType(String var1) {
- return var1;
- }
-
- private String getTextCharset() {
- String var1 = null;
- if ("text".equals(this.getPrimaryType())) {
- var1 = this.getParameter("charset");
- if (var1 == null) {
- Toolkit var2 = Toolkit.getDefaultToolkit();
- if (var2 instanceof SunToolkit) {
- var1 = ((SunToolkit)var2).getDefaultCharacterEncoding();
- }
- }
- }
-
- return var1;
- }
-
- private static boolean encodingIsSupported(String var0) {
- boolean var1 = false;
- boolean var2 = false;
-
- for(int var5 = 0; !var1 && var5 < knownEncodings.length; ++var5) {
- if (knownEncodings[var5].equals(var0)) {
- var1 = true;
- }
- }
-
- if (!var1) {
- try {
- "abc".getBytes(var0);
- var1 = true;
- } catch (UnsupportedEncodingException var4) {
- }
- }
-
- return var1;
- }
-
- // $FF: synthetic method
- static Class class$(String var0) {
- try {
- return Class.forName(var0);
- } catch (ClassNotFoundException var2) {
- throw new NoClassDefFoundError(((Throwable)var2).getMessage());
- }
- }
-
- static {
- ioInputStreamClass = class$java$io$InputStream == null ? (class$java$io$InputStream = class$("java.io.InputStream")) : class$java$io$InputStream;
- stringFlavor = createConstant(class$java$lang$String == null ? (class$java$lang$String = class$("java.lang.String")) : class$java$lang$String, "Unicode String");
- plainTextFlavor = createConstant("text/plain; charset=unicode; class=java.io.InputStream", "Plain Text");
- javaFileListFlavor = createConstant((String)"application/x-java-file-list;class=java.util.List", (String)null);
- knownEncodings = new String[]{"iso8859-1", "us-ascii"};
- }
- }
-