Sapphire Developer Guide > Services

ConversionService

ConversionService converts an object to the specified type. One common application is to convert to and from a string for typed value properties in the model. Another common application is to convert an input (such as a file) to a resource when instantiating the model.

A ConversionService implementation can delegate to other conversion services to create a conversion chain. In fact, a common conversion of an IFile to an XmlResource is a chain of two ConversionService implementations.

Sapphire includes a number of ConversionService implementations.

ID Description
Sapphire.ConversionService.DateToString ConversionService implementation for Date to String conversions.
Sapphire.ConversionService.DateToString.Property ConversionService implementation for Date to String conversions specified at property level using @Serialization annotation.
Sapphire.ConversionService.EnumToString ConversionService implementation for Enum to String conversions.
Sapphire.ConversionService.IFileToWorkspaceFileResourceStore ConversionService implementation for IFile to WorkspaceFileResourceStore conversions.
Sapphire.ConversionService.ModelElementToDomDocument ConversionService implementation for ModelElement to DOM Document conversions.
Sapphire.ConversionService.ModelElementToDomElement ConversionService implementation for ModelElement to DOM Element conversions.
Sapphire.ConversionService.ModelElementToXmlElement ConversionService implementation for ModelElement to XmlElement conversions.
Sapphire.ConversionService.ObjectToRootXmlResource ConversionService implementation for Object to RootXmlResource conversions. Conversion is only performed if the object can be converted to ByteArrayResourceStore and if the resource store corresponds to a file with "xml" extension or if the context element type has XML binding annotations.
Sapphire.ConversionService.ObjectToString ConversionService implementation for Object to String conversions that uses object's toString() method.
Sapphire.ConversionService.ResourceStoreToFile ConversionService implementation for WorkspaceFileResourceStore to File conversions via IFile.
Sapphire.ConversionService.ResourceStoreToFile ConversionService implementation for ResourceStore to File conversions via FileStoreEditorInput. Used in the case where an editor is open to a file outside of the workspace.
Sapphire.ConversionService.ResourceStoreToIContainer ConversionService implementation for ResourceStore to IContainer conversions via IFile.
Sapphire.ConversionService.ResourceStoreToIFile ConversionService implementation for ResourceStore to IFile conversions via FileEditorInput.
Sapphire.ConversionService.ResourceStoreToIJavaProject ConversionService implementation for ResourceStore to IJavaProject conversions.
Sapphire.ConversionService.ResourceStoreToIProject ConversionService implementation for ResourceStore to IProject conversions via IFile.
Sapphire.ConversionService.StringToBigDecimal ConversionService implementation for String to BigDecimal conversions.
Sapphire.ConversionService.StringToBigInteger ConversionService implementation for String to BigInteger conversions.
Sapphire.ConversionService.StringToBoolean ConversionService implementation for String to Boolean conversions.
Sapphire.ConversionService.StringToByte ConversionService implementation for String to Byte conversions.
Sapphire.ConversionService.StringToColor ConversionService implementation for String to Color conversions.
Sapphire.ConversionService.StringToDate ConversionService implementation for String to Date conversions.
Sapphire.ConversionService.StringToDate.Property ConversionService implementation for String to Date conversions specified at property level using @Serialization annotation.
Sapphire.ConversionService.StringToDouble ConversionService implementation for String to Double conversions.
Sapphire.ConversionService.StringToFileName ConversionService implementation for String to FileName conversions.
Sapphire.ConversionService.StringToFloat ConversionService implementation for String to Float conversions.
Sapphire.ConversionService.StringToFunction ConversionService implementation for String to Function conversions.
Sapphire.ConversionService.StringToImageData ConversionService implementation for String to ImageData conversions.
Sapphire.ConversionService.StringToInteger ConversionService implementation for String to Integer conversions.
Sapphire.ConversionService.StringToJavaIdentifier ConversionService implementation for String to JavaIdentifier conversions.
Sapphire.ConversionService.StringToJavaPackageName ConversionService implementation for String to JavaPackageName conversions.
Sapphire.ConversionService.StringToJavaTypeName ConversionService implementation for String to JavaTypeName conversions.
Sapphire.ConversionService.StringToLong ConversionService implementation for String to Long conversions.
Sapphire.ConversionService.StringToPath ConversionService implementation for String to Path conversions.
Sapphire.ConversionService.StringToShort ConversionService implementation for String to Short conversions.
Sapphire.ConversionService.StringToUri ConversionService implementation for String to URI conversions.
Sapphire.ConversionService.StringToUrl ConversionService implementation for String to URL conversions.
Sapphire.ConversionService.StringToVersion ConversionService implementation for String to Version conversions.
Sapphire.ConversionService.StringToVersionConstraint ConversionService implementation for String to VersionConstraint conversions.
Sapphire.ConversionService.WorkspaceFileResourceStoreToIFile ConversionService implementation for WorkspaceFileResourceStore to IFile conversions.
Sapphire.ConversionService.XmlEditorResourceStoreToIEditorInputConversionService ConversionService implementation for XmlEditorResourceStore to IEditorInput conversions.
Sapphire.ConversionService.XmlResourceToDomDocument ConversionService implementation for XmlResource to DOM Document conversions.
Sapphire.ConversionService.XmlResourceToDomElement ConversionService implementation for XmlResource to DOM Element conversions.
Sapphire.ConversionService.XmlResourceToXmlElement ConversionService implementation for XmlResource to XmlElement conversions.
Sapphire.Java.JDT.ConversionService.ElementToContext ConversionService implementation for Element to Context conversions when the resource is inside a Java project.

Example

In the purchase order sample, a custom ConversionService implementation is used because the default file extension for purchase order files is "po" rather than "xml" and PurchaseOrder element does not have XML binding annotations. The combination of these two factors prevent the framework-provided ConversionService implementations from engaging.

@Service( impl = PurchaseOrderResourceConversionService.class )

public interface PurchaseOrder extends Element
{
    ...
}
public class PurchaseOrderResourceConversionService extends ConversionService<Object,RootXmlResource>
{
    public PurchaseOrderResourceConversionService()
    {
        super( Object.class, RootXmlResource.class );
    }

    @Override
    public RootXmlResource convert( Object object )
    {
        final ByteArrayResourceStore store = service( MasterConversionService.class ).convert( object, ByteArrayResourceStore.class );

        if( store != null )
        {
            return new RootXmlResource( new XmlResourceStore( store ) );
        }

        return null;
    }
}

Note the use of chaining as part of the presented ConversionService implementation. The input could be any number of things, but as long as another ConversionService implementation knows how to convert it to a ByteArrayResourceStore, this implementation will take the conversion the rest of the way to a Resource.