Hi,

i will give a feedback how i tried to implement the graphicImageDynamic tag 
from the sandbox with facelets. It doesn't work for me and i don't know why. 
But i think it would be useful if this tag works, so i post my experiences with 
that tag:

1.) I implemented the tag:

<s:graphicImageDynamic
        rendered="#{graphicImageDynamicBean.uploaded}"
                id="imageDisplay"
        imageRendererClass="#{graphicImageDynamicBean.imageRenderer}"/>

2.) I searched for the facelets definitions and found it. I implemented it in 
my web.xml.
http://wiki.java.net/bin/view/Projects/FaceletsTaglibsMyfacesSandbox

3.) I copied the GraphicImageDynamicComponentHandler-class and implemented it 
in my project.

4.) I donwloaded the latest release from CVS and looked how the tag was 
implemented in the examples. So i copied following classes into my project and 
changed them (see at the end of this message)
GraphicImageDynamicBean, UploadedImageRenderer

I want to use just a static image, because i want to know how it works. I have 
an image only as a Hex-String and i want to render that. Length=4066, 
Content-Type=image/jpeg.

I think i have implemented all well, but at deployment it nerves me with a 
class not found - exception. BUT THE COMPILED CLASS IS IN MY WAR! So that will 
be one of my problems.

Then i wondered myself about the sandbox-taglib:
            <component-type>org.apache.myfaces.GraphicImageAjax</component-type>
Is this an AJAX component???

What am i doing wrong??????

Thanx in Advance,

Udo



my exception:
SCHWERWIEGEND: Error Loading Library: /WEB-INF/sandbox.taglib.xml
java.io.IOException: Error parsing 
[jndi:/localhost/seam-booking/WEB-INF/sandbox.taglib.xml]:
        at 
com.sun.facelets.compiler.TagLibraryConfig.create(TagLibraryConfig.java:395)
        at 
com.sun.facelets.FaceletViewHandler.initializeCompiler(FaceletViewHandler.java:279)
        at 
com.sun.facelets.FaceletViewHandler.initialize(FaceletViewHandler.java:179)
        at 
com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:413)
        at 
org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:352)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:107)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at 
org.apache.myfaces.component.html.util.ExtensionsFilter.doFilter(ExtensionsFilter.java:122)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at 
org.jboss.seam.servlet.SeamRedirectFilter.doFilter(SeamRedirectFilter.java:23)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at 
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
        at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
        at 
org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:54)
        at 
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:174)
        at 
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
        at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868)
        at 
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663)
        at 
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
        at 
org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
        at java.lang.Thread.run(Thread.java:595)
Caused by: org.xml.sax.SAXException: Error Handling 
[jndi:/localhost/seam-booking/WEB-INF/[EMAIL PROTECTED],87] <handler-class>
        at 
com.sun.facelets.compiler.TagLibraryConfig$LibraryHandler.endElement(TagLibraryConfig.java:258)
        at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown 
Source)
        at org.apache.xerces.impl.dtd.XMLDTDValidator.endNamespaceScope(Unknown 
Source)
        at org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(Unknown 
Source)
        at org.apache.xerces.impl.dtd.XMLDTDValidator.endElement(Unknown Source)
        at 
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown 
Source)
        at 
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown
 Source)
        at 
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown 
Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
        at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
        at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown 
Source)
        at javax.xml.parsers.SAXParser.parse(Unknown Source)
        at javax.xml.parsers.SAXParser.parse(Unknown Source)
        at 
com.sun.facelets.compiler.TagLibraryConfig.create(TagLibraryConfig.java:392)
        ... 30 more
Caused by: java.lang.ClassNotFoundException: 
facelets.GraphicImageDynamicComponentHandler
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1338)
        at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1187)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:164)
        at 
com.sun.facelets.compiler.ReflectionUtil.forName(ReflectionUtil.java:55)
        at 
com.sun.facelets.compiler.TagLibraryConfig$LibraryHandler.createClass(TagLibraryConfig.java:278)
        at 
com.sun.facelets.compiler.TagLibraryConfig$LibraryHandler.endElement(TagLibraryConfig.java:205)
        ... 45 more
