/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.content.contentdata.custom.support; import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.text.SimpleDateFormat; import org.apache.commons.fileupload.FileItem; import org.jdom.Document; import org.jdom.Element; import org.jdom.JDOMException; import org.junit.Before; import org.junit.Test; import com.enonic.esl.containers.ExtendedMap; import com.enonic.cms.framework.util.JDOMUtil; import com.enonic.cms.core.content.contentdata.custom.BinaryDataEntry; import com.enonic.cms.core.content.contentdata.custom.BooleanDataEntry; import com.enonic.cms.core.content.contentdata.custom.CustomContentData; import com.enonic.cms.core.content.contentdata.custom.DateDataEntry; import com.enonic.cms.core.content.contentdata.custom.contentkeybased.FileDataEntry; import com.enonic.cms.core.content.contentdata.custom.contentkeybased.ImageDataEntry; import com.enonic.cms.core.content.contentdata.custom.contentkeybased.RelatedContentDataEntry; import com.enonic.cms.core.content.contentdata.custom.relationdataentrylistbased.FilesDataEntry; import com.enonic.cms.core.content.contentdata.custom.relationdataentrylistbased.ImagesDataEntry; import com.enonic.cms.core.content.contentdata.custom.relationdataentrylistbased.RelatedContentsDataEntry; import com.enonic.cms.core.content.contentdata.custom.stringbased.HtmlAreaDataEntry; import com.enonic.cms.core.content.contentdata.custom.stringbased.SelectorDataEntry; import com.enonic.cms.core.content.contentdata.custom.stringbased.TextAreaDataEntry; import com.enonic.cms.core.content.contentdata.custom.stringbased.TextDataEntry; import com.enonic.cms.core.content.contentdata.custom.stringbased.UrlDataEntry; import com.enonic.cms.core.content.contentdata.custom.xmlbased.XmlDataEntry; import com.enonic.cms.core.content.contenttype.ContentHandlerName; import com.enonic.cms.core.content.contenttype.ContentTypeConfig; import com.enonic.cms.core.content.contenttype.ContentTypeConfigParser; import static org.junit.Assert.*; /** * Created by rmy - Date: Jun 11, 2009 */ public class CustomContentDataFormParserTest { private CustomContentDataFormParser customContentParser; private ContentTypeConfig customConfig; @Before public void setUp() throws IOException, JDOMException { StringBuffer standardConfigXml = new StringBuffer(); standardConfigXml.append( "<config name=\"TestContentType\" version=\"1.0\">" ); standardConfigXml.append( " <form>" ); standardConfigXml.append( " <title name=\"MyTitle\"/>" ); standardConfigXml.append( " <block name=\"TestBlock\">" ); standardConfigXml.append( " <input name=\"MyTitle\" required=\"true\" type=\"text\">" ); standardConfigXml.append( " <display>MyTitle</display>" ); standardConfigXml.append( " <xpath>contentdata/mytitle</xpath>" ); standardConfigXml.append( " </input>" ); standardConfigXml.append( " <input name=\"MyText\" type=\"text\">" ); standardConfigXml.append( " <display>MyText</display>" ); standardConfigXml.append( " <xpath>contentdata/mytext</xpath>" ); standardConfigXml.append( " </input>" ); standardConfigXml.append( " <input name=\"MyTextArea\" type=\"textarea\">" ); standardConfigXml.append( " <display>MyTextArea</display>" ); standardConfigXml.append( " <xpath>contentdata/mytextarea</xpath>" ); standardConfigXml.append( " </input>" ); standardConfigXml.append( " <input name=\"MyHtmlArea\" type=\"htmlarea\">" ); standardConfigXml.append( " <display>MyHtmlArea</display>" ); standardConfigXml.append( " <xpath>contentdata/myhtmlarea</xpath>" ); standardConfigXml.append( " </input>" ); standardConfigXml.append( " <input name=\"MyDate\" type=\"date\">" ); standardConfigXml.append( " <display>MyDate</display>" ); standardConfigXml.append( " <xpath>contentdata/mydate</xpath>" ); standardConfigXml.append( " </input>" ); standardConfigXml.append( " <input name=\"MyUploadfile\" type=\"uploadfile\">" ); standardConfigXml.append( " <display>MyUploadfile</display>" ); standardConfigXml.append( " <xpath>contentdata/myuploadfile</xpath>" ); standardConfigXml.append( " </input>" ); standardConfigXml.append( " <input name=\"MyCheckbox\" type=\"checkbox\">" ); standardConfigXml.append( " <display>MyCheckbox</display>" ); standardConfigXml.append( " <xpath>contentdata/mycheckbox</xpath>" ); standardConfigXml.append( " </input>" ); standardConfigXml.append( " <input name=\"MyImages\" type=\"images\">" ); standardConfigXml.append( " <display>MyImages</display>" ); standardConfigXml.append( " <xpath>contentdata/myimages</xpath>" ); standardConfigXml.append( " </input>" ); standardConfigXml.append( " <input name=\"MyImage\" type=\"image\">" ); standardConfigXml.append( " <display>MyIage</display>" ); standardConfigXml.append( " <xpath>contentdata/myimage</xpath>" ); standardConfigXml.append( " </input>" ); standardConfigXml.append( " <input name=\"MySingleRelatedcontent\" type=\"relatedcontent\" multiple=\"false\">" ); standardConfigXml.append( " <display>MySingleRelatedContent</display>" ); standardConfigXml.append( " <xpath>contentdata/mysinglerelatedcontent</xpath>" ); standardConfigXml.append( " <contenttype name=\"TestContentType\"/>" ); standardConfigXml.append( " </input>" ); standardConfigXml.append( " <input name=\"MyMultipleRelatedcontent\" type=\"relatedcontent\" multiple=\"true\">" ); standardConfigXml.append( " <display>MyMultipleRelatedContent</display>" ); standardConfigXml.append( " <xpath>contentdata/mymultiplerelatedcontent</xpath>" ); standardConfigXml.append( " </input>" ); standardConfigXml.append( " <input name=\"MyFiles\" type=\"files\">" ); standardConfigXml.append( " <display>MyFiles</display>" ); standardConfigXml.append( " <xpath>contentdata/myfiles</xpath>" ); standardConfigXml.append( " </input>" ); standardConfigXml.append( " <input name=\"MyFile\" type=\"file\">" ); standardConfigXml.append( " <display>MyFile</display>" ); standardConfigXml.append( " <xpath>contentdata/myfile</xpath>" ); standardConfigXml.append( " </input>" ); standardConfigXml.append( " <input name=\"MyRadiobutton\" type=\"radiobutton\">" ); standardConfigXml.append( " <display>MyRadiobutton</display>" ); standardConfigXml.append( " <xpath>contentdata/myradiobutton</xpath>" ); standardConfigXml.append( " <options>" ); standardConfigXml.append( " <option value=\"r1\">Choice 1</option>" ); standardConfigXml.append( " <option value=\"r2\">Choice 2</option>" ); standardConfigXml.append( " <option value=\"r3\">Choice 3</option>" ); standardConfigXml.append( " </options>" ); standardConfigXml.append( " </input>" ); standardConfigXml.append( " <input name=\"MyUrl\" type=\"url\">" ); standardConfigXml.append( " <display>MyUrl</display>" ); standardConfigXml.append( " <xpath>contentdata/myurl</xpath>" ); standardConfigXml.append( " </input>" ); standardConfigXml.append( " <input name=\"MyXml\" type=\"xml\">" ); standardConfigXml.append( " <display>MyXml</display>" ); standardConfigXml.append( " <xpath>contentdata/myxml</xpath>" ); standardConfigXml.append( " </input>" ); standardConfigXml.append( " <input name=\"MyDropdown\" type=\"dropdown\">" ); standardConfigXml.append( " <display>MyDropdown</display>" ); standardConfigXml.append( " <xpath>contentdata/mydropdown</xpath>" ); standardConfigXml.append( " <options>" ); standardConfigXml.append( " <option value=\"o1\">Option 1</option>" ); standardConfigXml.append( " <option value=\"o2\">Option 2</option>" ); standardConfigXml.append( " <option value=\"o3\">Option 3</option>" ); standardConfigXml.append( " </options>" ); standardConfigXml.append( " </input>" ); standardConfigXml.append( " </block>" ); standardConfigXml.append( " </form>" ); standardConfigXml.append( "</config>" ); Element standardConfigEl = JDOMUtil.parseDocument( standardConfigXml.toString() ).getRootElement(); customConfig = ContentTypeConfigParser.parse( ContentHandlerName.CUSTOM, standardConfigEl ); } @Test public void testGetNextPlaceHolder() { customContentParser = new CustomContentDataFormParser( customConfig, new ExtendedMap( true ) ); assertEquals( "%0", customContentParser.getNextBinaryPlaceholder() ); assertEquals( "%1", customContentParser.getNextBinaryPlaceholder() ); assertEquals( "%2", customContentParser.getNextBinaryPlaceholder() ); assertEquals( "%3", customContentParser.getNextBinaryPlaceholder() ); CustomContentDataFormParser parser2 = new CustomContentDataFormParser( customConfig, new ExtendedMap( true ) ); assertEquals( "%0", parser2.getNextBinaryPlaceholder() ); assertEquals( "%1", parser2.getNextBinaryPlaceholder() ); } @Test public void testParseAllFromItems_ValuePresent() throws Exception { ExtendedMap formItems = new ExtendedMap( true ); formItems.put( "MyTitle", "TestTitle" ); formItems.put( "MyText", "TestText" ); formItems.put( "MyTextArea", "TestTextArea" ); formItems.put( "Fisk", "Ost" ); formItems.put( "MyHtmlArea", "<head></head><body></body>" ); formItems.put( "MyDate", "10.10.2009" ); formItems.put( "MyUploadfile", new TestFileItem( new byte[]{0xA, 0xB, 0xC} ) ); formItems.put( "MyCheckbox", "on" ); formItems.put( "MyImages", new String[]{"123", "234", "345"} ); formItems.put( "MyImagestext", new String[]{"123text", "234text", "345text"} ); formItems.put( "MyImage", "678" ); formItems.put( "MySingleRelatedcontent", "567" ); formItems.put( "MyMultipleRelatedcontent", new String[]{"33", "44", "55"} ); formItems.put( "MyFiles", new String[]{"321", "432", "543"} ); formItems.put( "MyFile", "789" ); formItems.put( "MyRadiobutton", "r2" ); formItems.put( "MyUrl", "http://www.enonic.com" ); formItems.put( "MyXml", "<root><node></node></root>" ); formItems.put( "MyDropdown", "o2" ); customContentParser = new CustomContentDataFormParser( customConfig, formItems ); CustomContentData contentData = customContentParser.parseContentData(); assertEquals( 17, contentData.getEntries().size() ); assertEquals( "TestTitle", contentData.getTitle() ); assertTrue( contentData.getEntry( "MyTitle" ).hasValue() ); assertEquals( "TestTitle", ( (TextDataEntry) contentData.getEntry( "MyTitle" ) ).getValue() ); assertTrue( contentData.getEntry( "MyText" ).hasValue() ); assertEquals( "TestText", ( (TextDataEntry) contentData.getEntry( "MyText" ) ).getValue() ); assertTrue( contentData.getEntry( "MyTextArea" ).hasValue() ); assertEquals( "TestTextArea", ( (TextAreaDataEntry) contentData.getEntry( "MyTextArea" ) ).getValue() ); assertTrue( contentData.getEntry( "MyHtmlArea" ).hasValue() ); assertEquals( "<head></head><body></body>", ( (HtmlAreaDataEntry) contentData.getEntry( "MyHtmlArea" ) ).getValue() ); assertTrue( contentData.getEntry( "MyDate" ).hasValue() ); assertEquals( ( new SimpleDateFormat( "dd.MM.yyyy" ) ).parse( "10.10.2009" ), ( (DateDataEntry) contentData.getEntry( "MyDate" ) ).getValue() ); assertTrue( contentData.getEntry( "MyUploadfile" ).hasValue() ); BinaryDataEntry data = ( (BinaryDataEntry) contentData.getEntry( "MyUploadfile" ) ); assertEquals( 3, data.getBinary().length ); assertEquals( 0xA, data.getBinary()[0] ); assertEquals( 0xB, data.getBinary()[1] ); assertEquals( 0xC, data.getBinary()[2] ); assertTrue( contentData.getEntry( "MyCheckbox" ).hasValue() ); assertEquals( true, ( (BooleanDataEntry) contentData.getEntry( "MyCheckbox" ) ).getValueAsBoolean() ); assertTrue( contentData.getEntry( "MyImages" ).hasValue() ); ImagesDataEntry images = ( (ImagesDataEntry) contentData.getEntry( "MyImages" ) ); assertEquals( 3, images.getEntries().size() ); assertEquals( 123, ( (ImageDataEntry) images.getEntries().toArray()[0] ).getContentKey().toInt() ); assertEquals( "123text", ( (ImageDataEntry) images.getEntries().toArray()[0] ).getImageText() ); assertEquals( 234, ( (ImageDataEntry) images.getEntries().toArray()[1] ).getContentKey().toInt() ); assertEquals( "234text", ( (ImageDataEntry) images.getEntries().toArray()[1] ).getImageText() ); assertEquals( 345, ( (ImageDataEntry) images.getEntries().toArray()[2] ).getContentKey().toInt() ); assertEquals( "345text", ( (ImageDataEntry) images.getEntries().toArray()[2] ).getImageText() ); assertTrue( contentData.getEntry( "MyImage" ).hasValue() ); assertEquals( 678, ( (ImageDataEntry) contentData.getEntry( "MyImage" ) ).getContentKey().toInt() ); assertTrue( contentData.getEntry( "MySingleRelatedcontent" ).hasValue() ); assertEquals( 567, ( (RelatedContentDataEntry) contentData.getEntry( "MySingleRelatedcontent" ) ).getContentKey().toInt() ); assertTrue( contentData.getEntry( "MyMultipleRelatedcontent" ).hasValue() ); RelatedContentsDataEntry releatedContents = ( (RelatedContentsDataEntry) contentData.getEntry( "MyMultipleRelatedcontent" ) ); assertEquals( 3, releatedContents.getEntries().size() ); assertEquals( 33, ( (RelatedContentDataEntry) releatedContents.getEntries().toArray()[0] ).getContentKey().toInt() ); assertEquals( 44, ( (RelatedContentDataEntry) releatedContents.getEntries().toArray()[1] ).getContentKey().toInt() ); assertEquals( 55, ( (RelatedContentDataEntry) releatedContents.getEntries().toArray()[2] ).getContentKey().toInt() ); assertTrue( contentData.getEntry( "MyFiles" ).hasValue() ); FilesDataEntry files = ( (FilesDataEntry) contentData.getEntry( "MyFiles" ) ); assertEquals( 3, files.getEntries().size() ); assertEquals( 321, ( (FileDataEntry) files.getEntries().toArray()[0] ).getContentKey().toInt() ); assertEquals( 432, ( (FileDataEntry) files.getEntries().toArray()[1] ).getContentKey().toInt() ); assertEquals( 543, ( (FileDataEntry) files.getEntries().toArray()[2] ).getContentKey().toInt() ); assertTrue( contentData.getEntry( "MyFile" ).hasValue() ); assertEquals( 789, ( (FileDataEntry) contentData.getEntry( "MyFile" ) ).getContentKey().toInt() ); assertTrue( contentData.getEntry( "MyRadiobutton" ).hasValue() ); assertEquals( "r2", ( (SelectorDataEntry) contentData.getEntry( "MyRadiobutton" ) ).getValue() ); assertTrue( contentData.getEntry( "MyUrl" ).hasValue() ); assertEquals( "http://www.enonic.com", ( (UrlDataEntry) contentData.getEntry( "MyUrl" ) ).getValue() ); assertTrue( contentData.getEntry( "MyXml" ).hasValue() ); Document doc = ( (XmlDataEntry) contentData.getEntry( "MyXml" ) ).getValue(); assertEquals( JDOMUtil.prettyPrintDocument( JDOMUtil.parseDocument( "<root><node></node></root>" ) ), JDOMUtil.prettyPrintDocument( doc ) ); assertTrue( contentData.getEntry( "MyDropdown" ).hasValue() ); assertEquals( "o2", ( (SelectorDataEntry) contentData.getEntry( "MyDropdown" ) ).getValue() ); } @Test public void testParseAllFromItems_ValueEmpty() throws Exception { ExtendedMap formItems = new ExtendedMap( true ); formItems.put( "MyTitle", "TestTitle" ); formItems.put( "MyText", "" ); formItems.put( "MyTextArea", "" ); formItems.put( "Fisk", "Ost" ); formItems.put( "MyHtmlArea", "" ); formItems.put( "MyDate", "" ); formItems.put( "MyUploadfile", new TestFileItem( null ) ); formItems.put( "MyCheckbox", "" ); formItems.put( "MyImages", new String[]{"", "", ""} ); formItems.put( "MyImagestext", new String[]{"", "", ""} ); formItems.put( "MyImage", "" ); formItems.put( "MySingleRelatedcontent", "" ); formItems.put( "MyMultipleRelatedcontent", new String[]{"", "", ""} ); formItems.put( "MyFiles", new String[]{"", "", ""} ); formItems.put( "MyFile", "" ); formItems.put( "MyRadiobutton", "" ); formItems.put( "MyUrl", "" ); formItems.put( "MyXml", "" ); formItems.put( "MyDropdown", "" ); customContentParser = new CustomContentDataFormParser( customConfig, formItems ); CustomContentData contentData = customContentParser.parseContentData(); assertEquals( 17, contentData.getEntries().size() ); assertEquals( "TestTitle", contentData.getTitle() ); assertTrue( contentData.getEntry( "MyTitle" ).hasValue() ); assertEquals( "TestTitle", ( (TextDataEntry) contentData.getEntry( "MyTitle" ) ).getValue() ); assertTrue( contentData.getEntry( "MyText" ).hasValue() ); assertEquals( "", ( (TextDataEntry) contentData.getEntry( "MyText" ) ).getValue() ); assertTrue( contentData.getEntry( "MyTextArea" ).hasValue() ); assertEquals( "", ( (TextAreaDataEntry) contentData.getEntry( "MyTextArea" ) ).getValue() ); assertTrue( contentData.getEntry( "MyHtmlArea" ).hasValue() ); assertEquals( "", ( (HtmlAreaDataEntry) contentData.getEntry( "MyHtmlArea" ) ).getValue() ); assertFalse( contentData.getEntry( "MyDate" ).hasValue() ); assertNull( ( (DateDataEntry) contentData.getEntry( "MyDate" ) ).getValue() ); assertTrue( contentData.getEntry( "MyUploadfile" ).hasValue() ); BinaryDataEntry data = ( (BinaryDataEntry) contentData.getEntry( "MyUploadfile" ) ); assertEquals( 0, data.getBinary().length ); assertTrue( contentData.getEntry( "MyCheckbox" ).hasValue() ); assertEquals( false, ( (BooleanDataEntry) contentData.getEntry( "MyCheckbox" ) ).getValueAsBoolean() ); assertFalse( contentData.getEntry( "MyImages" ).hasValue() ); ImagesDataEntry images = ( (ImagesDataEntry) contentData.getEntry( "MyImages" ) ); assertEquals( 0, images.getEntries().size() ); assertFalse( contentData.getEntry( "MyImage" ).hasValue() ); assertNull( ( (ImageDataEntry) contentData.getEntry( "MyImage" ) ).getContentKey() ); assertFalse( contentData.getEntry( "MySingleRelatedcontent" ).hasValue() ); assertNull( ( (RelatedContentDataEntry) contentData.getEntry( "MySingleRelatedcontent" ) ).getContentKey() ); assertFalse( contentData.getEntry( "MyMultipleRelatedcontent" ).hasValue() ); RelatedContentsDataEntry releatedContents = ( (RelatedContentsDataEntry) contentData.getEntry( "MyMultipleRelatedcontent" ) ); assertEquals( 0, releatedContents.getEntries().size() ); assertFalse( contentData.getEntry( "MyFiles" ).hasValue() ); FilesDataEntry files = ( (FilesDataEntry) contentData.getEntry( "MyFiles" ) ); assertEquals( 0, files.getEntries().size() ); assertFalse( contentData.getEntry( "MyFile" ).hasValue() ); assertNull( ( (FileDataEntry) contentData.getEntry( "MyFile" ) ).getContentKey() ); assertTrue( contentData.getEntry( "MyRadiobutton" ).hasValue() ); assertEquals( "", ( (SelectorDataEntry) contentData.getEntry( "MyRadiobutton" ) ).getValue() ); assertTrue( contentData.getEntry( "MyUrl" ).hasValue() ); assertEquals( "", ( (UrlDataEntry) contentData.getEntry( "MyUrl" ) ).getValue() ); assertFalse( contentData.getEntry( "MyXml" ).hasValue() ); assertNull( ( (XmlDataEntry) contentData.getEntry( "MyXml" ) ).getValue() ); assertTrue( contentData.getEntry( "MyDropdown" ).hasValue() ); assertEquals( "", ( (SelectorDataEntry) contentData.getEntry( "MyDropdown" ) ).getValue() ); } @Test public void testParseAllFromItems_ValueNull() throws Exception { ExtendedMap formItems = new ExtendedMap( true ); formItems.put( "MyTitle", "TestTitle" ); formItems.put( "MyText", null ); formItems.put( "MyTextArea", null ); formItems.put( "Fisk", "Ost" ); formItems.put( "MyHtmlArea", null ); formItems.put( "MyDate", null ); formItems.put( "MyUploadfile", null ); formItems.put( "MyCheckbox", null ); formItems.put( "MyImages", null ); formItems.put( "MyImagestext", null ); formItems.put( "MyImage", null ); formItems.put( "MySingleRelatedcontent", null ); formItems.put( "MyMultipleRelatedcontent", null ); formItems.put( "MyFiles", null ); formItems.put( "MyFile", null ); formItems.put( "MyRadiobutton", null ); formItems.put( "MyUrl", null ); formItems.put( "MyXml", null ); formItems.put( "MyDropdown", null ); customContentParser = new CustomContentDataFormParser( customConfig, formItems ); CustomContentData contentData = customContentParser.parseContentData(); assertEquals( 17, contentData.getEntries().size() ); assertEquals( "TestTitle", contentData.getTitle() ); assertTrue( contentData.getEntry( "MyTitle" ).hasValue() ); assertEquals( "TestTitle", ( (TextDataEntry) contentData.getEntry( "MyTitle" ) ).getValue() ); assertTrue( contentData.getEntry( "MyText" ).hasValue() ); assertEquals( "", ( (TextDataEntry) contentData.getEntry( "MyText" ) ).getValue() ); assertTrue( contentData.getEntry( "MyTextArea" ).hasValue() ); assertEquals( "", ( (TextAreaDataEntry) contentData.getEntry( "MyTextArea" ) ).getValue() ); assertTrue( contentData.getEntry( "MyHtmlArea" ).hasValue() ); assertEquals( "", ( (HtmlAreaDataEntry) contentData.getEntry( "MyHtmlArea" ) ).getValue() ); assertFalse( contentData.getEntry( "MyDate" ).hasValue() ); assertNull( ( (DateDataEntry) contentData.getEntry( "MyDate" ) ).getValue() ); assertFalse( contentData.getEntry( "MyUploadfile" ).hasValue() ); assertNull( ( (BinaryDataEntry) contentData.getEntry( "MyUploadfile" ) ).getBinary() ); assertTrue( contentData.getEntry( "MyCheckbox" ).hasValue() ); assertEquals( "false", ( (BooleanDataEntry) contentData.getEntry( "MyCheckbox" ) ).getValueAsString() ); assertFalse( contentData.getEntry( "MyImages" ).hasValue() ); assertEquals( 0, ( (ImagesDataEntry) contentData.getEntry( "MyImages" ) ).getEntries().size() ); assertFalse( contentData.getEntry( "MyImage" ).hasValue() ); assertNull( ( (ImageDataEntry) contentData.getEntry( "MyImage" ) ).getContentKey() ); assertFalse( contentData.getEntry( "MySingleRelatedcontent" ).hasValue() ); assertNull( ( (RelatedContentDataEntry) contentData.getEntry( "MySingleRelatedcontent" ) ).getContentKey() ); assertFalse( contentData.getEntry( "MyMultipleRelatedcontent" ).hasValue() ); assertEquals( 0, ( (RelatedContentsDataEntry) contentData.getEntry( "MyMultipleRelatedcontent" ) ).getEntries().size() ); assertFalse( contentData.getEntry( "MyFiles" ).hasValue() ); assertEquals( 0, ( (FilesDataEntry) contentData.getEntry( "MyFiles" ) ).getEntries().size() ); assertFalse( contentData.getEntry( "MyFile" ).hasValue() ); assertNull( ( (FileDataEntry) contentData.getEntry( "MyFile" ) ).getContentKey() ); assertTrue( contentData.getEntry( "MyRadiobutton" ).hasValue() ); assertEquals( "", ( (SelectorDataEntry) contentData.getEntry( "MyRadiobutton" ) ).getValue() ); assertTrue( contentData.getEntry( "MyUrl" ).hasValue() ); assertEquals( "", ( (UrlDataEntry) contentData.getEntry( "MyUrl" ) ).getValue() ); assertFalse( contentData.getEntry( "MyXml" ).hasValue() ); assertNull( ( (XmlDataEntry) contentData.getEntry( "MyXml" ) ).getValue() ); assertTrue( contentData.getEntry( "MyDropdown" ).hasValue() ); assertEquals( "", ( (SelectorDataEntry) contentData.getEntry( "MyDropdown" ) ).getValue() ); } private class TestFileItem implements FileItem { private byte[] value = null; private TestFileItem( byte[] value ) { this.value = value; } public InputStream getInputStream() throws IOException { if ( value == null ) { return new ByteArrayInputStream( new byte[]{} ); } return new ByteArrayInputStream( value ); } public String getContentType() { return null; } public String getName() { return "TestFileItem"; } public boolean isInMemory() { return true; } public long getSize() { return value.length; } public byte[] get() { return value; } public String getString( String s ) throws UnsupportedEncodingException { return null; } public String getString() { return null; } public void write( File file ) throws Exception { } public void delete() { } public String getFieldName() { return null; } public void setFieldName( String s ) { } public boolean isFormField() { return false; } public void setFormField( boolean b ) { } public OutputStream getOutputStream() throws IOException { return null; } } }