001/*
002 * Copyright (c) 2006-2011 Nuxeo SA (http://nuxeo.com/) and others.
003 *
004 * All rights reserved. This program and the accompanying materials
005 * are made available under the terms of the Eclipse Public License v1.0
006 * which accompanies this distribution, and is available at
007 * http://www.eclipse.org/legal/epl-v10.html
008 *
009 * Contributors:
010 *     Nuxeo - initial API and implementation
011 *
012 */
013
014package org.nuxeo.ecm.automation.core.util;
015
016import org.codehaus.jackson.node.ObjectNode;
017import org.nuxeo.ecm.core.api.Blob;
018import org.nuxeo.ecm.core.api.Blobs;
019
020/**
021 * Very basic implementation of a Blob decoder Only usable for StringBlobs
022 *
023 * @author Tiry (tdelprat@nuxeo.com)
024 * @since 5.5
025 */
026public class JSONStringBlobDecoder implements JSONBlobDecoder {
027    @Override
028    public Blob getBlobFromJSON(ObjectNode jsonObject) {
029        Blob blob = null;
030
031        String filename = null;
032        if (jsonObject.has("filename")) {
033            filename = jsonObject.get("filename").getTextValue();
034        }
035        if (filename == null && jsonObject.has("name")) {
036            filename = jsonObject.get("name").getTextValue();
037        }
038        String encoding = "UTF-8";
039        if (jsonObject.has("encoding")) {
040            encoding = jsonObject.get("encoding").getTextValue();
041        }
042
043        String mimetype = "text/plain";
044        if (jsonObject.has("mime-type")) {
045            mimetype = jsonObject.get("mime-type").getTextValue();
046        }
047        String data = null;
048        if (jsonObject.has("data")) {
049            data = jsonObject.get("data").getTextValue();
050        } else if (jsonObject.has("content")) {
051            data = jsonObject.get("content").getTextValue();
052        }
053        if (data == null) {
054            return null;
055        } else {
056            blob = Blobs.createBlob(data, mimetype, encoding);
057        }
058        return blob;
059    }
060}