001    package org.trails.component.blob;
002    
003    import org.apache.tapestry.asset.AbstractAsset;
004    import org.apache.tapestry.engine.ILink;
005    import org.trails.descriptor.IPropertyDescriptor;
006    
007    import java.io.InputStream;
008    import java.io.Serializable;
009    
010    /**
011     * An implementation of {@link org.apache.tapestry.IAsset} for assets that are entity properties.
012     */
013    public class TrailsBlobAsset extends AbstractAsset
014    {
015    
016            private BlobDownloadService bytesService;
017    
018            private Serializable id;
019    
020            private IPropertyDescriptor propertyDescriptor;
021    
022            public TrailsBlobAsset(BlobDownloadService chartService, IPropertyDescriptor propertyDescriptor, Serializable id)
023            {
024                    super(null, null);
025                    this.bytesService = chartService;
026                    this.id = id;
027                    this.propertyDescriptor = propertyDescriptor;
028            }
029    
030            public IPropertyDescriptor getPropertyDescriptor()
031            {
032                    return propertyDescriptor;
033            }
034    
035            public Serializable getId()
036            {
037                    return id;
038            }
039    
040            public String buildURL()
041            {
042                    ILink l = bytesService.getLink(false, new Object[]{this});
043                    return l.getURL();
044            }
045    
046            public InputStream getResourceAsStream()
047            {
048                    return null;
049            }
050    }