Sorry, I forgot to include this class, which someone here on the mailing list
gave to me way back in '06 when I first built this app. It's been so long
since I had to look at this I forgot it was a custom class:
public class ImageResource extends DynamicWebResource
{
private ImageService imgSrv;
public ImageResource()
{
super();
imgSrv = new ImageServiceEngine();
}
public String getImage(String image)
{
String retImg = null;
try
{
retImg = imgSrv.getImage(image).toString();
}
catch (IOException exp)
{
LogProxy.saveEntry(exp);
}
return retImg;
}
protected ResourceState getResourceState()
{
ImageResourceState state = null;
try
{
ValueMap params = getParameters();
byte[] data = null;
String imageId = params.get("file").toString();
//Date lastModified = getImageLastMod(imageId);
state = new ImageResourceState(Time.valueOf(new
Date()));
state.setContentType("image/gif");
//SECURITY PRECAUTION - DO NOT ALLOW ANYTHING BUT
IMAGES!
if
(imageId.contains(PropertyProxy.getExternalImagesRoot()) ||
imageId.contains(PropertyProxy.getExternalImagesAltRoot()))
{
data = imgSrv.getImage(imageId);
}
else
{
//change image to "not found" warning image
data =
imgSrv.getImage(PropertyProxy.getImageNotFound());
//TODO: send email to notify of inappropriate
access
}
state.setData(data);
}
catch (FileNotFoundException exp)
{
LogProxy.saveEntry(exp);
}
catch (IOException exp)
{
LogProxy.saveEntry(exp);
}
catch (NullPointerException exp)
{
LogProxy.saveEntry(exp);
}
return state;
}
/**
*
* @author vjenks
*
*/
protected class ImageResourceState extends ResourceState
{
private String contentType;
private byte[] data;
private Time lastModified;
ImageResourceState(Time lastModified)
{
super();
this.lastModified = lastModified;
}
public String getContentType()
{
return contentType;
}
void setContentType(String contentType)
{
this.contentType = contentType;
}
public byte[] getData()
{
return data;
}
void setData(byte[] data)
{
this.data = data;
}
public int getLength()
{
if (data != null)
return data.length;
else
return 0;
}
public Time lastModifiedTime()
{
return lastModified;
}
}
}
V. Jenks wrote:
>
> Hi all,
>
> I built our storefront almost two years ago now, in Wicket 1.2.x. I'm now
> upgrading from 1.2.4 to 1.3 and am just about finished but I'm stuck on
> one seemingly simple thing.
>
> My "init()" looks like this:
>
> public void init()
> {
> //create external images resource
> getSharedResources().add("imageResource", new ImageResource());
> }
>
> I've had this method in my own "hepler" class since this project started:
>
> public static WebMarkupContainer getImageContainer(String name, String
> image)
> {
> //get reference to Application's ResourceReference
> ResourceReference imageResource = new
> ResourceReference("imageResource");
>
> //build URL of image from file
> String imgUrl = RequestCycle.get().urlFor(imageResource) +
> "?file=" +
> image;
>
> return getContainer(name, "src", imgUrl);
> }
>
> It just encapsulates my ability to use external images in my app (outside
> of the deployed .ear).
>
> I would use it like so, in a Wicket page:
>
> String thumb =
> "C:\\MYApp\\assets\\images\\category\\Bundles.jpg";
> add(WicketHelper.getImageContainer("bundleThumbImg", thumb));
>
> This always worked fine until the upgrade to 1.3 and change the filter in
> web.xml to look at "/*" instead of "home/*" - which I'm guessing had
> something to do with it?
>
> Anyhow, the images are all broken even though my path on disk is correct.
> Am I missing something obvious?
>
> Thanks!
>
>
--
View this message in context:
http://www.nabble.com/WebMarkupContainer---images-cannot-be-found-after-move-to-1.3--tp16627879p16627884.html
Sent from the Wicket - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]