Example usage for java.beans XMLDecoder setExceptionListener

List of usage examples for java.beans XMLDecoder setExceptionListener

Introduction

In this page you can find the example usage for java.beans XMLDecoder setExceptionListener.

Prototype

public void setExceptionListener(ExceptionListener exceptionListener) 

Source Link

Document

Sets the exception handler for this stream to exceptionListener .

Usage

From source file:Main.java

public static Object decodeObject(byte[] byteArray, final boolean noisy) {
    ByteArrayInputStream inputStream = new ByteArrayInputStream(byteArray);

    XMLDecoder decoder = new XMLDecoder(inputStream);
    decoder.setExceptionListener(new ExceptionListener() {
        public void exceptionThrown(Exception ex) {
            if (noisy)
                ex.printStackTrace();//ww w  . ja v  a  2  s.  co  m
        }
    });

    Object copy = decoder.readObject();
    decoder.close();
    return copy;
}

From source file:de.willuhn.jameica.hbci.io.csv.ProfileUtil.java

/**
 * Laedt die vorhandenen Profile fuer das Format.
 * @param format das Format./*  www . jav  a  2s .  c o  m*/
 * @return die Liste der Profile.
 */
public static List<Profile> read(Format format) {
    List<Profile> result = new ArrayList<Profile>();

    if (format == null) {
        Logger.warn("no format given");
        Application.getMessagingFactory().sendMessage(
                new StatusBarMessage(i18n.tr("Kein Format ausgewhlt"), StatusBarMessage.TYPE_ERROR));
        return result;
    }

    final Profile dp = format.getDefaultProfile();
    result.add(dp); // System-Profil wird immer vorn einsortiert

    // 1. Mal schauen, ob wir gespeicherte Profil fuer das Format haben
    File dir = new File(Application.getPluginLoader().getPlugin(HBCI.class).getResources().getWorkPath(),
            "csv");
    if (!dir.exists())
        return result;

    File file = new File(dir, format.getClass().getName() + ".xml");
    if (!file.exists() || !file.canRead())
        return result;

    Logger.info("reading csv profile " + file);
    XMLDecoder decoder = null;
    try {
        decoder = new XMLDecoder(new BufferedInputStream(new FileInputStream(file)));
        decoder.setExceptionListener(new ExceptionListener() {
            public void exceptionThrown(Exception e) {
                throw new RuntimeException(e);
            }
        });

        // Es ist tatsaechlich so, dass "readObject()" nicht etwa NULL liefert, wenn keine Objekte mehr in der
        // Datei sind sondern eine ArrayIndexOutOfBoundsException wirft.
        try {
            for (int i = 0; i < 1000; ++i) {
                Profile p = (Profile) decoder.readObject();
                // Migration aus der Zeit vor dem Support mulitpler Profile:
                // Da konnte der User nur das eine existierende Profil aendern, es wurde automatisch gespeichert
                // Das hatte gar keinen Namen. Falls also ein Profil ohne Name existiert (inzwischen koennen keine
                // mehr ohne Name gespeichert werden), dann ist es das vom User geaenderte Profil. Das machen wir
                // automatisch zum ersten User-spezifischen Profil
                if (StringUtils.trimToNull(p.getName()) == null) {
                    p.setName(dp.getName() + " 2");
                    p.setSystem(false);
                }
                result.add(p);
            }
        } catch (ArrayIndexOutOfBoundsException e) {
            // EOF
        }

        Logger.info("read " + (result.size() - 1) + " profiles from " + file);
        Collections.sort(result);

        // Der User hat beim letzten Mal eventuell nicht alle Spalten zugeordnet.
        // Die wuerden jetzt hier in dem Objekt fehlen. Daher nehmen wir
        // noch die Spalten aus dem Default-Profil und haengen die fehlenden noch an.
    } catch (Exception e) {
        Logger.error("unable to read profile " + file, e);
        Application.getMessagingFactory().sendMessage(new StatusBarMessage(
                i18n.tr("Laden der Profile fehlgeschlagen: {0}", e.getMessage()), StatusBarMessage.TYPE_ERROR));
    } finally {
        if (decoder != null) {
            try {
                decoder.close();
            } catch (Exception e) {
                /* useless */}
        }
    }
    return result;
}

From source file:org.settings4j.objectresolver.JavaXMLBeansObjectResolver.java

@Override
protected Object contentToObject(final String key, final Properties properties, final byte[] content,
        final ContentResolver contentResolver) {
    final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(content);
    XMLDecoder encoder = null;
    try {//from  w w  w  .  j  a v a  2 s . c  om
        encoder = new XMLDecoder(byteArrayInputStream);
        encoder.setExceptionListener(new LogDecoderExceptionListener(key));
        return encoder.readObject();
    } finally {
        if (encoder != null) {
            encoder.close();
        }
    }
}

From source file:org.jtrfp.trcl.gui.ConfigWindow.java

private boolean readSettingsFromFile(File f) {
    try {/* ww  w  .  j a v a 2 s.c  o  m*/
        FileInputStream is = new FileInputStream(f);
        XMLDecoder xmlDec = new XMLDecoder(is);
        xmlDec.setExceptionListener(new ExceptionListener() {
            @Override
            public void exceptionThrown(Exception e) {
                e.printStackTrace();
            }
        });
        TRConfiguration src = (TRConfiguration) xmlDec.readObject();
        xmlDec.close();
        if (config != null)
            BeanUtils.copyProperties(config, src);
        else
            config = src;
    } catch (Exception e) {
        JOptionPane.showMessageDialog(this, "Failed to read the specified file:\n" + e.getLocalizedMessage(),
                "File read failure", JOptionPane.ERROR_MESSAGE);
        return false;
    }
    return true;
}