Example usage for javax.imageio.metadata IIOMetadataFormatImpl getStandardFormatInstance

List of usage examples for javax.imageio.metadata IIOMetadataFormatImpl getStandardFormatInstance

Introduction

In this page you can find the example usage for javax.imageio.metadata IIOMetadataFormatImpl getStandardFormatInstance.

Prototype

public static IIOMetadataFormat getStandardFormatInstance() 

Source Link

Document

Returns an IIOMetadataFormat object describing the standard, plug-in neutral javax.imageio_1.0 metadata document format described in the comment of the javax.imageio.metadata package.

Usage

From source file:Main.java

public static IIOMetadataFormat instantiateMetadataFormat(String formatName, boolean standardFormatSupported,
        String nativeMetadataFormatName, String nativeMetadataFormatClassName,
        String[] extraMetadataFormatNames, String[] extraMetadataFormatClassNames) {
    if (formatName == null) {
        throw new IllegalArgumentException("formatName == null!");
    }//from w  w w .  j  a  v  a  2s .  c  o m
    if (formatName.equals(IIOMetadataFormatImpl.standardMetadataFormatName)) {
        if (standardFormatSupported) {
            return IIOMetadataFormatImpl.getStandardFormatInstance();
        }
    }

    String className = null;

    if (formatName.equals(nativeMetadataFormatName)) {
        className = nativeMetadataFormatClassName;
    } else if (extraMetadataFormatNames != null) {
        for (int i = 0; i < extraMetadataFormatNames.length; i++) {
            if (formatName.equals(extraMetadataFormatNames[i])) {
                className = extraMetadataFormatClassNames[i];
                break;
            }
        }
    }

    if (className == null) {
        throw new IllegalArgumentException("Unsupported format name");
    }

    // Get the context class loader and try to use it first
    ClassLoader contextClassloader = AccessController.doPrivileged(new PrivilegedAction<ClassLoader>() {
        public ClassLoader run() {
            return Thread.currentThread().getContextClassLoader();
        }
    });

    Class cls;

    try {
        cls = Class.forName(className, true, contextClassloader);
    } catch (ClassNotFoundException e) {
        try {
            // Use current class loader
            cls = Class.forName(className);
        } catch (ClassNotFoundException e1) {
            throw new IllegalStateException("Can't obtain format");
        }
    }

    try {
        //???AWT:
        //Method getInstance = cls.getMethod("getInstance");
        //return (IIOMetadataFormat) getInstance.invoke(null);
        return null;
    } catch (Exception e) {
        IllegalStateException e1 = new IllegalStateException("Can't obtain format");
        e1.initCause(e); // Add some details to the message
        throw e1;
    }
}