11:50:10,531 ERROR [STDERR] 08.04.2006 11:50:10 
com.sun.facelets.compiler.TagLibraryConfig loadImplicit




my web.xml:
-------snip-------------
    <context-param>
        <param-name>facelets.LIBRARIES</param-name>
        <param-value>/WEB-INF/tomahawk.taglib.xml</param-value>
        <param-value>/WEB-INF/sandbox.taglib.xml</param-value>
    </context-param>
-------snap-------------


my sandbox.taglib.xml:

<?xml version="1.0"?>
<!DOCTYPE facelet-taglib PUBLIC
  "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN"
  "http://java.sun.com/dtd/facelet-taglib_1_0.dtd";>

<facelet-taglib>
    <namespace>http://myfaces.apache.org/sandbox</namespace>

   <tag>
      <tag-name>convertBoolean</tag-name>
      <converter>
         
<converter-id>org.apache.myfaces.custom.convertboolean.BooleanConverter</converter-id>
      </converter>
   </tag>
   <tag>
      <tag-name>dojoInitializer</tag-name>
      <component>
         <component-type>org.apache.myfaces.DojoInitializer</component-type>
         
<renderer-type>org.apache.myfaces.DojoInitializerRenderer</renderer-type>
      </component>
   </tag>
   <tag>
      <tag-name>fieldset</tag-name>
      <component>
         <component-type>org.apache.myfaces.Fieldset</component-type>
         <renderer-type>
            org.apache.myfaces.FieldsetRenderer
         </renderer-type>
      </component>
   </tag>
    <tag>
        <tag-name>graphicImageDynamic</tag-name>
        <component>
            <component-type>org.apache.myfaces.GraphicImageAjax</component-type>
            
<renderer-type>org.apache.myfaces.GraphicImageAjaxRenderer</renderer-type>
           
<handler-class>facelets.GraphicImageDynamicComponentHandler</handler-class>
        </component>
    </tag>
    <tag>
        <tag-name>inputSuggest</tag-name>
        <component>
            <component-type>javax.faces.HtmlInputText</component-type>
            <renderer-type>org.apache.myfaces.InputSuggest</renderer-type>
        </component>
    </tag>

    <tag>
        <tag-name>selectOneRow</tag-name>
        <component>
            <component-type>org.apache.myfaces.SelectOneRow</component-type>
            
<renderer-type>org.apache.myfaces.custom.selectOneRow.SelectOneRowRenderer</renderer-type>
        </component>
    </tag>

</facelet-taglib>


my GraphicImageDynamicComponentHandler -class:

package facelets;

import com.sun.facelets.tag.MetaRuleset;
import com.sun.facelets.tag.MethodRule;
import com.sun.facelets.tag.jsf.ComponentConfig;
import com.sun.facelets.tag.jsf.html.HtmlComponentHandler;

public class GraphicImageDynamicComponentHandler extends HtmlComponentHandler
{
    protected final static Class[] GET_BYTES_METHOD_SIG = new Class[0];
    protected final static Class[] GET_CONTENT_TYPE_METHOD_SIG = new Class[0];
    protected final static MethodRule getBytesMethodTagRule
       = new MethodRule("getBytesMethod", byte[].class, GET_BYTES_METHOD_SIG);
    protected final static MethodRule getContentTypeMethodTagRule
       = new MethodRule("getContentTypeMethod", String.class, 
GET_CONTENT_TYPE_METHOD_SIG);
    
    public GraphicImageDynamicComponentHandler(ComponentConfig tagConfig)
    {
        super(tagConfig);
    }

    protected MetaRuleset createMetaRuleset(Class type)
    {
        MetaRuleset m = super.createMetaRuleset(type);

        m.addRule(getBytesMethodTagRule);
        m.addRule(getContentTypeMethodTagRule);

        return m;
    }
}

my GraphicImageDynamicBean-class:

public class GraphicImageDynamicBean
{
    private UploadedFile _upImage;


    public UploadedFile getUpImage()
    {
        return _upImage;
    }

    public void setUpImage(UploadedFile upImage)
    {
        this._upImage = upImage;
    }

    public boolean isUploaded()
    {
//        return _upImage != null;
        return true;
    }
    
