All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.nakedobjects.metamodel.facets.object.encodeable.EncodableFacetUsingEncoderDecoder Maven / Gradle / Ivy

The newest version!
package org.nakedobjects.metamodel.facets.object.encodeable;

import org.nakedobjects.applib.adapters.EncoderDecoder;
import org.nakedobjects.metamodel.adapter.NakedObject;
import org.nakedobjects.metamodel.commons.ensure.Assert;
import org.nakedobjects.metamodel.facets.FacetAbstract;
import org.nakedobjects.metamodel.facets.FacetHolder;
import org.nakedobjects.metamodel.runtimecontext.RuntimeContext;


public class EncodableFacetUsingEncoderDecoder extends FacetAbstract implements EncodableFacet {

    private final EncoderDecoder encoderDecoder;
	private final RuntimeContext runtimeContext;

    public EncodableFacetUsingEncoderDecoder(
    		final EncoderDecoder encoderDecoder, 
    		final FacetHolder holder, 
    		final RuntimeContext runtimeContext) {
        super(EncodableFacet.class, holder, false);
        this.encoderDecoder = encoderDecoder;
        this.runtimeContext = runtimeContext;
    }

    // TODO: is this safe? really?
    public static String ENCODED_NULL = "NULL";

    @Override
    protected String toStringValues() {
    	getRuntimeContext().injectDependenciesInto(encoderDecoder);
        return encoderDecoder.toString();
    }

    public NakedObject fromEncodedString(final String encodedData) {
        Assert.assertNotNull(encodedData);
        if (ENCODED_NULL.equals(encodedData)) {
            return null;
        } else {
        	getRuntimeContext().injectDependenciesInto(encoderDecoder);
            Object decodedObject = encoderDecoder.fromEncodedString(encodedData);
			return getRuntimeContext().adapterFor(decodedObject);
        }

    }

    public String toEncodedString(final NakedObject object) {
    	getRuntimeContext().injectDependenciesInto(encoderDecoder);
        return object == null ? ENCODED_NULL : encoderDecoder.toEncodedString(object.getObject());
    }


    
    ////////////////////////////////////////////////////////
    // Dependencies (from constructor)
    ////////////////////////////////////////////////////////
    

    private RuntimeContext getRuntimeContext() {
        return runtimeContext;
    }

}

// Copyright (c) Naked Objects Group Ltd.




© 2015 - 2024 Weber Informatics LLC | Privacy Policy