    public Class getImageRenderer()
    {
        return UploadedImageRenderer.class;
    }
}


my UploadedImageRenderer-class:

package org.apache.myfaces.examples.graphicImageDynamic;

import java.io.IOException;
import java.io.InputStream;

import javax.faces.context.FacesContext;
import javax.faces.context.ResponseStream;
import javax.faces.el.ValueBinding;

import org.apache.myfaces.custom.dynamicResources.ResourceContext;
import org.apache.myfaces.custom.graphicimagedynamic.ImageRenderer;

/**
 * @author Mathias Broekelmann
 *
 */
public class UploadedImageRenderer implements ImageRenderer
{
    private GraphicImageDynamicBean _graphicImageDynamicBean;

    public void setContext(FacesContext facesContext, ResourceContext 
imageContext) throws IOException
    {
        ValueBinding vb = facesContext.getApplication().createValueBinding(
                "#{graphicImageDynamicBean}");
        GraphicImageDynamicBean value = (GraphicImageDynamicBean) 
vb.getValue(facesContext);
        if (value == null)
        {
            throw new IllegalStateException("managed bean 
graphicImageDynamicBean not found");
        }
        _graphicImageDynamicBean = value;
    }
    
    /**
     * @see 
org.apache.myfaces.custom.graphicimagedynamic.ImageRenderer#getContentLength()
     */
    public int getContentLength() {
//        return _graphicImageDynamicBean.isUploaded() ? 
(int)_graphicImageDynamicBean.getUpImage().getSize() : -1;
        return 4066;
    }

    /**
     * @see 
org.apache.myfaces.custom.graphicimagedynamic.ImageRenderer#getContentType()
     */
    public String getContentType()
    {
//        return _graphicImageDynamicBean.isUploaded() ? 
_graphicImageDynamicBean.getUpImage()
//                .getContentType() : null;
        return "image/jpeg";
    }

    /**
     * @see 
org.apache.myfaces.custom.graphicimagedynamic.ImageRenderer#renderImage(javax.faces.context.FacesContext,
 org.apache.myfaces.custom.graphicimagedynamic.ImageContext, 
java.io.OutputStream)
     */
    public void renderResource(ResponseStream out)
            throws IOException
    {
        if (_graphicImageDynamicBean.isUploaded())
        {
//            InputStream is = 
_graphicImageDynamicBean.getUpImage().getInputStream();
            String hex = 
"FFD8FFE000104A46494600010100000100010000FFDB004300080606070605080707070909080A0C140D0C0B0B0C1912130F141D1A1F1E1D1A1C1C20242E2720222C231C1C2837292C30313434341F27393D38323C2E333432FFDB0043010909090C0B0C180D0D1832211C213232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232FFC00011080066006A03012200021101031101FFC4001B00000202030100000000000000000000000506030700010402FFC4003A100001030302050204030605050000000001020304000511122106133141512261147181911523A1073242B1C1D11625337292445273E1F1FFC4001B01000203010101000000000000000000000203000105040607FFC40029110002020201040201030500000000000001020011030421122231410513517191B1326181C1F0FFDA000C03010002110311003F00BBF462B34835269F7AC29DEA4A322D2335B2302BDE2B4A1EF5254E75AC246F5CCF3FE9246F53C864A9340AE53D9B61692FA88E728A13B77092AFE9FA8A186A09200904B9B97797A8051DC027734354A4B849041DF071E6B924BECCBB846255BB8A2948FA7FEAA6BADBA4DBE1A64C2381AFF312AF56AFBFCBAD0DDCD56F8C2AA075771F466CA6B4123BD430E7A266B484143A8FDE41F1E6A742D2E36169E86A5CCECB89F131471444D288C6C2A322A6C77AF045145484A76F35E748F153115AD3524966815B20019AE69AF2E3DBDF79BD216DB654350C8D8668143E2A796C85C8880A543214D1C7E87FBD5DC763D7C9914B20B99378DAD6CC72B88B5497356909D25001F7246D40A771A4D47E53F1A13AD389FF004D2B215F7CD03F8B448BA4A6647362B4EACAD4D2104EA24EF8237C6F5CB7E54416F31ADF05C2F20613AD18A0622AEE7A3C1F17AEAC15D49B8FB68E21FC4186D214528650A71D2EEEE2C0380079EBD7DBA026A296B62E17882A5A1C69D4092CA01E9CDC247D7D3A8D23DB5892988CA96F24940C38D058D4B237054904109CF7F38DB15E5574B8DC50A3F1ED32B66407A2B8B7348192A4AB71D09DC907A8E80770B3EE646D691C3909C7C8063140B0B264B6F15BA892824A139CFD68D4C8373723968C825B3FF73605295A7F6806DEC08E23EA4B49012A7318E83A104E71D3B5754BFDA4392195A52C202B1E9232403EF427228334FEBDBCCC1FA78FEF03CE8AB66E8CB5CF2DAD4541B7104EF8EC718AEFB44C4A9975A71785B654BCAB00E9D4704FDB140DFBC26E717E1DC6D2D3E824A16938C1ED8F150BB70369B84889CD0B473429CDC12A20023A9FF6E7E46A06F703E4B19C8CB8EBBA39B8EA10E21A2AF5AF3A479C56CEE4508B8B0FC8B5C39915CD4EE703AFEF75F1DF15E3F107E1BC639482509D6E6BCF53D81F6E9F4A3EAE67037C639A18CD9863A1AD64D41125B731AD68D88EA3C54D9A3B99CE8C8C5585112CB5A10E36A42D21485021408C822AB9E2616FE1DB9B0C3525C4A1C6CAD4D294484277031F3DF626840E28E208CDAA6B4B712DA54094BAA2B0B1EC0D735C2EF1AE73D976EACF343E8CBA1274A920F4D3E081DBFBD0B357137F5FE3F36ABF539B5FC08CF61F87B9A549412C2746B494A02750C907AF8C7EA2B2F8888DC6434C32D28B848321C1929C75273BD2B44BEB906D2E301AE6436DC7034E9187084EC7D23AECAEA2B96E7C62C048E52A3A0A87A836BCEE3000391B0D3FCBEE9390D54A0E464FB2FB4425780A836D4C3B4447A4ADC5A4499206025246773DBFA0AE662DAC4AB6261CF774A8ACB6D3CDED839DBE5D850B7AF93DA80A62DA996653993312D37A4249CE00DFD49C139073ED8CEFE33727EDCD3658E5A82794DB415B04000A4EFBEAC9567BF4AB37E63B57672E4CB46E8FBFF70CDB6D522DAEA605C2536438AC34F2919D43B0CF407E74C0BE1980980B752D871C2082A50DC7CBC556B278967429288B3DCD6D8243895AB6C8247A4F5EDF4A6CB0F14485A64C4E496CA521495ABA818CE77FFE6C6A0715551BB3B2C4F0DFAFA83AE36A8E5890A4B8E2567263841034A87CF3B1C8F277EB4AC1B75CBC290FB8D9E78217858D8050C0DFDBC669BAEE1E936C0FEB743CE0284290A4A90AC02474EE493EDF4A0379B6AE64054C7141B623B6A79A2D1042403E3B93B7CF0286ED666E7DB36AD76C3F69616965888D679A1B08294A501435103A8F3DE82DD2F909B8CCB4EB6B53E145B775104A0F639EE0E7CD2831C560CC8F15B79EE621010E3870A39246C803A1CF5EF44EF30DD8D1E7F3125C52C21E46A1D73B1FB6D54B7EE68682FD9DC4C231AEAB8D2F5F213CB53606869272A3D8E7A79A636DF4ADB4ACE125401C1232292956E751711094B5A5943292A0125795637E9F5AE25DBE66B56195119D8E834E5EAA9D1B1F109B043DD1A960BF6ABA5DADED28940612AC6948D2563CEF41AE76888C3A57314E87BB15AC003ED4D77CE2111E386EDAB654B3B1D63013F2CE01A54BA58E3DEED1326FC53AECD2D6A0864EA208E9E9EF9A17367C45E3CB902F538A58BDFE1A1C5680B8AFA90C32E969D7F195149C9C01D3B7EB441CE0D6AD780DC343AD1FE2527513F3CF7A09FB38BE474F13336F70A12DAD2E32877F894A51053ABB744E07CEADF75F10DEE52C0C647DB342454E6C39D5DD9C2837FC4AE2D56DBA4994EC78062B0C8253839C800EDE9FD6883F0FF01B9B082F29E050A75DC8D93818D80F7ED4D2E4045D9F57C132528CE92F23657F4C57A7787A3C16D521D0AE6018E6BCE6B5A8F603B0A3A153BDF752FA4F02BC4AEB87B845EE21E279326F081F0CB25D119432A482720157F0F4E82A1E2C8B6E6FF680D263A96151DB02436DA494A800545381D4E9C78EB9A6E55D1AE19616E25465CE782821A6F7D6E1DC247B0006F55719B74B7DF3E29C71ED4EBC5C794E6A090E28602F18ED9F1B8DB7A83998DB8A12C278FCC7C525E9DC3864E5687186D41B584941D58C6BED9CE07D303B50B6E24FB9DADC5C779C941AD215AD6773E319C1C0C7DA8EC579A7AD4875B53C44E569521D0525202402529C74E9B93DCF9DA7E05893E3D9DF61B6995ACBEAD654ACE0EC318FA50A79AA9DBA8B88E3190A8247E62632A810662CAE325995904BC5AF56A07AEE3AE7BD33AA7377EB7729450890941E52D3D1C1DC63B7F7A277EE119F2D0243A865206492D20E7E477DEABBBF596EB0E3B6988E1E6A5649D04A15823B66ACA91EE76E46C431FD983C8E684B17876E7165CA7E4ADB70B8A6DB4A90119214010451FF00888C7FE99DFF0085549C3122F165962535394F13853F124A756B1FEEC9C1F7FBD195F135CDC714B10D785124618591BFD2AC3902711CBF6B13447F99E60710393E6F29119D756A0400A4E76FBED4CFC3D02642E218EE3E421B7F5214D206C3D24E7EE29B6C7C311E2A43CA6407C8F52B6C9F9E2BBAE111B6A430E818E52B24FD08FEB53A4D7718DD8F93C7918E2C6BC115288E33E01916CBEC8B8D89475A9CE686738524EACE507BEFDBF9D39C5E2963882D0C3C167F128A0896D018D2527B83E715BE27B9EBBA3C54A296586C6909232B709C7B9C0DBB7538A44B0F05CB6EFEAB8C8548111475270E72DC733B9D583B0CEC73B9F03B01EF056E67AE229907D22C9F3F812D6E1DE256E2DB97AD81A039BBE957A7D59C1DFA6F81535F6F898F6F5AE5F2DC4AD04101490956DBE37F5637D81CFE94AEF391E5A7E01C52DA4BA396396B1A771FBBD3E78A42160E225C876DA5F4FE1E85908716751233D8751EE3615415AA898FD8D3C9608164F9FF00BD461B63AB899BB4D21F90F02104EC96D03A607DA89AAF08BBC06CB4DB6CEB1EB49590A511B6D8EDD7AD0A9ADA94A6A011F965B39D3B9040DB1F5C50E66D118BC86E64A5B011D5684E750FE9F6A8090684F429A98863008BA9BE217AE2C4744B44D75D4B3201530F614A4150C652A1BE0EDB536F01F13C08525E7263E10890DA578C674A864107DE9267B41B75516DC5F94D152753850718073E3F5A36AE1C7DEB0AEE4DA79321595ABC2FE83CD4B37DB33F6B5531AB2E3F07D47CBB71D457F98D41429E404952D64694A463C9A4A9726E33511A43125A4992E29A70247A824018DC288CF4D88D89EF9A5F83722C5B1D95360ADD88E00856D8513A86C3DBC9FA77A34CC029853EE16E754E38A585A50B1B36003B0FA1F7A8093C999185066C8B8D3FA7DCD498EED8AEBF190187B5B88D2412085ABB03F7FB51944553ADA5C37975A2B0145BD47D19EDB9ED4B8ABF3CEB0DAA69795A1412AC0037EB9C77AE91786F1E91B76EBFDAAC38078334337C0F59EA4FE65D169BCC29139E84D3C14A41F4E723293B8C7DE87716DE62C260C6E727E256329403BE3CD7247B03AB425524492E360018230AC0F39181D31DC63E9432F9C190A6DB9F7111E7A2E0A185178974B833D323207B138F7A350C4F3C09E770665570CF146D96F7EE7244C79F42D0D255C94ABAEBDF7F6FD7A0A9130EF93F96CA24B4964820E93B9AF5C3F756586C5BA4971B7DA7940153471A00F492AF3B907DD3EF4D566650E3E2321690492E214075F4907F9E69CB8F588E1E7A5D3DAC6988BE2A3EE269E1C5B2A633256B515A7510B1B6083F7DA9891263B7714345B3F988D47D24F5CF7A2EEDBBE1E56A79E4A8A7493D7B7CE906E773468725C24BF2248CB486DB609F48380AD47A67734D64D65BA31B9F7D1943643EA169D0A444E228B3A3252E328565446F838C6E3DC5333976B13ADE5E89AA41EA80807EB9A44B4719322E2985758AFB01E01B6CA53A95AD4348C81F33D29A6E7F85C0679F2E4B6C6E06BDC0F18DFDF14031615BA7883B9AF9C805BC7B1C7EF259ED42B84521F5B316127D4B6DB5005433FC476DBCD2B717F162624211EDEDBAC450B0D2A46E95249191A463A7935ABD4E10E02DC59D6D286127B007CE3E74A17EBBD92E113420497A4A0E40D2909D58C63719ED9FE7E2985302D806CCE2DCDAC6A0E347E7F5845AE20902EB051F99223BCAC3DCC8B9696ACE429233B81FAE33BF67F8177B6BA994DC98EEB0A731A8A104A0103194F7C6D54CC6E2065129B71E84E20AFD0E1C800109D3E91F51D7A0DAAEDB1428B7D84A7233E10B48D241411F2383DB14BFAB003CB545E81D71659F98ACFB70D0F2D02630D2903D2B71B275A3B6DE46D4BEB533AD5FE6320EFD52D1C1F96F5664F868B4AB121D8EA75C3F96D049255F4F15CE03C464426B1FF8C7F7AE6C8A97DAD3D1E3DD045A9B12CAD64027C528F10C9946E26DB1AEB363BCA8EA94B700414A1B49C1D200492AC903738C66B2B29CD3E7E654926EA8778AD98D1654C75944AD2E2A48014E1DC904024119FBD1DE135CD679D31535CD487DDE5A001A52124A71B83D4E6B2B2B83380884AC2C4ECA78307F1171BCF944C78C9433AF5EB52C6A2AC1C1F18AACEE777BA7C42D97659C1393CBF4E6B2B29DADDDC987932BBF2C64969BBB50AF306E423842228D2B4A372B242B2ADCF5DFF953271F7113B78B6DB986D4E06164BA439D7A0091DFA026B2B29AE07D8A623DCB7B8238620A382E1225A04A2F3614A2EEE307A01F2A2DFE08E1B2AD46D11B38C7EED65653C000F10A795F0370D3830BB44750D65CC11FC47193FA0AEE470FDB9A46869A5358180A6D652A18DB623A5656551507C8901AF1244D96025E53DC9CBAAFDE714A2A51F993BD750830B1FE9AFF00E5595954517F11C36328E0319FFFD9";
            byte [] bts = convertHexToByteArray(hex);
            InputStream is = null;
            is.read(bts);
            try
            {
                byte[] buffer = new byte[1024];
                int len = is.read(buffer);
                while (len != -1)
                {
                    out.write(buffer, 0, len);
                    len = is.read(buffer);
                }
            }
            finally
            {
                is.close();
            }
        }
    }
    
    private byte [] convertHexToByteArray(String hex) {
        byte[] bts = new byte[hex.length() / 2];
        for (int i = 0; i < bts.length; i++) {
            bts[i] = (byte) Integer.parseInt(hex.substring(2*i, 2*i+2), 16);
        }
        return bts;
    }
}


Ihr Traumpartner ist nur einen Klick entfernt. 1 Million Singles warten auf Sie 
in
Deutschlands beliebteste Partnerboerse:
http://singles.freenet.de/index.html?pid=11512

Reply via email to